Fawkes API  Fawkes Development Version
servo_chain.h
1 
2 /***************************************************************************
3  * servo_chain.h - Class for accessing Robotis dynamixel servos
4  *
5  * Created: Mon Mar 23 20:42:42 2015 (based on pantilt plugin)
6  * Copyright 2005-2015 Tim Niemueller [www.niemueller.de]
7  ****************************************************************************/
8 
9 /* This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version. A runtime exception applies to
13  * this software (see LICENSE.GPL_WRE file mentioned below for details).
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Library General Public License for more details.
19  *
20  * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
21  */
22 
23 #ifndef _PLUGINS_DYNAMIXEL_SERVO_CHAIN_H_
24 #define _PLUGINS_DYNAMIXEL_SERVO_CHAIN_H_
25 
26 #include <core/exception.h>
27 
28 #include <cstddef>
29 #include <cstdio>
30 #include <list>
31 #include <vector>
32 
33 #define DYNAMIXEL_CONTROL_TABLE_LENGTH 0x32
34 #define DYNAMIXEL_MAX_NUM_SERVOS 254
35 
37 {
38 public:
39  /** List of servo IDs. */
40  typedef std::list<unsigned char> DeviceList;
41 
42  DynamixelChain(const char * device_file,
43  unsigned int default_timeout_ms = 30,
44  bool enable_echo_fix = false,
45  bool enable_connection_stability = false,
46  float min_voltage = 12.0,
47  float max_voltage = 16.0);
49 
50  void open();
51  void close();
52 
53  bool ping(unsigned char id, unsigned int timeout_ms = 100);
54  DeviceList discover(unsigned int total_timeout_ms = 50,
55  const std::vector<unsigned int> &servos = std::vector<unsigned int>());
56 
57  void write_table_value(unsigned char id,
58  unsigned char addr,
59  unsigned int value,
60  bool double_byte = false);
61  void write_table_values(unsigned char id,
62  unsigned char start_addr,
63  unsigned char *values,
64  unsigned int num_values);
65  void read_table_values(unsigned char id);
66  void read_table_value(unsigned char id, unsigned char addr, unsigned char read_length);
67  void start_read_table_values(unsigned char id);
69 
70  void goto_position(unsigned char id, unsigned int value);
71  void goto_positions(unsigned int num_positions, ...);
72 
73  const char * get_model(unsigned char id, bool refresh = false);
74  unsigned int get_model_number(unsigned char id, bool refresh = false);
75  unsigned int get_position(unsigned char id, bool refresh = false);
76  unsigned char get_firmware_version(unsigned char id, bool refresh = false);
77  unsigned char get_baudrate(unsigned char id, bool refresh = false);
78  unsigned char get_delay_time(unsigned char id, bool refresh = false);
79  unsigned char get_error(unsigned char id);
80  void get_angle_limits(unsigned char id,
81  unsigned int &cw_limit,
82  unsigned int &ccw_limit,
83  bool refresh = false);
84  unsigned char get_temperature_limit(unsigned char id, bool refresh = false);
85  void get_voltage_limits(unsigned char id,
86  unsigned char &low,
87  unsigned char &high,
88  bool refresh = false);
89  unsigned int get_max_torque(unsigned char id, bool refresh = false);
90  unsigned char get_status_return_level(unsigned char id, bool refresh = false);
91  unsigned char get_alarm_led(unsigned char id, bool refresh = false);
92  unsigned char get_alarm_shutdown(unsigned char id, bool refresh = false);
93  void get_calibration(unsigned char id,
94  unsigned int &down_calib,
95  unsigned int &up_calib,
96  bool refresh = false);
97  bool is_torque_enabled(unsigned char id, bool refresh = false);
98  bool is_led_enabled(unsigned char id, bool refresh = false);
99  void get_compliance_values(unsigned char id,
100  unsigned char &cw_margin,
101  unsigned char &cw_slope,
102  unsigned char &ccw_margin,
103  unsigned char &ccw_slope,
104  bool refresh = false);
105  unsigned int get_goal_position(unsigned char id, bool refresh = false);
106  unsigned int get_goal_speed(unsigned char id, bool refresh = false);
107  float get_max_supported_speed(unsigned char id, bool refresh = false);
108  unsigned int get_torque_limit(unsigned char id, bool refresh = false);
109  unsigned int get_speed(unsigned char id, bool refresh = false);
110  unsigned int get_load(unsigned char id, bool refresh = false);
111  unsigned char get_voltage(unsigned char id, bool refresh = false);
112  unsigned char get_temperature(unsigned char id, bool refresh = false);
113  bool is_moving(unsigned char id, bool refresh = false);
114  bool is_locked(unsigned char id, bool refresh = false);
115  unsigned int get_punch(unsigned char id, bool refresh = false);
116 
117  void set_id(unsigned char id, unsigned char new_id);
118  void set_baudrate(unsigned char id, unsigned char baudrate);
119  void set_return_delay_time(unsigned char id, unsigned char return_delay_time);
120  void set_angle_limits(unsigned char id, unsigned int cw_limit, unsigned int ccw_limit);
121  void set_temperature_limit(unsigned char id, unsigned char temp_limit);
122  void set_voltage_limits(unsigned char id, unsigned char low, unsigned char high);
123  void set_max_torque(unsigned char id, unsigned int max_torque);
124  void set_status_return_level(unsigned char id, unsigned char status_return_level);
125  void set_alarm_led(unsigned char id, unsigned char alarm_led);
126  void set_alarm_shutdown(unsigned char id, unsigned char alarm_shutdown);
127  void set_torque_enabled(unsigned char id, bool enabled);
128  void set_torques_enabled(bool enabled, unsigned int num_servos, ...);
129  void set_led_enabled(unsigned char id, bool enabled);
130  void set_compliance_values(unsigned char id,
131  unsigned char cw_margin,
132  unsigned char cw_slope,
133  unsigned char ccw_margin,
134  unsigned char ccw_slope);
135  void set_goal_speed(unsigned char id, unsigned int goal_speed);
136  void set_goal_speeds(unsigned int num_servos, ...);
137  void set_torque_limit(unsigned char id, unsigned int torque_limit);
138  void lock_config(unsigned char id);
139  void set_punch(unsigned char id, unsigned int punch);
140 
141  bool data_available();
142 
143  // Status return level
144  static const unsigned char SRL_RESPOND_NONE;
145  static const unsigned char SRL_RESPOND_READ;
146  static const unsigned char SRL_RESPOND_ALL;
147 
148  static const unsigned char BROADCAST_ID;
149  static const unsigned int MAX_POSITION;
150  static const unsigned int CENTER_POSITION;
151  static const float MAX_ANGLE_DEG;
152  static const float MAX_ANGLE_RAD;
153  static const float RAD_PER_POS_TICK;
154  static const float POS_TICKS_PER_RAD;
155  static const float SEC_PER_60DEG_12V;
156  static const float SEC_PER_60DEG_16V;
157  static const unsigned int MAX_SPEED;
158 
159  // Parameter entry offsets
160  static const unsigned char P_MODEL_NUMBER_L;
161  static const unsigned char P_MODEL_NUMBER_H;
162  static const unsigned char P_VERSION;
163  static const unsigned char P_ID;
164  static const unsigned char P_BAUD_RATE;
165  static const unsigned char P_RETURN_DELAY_TIME;
166  static const unsigned char P_CW_ANGLE_LIMIT_L;
167  static const unsigned char P_CW_ANGLE_LIMIT_H;
168  static const unsigned char P_CCW_ANGLE_LIMIT_L;
169  static const unsigned char P_CCW_ANGLE_LIMIT_H;
170  static const unsigned char P_SYSTEM_DATA2;
171  static const unsigned char P_LIMIT_TEMPERATURE;
172  static const unsigned char P_DOWN_LIMIT_VOLTAGE;
173  static const unsigned char P_UP_LIMIT_VOLTAGE;
174  static const unsigned char P_MAX_TORQUE_L;
175  static const unsigned char P_MAX_TORQUE_H;
176  static const unsigned char P_RETURN_LEVEL;
177  static const unsigned char P_ALARM_LED;
178  static const unsigned char P_ALARM_SHUTDOWN;
179  static const unsigned char P_OPERATING_MODE;
180  static const unsigned char P_DOWN_CALIBRATION_L;
181  static const unsigned char P_DOWN_CALIBRATION_H;
182  static const unsigned char P_UP_CALIBRATION_L;
183  static const unsigned char P_UP_CALIBRATION_H;
184 
185  static const unsigned char P_TORQUE_ENABLE;
186  static const unsigned char P_LED;
187  static const unsigned char P_CW_COMPLIANCE_MARGIN;
188  static const unsigned char P_CCW_COMPLIANCE_MARGIN;
189  static const unsigned char P_CW_COMPLIANCE_SLOPE;
190  static const unsigned char P_CCW_COMPLIANCE_SLOPE;
191  static const unsigned char P_GOAL_POSITION_L;
192  static const unsigned char P_GOAL_POSITION_H;
193  static const unsigned char P_GOAL_SPEED_L;
194  static const unsigned char P_GOAL_SPEED_H;
195  static const unsigned char P_TORQUE_LIMIT_L;
196  static const unsigned char P_TORQUE_LIMIT_H;
197  static const unsigned char P_PRESENT_POSITION_L;
198  static const unsigned char P_PRESENT_POSITION_H;
199  static const unsigned char P_PRESENT_SPEED_L;
200  static const unsigned char P_PRESENT_SPEED_H;
201  static const unsigned char P_PRESENT_LOAD_L;
202  static const unsigned char P_PRESENT_LOAD_H;
203  static const unsigned char P_PRESENT_VOLTAGE;
204  static const unsigned char P_PRESENT_TEMPERATURE;
205  static const unsigned char P_REGISTERED_INSTRUCTION;
206  static const unsigned char P_PAUSE_TIME;
207  static const unsigned char P_MOVING;
208  static const unsigned char P_LOCK;
209  static const unsigned char P_PUNCH_L;
210  static const unsigned char P_PUNCH_H;
211 
212 private:
213  // Instructions
214  static const unsigned char INST_PING;
215  static const unsigned char INST_READ;
216  static const unsigned char INST_WRITE;
217  static const unsigned char INST_REG_WRITE;
218  static const unsigned char INST_ACTION;
219  static const unsigned char INST_RESET;
220  static const unsigned char INST_DIGITAL_RESET;
221  static const unsigned char INST_SYSTEM_READ;
222  static const unsigned char INST_SYSTEM_WRITE;
223  static const unsigned char INST_SYNC_WRITE;
224  static const unsigned char INST_SYNC_REG_WRITE;
225 
226  // Packet offsets
227  static const unsigned char PACKET_OFFSET_ID;
228  static const unsigned char PACKET_OFFSET_LENGTH;
229  static const unsigned char PACKET_OFFSET_INST;
230  static const unsigned char PACKET_OFFSET_PARAM;
231  static const unsigned char PACKET_OFFSET_ERROR;
232 
233 private:
234  unsigned char calc_checksum(const unsigned char id,
235  const unsigned char instruction,
236  const unsigned char *params,
237  const unsigned char plength);
238  void send(const unsigned char id,
239  const unsigned char instruction,
240  const unsigned char *params,
241  const unsigned char plength);
242  void recv(const unsigned char exp_length, unsigned int timeout_ms = 0xFFFFFFFF);
243  void assert_valid_id(unsigned char id);
244  unsigned int merge_twobyte_value(unsigned int id, unsigned char ind_l, unsigned char ind_h);
245  unsigned int
246  get_value(unsigned int id, bool refresh, unsigned int ind_l, unsigned int ind_h = 0xFFFFFFFF);
247  bool inline responds_read(unsigned int id)
248  {
249  return ((control_table_[id][P_RETURN_LEVEL] == SRL_RESPOND_READ)
250  || (control_table_[id][P_RETURN_LEVEL] == SRL_RESPOND_ALL));
251  }
252 
253  bool inline responds_all(unsigned int id)
254  {
255  return (control_table_[id][P_RETURN_LEVEL] == SRL_RESPOND_ALL);
256  }
257 
258  int fd_;
259  char * device_file_;
260  unsigned int default_timeout_ms_;
261  bool enable_echo_fix_;
262  bool enable_connection_stability_;
263  float min_voltage_;
264  float max_voltage_;
265 
266  unsigned char obuffer_[260];
267  unsigned char ibuffer_[260];
268 
269  int obuffer_length_;
270  int ibuffer_length_;
271 
272  char control_table_[DYNAMIXEL_MAX_NUM_SERVOS][DYNAMIXEL_CONTROL_TABLE_LENGTH];
273 };
274 
275 #endif
DynamixelChain::start_read_table_values
void start_read_table_values(unsigned char id)
Start to receive table values.
Definition: servo_chain.cpp:587
DynamixelChain::SRL_RESPOND_ALL
static const unsigned char SRL_RESPOND_ALL
SRL_RESPOND_ALL.
Definition: servo_chain.h:146
DynamixelChain::P_RETURN_DELAY_TIME
static const unsigned char P_RETURN_DELAY_TIME
P_RETURN_DELAY_TIME.
Definition: servo_chain.h:165
DynamixelChain::set_max_torque
void set_max_torque(unsigned char id, unsigned int max_torque)
Set maximum torque.
Definition: servo_chain.cpp:1226
DynamixelChain::get_calibration
void get_calibration(unsigned char id, unsigned int &down_calib, unsigned int &up_calib, bool refresh=false)
Get calibration data.
Definition: servo_chain.cpp:966
DynamixelChain::P_MODEL_NUMBER_H
static const unsigned char P_MODEL_NUMBER_H
P_MODEL_NUMBER_H.
Definition: servo_chain.h:161
DynamixelChain::get_speed
unsigned int get_speed(unsigned char id, bool refresh=false)
Get current speed.
Definition: servo_chain.cpp:1084
DynamixelChain::set_torque_enabled
void set_torque_enabled(unsigned char id, bool enabled)
Enable or disable torque.
Definition: servo_chain.cpp:1268
DynamixelChain::MAX_SPEED
static const unsigned int MAX_SPEED
MAX_SPEED.
Definition: servo_chain.h:157
DynamixelChain::set_goal_speeds
void set_goal_speeds(unsigned int num_servos,...)
Set goal speeds for multiple servos.
Definition: servo_chain.cpp:1354
DynamixelChain::P_ALARM_LED
static const unsigned char P_ALARM_LED
P_ALARM_LED.
Definition: servo_chain.h:177
DynamixelChain::P_PAUSE_TIME
static const unsigned char P_PAUSE_TIME
P_PAUSE_TIME.
Definition: servo_chain.h:206
DynamixelChain::get_status_return_level
unsigned char get_status_return_level(unsigned char id, bool refresh=false)
Get status return level.
Definition: servo_chain.cpp:932
DynamixelChain::set_compliance_values
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.
Definition: servo_chain.cpp:1323
DynamixelChain::open
void open()
Open serial port.
Definition: servo_chain.cpp:194
DynamixelChain::get_firmware_version
unsigned char get_firmware_version(unsigned char id, bool refresh=false)
Get firmware version.
Definition: servo_chain.cpp:835
DynamixelChain::set_status_return_level
void set_status_return_level(unsigned char id, unsigned char status_return_level)
Set status return level.
Definition: servo_chain.cpp:1237
DynamixelChain::is_torque_enabled
bool is_torque_enabled(unsigned char id, bool refresh=false)
Check if torque is enabled.
Definition: servo_chain.cpp:981
DynamixelChain::P_CW_ANGLE_LIMIT_L
static const unsigned char P_CW_ANGLE_LIMIT_L
P_CW_ANGLE_LIMIT_L.
Definition: servo_chain.h:166
DynamixelChain::is_locked
bool is_locked(unsigned char id, bool refresh=false)
Check is servo is locked.
Definition: servo_chain.cpp:1139
DynamixelChain::set_angle_limits
void set_angle_limits(unsigned char id, unsigned int cw_limit, unsigned int ccw_limit)
Set angle limits.
Definition: servo_chain.cpp:1191
DynamixelChain::P_BAUD_RATE
static const unsigned char P_BAUD_RATE
P_BAUD_RATE.
Definition: servo_chain.h:164
DynamixelChain::P_ALARM_SHUTDOWN
static const unsigned char P_ALARM_SHUTDOWN
P_ALARM_SHUTDOWN.
Definition: servo_chain.h:178
DynamixelChain::goto_positions
void goto_positions(unsigned int num_positions,...)
Move several servos to specified positions.
Definition: servo_chain.cpp:1430
DynamixelChain::P_CW_ANGLE_LIMIT_H
static const unsigned char P_CW_ANGLE_LIMIT_H
P_CW_ANGLE_LIMIT_H.
Definition: servo_chain.h:167
DynamixelChain::SRL_RESPOND_READ
static const unsigned char SRL_RESPOND_READ
SRL_RESPOND_READ.
Definition: servo_chain.h:145
DynamixelChain::P_CCW_COMPLIANCE_SLOPE
static const unsigned char P_CCW_COMPLIANCE_SLOPE
P_CCW_COMPLIANCE_SLOPE.
Definition: servo_chain.h:190
DynamixelChain::P_CW_COMPLIANCE_MARGIN
static const unsigned char P_CW_COMPLIANCE_MARGIN
P_CW_COMPLIANCE_MARGIN.
Definition: servo_chain.h:187
DynamixelChain::get_temperature
unsigned char get_temperature(unsigned char id, bool refresh=false)
Get temperature.
Definition: servo_chain.cpp:1117
DynamixelChain::P_CCW_ANGLE_LIMIT_H
static const unsigned char P_CCW_ANGLE_LIMIT_H
P_CCW_ANGLE_LIMIT_H.
Definition: servo_chain.h:169
DynamixelChain::get_delay_time
unsigned char get_delay_time(unsigned char id, bool refresh=false)
Get time of the delay before replies are sent.
Definition: servo_chain.cpp:857
DynamixelChain::P_PRESENT_LOAD_L
static const unsigned char P_PRESENT_LOAD_L
P_PRESENT_LOAD_L.
Definition: servo_chain.h:201
DynamixelChain::SEC_PER_60DEG_16V
static const float SEC_PER_60DEG_16V
SEC_PER_60DEG_16V.
Definition: servo_chain.h:156
DynamixelChain::P_SYSTEM_DATA2
static const unsigned char P_SYSTEM_DATA2
P_SYSTEM_DATA2.
Definition: servo_chain.h:170
DynamixelChain::get_punch
unsigned int get_punch(unsigned char id, bool refresh=false)
Get punch.
Definition: servo_chain.cpp:1150
DynamixelChain::write_table_value
void write_table_value(unsigned char id, unsigned char addr, unsigned int value, bool double_byte=false)
Write a table value.
Definition: servo_chain.cpp:657
DynamixelChain::P_LOCK
static const unsigned char P_LOCK
P_LOCK.
Definition: servo_chain.h:208
DynamixelChain::P_PRESENT_SPEED_L
static const unsigned char P_PRESENT_SPEED_L
P_PRESENT_SPEED_L.
Definition: servo_chain.h:199
DynamixelChain::P_ID
static const unsigned char P_ID
P_ID.
Definition: servo_chain.h:163
DynamixelChain::get_model
const char * get_model(unsigned char id, bool refresh=false)
Get model string.
Definition: servo_chain.cpp:788
DynamixelChain::set_torques_enabled
void set_torques_enabled(bool enabled, unsigned int num_servos,...)
Enable or disable torque for multiple (selected) servos at once.
Definition: servo_chain.cpp:1281
DynamixelChain::finish_read_table_values
void finish_read_table_values()
Finish control table receive operations.
Definition: servo_chain.cpp:604
DynamixelChain::P_CW_COMPLIANCE_SLOPE
static const unsigned char P_CW_COMPLIANCE_SLOPE
P_CW_COMPLIANCE_SLOPE.
Definition: servo_chain.h:189
DynamixelChain::get_model_number
unsigned int get_model_number(unsigned char id, bool refresh=false)
Get model.
Definition: servo_chain.cpp:813
DynamixelChain::P_DOWN_CALIBRATION_L
static const unsigned char P_DOWN_CALIBRATION_L
P_DOWN_CALIBRATION_L.
Definition: servo_chain.h:180
DynamixelChain::ping
bool ping(unsigned char id, unsigned int timeout_ms=100)
Ping servo.
Definition: servo_chain.cpp:554
DynamixelChain::P_GOAL_POSITION_H
static const unsigned char P_GOAL_POSITION_H
P_GOAL_POSITION_H.
Definition: servo_chain.h:192
DynamixelChain::P_PRESENT_VOLTAGE
static const unsigned char P_PRESENT_VOLTAGE
P_PRESENT_VOLTAGE.
Definition: servo_chain.h:203
DynamixelChain::get_load
unsigned int get_load(unsigned char id, bool refresh=false)
Get current load.
Definition: servo_chain.cpp:1095
DynamixelChain::MAX_ANGLE_DEG
static const float MAX_ANGLE_DEG
MAX_ANGLE_DEG.
Definition: servo_chain.h:151
DynamixelChain::~DynamixelChain
~DynamixelChain()
Destructor.
Definition: servo_chain.cpp:187
DynamixelChain::MAX_ANGLE_RAD
static const float MAX_ANGLE_RAD
MAX_ANGLE_RAD.
Definition: servo_chain.h:152
DynamixelChain::get_error
unsigned char get_error(unsigned char id)
Get error flags set by the servo.
Definition: servo_chain.cpp:867
DynamixelChain::P_PRESENT_TEMPERATURE
static const unsigned char P_PRESENT_TEMPERATURE
P_PRESENT_TEMPERATURE.
Definition: servo_chain.h:204
DynamixelChain::P_PRESENT_SPEED_H
static const unsigned char P_PRESENT_SPEED_H
P_PRESENT_SPEED_H.
Definition: servo_chain.h:200
DynamixelChain::get_alarm_shutdown
unsigned char get_alarm_shutdown(unsigned char id, bool refresh=false)
Get shutdown on alarm state.
Definition: servo_chain.cpp:954
DynamixelChain::P_MAX_TORQUE_H
static const unsigned char P_MAX_TORQUE_H
P_MAX_TORQUE_H.
Definition: servo_chain.h:175
DynamixelChain::is_led_enabled
bool is_led_enabled(unsigned char id, bool refresh=false)
Check if LED is enabled.
Definition: servo_chain.cpp:992
DynamixelChain::P_UP_LIMIT_VOLTAGE
static const unsigned char P_UP_LIMIT_VOLTAGE
P_UP_LIMIT_VOLTAGE.
Definition: servo_chain.h:173
DynamixelChain::P_MAX_TORQUE_L
static const unsigned char P_MAX_TORQUE_L
P_MAX_TORQUE_L.
Definition: servo_chain.h:174
DynamixelChain::get_compliance_values
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.
Definition: servo_chain.cpp:1006
DynamixelChain::get_goal_speed
unsigned int get_goal_speed(unsigned char id, bool refresh=false)
Get goal speed.
Definition: servo_chain.cpp:1036
DynamixelChain::get_voltage_limits
void get_voltage_limits(unsigned char id, unsigned char &low, unsigned char &high, bool refresh=false)
Get voltage limits.
Definition: servo_chain.cpp:906
DynamixelChain::SEC_PER_60DEG_12V
static const float SEC_PER_60DEG_12V
SEC_PER_60DEG_12V.
Definition: servo_chain.h:155
DynamixelChain::get_max_supported_speed
float get_max_supported_speed(unsigned char id, bool refresh=false)
Get maximum supported speed.
Definition: servo_chain.cpp:1047
DynamixelChain::set_goal_speed
void set_goal_speed(unsigned char id, unsigned int goal_speed)
Set goal speed.
Definition: servo_chain.cpp:1343
DynamixelChain::get_position
unsigned int get_position(unsigned char id, bool refresh=false)
Get current position.
Definition: servo_chain.cpp:824
DynamixelChain::set_punch
void set_punch(unsigned char id, unsigned int punch)
Set punch.
Definition: servo_chain.cpp:1396
DynamixelChain::close
void close()
Close port.
Definition: servo_chain.cpp:266
DynamixelChain::set_alarm_led
void set_alarm_led(unsigned char id, unsigned char alarm_led)
Set alarm LED settings.
Definition: servo_chain.cpp:1247
DynamixelChain::P_TORQUE_LIMIT_L
static const unsigned char P_TORQUE_LIMIT_L
P_TORQUE_LIMIT_L.
Definition: servo_chain.h:195
DynamixelChain::P_TORQUE_LIMIT_H
static const unsigned char P_TORQUE_LIMIT_H
P_TORQUE_LIMIT_H.
Definition: servo_chain.h:196
DynamixelChain::SRL_RESPOND_NONE
static const unsigned char SRL_RESPOND_NONE
SRL_RESPOND_NONE.
Definition: servo_chain.h:144
DynamixelChain::P_PUNCH_H
static const unsigned char P_PUNCH_H
P_PUNCH_H.
Definition: servo_chain.h:210
DynamixelChain::DeviceList
std::list< unsigned char > DeviceList
List of servo IDs.
Definition: servo_chain.h:40
DynamixelChain::set_temperature_limit
void set_temperature_limit(unsigned char id, unsigned char temp_limit)
Set temperature limit.
Definition: servo_chain.cpp:1202
DynamixelChain::set_id
void set_id(unsigned char id, unsigned char new_id)
Set ID.
Definition: servo_chain.cpp:1160
DynamixelChain::P_MODEL_NUMBER_L
static const unsigned char P_MODEL_NUMBER_L
P_MODEL_NUMBER_L.
Definition: servo_chain.h:160
DynamixelChain::P_GOAL_SPEED_L
static const unsigned char P_GOAL_SPEED_L
P_GOAL_SPEED_L.
Definition: servo_chain.h:193
DynamixelChain::set_voltage_limits
void set_voltage_limits(unsigned char id, unsigned char low, unsigned char high)
Set voltage limits.
Definition: servo_chain.cpp:1213
DynamixelChain
Definition: servo_chain.h:36
DynamixelChain::set_torque_limit
void set_torque_limit(unsigned char id, unsigned int torque_limit)
Set torque limit.
Definition: servo_chain.cpp:1386
DynamixelChain::P_LIMIT_TEMPERATURE
static const unsigned char P_LIMIT_TEMPERATURE
P_LIMIT_TEMPERATURE.
Definition: servo_chain.h:171
DynamixelChain::get_baudrate
unsigned char get_baudrate(unsigned char id, bool refresh=false)
Get baud rate.
Definition: servo_chain.cpp:846
DynamixelChain::set_led_enabled
void set_led_enabled(unsigned char id, bool enabled)
Turn LED on or off.
Definition: servo_chain.cpp:1310
DynamixelChain::get_max_torque
unsigned int get_max_torque(unsigned char id, bool refresh=false)
Get maximum torque.
Definition: servo_chain.cpp:921
DynamixelChain::get_torque_limit
unsigned int get_torque_limit(unsigned char id, bool refresh=false)
Get torque limit.
Definition: servo_chain.cpp:1073
DynamixelChain::P_PRESENT_POSITION_L
static const unsigned char P_PRESENT_POSITION_L
P_PRESENT_POSITION_L.
Definition: servo_chain.h:197
DynamixelChain::P_PRESENT_LOAD_H
static const unsigned char P_PRESENT_LOAD_H
P_PRESENT_LOAD_H.
Definition: servo_chain.h:202
DynamixelChain::set_return_delay_time
void set_return_delay_time(unsigned char id, unsigned char return_delay_time)
Set return delay time.
Definition: servo_chain.cpp:1180
DynamixelChain::read_table_values
void read_table_values(unsigned char id)
Read all table values for given servo.
Definition: servo_chain.cpp:573
DynamixelChain::P_CCW_ANGLE_LIMIT_L
static const unsigned char P_CCW_ANGLE_LIMIT_L
P_CCW_ANGLE_LIMIT_L.
Definition: servo_chain.h:168
DynamixelChain::P_OPERATING_MODE
static const unsigned char P_OPERATING_MODE
P_OPERATING_MODE.
Definition: servo_chain.h:179
DynamixelChain::P_UP_CALIBRATION_H
static const unsigned char P_UP_CALIBRATION_H
P_UP_CALIBRATION_H.
Definition: servo_chain.h:183
DynamixelChain::goto_position
void goto_position(unsigned char id, unsigned int value)
Move servo to specified position.
Definition: servo_chain.cpp:1418
DynamixelChain::set_baudrate
void set_baudrate(unsigned char id, unsigned char baudrate)
Set baud rate.
Definition: servo_chain.cpp:1170
DynamixelChain::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.
Definition: servo_chain.cpp:155
DynamixelChain::P_GOAL_POSITION_L
static const unsigned char P_GOAL_POSITION_L
P_GOAL_POSITION_L.
Definition: servo_chain.h:191
DynamixelChain::BROADCAST_ID
static const unsigned char BROADCAST_ID
BROADCAST_ID.
Definition: servo_chain.h:148
DynamixelChain::lock_config
void lock_config(unsigned char id)
Lock config.
Definition: servo_chain.cpp:1407
DynamixelChain::data_available
bool data_available()
Check data availability.
Definition: servo_chain.cpp:475
DynamixelChain::P_TORQUE_ENABLE
static const unsigned char P_TORQUE_ENABLE
P_TORQUE_ENABLE.
Definition: servo_chain.h:185
DynamixelChain::P_DOWN_LIMIT_VOLTAGE
static const unsigned char P_DOWN_LIMIT_VOLTAGE
P_DOWN_LIMIT_VOLTAGE.
Definition: servo_chain.h:172
DynamixelChain::P_GOAL_SPEED_H
static const unsigned char P_GOAL_SPEED_H
P_GOAL_SPEED_H.
Definition: servo_chain.h:194
DynamixelChain::MAX_POSITION
static const unsigned int MAX_POSITION
MAX_POSITION.
Definition: servo_chain.h:149
DynamixelChain::RAD_PER_POS_TICK
static const float RAD_PER_POS_TICK
RAD_PER_POS_TICK.
Definition: servo_chain.h:153
DynamixelChain::P_RETURN_LEVEL
static const unsigned char P_RETURN_LEVEL
P_RETURN_LEVEL.
Definition: servo_chain.h:176
DynamixelChain::P_REGISTERED_INSTRUCTION
static const unsigned char P_REGISTERED_INSTRUCTION
P_REGISTERED_INSTRUCTION.
Definition: servo_chain.h:205
DynamixelChain::P_MOVING
static const unsigned char P_MOVING
P_MOVING.
Definition: servo_chain.h:207
DynamixelChain::get_angle_limits
void get_angle_limits(unsigned char id, unsigned int &cw_limit, unsigned int &ccw_limit, bool refresh=false)
Get angle limits.
Definition: servo_chain.cpp:879
DynamixelChain::set_alarm_shutdown
void set_alarm_shutdown(unsigned char id, unsigned char alarm_shutdown)
Set shutdown on alarm.
Definition: servo_chain.cpp:1257
DynamixelChain::CENTER_POSITION
static const unsigned int CENTER_POSITION
CENTER_POSITION.
Definition: servo_chain.h:150
DynamixelChain::get_voltage
unsigned char get_voltage(unsigned char id, bool refresh=false)
Get current voltage.
Definition: servo_chain.cpp:1106
DynamixelChain::read_table_value
void read_table_value(unsigned char id, unsigned char addr, unsigned char read_length)
Read a table value.
Definition: servo_chain.cpp:627
DynamixelChain::P_VERSION
static const unsigned char P_VERSION
P_VERSION.
Definition: servo_chain.h:162
DynamixelChain::get_temperature_limit
unsigned char get_temperature_limit(unsigned char id, bool refresh=false)
Get temperature limit.
Definition: servo_chain.cpp:894
DynamixelChain::POS_TICKS_PER_RAD
static const float POS_TICKS_PER_RAD
POS_TICKS_PER_RAD.
Definition: servo_chain.h:154
DynamixelChain::P_PRESENT_POSITION_H
static const unsigned char P_PRESENT_POSITION_H
P_PRESENT_POSITION_H.
Definition: servo_chain.h:198
DynamixelChain::write_table_values
void write_table_values(unsigned char id, unsigned char start_addr, unsigned char *values, unsigned int num_values)
Write multiple table values.
Definition: servo_chain.cpp:697
DynamixelChain::P_DOWN_CALIBRATION_H
static const unsigned char P_DOWN_CALIBRATION_H
P_DOWN_CALIBRATION_H.
Definition: servo_chain.h:181
DynamixelChain::get_alarm_led
unsigned char get_alarm_led(unsigned char id, bool refresh=false)
Get alarm LED status.
Definition: servo_chain.cpp:943
DynamixelChain::P_CCW_COMPLIANCE_MARGIN
static const unsigned char P_CCW_COMPLIANCE_MARGIN
P_CCW_COMPLIANCE_MARGIN.
Definition: servo_chain.h:188
DynamixelChain::discover
DeviceList discover(unsigned int total_timeout_ms=50, const std::vector< unsigned int > &servos=std::vector< unsigned int >())
Discover devices on the bus.
Definition: servo_chain.cpp:504
DynamixelChain::is_moving
bool is_moving(unsigned char id, bool refresh=false)
Check if servo is moving.
Definition: servo_chain.cpp:1128
DynamixelChain::P_LED
static const unsigned char P_LED
P_LED.
Definition: servo_chain.h:186
DynamixelChain::P_UP_CALIBRATION_L
static const unsigned char P_UP_CALIBRATION_L
P_UP_CALIBRATION_L.
Definition: servo_chain.h:182
DynamixelChain::P_PUNCH_L
static const unsigned char P_PUNCH_L
P_PUNCH_L.
Definition: servo_chain.h:209
DynamixelChain::get_goal_position
unsigned int get_goal_position(unsigned char id, bool refresh=false)
Get goal position.
Definition: servo_chain.cpp:1025