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