54 #include "rnr/rnrconfig.h"    55 #include "rnr/units.h"    92     Init(nServoId, uModelNum, uFwVer);
   277   virtual void Link(uint_t uLinkType, 
DynaServo *pServoMate, 
bool bRotReversed)
   529                                        uint_t uClearTorqueTh)
   547                                        uint_t &uClearTorqueTh)
   606     return m_pAgent != NULL? 
true: 
false;
   609   virtual int AgentWriteGoalPos(
int nGoalPos) = 0;
   610   virtual int AgentWriteGoalSpeed(
int nGoalSpeed) = 0;
   611   virtual int AgentWriteGoalSpeedPos(
int nGoalSpeed, 
int nGoalPos) = 0;
   617   virtual int MoveTo(
int nGoalPos) = 0;
   618   virtual int MoveAtSpeedTo(
int nGoalSpeed, 
int nGoalPos) = 0;
   619   virtual int MoveAtSpeed(
int nGoalSpeed) = 0;
   621   virtual int EStop() = 0;
   622   virtual int Stop() = 0;
   623   virtual int Freeze() = 0;
   624   virtual int Release() = 0;
   741   virtual int CfgReadRotationLimits(uint_t *pCwLim, uint_t *pCcwLim) = 0;
   743   virtual int CfgWriteRotationLimits(uint_t uCwLim, uint_t uCcwLim) = 0;
   745   virtual int CfgReadTemperatureLimit(uint_t *pTempLim) = 0;
   747   virtual int CfgWriteTemperatureLimit(uint_t uTempLim) = 0;
   749   virtual int CfgReadVoltageLimits(uint_t *pMinVoltLim,
   750                                    uint_t *pMaxVoltLim) = 0;
   752   virtual int CfgWriteVoltageLimits(uint_t uMinVoltLim,
   753                                     uint_t uMaxVoltLim) = 0;
   755   virtual int CfgReadMaxTorqueLimit(uint_t *pMaxTorqueLim) = 0;
   757   virtual int CfgWriteMaxTorqueLimit(uint_t uMaxTorqueLim) = 0;
   759   virtual int CfgReadAlarmShutdownMask(uint_t *pAlarmMask) = 0;
   761   virtual int CfgWriteAlarmShutdownMask(uint_t uAlarmMask) = 0;
   763   virtual int CfgReadServoMode(uint_t *pServoMode) = 0;
   765   virtual int CfgWriteServoMode(uint_t uCwLim, uint_t uCcwLim) = 0;
   767   virtual int CfgWriteServoModeContinuous() = 0;
   769   virtual int ReadTorqueEnable(
bool *pState) = 0;
   771   virtual int WriteTorqueEnable(
bool bState) = 0;
   773   virtual int ReadLed(
bool *pState) = 0;
   775   virtual int WriteLed(
bool bState) = 0;
   781   virtual int ReadGoalPos(
int *pGoalPos) = 0;
   783   virtual int WriteGoalPos(
int nGoalPos) = 0;
   785   virtual int ReadGoalSpeed(
int *pGoalSpeed) = 0;
   787   virtual int WriteGoalSpeed(
int nGoalSpeed) = 0;
   789   virtual int ReadMaxTorqueLimit(uint_t *pMaxTorqueLim) = 0;
   791   virtual int WriteMaxTorqueLimit(uint_t uMaxTorqueLim) = 0;
   793   virtual int ReloadMaxTorqueLimit() = 0;
   795   virtual int ReadCurPos(
int *pCurPos) = 0;
   797   virtual int ReadCurSpeed(
int *pCurSpeed) = 0;
   799   virtual int ReadCurLoad(
int *pCurLoad) = 0;
   801   virtual int ReadDynamics(
int *pCurPos, 
int *pCurSpeed, 
int *pCurLoad) = 0;
   803   virtual int ReadHealth(uint_t *pAlarms,
   806                          uint_t *pCurTemp) = 0;
   808   virtual int ReadIsMoving(
bool *pState) = 0;
   810   virtual int  Read(uint_t uAddr, uint_t *pVal) = 0;
   812   virtual int  Write(uint_t uAddr, uint_t uVal) = 0;
   814   virtual bool Ping() = 0;
   816   virtual int  Reset() = 0;
   818   virtual int SyncData() = 0;
   820   virtual int SyncCfg() = 0;
   822   virtual int SyncState() = 0;
   824   virtual void Dump() = 0;
   865   void Init(
int nServoId, uint_t uModelNum, uint_t uFwVer);
   871   virtual int CalcMatesGoalPos(
int nGoalPos, 
int *pGoalPosMate) = 0;
   873   virtual int CalcMatesGoalSpeed(
int nGoalSpeed) = 0;
   878   virtual uint_t PackGoalSpeed(
int nGoalSpeed) = 0;
   880   virtual int UnpackGoalSpeed(uint_t uVal) = 0;
   882   virtual int UnpackCurSpeed(uint_t uVal) = 0;
   884   virtual int UnpackCurLoad(uint_t uVal) = 0;
   903 #endif // _DYNA_SERVO_H virtual uint_t GetCurPos() const 
