Fawkes API
Fawkes Development Version
|
Class to access a chain of Robotis dynamixel servos. More...
#include "servo_chain.h"
Public Types | |
typedef std::list< unsigned char > | DeviceList |
List of servo IDs. More... | |
Public Member Functions | |
DynamixelChain (const char *device_file, unsigned int default_timeout_ms=30, bool enable_echo_fix=false, bool enable_connection_stability=false, float min_voltage=12.0, float max_voltage=16.0) | |
Constructor. More... | |
~DynamixelChain () | |
Destructor. More... | |
void | open () |
Open serial port. More... | |
void | close () |
Close port. More... | |
bool | ping (unsigned char id, unsigned int timeout_ms=100) |
Ping servo. More... | |
DeviceList | discover (unsigned int total_timeout_ms=50, const std::vector< unsigned int > servos=std::vector< unsigned int >()) |
Discover devices on the bus. More... | |
void | write_table_value (unsigned char id, unsigned char addr, unsigned int value, bool double_byte=false) |
Write a table value. More... | |
void | write_table_values (unsigned char id, unsigned char start_addr, unsigned char *values, unsigned int num_values) |
Write multiple table values. More... | |
void | read_table_values (unsigned char id) |
Read all table values for given servo. More... | |
void | read_table_value (unsigned char id, unsigned char addr, unsigned char read_length) |
Read a table value. More... | |
void | start_read_table_values (unsigned char id) |
Start to receive table values. More... | |
void | finish_read_table_values () |
Finish control table receive operations. More... | |
void | goto_position (unsigned char id, unsigned int value) |
Move servo to specified position. More... | |
void | goto_positions (unsigned int num_positions,...) |
Move several servos to specified positions. More... | |
const char * | get_model (unsigned char id, bool refresh=false) |
Get model string. More... | |
unsigned int | get_model_number (unsigned char id, bool refresh=false) |
Get model. More... | |
unsigned int | get_position (unsigned char id, bool refresh=false) |
Get current position. More... | |
unsigned char | get_firmware_version (unsigned char id, bool refresh=false) |
Get firmware version. More... | |
unsigned char | get_baudrate (unsigned char id, bool refresh=false) |
Get baud rate. More... | |
unsigned char | get_delay_time (unsigned char id, bool refresh=false) |
Get time of the delay before replies are sent. More... | |
unsigned char | get_error (unsigned char id) |
Get error flags set by the servo. More... | |
void | get_angle_limits (unsigned char id, unsigned int &cw_limit, unsigned int &ccw_limit, bool refresh=false) |
Get angle limits. More... | |
unsigned char | get_temperature_limit (unsigned char id, bool refresh=false) |
Get temperature limit. More... | |
void | get_voltage_limits (unsigned char id, unsigned char &low, unsigned char &high, bool refresh=false) |
Get voltage limits. More... | |
unsigned int | get_max_torque (unsigned char id, bool refresh=false) |
Get maximum torque. More... | |
unsigned char | get_status_return_level (unsigned char id, bool refresh=false) |
Get status return level. More... | |
unsigned char | get_alarm_led (unsigned char id, bool refresh=false) |
Get alarm LED status. More... | |
unsigned char | get_alarm_shutdown (unsigned char id, bool refresh=false) |
Get shutdown on alarm state. More... | |
void | get_calibration (unsigned char id, unsigned int &down_calib, unsigned int &up_calib, bool refresh=false) |
Get calibration data. More... | |
bool | is_torque_enabled (unsigned char id, bool refresh=false) |
Check if torque is enabled. More... | |
bool | is_led_enabled (unsigned char id, bool refresh=false) |
Check if LED is enabled. More... | |
void | get_compliance_values (unsigned char id, unsigned char &cw_margin, unsigned char &cw_slope, unsigned char &ccw_margin, unsigned char &ccw_slope, bool refresh=false) |
Get compliance values. More... | |
unsigned int | get_goal_position (unsigned char id, bool refresh=false) |
Get goal position. More... | |
unsigned int | get_goal_speed (unsigned char id, bool refresh=false) |
Get goal speed. More... | |
float | get_max_supported_speed (unsigned char id, bool refresh=false) |
Get maximum supported speed. More... | |
unsigned int | get_torque_limit (unsigned char id, bool refresh=false) |
Get torque limit. More... | |
unsigned int | get_speed (unsigned char id, bool refresh=false) |
Get current speed. More... | |
unsigned int | get_load (unsigned char id, bool refresh=false) |
Get current load. More... | |
unsigned char | get_voltage (unsigned char id, bool refresh=false) |
Get current voltage. More... | |
unsigned char | get_temperature (unsigned char id, bool refresh=false) |
Get temperature. More... | |
bool | is_moving (unsigned char id, bool refresh=false) |
Check if servo is moving. More... | |
bool | is_locked (unsigned char id, bool refresh=false) |
Check is servo is locked. More... | |
unsigned int | get_punch (unsigned char id, bool refresh=false) |
Get punch. More... | |
void | set_id (unsigned char id, unsigned char new_id) |
Set ID. More... | |
void | set_baudrate (unsigned char id, unsigned char baudrate) |
Set baud rate. More... | |
void | set_return_delay_time (unsigned char id, unsigned char return_delay_time) |
Set return delay time. More... | |
void | set_angle_limits (unsigned char id, unsigned int cw_limit, unsigned int ccw_limit) |
Set angle limits. More... | |
void | set_temperature_limit (unsigned char id, unsigned char temp_limit) |
Set temperature limit. More... | |
void | set_voltage_limits (unsigned char id, unsigned char low, unsigned char high) |
Set voltage limits. More... | |
void | set_max_torque (unsigned char id, unsigned int max_torque) |
Set maximum torque. More... | |
void | set_status_return_level (unsigned char id, unsigned char status_return_level) |
Set status return level. More... | |
void | set_alarm_led (unsigned char id, unsigned char alarm_led) |
Set alarm LED settings. More... | |
void | set_alarm_shutdown (unsigned char id, unsigned char alarm_shutdown) |
Set shutdown on alarm. More... | |
void | set_torque_enabled (unsigned char id, bool enabled) |
Enable or disable torque. More... | |
void | set_torques_enabled (bool enabled, unsigned char num_servos,...) |
Enable or disable torque for multiple (selected) servos at once. More... | |
void | set_led_enabled (unsigned char id, bool enabled) |
Turn LED on or off. More... | |
void | set_compliance_values (unsigned char id, unsigned char cw_margin, unsigned char cw_slope, unsigned char ccw_margin, unsigned char ccw_slope) |
Set compliance values. More... | |
void | set_goal_speed (unsigned char id, unsigned int goal_speed) |
Set goal speed. More... | |
void | set_goal_speeds (unsigned int num_servos,...) |
Set goal speeds for multiple servos. More... | |
void | set_torque_limit (unsigned char id, unsigned int torque_limit) |
Set torque limit. More... | |
void | lock_config (unsigned char id) |
Lock config. More... | |
void | set_punch (unsigned char id, unsigned int punch) |
Set punch. More... | |
bool | data_available () |
Check data availability. More... | |
Static Public Attributes | |
static const unsigned char | SRL_RESPOND_NONE = 0 |
SRL_RESPOND_NONE. More... | |
static const unsigned char | SRL_RESPOND_READ = 1 |
SRL_RESPOND_READ. More... | |
static const unsigned char | SRL_RESPOND_ALL = 2 |
SRL_RESPOND_ALL. More... | |
static const unsigned char | BROADCAST_ID = 0xfe |
BROADCAST_ID. More... | |
static const unsigned int | MAX_POSITION = 0x3ff |
MAX_POSITION. More... | |
static const unsigned int | CENTER_POSITION = 0x1ff |
CENTER_POSITION. More... | |
static const float | MAX_ANGLE_DEG = 300 |
MAX_ANGLE_DEG. More... | |
static const float | MAX_ANGLE_RAD = fawkes::deg2rad(DynamixelChain::MAX_ANGLE_DEG) |
MAX_ANGLE_RAD. More... | |
static const float | RAD_PER_POS_TICK = DynamixelChain::MAX_ANGLE_RAD / (float)(DynamixelChain::MAX_POSITION) |
RAD_PER_POS_TICK. More... | |
static const float | POS_TICKS_PER_RAD = (float)(DynamixelChain::MAX_POSITION) / DynamixelChain::MAX_ANGLE_RAD |
POS_TICKS_PER_RAD. More... | |
static const float | SEC_PER_60DEG_12V = 0.167 |
SEC_PER_60DEG_12V. More... | |
static const float | SEC_PER_60DEG_16V = 0.126 |
SEC_PER_60DEG_16V. More... | |
static const unsigned int | MAX_SPEED = 0x7ff |
MAX_SPEED. More... | |
static const unsigned char | P_MODEL_NUMBER_L = 0 |
P_MODEL_NUMBER_L. More... | |
static const unsigned char | P_MODEL_NUMBER_H = 1 |
P_MODEL_NUMBER_H. More... | |
static const unsigned char | P_VERSION = 2 |
P_VERSION. More... | |
static const unsigned char | P_ID = 3 |
P_ID. More... | |
static const unsigned char | P_BAUD_RATE = 4 |
P_BAUD_RATE. More... | |
static const unsigned char | P_RETURN_DELAY_TIME = 5 |
P_RETURN_DELAY_TIME. More... | |
static const unsigned char | P_CW_ANGLE_LIMIT_L = 6 |
P_CW_ANGLE_LIMIT_L. More... | |
static const unsigned char | P_CW_ANGLE_LIMIT_H = 7 |
P_CW_ANGLE_LIMIT_H. More... | |
static const unsigned char | P_CCW_ANGLE_LIMIT_L = 8 |
P_CCW_ANGLE_LIMIT_L. More... | |
static const unsigned char | P_CCW_ANGLE_LIMIT_H = 9 |
P_CCW_ANGLE_LIMIT_H. More... | |
static const unsigned char | P_SYSTEM_DATA2 = 10 |
P_SYSTEM_DATA2. More... | |
static const unsigned char | P_LIMIT_TEMPERATURE = 11 |
P_LIMIT_TEMPERATURE. More... | |
static const unsigned char | P_DOWN_LIMIT_VOLTAGE = 12 |
P_DOWN_LIMIT_VOLTAGE. More... | |
static const unsigned char | P_UP_LIMIT_VOLTAGE = 13 |
P_UP_LIMIT_VOLTAGE. More... | |
static const unsigned char | P_MAX_TORQUE_L = 14 |
P_MAX_TORQUE_L. More... | |
static const unsigned char | P_MAX_TORQUE_H = 15 |
P_MAX_TORQUE_H. More... | |
static const unsigned char | P_RETURN_LEVEL = 16 |
P_RETURN_LEVEL. More... | |
static const unsigned char | P_ALARM_LED = 17 |
P_ALARM_LED. More... | |
static const unsigned char | P_ALARM_SHUTDOWN = 18 |
P_ALARM_SHUTDOWN. More... | |
static const unsigned char | P_OPERATING_MODE = 19 |
P_OPERATING_MODE. More... | |
static const unsigned char | P_DOWN_CALIBRATION_L = 20 |
P_DOWN_CALIBRATION_L. More... | |
static const unsigned char | P_DOWN_CALIBRATION_H = 21 |
P_DOWN_CALIBRATION_H. More... | |
static const unsigned char | P_UP_CALIBRATION_L = 22 |
P_UP_CALIBRATION_L. More... | |
static const unsigned char | P_UP_CALIBRATION_H = 23 |
P_UP_CALIBRATION_H. More... | |
static const unsigned char | P_TORQUE_ENABLE = 24 |
P_TORQUE_ENABLE. More... | |
static const unsigned char | P_LED = 25 |
P_LED. More... | |
static const unsigned char | P_CW_COMPLIANCE_MARGIN = 26 |
P_CW_COMPLIANCE_MARGIN. More... | |
static const unsigned char | P_CCW_COMPLIANCE_MARGIN = 27 |
P_CCW_COMPLIANCE_MARGIN. More... | |
static const unsigned char | P_CW_COMPLIANCE_SLOPE = 28 |
P_CW_COMPLIANCE_SLOPE. More... | |
static const unsigned char | P_CCW_COMPLIANCE_SLOPE = 29 |
P_CCW_COMPLIANCE_SLOPE. More... | |
static const unsigned char | P_GOAL_POSITION_L = 30 |
P_GOAL_POSITION_L. More... | |
static const unsigned char | P_GOAL_POSITION_H = 31 |
P_GOAL_POSITION_H. More... | |
static const unsigned char | P_GOAL_SPEED_L = 32 |
P_GOAL_SPEED_L. More... | |
static const unsigned char | P_GOAL_SPEED_H = 33 |
P_GOAL_SPEED_H. More... | |
static const unsigned char | P_TORQUE_LIMIT_L = 34 |
P_TORQUE_LIMIT_L. More... | |
static const unsigned char | P_TORQUE_LIMIT_H = 35 |
P_TORQUE_LIMIT_H. More... | |
static const unsigned char | P_PRESENT_POSITION_L = 36 |
P_PRESENT_POSITION_L. More... | |
static const unsigned char | P_PRESENT_POSITION_H = 37 |
P_PRESENT_POSITION_H. More... | |
static const unsigned char | P_PRESENT_SPEED_L = 38 |
P_PRESENT_SPEED_L. More... | |
static const unsigned char | P_PRESENT_SPEED_H = 39 |
P_PRESENT_SPEED_H. More... | |
static const unsigned char | P_PRESENT_LOAD_L = 40 |
P_PRESENT_LOAD_L. More... | |
static const unsigned char | P_PRESENT_LOAD_H = 41 |
P_PRESENT_LOAD_H. More... | |
static const unsigned char | P_PRESENT_VOLTAGE = 42 |
P_PRESENT_VOLTAGE. More... | |
static const unsigned char | P_PRESENT_TEMPERATURE = 43 |
P_PRESENT_TEMPERATURE. More... | |
static const unsigned char | P_REGISTERED_INSTRUCTION = 44 |
P_REGISTERED_INSTRUCTION. More... | |
static const unsigned char | P_PAUSE_TIME = 45 |
P_PAUSE_TIME. More... | |
static const unsigned char | P_MOVING = 46 |
P_MOVING. More... | |
static const unsigned char | P_LOCK = 47 |
P_LOCK. More... | |
static const unsigned char | P_PUNCH_L = 48 |
P_PUNCH_L. More... | |
static const unsigned char | P_PUNCH_H = 49 |
P_PUNCH_H. More... | |
Class to access a chain of Robotis dynamixel servos.
One instance of this class communicates with a chain of up to 254 Robotis ServoChain servos, which are uniquely identified with an ID. Before making use of the chain, connect each servo individually and set its ID. See the discover() method for more information about numbering of the servos. To achieve a higher speed, it is recommended to set the status return level to reply only on READ instructions. You can do this for the whole chain with
Definition at line 36 of file servo_chain.h.
typedef std::list<unsigned char> DynamixelChain::DeviceList |
List of servo IDs.
Definition at line 40 of file servo_chain.h.
DynamixelChain::DynamixelChain | ( | const char * | device_file, |
unsigned int | default_timeout_ms = 30 , |
||
bool | enable_echo_fix = false , |
||
bool | enable_connection_stability = false , |
||
float | min_voltage = 12.0 , |
||
float | max_voltage = 16.0 |
||
) |
Constructor.
device_file | device file of the serial port |
default_timeout_ms | the timeout to apply by default to reading operations |
enable_echo_fix | true to enable a fix for buggy serial adapters |
enable_connection_stability | true to enable explicit timeout handling |
min_voltage | minimum voltage to assume safe operation |
max_voltage | maximum voltage to assume safe operation |
Definition at line 155 of file servo_chain.cpp.
DynamixelChain::~DynamixelChain | ( | ) |
Destructor.
Definition at line 177 of file servo_chain.cpp.
void DynamixelChain::close | ( | ) |
Close port.
Definition at line 257 of file servo_chain.cpp.
bool DynamixelChain::data_available | ( | ) |
Check data availability.
Definition at line 461 of file servo_chain.cpp.
DynamixelChain::DeviceList DynamixelChain::discover | ( | unsigned int | timeout_ms = 50 , |
const std::vector< unsigned int > | servos = std::vector<unsigned int>() |
||
) |
Discover devices on the bus.
This method will send a PING instruction to either the broadcast ID (servos.size() == 0) or by iterating the given servos vector and collect responses. This assumes that the return delay time is set appropriately that all responses can be received without collisions, and that the difference between the time of two consecutive servos is smaller than the given timeout (note that this might be void if you have one servo with ID 1 and one with ID 253). After sending the packet this method will do up to DYNAMIXEL_MAX_NUM_SERVOS receive operations, each with the given timeout. After the first timeout the discovery is aborted assuming that all replies have been received. You can set the timeout really high (several seconds) to be sure that all connected servos are recognized. For this to work best it is recommended to set consecutive servo IDs starting from 1 on the servos. After the servos are found, the control tables of all recognized servos are received to ensure that all other methods return valid data.
timeout_ms | maximum timeout to wait for replies. |
servos | vector of desired servos on the bus, can be an empty vector to make use of the broadcast (all available servos). |
Definition at line 491 of file servo_chain.cpp.
References fawkes::Exception::append().
Referenced by DynamixelDriverThread::init().
void DynamixelChain::finish_read_table_values | ( | ) |
Finish control table receive operations.
This executes the receive operation initiated by start_read_table_values(). This will read the values and write the output to the control table (in memory, not in the servo), such that the appropriate get methods will return the new data.
Definition at line 595 of file servo_chain.cpp.
unsigned char DynamixelChain::get_alarm_led | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get alarm LED status.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 939 of file servo_chain.cpp.
unsigned char DynamixelChain::get_alarm_shutdown | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get shutdown on alarm state.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 951 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::exec_sensor().
void DynamixelChain::get_angle_limits | ( | unsigned char | id, |
unsigned int & | cw_limit, | ||
unsigned int & | ccw_limit, | ||
bool | refresh = false |
||
) |
Get angle limits.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
cw_limit | upon return contains the clockwise angle limit |
ccw_limit | upon return contains the counter-clockwise angle limit |
Definition at line 872 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::init(), and DynamixelDriverThread::loop().
unsigned char DynamixelChain::get_baudrate | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get baud rate.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 836 of file servo_chain.cpp.
void DynamixelChain::get_calibration | ( | unsigned char | id, |
unsigned int & | down_calib, | ||
unsigned int & | up_calib, | ||
bool | refresh = false |
||
) |
Get calibration data.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
down_calib | downward calibration |
up_calib | upward calibration |
Definition at line 964 of file servo_chain.cpp.
void DynamixelChain::get_compliance_values | ( | unsigned char | id, |
unsigned char & | cw_margin, | ||
unsigned char & | cw_slope, | ||
unsigned char & | ccw_margin, | ||
unsigned char & | ccw_slope, | ||
bool | refresh = false |
||
) |
Get compliance values.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
cw_margin | upon return contains clockwise margin |
cw_slope | upon return contains clockwise slope |
ccw_margin | upon return contains counter-clockwise margin |
ccw_slope | upon return contains counter-clockwise slope |
Definition at line 1006 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::init().
unsigned char DynamixelChain::get_delay_time | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get time of the delay before replies are sent.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 848 of file servo_chain.cpp.
unsigned char DynamixelChain::get_error | ( | unsigned char | id | ) |
Get error flags set by the servo.
id | servo ID, not the broadcast ID |
Definition at line 859 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::exec_sensor().
unsigned char DynamixelChain::get_firmware_version | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get firmware version.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 824 of file servo_chain.cpp.
unsigned int DynamixelChain::get_goal_position | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get goal position.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 1024 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::exec_sensor().
unsigned int DynamixelChain::get_goal_speed | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get goal speed.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 1036 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::exec_sensor().
unsigned int DynamixelChain::get_load | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get current load.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 1099 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::exec_sensor().
float DynamixelChain::get_max_supported_speed | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get maximum supported speed.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 1048 of file servo_chain.cpp.
References fawkes::deg2rad().
Referenced by DynamixelDriverThread::init().
unsigned int DynamixelChain::get_max_torque | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get maximum torque.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 915 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::init().
const char * DynamixelChain::get_model | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get model string.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 775 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::init().
unsigned int DynamixelChain::get_model_number | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get model.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 800 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::init().
unsigned int DynamixelChain::get_position | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get current position.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 812 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::bb_interface_message_received(), and DynamixelDriverThread::exec_sensor().
unsigned int DynamixelChain::get_punch | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get punch.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 1159 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::exec_sensor().
unsigned int DynamixelChain::get_speed | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get current speed.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 1087 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::bb_interface_message_received(), and DynamixelDriverThread::exec_sensor().
unsigned char DynamixelChain::get_status_return_level | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get status return level.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 927 of file servo_chain.cpp.
unsigned char DynamixelChain::get_temperature | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get temperature.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 1123 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::exec_sensor().
unsigned char DynamixelChain::get_temperature_limit | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get temperature limit.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 887 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::init().
unsigned int DynamixelChain::get_torque_limit | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get torque limit.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 1075 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::exec_sensor().
unsigned char DynamixelChain::get_voltage | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Get current voltage.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 1111 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::exec_sensor().
void DynamixelChain::get_voltage_limits | ( | unsigned char | id, |
unsigned char & | low, | ||
unsigned char & | high, | ||
bool | refresh = false |
||
) |
Get voltage limits.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
low | upon return contains low voltage limit |
high | upon return contans high voltage limit |
Definition at line 900 of file servo_chain.cpp.
void DynamixelChain::goto_position | ( | unsigned char | id, |
unsigned int | value | ||
) |
Move servo to specified position.
id | servo ID |
value | position, value between 0 and 1023 (inclusive), covering an angle range from 0 to 300 degrees. |
Definition at line 1446 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::loop().
void DynamixelChain::goto_positions | ( | unsigned int | num_servos, |
... | |||
) |
Move several servos to specified positions.
Given the number of servos the variadic arguments must contain two values for each servo, first is the ID, second the position (see goto_position() for information on the valid values).
num_servos | number of servos, maximum is 83 |
Definition at line 1459 of file servo_chain.cpp.
bool DynamixelChain::is_led_enabled | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Check if LED is enabled.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 991 of file servo_chain.cpp.
bool DynamixelChain::is_locked | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Check is servo is locked.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 1147 of file servo_chain.cpp.
bool DynamixelChain::is_moving | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Check if servo is moving.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 1135 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::bb_interface_message_received().
bool DynamixelChain::is_torque_enabled | ( | unsigned char | id, |
bool | refresh = false |
||
) |
Check if torque is enabled.
id | servo ID, not the broadcast ID |
refresh | if true, will issue a read command for the value |
Definition at line 979 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::bb_interface_message_received(), and DynamixelDriverThread::exec_sensor().
void DynamixelChain::lock_config | ( | unsigned char | id | ) |
Lock config.
Locks the config, configuration values can no longer be modified until the next power cycle.
id | servo ID |
Definition at line 1434 of file servo_chain.cpp.
void DynamixelChain::open | ( | ) |
Open serial port.
Definition at line 184 of file servo_chain.cpp.
bool DynamixelChain::ping | ( | unsigned char | id, |
unsigned int | timeout_ms = 100 |
||
) |
Ping servo.
This pings the given servo by sending a PING instruction and reading the reply.
id | servo ID, not the broadcast ID |
timeout_ms | maximum wait time in miliseconds |
Definition at line 543 of file servo_chain.cpp.
References fawkes::Exception::print_trace().
void DynamixelChain::read_table_value | ( | unsigned char | id, |
unsigned char | addr, | ||
unsigned char | read_length | ||
) |
Read a table value.
This will read the given value(s) and write the output to the control table (in memory, not in the servo), such that the appropriate get method will return the new value.
id | servo ID, not the broadcast ID |
addr | start addr, one of the P_* constants. |
read_length | number of bytes to read |
Definition at line 616 of file servo_chain.cpp.
void DynamixelChain::read_table_values | ( | unsigned char | id | ) |
Read all table values for given servo.
This issues a READ comment for the whole control table and waits for the response.
id | servo ID |
Definition at line 563 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::init(), and DynamixelDriverThread::loop().
void DynamixelChain::set_alarm_led | ( | unsigned char | id, |
unsigned char | alarm_led | ||
) |
Set alarm LED settings.
id | servo ID |
alarm_led | new LED alarm value. |
Definition at line 1266 of file servo_chain.cpp.
void DynamixelChain::set_alarm_shutdown | ( | unsigned char | id, |
unsigned char | alarm_shutdown | ||
) |
Set shutdown on alarm.
id | servo ID |
alarm_shutdown | alarm shutdown settings |
Definition at line 1277 of file servo_chain.cpp.
void DynamixelChain::set_angle_limits | ( | unsigned char | id, |
unsigned int | cw_limit, | ||
unsigned int | ccw_limit | ||
) |
Set angle limits.
id | servo ID |
cw_limit | new clockwise limit |
ccw_limit | new counter-clockwise limit |
Definition at line 1204 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::loop().
void DynamixelChain::set_baudrate | ( | unsigned char | id, |
unsigned char | baudrate | ||
) |
Set baud rate.
id | servo ID |
baudrate | new baudrate |
Definition at line 1181 of file servo_chain.cpp.
void DynamixelChain::set_compliance_values | ( | unsigned char | id, |
unsigned char | cw_margin, | ||
unsigned char | cw_slope, | ||
unsigned char | ccw_margin, | ||
unsigned char | ccw_slope | ||
) |
Set compliance values.
id | servo ID |
cw_margin | clockwise margin |
cw_slope | clockwise slope |
ccw_margin | counter-clockwise margin |
ccw_slope | counter-clockwise slope |
Definition at line 1347 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::init().
void DynamixelChain::set_goal_speed | ( | unsigned char | id, |
unsigned int | goal_speed | ||
) |
Set goal speed.
id | servo ID |
goal_speed | desired goal speed, 1024 is maximum, 0 means "no velicity control", i.e. move as fast as possible depending on the voltage |
Definition at line 1366 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::loop().
void DynamixelChain::set_goal_speeds | ( | unsigned int | num_servos, |
... | |||
) |
Set goal speeds for multiple servos.
Given the number of servos the variadic arguments must contain two values for each servo, first is the ID, second the value.
num_servos | number of servos, maximum is 83 |
Definition at line 1378 of file servo_chain.cpp.
void DynamixelChain::set_id | ( | unsigned char | id, |
unsigned char | new_id | ||
) |
void DynamixelChain::set_led_enabled | ( | unsigned char | id, |
bool | led_enabled | ||
) |
Turn LED on or off.
id | servo ID |
led_enabled | true to turn LED on, false to turn off |
Definition at line 1333 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::finalize(), DynamixelDriverThread::init(), and DynamixelDriverThread::loop().
void DynamixelChain::set_max_torque | ( | unsigned char | id, |
unsigned int | max_torque | ||
) |
Set maximum torque.
id | servo ID |
max_torque | new maximum torque |
Definition at line 1243 of file servo_chain.cpp.
void DynamixelChain::set_punch | ( | unsigned char | id, |
unsigned int | punch | ||
) |
Set punch.
id | servo ID |
punch | new punch value |
Definition at line 1422 of file servo_chain.cpp.
void DynamixelChain::set_return_delay_time | ( | unsigned char | id, |
unsigned char | return_delay_time | ||
) |
Set return delay time.
id | servo ID |
return_delay_time | new return delay time |
Definition at line 1192 of file servo_chain.cpp.
void DynamixelChain::set_status_return_level | ( | unsigned char | id, |
unsigned char | status_return_level | ||
) |
Set status return level.
id | servo ID |
status_return_level | status return level, one of SRL_RESPOND_NONE, SRL_RESPOND_READ or SRL_RESPOND_ALL. |
Definition at line 1255 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::init().
void DynamixelChain::set_temperature_limit | ( | unsigned char | id, |
unsigned char | temp_limit | ||
) |
Set temperature limit.
id | servo ID |
temp_limit | new temperature limit (in degrees Celsius) |
Definition at line 1217 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::init().
void DynamixelChain::set_torque_enabled | ( | unsigned char | id, |
bool | enabled | ||
) |
Enable or disable torque.
id | servo ID |
enabled | true to enable (servo is powered) false to disable (servo power disabled, servo can be freely moved manually) |
Definition at line 1289 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::finalize(), DynamixelDriverThread::init(), and DynamixelDriverThread::loop().
void DynamixelChain::set_torque_limit | ( | unsigned char | id, |
unsigned int | torque_limit | ||
) |
Set torque limit.
id | servo ID |
torque_limit | new torque limit |
Definition at line 1411 of file servo_chain.cpp.
Referenced by DynamixelDriverThread::loop().
void DynamixelChain::set_torques_enabled | ( | bool | enabled, |
unsigned char | num_servos, | ||
... | |||
) |
Enable or disable torque for multiple (selected) servos at once.
Given the number of servos the same number of variadic arguments must be passed, one for each servo ID that should be enabled/disabled.
enabled | true to enable (servo is powered) false to disable (servo power disabled, servo can be freely moved manually) |
num_servos | number of servos to set, maximum is 120 |
Definition at line 1303 of file servo_chain.cpp.
void DynamixelChain::set_voltage_limits | ( | unsigned char | id, |
unsigned char | low, | ||
unsigned char | high | ||
) |
Set voltage limits.
id | servo ID |
low | lower bound (give Volts * 10) |
high | higher bound (give Volts * 10) |
Definition at line 1229 of file servo_chain.cpp.
void DynamixelChain::start_read_table_values | ( | unsigned char | id | ) |
Start to receive table values.
This method sends a READ instruction packet for the whole table, but it does not wait for the reply. This can be used to overlap the receiving with other operations. You have to ensure to call finish_read_table_values() before sending any other data.
id | servo ID, not the broadcast ID |
Definition at line 578 of file servo_chain.cpp.
void DynamixelChain::write_table_value | ( | unsigned char | id, |
unsigned char | addr, | ||
unsigned int | value, | ||
bool | double_byte = false |
||
) |
Write a table value.
id | servo ID, may be the broadcast ID |
addr | start addr, one of the P_* constants. |
value | value to write |
double_byte | if true, will assume value to be a two-byte value, otherwise it is considered as a one-byte value. |
Definition at line 647 of file servo_chain.cpp.
References fawkes::Exception::print_trace().
void DynamixelChain::write_table_values | ( | unsigned char | id, |
unsigned char | start_addr, | ||
unsigned char * | values, | ||
unsigned int | num_values | ||
) |
Write multiple table values.
id | servo ID, may be the broadcast ID |
start_addr | start addr, one of the P_* constants. |
values | values to write |
num_values | length in bytes of the values array |
Definition at line 683 of file servo_chain.cpp.
References fawkes::Exception::print_trace().
|
static |
BROADCAST_ID.
Definition at line 134 of file servo_chain.h.
Referenced by DynamixelDriverThread::init().
|
static |
CENTER_POSITION.
Definition at line 136 of file servo_chain.h.
Referenced by DynamixelDriverThread::bb_interface_message_received(), and DynamixelDriverThread::loop().
|
static |
MAX_ANGLE_DEG.
Definition at line 137 of file servo_chain.h.
|
static |
MAX_ANGLE_RAD.
Definition at line 138 of file servo_chain.h.
|
static |
MAX_POSITION.
Definition at line 135 of file servo_chain.h.
|
static |
MAX_SPEED.
Definition at line 143 of file servo_chain.h.
Referenced by DynamixelDriverThread::bb_interface_message_received().
|
static |
P_ALARM_LED.
Definition at line 163 of file servo_chain.h.
|
static |
P_ALARM_SHUTDOWN.
Definition at line 164 of file servo_chain.h.
|
static |
P_BAUD_RATE.
Definition at line 150 of file servo_chain.h.
|
static |
P_CCW_ANGLE_LIMIT_H.
Definition at line 155 of file servo_chain.h.
|
static |
P_CCW_ANGLE_LIMIT_L.
Definition at line 154 of file servo_chain.h.
|
static |
P_CCW_COMPLIANCE_MARGIN.
Definition at line 174 of file servo_chain.h.
|
static |
P_CCW_COMPLIANCE_SLOPE.
Definition at line 176 of file servo_chain.h.
|
static |
P_CW_ANGLE_LIMIT_H.
Definition at line 153 of file servo_chain.h.
|
static |
P_CW_ANGLE_LIMIT_L.
Definition at line 152 of file servo_chain.h.
|
static |
P_CW_COMPLIANCE_MARGIN.
Definition at line 173 of file servo_chain.h.
|
static |
P_CW_COMPLIANCE_SLOPE.
Definition at line 175 of file servo_chain.h.
|
static |
P_DOWN_CALIBRATION_H.
Definition at line 167 of file servo_chain.h.
|
static |
P_DOWN_CALIBRATION_L.
Definition at line 166 of file servo_chain.h.
|
static |
P_DOWN_LIMIT_VOLTAGE.
Definition at line 158 of file servo_chain.h.
|
static |
P_GOAL_POSITION_H.
Definition at line 178 of file servo_chain.h.
|
static |
P_GOAL_POSITION_L.
Definition at line 177 of file servo_chain.h.
|
static |
P_GOAL_SPEED_H.
Definition at line 180 of file servo_chain.h.
|
static |
P_GOAL_SPEED_L.
Definition at line 179 of file servo_chain.h.
|
static |
P_ID.
Definition at line 149 of file servo_chain.h.
|
static |
P_LED.
Definition at line 172 of file servo_chain.h.
|
static |
P_LIMIT_TEMPERATURE.
Definition at line 157 of file servo_chain.h.
|
static |
P_LOCK.
Definition at line 194 of file servo_chain.h.
|
static |
P_MAX_TORQUE_H.
Definition at line 161 of file servo_chain.h.
|
static |
P_MAX_TORQUE_L.
Definition at line 160 of file servo_chain.h.
|
static |
P_MODEL_NUMBER_H.
Definition at line 147 of file servo_chain.h.
|
static |
P_MODEL_NUMBER_L.
Definition at line 146 of file servo_chain.h.
|
static |
P_MOVING.
Definition at line 193 of file servo_chain.h.
|
static |
P_OPERATING_MODE.
Definition at line 165 of file servo_chain.h.
|
static |
P_PAUSE_TIME.
Definition at line 192 of file servo_chain.h.
|
static |
P_PRESENT_LOAD_H.
Definition at line 188 of file servo_chain.h.
|
static |
P_PRESENT_LOAD_L.
Definition at line 187 of file servo_chain.h.
|
static |
P_PRESENT_POSITION_H.
Definition at line 184 of file servo_chain.h.
|
static |
P_PRESENT_POSITION_L.
Definition at line 183 of file servo_chain.h.
|
static |
P_PRESENT_SPEED_H.
Definition at line 186 of file servo_chain.h.
|
static |
P_PRESENT_SPEED_L.
Definition at line 185 of file servo_chain.h.
|
static |
P_PRESENT_TEMPERATURE.
Definition at line 190 of file servo_chain.h.
|
static |
P_PRESENT_VOLTAGE.
Definition at line 189 of file servo_chain.h.
|
static |
P_PUNCH_H.
Definition at line 196 of file servo_chain.h.
|
static |
P_PUNCH_L.
Definition at line 195 of file servo_chain.h.
|
static |
P_REGISTERED_INSTRUCTION.
Definition at line 191 of file servo_chain.h.
|
static |
P_RETURN_DELAY_TIME.
Definition at line 151 of file servo_chain.h.
|
static |
P_RETURN_LEVEL.
Definition at line 162 of file servo_chain.h.
|
static |
P_SYSTEM_DATA2.
Definition at line 156 of file servo_chain.h.
|
static |
P_TORQUE_ENABLE.
Definition at line 171 of file servo_chain.h.
|
static |
P_TORQUE_LIMIT_H.
Definition at line 182 of file servo_chain.h.
|
static |
P_TORQUE_LIMIT_L.
Definition at line 181 of file servo_chain.h.
|
static |
P_UP_CALIBRATION_H.
Definition at line 169 of file servo_chain.h.
|
static |
P_UP_CALIBRATION_L.
Definition at line 168 of file servo_chain.h.
|
static |
P_UP_LIMIT_VOLTAGE.
Definition at line 159 of file servo_chain.h.
|
static |
P_VERSION.
Definition at line 148 of file servo_chain.h.
|
static |
POS_TICKS_PER_RAD.
Definition at line 140 of file servo_chain.h.
Referenced by DynamixelDriverThread::loop().
|
static |
RAD_PER_POS_TICK.
Definition at line 139 of file servo_chain.h.
Referenced by DynamixelDriverThread::bb_interface_message_received().
|
static |
SEC_PER_60DEG_12V.
Definition at line 141 of file servo_chain.h.
|
static |
SEC_PER_60DEG_16V.
Definition at line 142 of file servo_chain.h.
|
static |
SRL_RESPOND_ALL.
Definition at line 132 of file servo_chain.h.
|
static |
SRL_RESPOND_NONE.
Definition at line 130 of file servo_chain.h.
|
static |
SRL_RESPOND_READ.
Definition at line 131 of file servo_chain.h.
Referenced by DynamixelDriverThread::init().