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.