Get the current servo position. 
 
RoadNarrows Dynamixel Bus Communications Abstract Base Class Interface. 
 
virtual int UpdateOdometer(int nEncCurPos)
Update the odometer from the current servo position and rotation direction. 
 
int m_nServoIdMate
linked mate's servo id 
 
virtual uint_t GetServoMode() const 
Get the servo operational mode. 
 
static int WriteBaudRate(DynaComm &comm, int nServoId, int nNewBaudRate)
Write the new baud rate to the servo's EEPROM. 
 
virtual int GetCurLoad() const 
Get the current servo load. 
 
virtual const DynaServoState_T & GetState() const 
Get servo state. 
 
virtual void SetSoftTorqueOverCond(bool bNewCond)
Set or clear servo in soft over torque condition. 
 
void DumpCtlTbl(const char *sTblName, const DynaCtlTblEntry_T tblInfo[], size_t uSize)
Dump the servo control tabl values to stdout. 
 
bool IsLinkedMaster() const 
Test if this servo is a linked master. 
 
Dynamixel Servo Specification Structure. 
 
MX-28 Dynamixel Servo Class. 
 
DynaServo(DynaComm &comm, int nServoId, uint_t uModelNum, uint_t uFwVer)
Default initialization constructor. 
 
static int ReadBaudRate(DynaComm &comm, int nServoId, int *pBaudRate)
Read the servo's baud rate from the servo's EEPROM. 
 
int m_nOdDir
odometer direction: normal or reverse 
 
virtual int GetCurSpeed() const 
Get the current servo speed. 
 
virtual ~DynaServo()
Destructor. 
 
uint_t m_uLinkType
linked type Dynamixel Servo Link Types 
 
virtual float CvtRawVoltToVolts(uint uVolts)=0
Convert raw volts coding to volts. 
 
#define DYNA_LINK_MASTER
servo is linked, serving as the master 
 
bool IsUnlinked() const 
Test if this servo is unlinked. 
 
virtual void UnregisterAgent()
Unregister servo proxy agent. 
 
DynaAgent_T * m_pAgent
servo agent 
 
RX-64 Dynamixel Servo Class. 
 
The Dynamixel Speed PID Class. 
 
int m_nCurLoad
current load 
 
DynaServoCfg_T m_cfg
servo shadowed EEPROM configuration 
 
AX-12, AX-12+, AX-12A Dynamixel Servo Class. 
 
static int ReadModelNumber(DynaComm &comm, int nServoId, uint_t *pModelNum)
Read the servo model number from the servo's EEPROM. 
 
virtual const DynaServoCfg_T & GetConfiguration() const 
Get servo configuration. 
 
virtual uint_t GetCurTemp() const 
Get the current temperature. 
 
virtual bool HasAgent()
Tests if servo has a registered agent. 
 
virtual uint_t GetFirmwareVersion() const 
Get servo firmware version. 
 
virtual void SetSoftTorqueThresholds(uint_t uOverTorqueTh, uint_t uClearTorqueTh)
Set soft torque thresholds. 
 
virtual const DynaServoLink_T GetLinkInfo() const 
Get linked information. 
 
EX-106+ Dynamixel Servo Class. 
 
Miscellaneous collection of useful utilities. 
 
uint_t m_uFwVer
firmware version 
 
#define DYNA_LINK_NONE
servo is not linked to another servo 
 
Dynamixel Servo Configuration Structure. 
 
Dynamixel Servo Abstract Base Class. 
 
uint_t m_uCurVolt
current voltage 
 
void * m_pAgentArg
servo agent callback argument 
 
virtual uint_t GetCurVolt() const 
Get the current voltage. 
 
uint_t m_uRawPosModulo
raw position modulo 
 
virtual void DisableOdometer()
Disable odometer mapping. 
 
int CalcSpeedDir(int nOdGoalPos)
Calculate serve direction to goal odometer position. 
 
int m_nCurSpeed
current speed (raw) 
 
static int WriteServoId(DynaComm &comm, int nServoId, int nNewServoId)
Write the new servo id to the servo's EEPROM. 
 
static int Reset(DynaComm &comm, int nServoId)
Reset the given servo back to default values. 
 
bool IsMaster() const 
Test if this servo is a master. 
 
static int ReadFirmwareVersion(DynaComm &comm, int nServoId, uint_t *pFwVer)
Read the servo's firmware version from the servo's EEPROM. 
 
bool m_bRotReversed
do [not] rotate in opposite directions 
 
Dynamixel Control Method Structure. 
 
Servo Control Table Entry. 
 
bool m_bOverTorqueCond
over torque condition state 
 
uint_t m_uModelNum
servo model number 
 
