SSC Class Reference

Interface to a serial-servo-controller. More...

#include <Devices/ssc.H>

Inheritance diagram for SSC:
Inheritance graph
[legend]
Collaboration diagram for SSC:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 SSC (OptionManager &mgr, const std::string &descrName="Mini-SSC Servo Driver", const std::string &tagName="MiniSSCdriver", const char *defdev="/dev/ttyS0")
 Default constructor; see ModelComponent.H.
 ~SSC ()
 Destructor.
bool move (const int servo, const float position)
 Moves servo # to given position in [-1.0 .. 1.0].
float getPosition (const int servo) const
 Gets the current position of given servo.
void calibrate (const int servo, const byte neutralval, const byte minval, const byte maxval)
 Calibrate a servo.
bool moveRaw (const int servo, const byte rawpos)
 Moves servo # to given RAW (uncalibrated) position in [0..255].
bool moveRawHack (const int servo, const byte rawpos, const int port=1)
 hack work around for moveRaw. Remove when serial stuff is fixed
byte getPositionRaw (const int servo) const
 Gets the current RAW (uncalibrated) position [0..255] of given servo.

Protected Member Functions

float rawToCalib (const int servo, const byte rawpos) const
 Convert from raw (0..255) to calibrated (-1.0..1.0) position.
byte calibToRaw (const int servo, const float position) const
 Convert from calibrated (-1.0..1.0) to raw (0..255) position.

Protected Attributes

nub::soft_ref< SerialitsPort
 Serial port to use.
rutz::shared_ptr< NModelParam
< float > > * 
zero
 zero calibration values
rutz::shared_ptr< NModelParam
< float > > * 
posmult
 positive multiplier calib
rutz::shared_ptr< NModelParam
< float > > * 
negmult
 negative multiplier calib
bytepos
 raw servo positions [0..255]

Detailed Description

Interface to a serial-servo-controller.

The ssc.C and ssc.H files has the mini_SSC controller code that help control the servos via the controller. The class is SSC class. Its functions include moving a servo to a specified position, using a serial port. There are two ways to move the servos and thet their current positions: either using calibrated values in [-1.0..1.0], or using raw positions in [0..255]. Calibrated positions are converted to raw using two linear ramps (one for each side of the neutral position) that can be set using the calibrate() function. EXAMPLE: if you do a calibrate(servo, 100, 20, 150), then, subsequently, move(servo, 0.0F) will be equivalent to moveRaw(servo, 100), move(servo, -1.0F) will be equivalent to moveRaw(servo, 20) and move(servo, 1.0F) will be equivalent to moveRaw(servo, 150).

Definition at line 62 of file ssc.H.


Constructor & Destructor Documentation

SSC::SSC ( OptionManager mgr,
const std::string descrName = "Mini-SSC Servo Driver",
const std::string tagName = "MiniSSCdriver",
const char *  defdev = "/dev/ttyS0" 
)

Default constructor; see ModelComponent.H.

Definition at line 44 of file ssc.C.

References ModelComponent::addSubComponent(), itsPort, negmult, pos, posmult, and zero.

SSC::~SSC (  ) 

Destructor.

Definition at line 76 of file ssc.C.


Member Function Documentation

void SSC::calibrate ( const int  servo,
const byte  neutralval,
const byte  minval,
const byte  maxval 
)

Calibrate a servo.

Calibration will be made so that move(servo, 0.0F) will send the value 'neutralval' to the servo, move(servo, -1.0F) will send minval and move(servo, 1.0F) will send maxval.

Definition at line 92 of file ssc.C.

References negmult, posmult, and zero.

byte SSC::calibToRaw ( const int  servo,
const float  position 
) const [protected]

Convert from calibrated (-1.0..1.0) to raw (0..255) position.

Definition at line 181 of file ssc.C.

References negmult, posmult, and zero.

Referenced by move().

float SSC::getPosition ( const int  servo  )  const

Gets the current position of given servo.

Definition at line 84 of file ssc.C.

References pos, and rawToCalib().

byte SSC::getPositionRaw ( const int  servo  )  const

Gets the current RAW (uncalibrated) position [0..255] of given servo.

Definition at line 152 of file ssc.C.

References pos.

bool SSC::move ( const int  servo,
const float  position 
)

Moves servo # to given position in [-1.0 .. 1.0].

Returns true on success, false if some serial error occurred.

Definition at line 80 of file ssc.C.

References calibToRaw(), and moveRaw().

bool SSC::moveRaw ( const int  servo,
const byte  rawpos 
)

Moves servo # to given RAW (uncalibrated) position in [0..255].

Returns true on success, false if some serial error occurred.

Definition at line 104 of file ssc.C.

References itsPort, and pos.

Referenced by move().

bool SSC::moveRawHack ( const int  servo,
const byte  rawpos,
const int  port = 1 
)

hack work around for moveRaw. Remove when serial stuff is fixed

Definition at line 127 of file ssc.C.

float SSC::rawToCalib ( const int  servo,
const byte  rawpos 
) const [protected]

Convert from raw (0..255) to calibrated (-1.0..1.0) position.

Definition at line 161 of file ssc.C.

References negmult, posmult, and zero.

Referenced by getPosition().


Member Data Documentation

Serial port to use.

Definition at line 99 of file ssc.H.

Referenced by moveRaw(), and SSC().

rutz::shared_ptr<NModelParam<float> >* SSC::negmult [protected]

negative multiplier calib

Definition at line 102 of file ssc.H.

Referenced by calibrate(), calibToRaw(), rawToCalib(), and SSC().

byte* SSC::pos [protected]

raw servo positions [0..255]

Definition at line 103 of file ssc.H.

Referenced by getPosition(), getPositionRaw(), moveRaw(), and SSC().

rutz::shared_ptr<NModelParam<float> >* SSC::posmult [protected]

positive multiplier calib

Definition at line 101 of file ssc.H.

Referenced by calibrate(), calibToRaw(), rawToCalib(), and SSC().

rutz::shared_ptr<NModelParam<float> >* SSC::zero [protected]

zero calibration values

Definition at line 100 of file ssc.H.

Referenced by calibrate(), calibToRaw(), rawToCalib(), and SSC().


The documentation for this class was generated from the following files:
Generated on Sun May 8 08:43:49 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3