DynamixelBus¶
rb::DynamixelBus is the direct peripheral-access class for Dynamixel-based
devices. This page is intentionally close in spirit to ROBOTIS’s own
PortHandler-style reference: open the bus, configure communication, then
read or write grouped or per-device values.
Header
Header |
|
Declaration
Namespace |
|
Kind |
|
Primary role |
Open a Dynamixel device bus and perform low-level read or write operations for attached devices. |
Public Member Functions
Method group |
Purpose |
Notes |
|---|---|---|
|
Configure the port and communication settings. |
This is the bus bring-up sequence. |
|
Check presence and read one device’s state or configuration. |
Covers encoder, torque-enable, operating mode, temperature, and buttons. |
|
Read multiple devices efficiently in one transaction. |
Use for synchronized state polling. |
|
Write torque, position, operating mode, or vibration values. |
Use the grouped variants for multi-device updates. |
|
Inspect or change PID gains. |
Covers individual gains or the combined PID record. |
|
Configure torque constants used by the helper routines. |
Useful when mapping current or torque values. |
Numeric Fields, Units & Encodings
Method or field family |
Unit / encoding |
Notes |
|---|---|---|
|
Baud rate value |
Serial line speed passed as an integer baud setting. |
|
|
Encoder values converted into joint angle. |
|
|
Present motor velocity. |
|
|
Motor current command/readback. |
|
|
Torque command/readback. |
|
|
Motor temperature values. |
|
Encoder units |
Public Python docs explicitly describe these as raw encoder units rather than radians. |
|
Register value |
Raw PID register values, not normalized gains. |
|
Register / enum value |
Operating-mode encoding from the motor firmware. |
|
|
Torque-enable flag values. |
|
State value |
Exposed as integer button/trigger states. No physical unit is defined. |
|
Range |
Raw vibration-level command. |
|
Not specified |
Public C++/Python docs describe the parameter but do not assign a unit. |
Detailed Reference
-
class DynamixelBus¶
Public Functions
-
explicit DynamixelBus(const std::string &dev_name)¶
-
~DynamixelBus()¶
-
std::optional<std::vector<std::pair<int, MotorState>>> GetMotorStates(const std::vector<int> &ids)¶
-
std::optional<uint16_t> GetPositionDGain(int id)¶
-
std::optional<uint16_t> GetPositionIGain(int id)¶
-
std::optional<uint16_t> GetPositionPGain(int id)¶
-
std::optional<DynamixelBus::PIDGain> GetPositionPIDGain(int id)¶
-
std::optional<std::vector<std::pair<int, int>>> GroupFastSyncRead(const std::vector<int> &ids, int addr, int len)¶
-
std::optional<std::vector<std::pair<int, double>>> GroupFastSyncReadEncoder(const std::vector<int> &ids)¶
-
std::optional<std::vector<std::pair<int, int>>> GroupFastSyncReadOperatingMode(const std::vector<int> &ids, bool use_cache = false)¶
-
std::optional<std::vector<std::pair<int, int>>> GroupFastSyncReadTorqueEnable(const std::vector<int> &ids)¶
-
void GroupSyncWriteOperatingMode(const std::vector<std::pair<int, int>> &id_and_mode_vector)¶
-
void GroupSyncWriteSendPosition(const std::vector<std::pair<int, double>> &id_and_position_vector)¶
-
void GroupSyncWriteSendTorque(const std::vector<std::pair<int, double>> &id_and_torque_vector)¶
-
void GroupSyncWriteTorqueEnable(const std::vector<int> &ids, int enable)¶
-
void GroupSyncWriteTorqueEnable(const std::vector<std::pair<int, int>> &id_and_eanble_vector)¶
-
bool OpenPort()¶
-
bool Ping(int id)¶
-
std::optional<std::pair<int, ButtonState>> ReadButtonStatus(int id)¶
-
std::optional<double> ReadEncoder(int id)¶
-
std::optional<int> ReadOperatingMode(int id, bool use_cache = false)¶
-
std::optional<int> ReadTemperature(int id)¶
-
std::optional<int> ReadTorqueEnable(int id)¶
-
void SendCurrent(int id, double current)¶
-
void SendGoalPosition(int id, int goal_position)¶
-
bool SendOperatingMode(int id, int mode)¶
-
void SendTorque(int id, double joint_torque)¶
-
void SendTorqueEnable(int id, int onoff)¶
-
void SendVibration(int id, int level)¶
-
bool SetBaudRate(int baudrate)¶
-
void SetPositionDGain(int id, uint16_t d_gain)¶
-
void SetPositionIGain(int id, uint16_t i_gain)¶
-
void SetPositionPGain(int id, uint16_t p_gain)¶
-
void SetPositionPIDGain(int id, const DynamixelBus::PIDGain &pid_gain)¶
-
void SetPositionPIDGain(int id, std::optional<uint16_t> p_gain, std::optional<uint16_t> i_gain, std::optional<uint16_t> d_gain)¶
-
void SetPositionPIDGain(int id, uint16_t p_gain, uint16_t i_gain, uint16_t d_gain)¶
-
void SetTorqueConstant(const std::vector<double> &torque_constant)¶
Public Static Attributes
-
static int kAddrCurrentTemperature = 146¶
-
static uint16_t kAddrGoalCurrent = 102¶
-
static uint16_t kAddrGoalPosition = 116¶
-
static uint16_t kAddrGoalVibrationLevel = 102¶
-
static uint16_t kAddrOperatingMode = 11¶
-
static uint16_t kAddrPositionDGain = 80¶
-
static uint16_t kAddrPositionIGain = 82¶
-
static uint16_t kAddrPositionPGain = 84¶
-
static uint16_t kAddrPresentButtonState = 132¶
-
static uint16_t kAddrPresentCurrent = 126¶
-
static uint16_t kAddrPresentPosition = 132¶
-
static uint16_t kAddrPresentVelocity = 128¶
-
static uint16_t kAddrTorqueEnable = 64¶
-
static int kCurrentBasedPositionControlMode = 5¶
-
static int kCurrentControlMode = 0¶
-
static int kDefaultBaudrate = 2000000¶
-
static float kProtocolVersion = 2.0¶
-
static int kTorqueDisable = 0¶
-
static int kTorqueEnable = 1¶
-
struct ButtonState¶
-
struct MotorState¶
-
struct PIDGain¶
-
explicit DynamixelBus(const std::string &dev_name)¶
Related Types
Examples
module_test/gripper.cppmodule_test/head.cppmodule_test/tool_flange.cpp