char * m_sModelName
model name 
 
static DynaServo * New(DynaComm &comm, int nServoId)
Archetype constructor to create a new Dynamixel servo instance. 
 
uint_t m_uClearTorqueTh
clear over torque cond. threshold 
 
int IsOdometerEnabled()
Test if virtual odometer mapping is enabled. 
 
virtual void Link(uint_t uLinkType, DynaServo *pServoMate, bool bRotReversed)
Link this servo to another. 
 
Generic Dynamixel Servo Base Class. 
 
int m_nOdometer
current odometer reading (accumulator) 
 
virtual uint_t Has360PosInfo() const 
Test if servo has 360 ° positioning information. 
 
int m_nErrorCode
class instance errored state 
 
Servo Proxy Agents Calls Structure. 
 
MX-106 Dynamixel Servo Class. 
 
uint_t m_uOverTorqueTh
set over torque cond. threshold 
 
uint_t m_uAlarms
current servo alarms and errors 
 
INLINE_IN_H int imod(int a, int b)
a mod b, ≥  0. 
 
#define DYNA_MODE_CONTINUOUS
continuous mode with/without position 
 
int m_nEncZeroPt
servo encoder zero point position 
 
Dynamixel Chain Container Base Class. 
 
int GetOdometerZeroPt()
Get the virtual odometer zero point. 
 
RoadNarrows Dynamixel Fundatmental Types. 
 
static bool Ping(DynaComm &comm, int nServoId)
Ping the given servo. 
 
virtual void Unlink()
Unlink this servo. 
 
bool m_bOdEnabled
odometer mapping [not] enabled 
 
RX-28 Dynamixel Servo Class. 
 
MX-64 Dynamixel Servo Class. 
 
int m_nGoalSpeed
goal speed (raw) 
 
bool IsOdometerReversed()
Test if the virtual odometer is reversed. 
 
void Init(int nServoId, uint_t uModelNum, uint_t uFwVer)
Initialize servo class instance. 
 
CrossLink_T m_link
servo cross linkage 
 
DynaServoOdometer_T m_od
servo virtual odometer 
 
virtual const DynaServoSpec_T & GetSpecification() const 
Get servo specification. 
 
uint_t m_uCurPos
current position (encoder ticks) 
 
virtual bool HasSoftTorqueOverCond()
Test if servo is in a soft over torque condition. 
 
virtual float CvtRawTempToC(uint uTemp)=0
Convert raw temperature coding to degrees Celsius. 
 
DynaServo * m_pServoMate
linked servo mate 
 
virtual uint_t GetAlarms() const 
Get the current servo alarms. 
 
int OdometerToEncoder(int nOdPos)
Convert virtual odometer units to servo encoder units. 
 
RoadNarrows Dynamixel Top-Level Package Header File. 
 
virtual uint_t GetModelNumber() const 
Get servo model number. 
 
RX-24F Dynamixel Servo Class. 
 
Dynamixel Servo State Structure. 
 
virtual uint_t GetServoId() const 
Get servo id. 
 
DynaComm & m_comm
attached Dynamixel bus comm. object 
 
bool m_bRotReversed
linked do [not] rotate in opposite directions 
 
uint_t m_uRawPosMax
maximum raw position value (servo mode) 
 
uint_t m_uServoMode
servo mode Dynamixel Operational Modes 
 
int CalcOdometerAtEncMin()
Calculate the odometer value at the minimum (zero) encoder value. 
 
DynaServoState_T m_state
servo shadowed RAM state 
 
static int ReadServoId(DynaComm &comm, int nServoId, int *pServoId)
Read the servo's id from the servo's EEPROM. 
 
#define DYNA_ID_NONE
no servo id 
 
DynaServoSpec_T m_spec
servo specification 
 
virtual void RegisterAgent(DynaAgent_T *pAgent, void *pAgentArg)
Register servo proxy agent. 
 
int CalcOdometerAtEncMax()
Calculate the odometer value at the maximum encoder value. 
 
virtual int ResetOdometer(int nEncZeroPt, bool bIsReverse)
Reset the servo's virtual odometer. 
 
virtual const char * GetModelName() const 
Get servo model name string. 
 
Linked Servos Configuration Info Structure. 
 
RX-10 Dynamixel Servo Class. 
 
uint_t m_uLinkType
linked type Dynamixel Servo Link Types 
 
bool m_bHas360Pos
does [not] have full 360 position info 
 
virtual int GetGoalSpeed() const 
Get the goal servo speed. 
 
uint_t m_uCurTemp
current temperature 
 
RoadNarrows Dynamixel Library Error and Logging Routines. 
 
int GetOdometer()
Get the current virtual odometer value. 
 
virtual void GetSoftTorqueThresholds(uint_t &uOverTorqueTh, uint_t &uClearTorqueTh)
Get soft torque thresholds. 
 
Dynamixel Bus Communications Abstract Base Class.