Fawkes API Fawkes Development Version

RobotisRX28 Class Reference

Class to access a chain of Robotis RX28 servos. More...

#include "rx28.h"

List of all members.

Public Types

typedef std::list< unsigned char > DeviceList
 List of servo IDs.

Public Member Functions

 RobotisRX28 (const char *device_file, unsigned int default_timeout_ms=30)
 Constructor.
 ~RobotisRX28 ()
 Destructor.
void open ()
 Open serial port.
void close ()
 Close port.
bool ping (unsigned char id, unsigned int timeout_ms=100)
 Ping servo.
DeviceList discover (unsigned int total_timeout_ms=50)
 Discover devices on the bus.
void write_table_value (unsigned char id, unsigned char addr, unsigned int value, bool double_byte=false)
 Write a table value.
void write_table_values (unsigned char id, unsigned char start_addr, unsigned char *values, unsigned int num_values)
 Write multiple table values.
void read_table_values (unsigned char id)
 Read all table values for given servo.
void read_table_value (unsigned char id, unsigned char addr, unsigned char read_length)
 Read a table value.
void start_read_table_values (unsigned char id)
 Start to receive table values.
void finish_read_table_values ()
 Finish control table receive operations.
void goto_position (unsigned char id, unsigned int value)
 Move servo to specified position.
void goto_positions (unsigned int num_positions,...)
 Move several servos to specified positions.
unsigned int get_model (unsigned char id, bool refresh=false)
 Get model.
unsigned int get_position (unsigned char id, bool refresh=false)
 Get current position.
unsigned char get_firmware_version (unsigned char id, bool refresh=false)
 Get firmware version.
unsigned char get_baudrate (unsigned char id, bool refresh=false)
 Get baud rate.
unsigned char get_delay_time (unsigned char id, bool refresh=false)
 Get time of the delay before replies are sent.
void get_angle_limits (unsigned char id, unsigned int &cw_limit, unsigned int &ccw_limit, bool refresh=false)
 Get angle limits.
unsigned char get_temperature_limit (unsigned char id, bool refresh=false)
 Get temperature limit.
void get_voltage_limits (unsigned char id, unsigned char &low, unsigned char &high, bool refresh=false)
 Get voltage limits.
unsigned int get_max_torque (unsigned char id, bool refresh=false)
 Get maximum torque.
unsigned char get_status_return_level (unsigned char id, bool refresh=false)
 Get status return level.
unsigned char get_alarm_led (unsigned char id, bool refresh=false)
 Get alarm LED status.
unsigned char get_alarm_shutdown (unsigned char id, bool refresh=false)
 Get shutdown on alarm state.
void get_calibration (unsigned char id, unsigned int &down_calib, unsigned int &up_calib, bool refresh=false)
 Get calibration data.
bool is_torque_enabled (unsigned char id, bool refresh=false)
 Check if torque is enabled.
bool is_led_enabled (unsigned char id, bool refresh=false)
 Check if LED is enabled.
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.
unsigned int get_goal_position (unsigned char id, bool refresh=false)
 Get goal position.
unsigned int get_goal_speed (unsigned char id, bool refresh=false)
 Get goal speed.
float get_max_supported_speed (unsigned char id, bool refresh=false)
 Get maximum supported speed.
unsigned int get_torque_limit (unsigned char id, bool refresh=false)
 Get torque limit.
unsigned int get_speed (unsigned char id, bool refresh=false)
 Get current speed.
unsigned int get_load (unsigned char id, bool refresh=false)
 Get current load.
unsigned char get_voltage (unsigned char id, bool refresh=false)
 Get current voltage.
unsigned char get_temperature (unsigned char id, bool refresh=false)
 Get temperature.
bool is_moving (unsigned char id, bool refresh=false)
 Check if servo is moving.
bool is_locked (unsigned char id, bool refresh=false)
 Check is servo is locked.
unsigned int get_punch (unsigned char id, bool refresh=false)
 Get punch.
void set_id (unsigned char id, unsigned char new_id)
 Set ID.
void set_baudrate (unsigned char id, unsigned char baudrate)
 Set baud rate.
void set_return_delay_time (unsigned char id, unsigned char return_delay_time)
 Set return delay time.
void set_angle_limits (unsigned char id, unsigned int cw_limit, unsigned int ccw_limit)
 Set angle limits.
void set_temperature_limit (unsigned char id, unsigned char temp_limit)
 Set temperature limit.
void set_voltage_limits (unsigned char id, unsigned char low, unsigned char high)
 Set voltage limits.
void set_max_torque (unsigned char id, unsigned int max_torque)
 Set maximum torque.
void set_status_return_level (unsigned char id, unsigned char status_return_level)
 Set status return level.
void set_alarm_led (unsigned char id, unsigned char alarm_led)
 Set alarm LED settings.
void set_alarm_shutdown (unsigned char id, unsigned char alarm_shutdown)
 Set shutdown on alarm.
void set_torque_enabled (unsigned char id, bool enabled)
 Enable or disable torque.
void set_torques_enabled (bool enabled, unsigned char num_servos,...)
 Enable or disable torque for multiple (selected) servos at once.
void set_led_enabled (unsigned char id, bool enabled)
 Turn LED on or off.
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.
void set_goal_speed (unsigned char id, unsigned int goal_speed)
 Set goal speed.
void set_goal_speeds (unsigned int num_servos,...)
 Set goal speeds for multiple servos.
void set_torque_limit (unsigned char id, unsigned int torque_limit)
 Set torque limit.
void lock_config (unsigned char id)
 Lock config.
void set_punch (unsigned char id, unsigned int punch)
 Set punch.
bool data_available ()
 Check data availability.

Static Public Attributes

static const unsigned char SRL_RESPOND_NONE = 0
 SRL_RESPOND_NONE.
static const unsigned char SRL_RESPOND_READ = 1
 SRL_RESPOND_READ.
static const unsigned char SRL_RESPOND_ALL = 2
 SRL_RESPOND_ALL.
static const unsigned char BROADCAST_ID = 0xfe
 BROADCAST_ID.
static const unsigned int MAX_POSITION = 0x3ff
 MAX_POSITION.
static const unsigned int CENTER_POSITION = 0x1ff
 CENTER_POSITION.
static const float MAX_ANGLE_DEG = 300
 MAX_ANGLE_DEG.
static const float MAX_ANGLE_RAD = fawkes::deg2rad(RobotisRX28::MAX_ANGLE_DEG)
 MAX_ANGLE_RAD.
static const float RAD_PER_POS_TICK = RobotisRX28::MAX_ANGLE_RAD / (float)(RobotisRX28::MAX_POSITION)
 RAD_PER_POS_TICK.
static const float POS_TICKS_PER_RAD = (float)(RobotisRX28::MAX_POSITION) / RobotisRX28::MAX_ANGLE_RAD
 POS_TICKS_PER_RAD.
static const float SEC_PER_60DEG_12V = 0.167
 SEC_PER_60DEG_12V.
static const float SEC_PER_60DEG_16V = 0.126
 SEC_PER_60DEG_16V.
static const unsigned int MAX_SPEED = 0x3ff
 MAX_SPEED.
static const unsigned char P_MODEL_NUMBER_L = 0
 P_MODEL_NUMBER_L.
static const unsigned char P_MODEL_NUMBER_H = 1
 P_MODEL_NUMBER_H.
static const unsigned char P_VERSION = 2
 P_VERSION.
static const unsigned char P_ID = 3
 P_ID.
static const unsigned char P_BAUD_RATE = 4
 P_BAUD_RATE.
static const unsigned char P_RETURN_DELAY_TIME = 5
 P_RETURN_DELAY_TIME.
static const unsigned char P_CW_ANGLE_LIMIT_L = 6
 P_CW_ANGLE_LIMIT_L.
static const unsigned char P_CW_ANGLE_LIMIT_H = 7
 P_CW_ANGLE_LIMIT_H.
static const unsigned char P_CCW_ANGLE_LIMIT_L = 8
 P_CCW_ANGLE_LIMIT_L.
static const unsigned char P_CCW_ANGLE_LIMIT_H = 9
 P_CCW_ANGLE_LIMIT_H.
static const unsigned char P_SYSTEM_DATA2 = 10
 P_SYSTEM_DATA2.
static const unsigned char P_LIMIT_TEMPERATURE = 11
 P_LIMIT_TEMPERATURE.
static const unsigned char P_DOWN_LIMIT_VOLTAGE = 12
 P_DOWN_LIMIT_VOLTAGE.
static const unsigned char P_UP_LIMIT_VOLTAGE = 13
 P_UP_LIMIT_VOLTAGE.
static const unsigned char P_MAX_TORQUE_L = 14
 P_MAX_TORQUE_L.
static const unsigned char P_MAX_TORQUE_H = 15
 P_MAX_TORQUE_H.
static const unsigned char P_RETURN_LEVEL = 16
 P_RETURN_LEVEL.
static const unsigned char P_ALARM_LED = 17
 P_ALARM_LED.
static const unsigned char P_ALARM_SHUTDOWN = 18
 P_ALARM_SHUTDOWN.
static const unsigned char P_OPERATING_MODE = 19
 P_OPERATING_MODE.
static const unsigned char P_DOWN_CALIBRATION_L = 20
 P_DOWN_CALIBRATION_L.
static const unsigned char P_DOWN_CALIBRATION_H = 21
 P_DOWN_CALIBRATION_H.
static const unsigned char P_UP_CALIBRATION_L = 22
 P_UP_CALIBRATION_L.
static const unsigned char P_UP_CALIBRATION_H = 23
 P_UP_CALIBRATION_H.
static const unsigned char P_TORQUE_ENABLE = 24
 P_TORQUE_ENABLE.
static const unsigned char P_LED = 25
 P_LED.
static const unsigned char P_CW_COMPLIANCE_MARGIN = 26
 P_CW_COMPLIANCE_MARGIN.
static const unsigned char P_CCW_COMPLIANCE_MARGIN = 27
 P_CCW_COMPLIANCE_MARGIN.
static const unsigned char P_CW_COMPLIANCE_SLOPE = 28
 P_CW_COMPLIANCE_SLOPE.
static const unsigned char P_CCW_COMPLIANCE_SLOPE = 29
 P_CCW_COMPLIANCE_SLOPE.
static const unsigned char P_GOAL_POSITION_L = 30
 P_GOAL_POSITION_L.
static const unsigned char P_GOAL_POSITION_H = 31
 P_GOAL_POSITION_H.
static const unsigned char P_GOAL_SPEED_L = 32
 P_GOAL_SPEED_L.
static const unsigned char P_GOAL_SPEED_H = 33
 P_GOAL_SPEED_H.
static const unsigned char P_TORQUE_LIMIT_L = 34
 P_TORQUE_LIMIT_L.
static const unsigned char P_TORQUE_LIMIT_H = 35
 P_TORQUE_LIMIT_H.
static const unsigned char P_PRESENT_POSITION_L = 36
 P_PRESENT_POSITION_L.
static const unsigned char P_PRESENT_POSITION_H = 37
 P_PRESENT_POSITION_H.
static const unsigned char P_PRESENT_SPEED_L = 38
 P_PRESENT_SPEED_L.
static const unsigned char P_PRESENT_SPEED_H = 39
 P_PRESENT_SPEED_H.
static const unsigned char P_PRESENT_LOAD_L = 40
 P_PRESENT_LOAD_L.
static const unsigned char P_PRESENT_LOAD_H = 41
 P_PRESENT_LOAD_H.
static const unsigned char P_PRESENT_VOLTAGE = 42
 P_PRESENT_VOLTAGE.
static const unsigned char P_PRESENT_TEMPERATURE = 43
 P_PRESENT_TEMPERATURE.
static const unsigned char P_REGISTERED_INSTRUCTION = 44
 P_REGISTERED_INSTRUCTION.
static const unsigned char P_PAUSE_TIME = 45
 P_PAUSE_TIME.
static const unsigned char P_MOVING = 46
 P_MOVING.
static const unsigned char P_LOCK = 47
 P_LOCK.
static const unsigned char P_PUNCH_L = 48
 P_PUNCH_L.
static const unsigned char P_PUNCH_H = 49
 P_PUNCH_H.

Detailed Description

Class to access a chain of Robotis RX28 servos.

One instance of this class communicates with a chain of up to 254 Robotis RX28 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

 rx28->set_status_return_level(RobotisRX28::BROADCAST_ID, RobotisRX28::SRL_RESPOND_READ);
Author:
Tim Niemueller

Definition at line 42 of file rx28.h.


Member Typedef Documentation

typedef std::list<unsigned char> RobotisRX28::DeviceList

List of servo IDs.

Definition at line 46 of file rx28.h.


Constructor & Destructor Documentation

RobotisRX28::RobotisRX28 ( const char *  device_file,
unsigned int  default_timeout_ms = 30 
)

Constructor.

Parameters:
device_filedevice file of the serial port
default_timeout_msthe timeout to apply by default to reading operations

Definition at line 152 of file rx28.cpp.

RobotisRX28::~RobotisRX28 ( )

Destructor.

Definition at line 170 of file rx28.cpp.


Member Function Documentation

void RobotisRX28::close ( )

Close port.

Definition at line 249 of file rx28.cpp.

bool RobotisRX28::data_available ( )

Check data availability.

Returns:
true if data is available, false otherwise

Definition at line 408 of file rx28.cpp.

RobotisRX28::DeviceList RobotisRX28::discover ( unsigned int  timeout_ms = 50)

Discover devices on the bus.

This method will send a PING instruction to the broadcast ID 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 RX28_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.

Parameters:
timeout_msmaximum timeout to wait for replies.
Returns:
list of detected servo IDs

Definition at line 435 of file rx28.cpp.

References fawkes::Exception::append().

void RobotisRX28::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 526 of file rx28.cpp.

unsigned char RobotisRX28::get_alarm_led ( unsigned char  id,
bool  refresh = false 
)

Get alarm LED status.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
alarm LED status.

Definition at line 834 of file rx28.cpp.

unsigned char RobotisRX28::get_alarm_shutdown ( unsigned char  id,
bool  refresh = false 
)

Get shutdown on alarm state.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
shutdown on alarm state

Definition at line 846 of file rx28.cpp.

void RobotisRX28::get_angle_limits ( unsigned char  id,
unsigned int &  cw_limit,
unsigned int &  ccw_limit,
bool  refresh = false 
)

Get angle limits.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
cw_limitupon return contains the clockwise angle limit
ccw_limitupon return contains the counter-clockwise angle limit

Definition at line 767 of file rx28.cpp.

unsigned char RobotisRX28::get_baudrate ( unsigned char  id,
bool  refresh = false 
)

Get baud rate.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
baud rate

Definition at line 742 of file rx28.cpp.

void RobotisRX28::get_calibration ( unsigned char  id,
unsigned int &  down_calib,
unsigned int &  up_calib,
bool  refresh = false 
)

Get calibration data.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
down_calibdownward calibration
up_calibupward calibration

Definition at line 859 of file rx28.cpp.

void RobotisRX28::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.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
cw_marginupon return contains clockwise margin
cw_slopeupon return contains clockwise slope
ccw_marginupon return contains counter-clockwise margin
ccw_slopeupon return contains counter-clockwise slope

Definition at line 901 of file rx28.cpp.

unsigned char RobotisRX28::get_delay_time ( unsigned char  id,
bool  refresh = false 
)

Get time of the delay before replies are sent.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
delay time

Definition at line 754 of file rx28.cpp.

unsigned char RobotisRX28::get_firmware_version ( unsigned char  id,
bool  refresh = false 
)

Get firmware version.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
firmware version

Definition at line 730 of file rx28.cpp.

unsigned int RobotisRX28::get_goal_position ( unsigned char  id,
bool  refresh = false 
)

Get goal position.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
goal position

Definition at line 919 of file rx28.cpp.

unsigned int RobotisRX28::get_goal_speed ( unsigned char  id,
bool  refresh = false 
)

Get goal speed.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
goal speed

Definition at line 931 of file rx28.cpp.

unsigned int RobotisRX28::get_load ( unsigned char  id,
bool  refresh = false 
)

Get current load.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
current load

Definition at line 994 of file rx28.cpp.

float RobotisRX28::get_max_supported_speed ( unsigned char  id,
bool  refresh = false 
)

Get maximum supported speed.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
maximum supported speed in rad/s

Definition at line 943 of file rx28.cpp.

References fawkes::deg2rad().

unsigned int RobotisRX28::get_max_torque ( unsigned char  id,
bool  refresh = false 
)

Get maximum torque.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
maximum torque

Definition at line 810 of file rx28.cpp.

unsigned int RobotisRX28::get_model ( unsigned char  id,
bool  refresh = false 
)

Get model.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
model

Definition at line 706 of file rx28.cpp.

unsigned int RobotisRX28::get_position ( unsigned char  id,
bool  refresh = false 
)

Get current position.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
current position

Definition at line 718 of file rx28.cpp.

unsigned int RobotisRX28::get_punch ( unsigned char  id,
bool  refresh = false 
)

Get punch.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
punch

Definition at line 1054 of file rx28.cpp.

unsigned int RobotisRX28::get_speed ( unsigned char  id,
bool  refresh = false 
)

Get current speed.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
current speed

Definition at line 982 of file rx28.cpp.

unsigned char RobotisRX28::get_status_return_level ( unsigned char  id,
bool  refresh = false 
)

Get status return level.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
status return level

Definition at line 822 of file rx28.cpp.

unsigned char RobotisRX28::get_temperature ( unsigned char  id,
bool  refresh = false 
)

Get temperature.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
temperature in degrees Celsius

Definition at line 1018 of file rx28.cpp.

unsigned char RobotisRX28::get_temperature_limit ( unsigned char  id,
bool  refresh = false 
)

Get temperature limit.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
temperature limit.

Definition at line 782 of file rx28.cpp.

unsigned int RobotisRX28::get_torque_limit ( unsigned char  id,
bool  refresh = false 
)

Get torque limit.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
torque limit

Definition at line 970 of file rx28.cpp.

unsigned char RobotisRX28::get_voltage ( unsigned char  id,
bool  refresh = false 
)

Get current voltage.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
voltage, divide by 10 to get V

Definition at line 1006 of file rx28.cpp.

void RobotisRX28::get_voltage_limits ( unsigned char  id,
unsigned char &  low,
unsigned char &  high,
bool  refresh = false 
)

Get voltage limits.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
lowupon return contains low voltage limit
highupon return contans high voltage limit

Definition at line 795 of file rx28.cpp.

void RobotisRX28::goto_position ( unsigned char  id,
unsigned int  value 
)

Move servo to specified position.

Parameters:
idservo ID
valueposition, value between 0 and 1023 (inclusive), covering an angle range from 0 to 300 degrees.

Definition at line 1341 of file rx28.cpp.

void RobotisRX28::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).

Parameters:
num_servosnumber of servos, maximum is 83

Definition at line 1354 of file rx28.cpp.

bool RobotisRX28::is_led_enabled ( unsigned char  id,
bool  refresh = false 
)

Check if LED is enabled.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
true if led is enabled, false otherwise.

Definition at line 886 of file rx28.cpp.

bool RobotisRX28::is_locked ( unsigned char  id,
bool  refresh = false 
)

Check is servo is locked.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
true if servo config is locked, false otherwise

Definition at line 1042 of file rx28.cpp.

bool RobotisRX28::is_moving ( unsigned char  id,
bool  refresh = false 
)

Check if servo is moving.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
true if servo is moving, false otherwise

Definition at line 1030 of file rx28.cpp.

bool RobotisRX28::is_torque_enabled ( unsigned char  id,
bool  refresh = false 
)

Check if torque is enabled.

Parameters:
idservo ID, not the broadcast ID
refreshif true, will issue a read command for the value
Returns:
true if torque is enabled, false otherwise

Definition at line 874 of file rx28.cpp.

void RobotisRX28::lock_config ( unsigned char  id)

Lock config.

Locks the config, configuration values can no longer be modified until the next power cycle.

Parameters:
idservo ID

Definition at line 1329 of file rx28.cpp.

void RobotisRX28::open ( )

Open serial port.

Definition at line 177 of file rx28.cpp.

bool RobotisRX28::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.

Parameters:
idservo ID, not the broadcast ID
timeout_msmaximum wait time in miliseconds
Returns:
true if the ping was successful, false otherwise

Definition at line 474 of file rx28.cpp.

References fawkes::Exception::print_trace().

void RobotisRX28::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.

Parameters:
idservo ID, not the broadcast ID
addrstart addr, one of the P_* constants.
read_lengthnumber of bytes to read

Definition at line 547 of file rx28.cpp.

void RobotisRX28::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.

Parameters:
idservo ID

Definition at line 494 of file rx28.cpp.

void RobotisRX28::set_alarm_led ( unsigned char  id,
unsigned char  alarm_led 
)

Set alarm LED settings.

Parameters:
idservo ID
alarm_lednew LED alarm value.

Definition at line 1161 of file rx28.cpp.

void RobotisRX28::set_alarm_shutdown ( unsigned char  id,
unsigned char  alarm_shutdown 
)

Set shutdown on alarm.

Parameters:
idservo ID
alarm_shutdownalarm shutdown settings

Definition at line 1172 of file rx28.cpp.

void RobotisRX28::set_angle_limits ( unsigned char  id,
unsigned int  cw_limit,
unsigned int  ccw_limit 
)

Set angle limits.

Parameters:
idservo ID
cw_limitnew clockwise limit
ccw_limitnew counter-clockwise limit

Definition at line 1099 of file rx28.cpp.

void RobotisRX28::set_baudrate ( unsigned char  id,
unsigned char  baudrate 
)

Set baud rate.

Parameters:
idservo ID
baudratenew baudrate

Definition at line 1076 of file rx28.cpp.

void RobotisRX28::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.

Parameters:
idservo ID
cw_marginclockwise margin
cw_slopeclockwise slope
ccw_margincounter-clockwise margin
ccw_slopecounter-clockwise slope

Definition at line 1242 of file rx28.cpp.

void RobotisRX28::set_goal_speed ( unsigned char  id,
unsigned int  goal_speed 
)

Set goal speed.

Parameters:
idservo ID
goal_speeddesired goal speed, 1024 is maximum, 0 means "no velicity control", i.e. move as fast as possible depending on the voltage

Definition at line 1261 of file rx28.cpp.

void RobotisRX28::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.

Parameters:
num_servosnumber of servos, maximum is 83

Definition at line 1273 of file rx28.cpp.

void RobotisRX28::set_id ( unsigned char  id,
unsigned char  new_id 
)

Set ID.

Parameters:
idservo ID
new_idnew ID to set

Definition at line 1065 of file rx28.cpp.

void RobotisRX28::set_led_enabled ( unsigned char  id,
bool  led_enabled 
)

Turn LED on or off.

Parameters:
idservo ID
led_enabledtrue to turn LED on, false to turn off

Definition at line 1228 of file rx28.cpp.

void RobotisRX28::set_max_torque ( unsigned char  id,
unsigned int  max_torque 
)

Set maximum torque.

Parameters:
idservo ID
max_torquenew maximum torque

Definition at line 1138 of file rx28.cpp.

void RobotisRX28::set_punch ( unsigned char  id,
unsigned int  punch 
)

Set punch.

Parameters:
idservo ID
punchnew punch value

Definition at line 1317 of file rx28.cpp.

void RobotisRX28::set_return_delay_time ( unsigned char  id,
unsigned char  return_delay_time 
)

Set return delay time.

Parameters:
idservo ID
return_delay_timenew return delay time

Definition at line 1087 of file rx28.cpp.

void RobotisRX28::set_status_return_level ( unsigned char  id,
unsigned char  status_return_level 
)

Set status return level.

Parameters:
idservo ID
status_return_levelstatus return level, one of SRL_RESPOND_NONE, SRL_RESPOND_READ or SRL_RESPOND_ALL.

Definition at line 1150 of file rx28.cpp.

void RobotisRX28::set_temperature_limit ( unsigned char  id,
unsigned char  temp_limit 
)

Set temperature limit.

Parameters:
idservo ID
temp_limitnew temperature limit (in degrees Celsius)

Definition at line 1112 of file rx28.cpp.

void RobotisRX28::set_torque_enabled ( unsigned char  id,
bool  enabled 
)

Enable or disable torque.

Parameters:
idservo ID
enabledtrue to enable (servo is powered) false to disable (servo power disabled, servo can be freely moved manually)

Definition at line 1184 of file rx28.cpp.

void RobotisRX28::set_torque_limit ( unsigned char  id,
unsigned int  torque_limit 
)

Set torque limit.

Parameters:
idservo ID
torque_limitnew torque limit

Definition at line 1306 of file rx28.cpp.

void RobotisRX28::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.

Parameters:
enabledtrue to enable (servo is powered) false to disable (servo power disabled, servo can be freely moved manually)
num_servosnumber of servos to set, maximum is 120

Definition at line 1198 of file rx28.cpp.

void RobotisRX28::set_voltage_limits ( unsigned char  id,
unsigned char  low,
unsigned char  high 
)

Set voltage limits.

Parameters:
idservo ID
lowlower bound (give Volts * 10)
highhigher bound (give Volts * 10)

Definition at line 1124 of file rx28.cpp.

void RobotisRX28::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.

Parameters:
idservo ID, not the broadcast ID

Definition at line 509 of file rx28.cpp.

void RobotisRX28::write_table_value ( unsigned char  id,
unsigned char  addr,
unsigned int  value,
bool  double_byte = false 
)

Write a table value.

Parameters:
idservo ID, may be the broadcast ID
addrstart addr, one of the P_* constants.
valuevalue to write
double_byteif true, will assume value to be a two-byte value, otherwise it is considered as a one-byte value.

Definition at line 578 of file rx28.cpp.

References fawkes::Exception::print_trace().

void RobotisRX28::write_table_values ( unsigned char  id,
unsigned char  start_addr,
unsigned char *  values,
unsigned int  num_values 
)

Write multiple table values.

Parameters:
idservo ID, may be the broadcast ID
start_addrstart addr, one of the P_* constants.
valuesvalues to write
num_valueslength in bytes of the values array

Definition at line 614 of file rx28.cpp.

References fawkes::Exception::print_trace().


Member Data Documentation

const unsigned char RobotisRX28::BROADCAST_ID = 0xfe [static]

BROADCAST_ID.

Definition at line 138 of file rx28.h.

Referenced by PanTiltRX28Thread::init().

const unsigned int RobotisRX28::CENTER_POSITION = 0x1ff [static]

CENTER_POSITION.

Definition at line 140 of file rx28.h.

const float RobotisRX28::MAX_ANGLE_DEG = 300 [static]

MAX_ANGLE_DEG.

Definition at line 141 of file rx28.h.

const float RobotisRX28::MAX_ANGLE_RAD = fawkes::deg2rad(RobotisRX28::MAX_ANGLE_DEG) [static]

MAX_ANGLE_RAD.

Definition at line 142 of file rx28.h.

const unsigned int RobotisRX28::MAX_POSITION = 0x3ff [static]

MAX_POSITION.

Definition at line 139 of file rx28.h.

const unsigned int RobotisRX28::MAX_SPEED = 0x3ff [static]

MAX_SPEED.

Definition at line 147 of file rx28.h.

const unsigned char RobotisRX28::P_ALARM_LED = 17 [static]

P_ALARM_LED.

Definition at line 167 of file rx28.h.

const unsigned char RobotisRX28::P_ALARM_SHUTDOWN = 18 [static]

P_ALARM_SHUTDOWN.

Definition at line 168 of file rx28.h.

const unsigned char RobotisRX28::P_BAUD_RATE = 4 [static]

P_BAUD_RATE.

Definition at line 154 of file rx28.h.

const unsigned char RobotisRX28::P_CCW_ANGLE_LIMIT_H = 9 [static]

P_CCW_ANGLE_LIMIT_H.

Definition at line 159 of file rx28.h.

const unsigned char RobotisRX28::P_CCW_ANGLE_LIMIT_L = 8 [static]

P_CCW_ANGLE_LIMIT_L.

Definition at line 158 of file rx28.h.

const unsigned char RobotisRX28::P_CCW_COMPLIANCE_MARGIN = 27 [static]

P_CCW_COMPLIANCE_MARGIN.

Definition at line 178 of file rx28.h.

const unsigned char RobotisRX28::P_CCW_COMPLIANCE_SLOPE = 29 [static]

P_CCW_COMPLIANCE_SLOPE.

Definition at line 180 of file rx28.h.

const unsigned char RobotisRX28::P_CW_ANGLE_LIMIT_H = 7 [static]

P_CW_ANGLE_LIMIT_H.

Definition at line 157 of file rx28.h.

const unsigned char RobotisRX28::P_CW_ANGLE_LIMIT_L = 6 [static]

P_CW_ANGLE_LIMIT_L.

Definition at line 156 of file rx28.h.

const unsigned char RobotisRX28::P_CW_COMPLIANCE_MARGIN = 26 [static]

P_CW_COMPLIANCE_MARGIN.

Definition at line 177 of file rx28.h.

const unsigned char RobotisRX28::P_CW_COMPLIANCE_SLOPE = 28 [static]

P_CW_COMPLIANCE_SLOPE.

Definition at line 179 of file rx28.h.

const unsigned char RobotisRX28::P_DOWN_CALIBRATION_H = 21 [static]

P_DOWN_CALIBRATION_H.

Definition at line 171 of file rx28.h.

const unsigned char RobotisRX28::P_DOWN_CALIBRATION_L = 20 [static]

P_DOWN_CALIBRATION_L.

Definition at line 170 of file rx28.h.

const unsigned char RobotisRX28::P_DOWN_LIMIT_VOLTAGE = 12 [static]

P_DOWN_LIMIT_VOLTAGE.

Definition at line 162 of file rx28.h.

const unsigned char RobotisRX28::P_GOAL_POSITION_H = 31 [static]

P_GOAL_POSITION_H.

Definition at line 182 of file rx28.h.

const unsigned char RobotisRX28::P_GOAL_POSITION_L = 30 [static]

P_GOAL_POSITION_L.

Definition at line 181 of file rx28.h.

const unsigned char RobotisRX28::P_GOAL_SPEED_H = 33 [static]

P_GOAL_SPEED_H.

Definition at line 184 of file rx28.h.

const unsigned char RobotisRX28::P_GOAL_SPEED_L = 32 [static]

P_GOAL_SPEED_L.

Definition at line 183 of file rx28.h.

const unsigned char RobotisRX28::P_ID = 3 [static]

P_ID.

Definition at line 153 of file rx28.h.

const unsigned char RobotisRX28::P_LED = 25 [static]

P_LED.

Definition at line 176 of file rx28.h.

const unsigned char RobotisRX28::P_LIMIT_TEMPERATURE = 11 [static]

P_LIMIT_TEMPERATURE.

Definition at line 161 of file rx28.h.

const unsigned char RobotisRX28::P_LOCK = 47 [static]

P_LOCK.

Definition at line 198 of file rx28.h.

const unsigned char RobotisRX28::P_MAX_TORQUE_H = 15 [static]

P_MAX_TORQUE_H.

Definition at line 165 of file rx28.h.

const unsigned char RobotisRX28::P_MAX_TORQUE_L = 14 [static]

P_MAX_TORQUE_L.

Definition at line 164 of file rx28.h.

const unsigned char RobotisRX28::P_MODEL_NUMBER_H = 1 [static]

P_MODEL_NUMBER_H.

Definition at line 151 of file rx28.h.

const unsigned char RobotisRX28::P_MODEL_NUMBER_L = 0 [static]

P_MODEL_NUMBER_L.

Definition at line 150 of file rx28.h.

const unsigned char RobotisRX28::P_MOVING = 46 [static]

P_MOVING.

Definition at line 197 of file rx28.h.

const unsigned char RobotisRX28::P_OPERATING_MODE = 19 [static]

P_OPERATING_MODE.

Definition at line 169 of file rx28.h.

const unsigned char RobotisRX28::P_PAUSE_TIME = 45 [static]

P_PAUSE_TIME.

Definition at line 196 of file rx28.h.

const unsigned char RobotisRX28::P_PRESENT_LOAD_H = 41 [static]

P_PRESENT_LOAD_H.

Definition at line 192 of file rx28.h.

const unsigned char RobotisRX28::P_PRESENT_LOAD_L = 40 [static]

P_PRESENT_LOAD_L.

Definition at line 191 of file rx28.h.

const unsigned char RobotisRX28::P_PRESENT_POSITION_H = 37 [static]

P_PRESENT_POSITION_H.

Definition at line 188 of file rx28.h.

const unsigned char RobotisRX28::P_PRESENT_POSITION_L = 36 [static]

P_PRESENT_POSITION_L.

Definition at line 187 of file rx28.h.

const unsigned char RobotisRX28::P_PRESENT_SPEED_H = 39 [static]

P_PRESENT_SPEED_H.

Definition at line 190 of file rx28.h.

const unsigned char RobotisRX28::P_PRESENT_SPEED_L = 38 [static]

P_PRESENT_SPEED_L.

Definition at line 189 of file rx28.h.

const unsigned char RobotisRX28::P_PRESENT_TEMPERATURE = 43 [static]

P_PRESENT_TEMPERATURE.

Definition at line 194 of file rx28.h.

const unsigned char RobotisRX28::P_PRESENT_VOLTAGE = 42 [static]

P_PRESENT_VOLTAGE.

Definition at line 193 of file rx28.h.

const unsigned char RobotisRX28::P_PUNCH_H = 49 [static]

P_PUNCH_H.

Definition at line 200 of file rx28.h.

const unsigned char RobotisRX28::P_PUNCH_L = 48 [static]

P_PUNCH_L.

Definition at line 199 of file rx28.h.

const unsigned char RobotisRX28::P_REGISTERED_INSTRUCTION = 44 [static]

P_REGISTERED_INSTRUCTION.

Definition at line 195 of file rx28.h.

const unsigned char RobotisRX28::P_RETURN_DELAY_TIME = 5 [static]

P_RETURN_DELAY_TIME.

Definition at line 155 of file rx28.h.

const unsigned char RobotisRX28::P_RETURN_LEVEL = 16 [static]

P_RETURN_LEVEL.

Definition at line 166 of file rx28.h.

const unsigned char RobotisRX28::P_SYSTEM_DATA2 = 10 [static]

P_SYSTEM_DATA2.

Definition at line 160 of file rx28.h.

const unsigned char RobotisRX28::P_TORQUE_ENABLE = 24 [static]

P_TORQUE_ENABLE.

Definition at line 175 of file rx28.h.

const unsigned char RobotisRX28::P_TORQUE_LIMIT_H = 35 [static]

P_TORQUE_LIMIT_H.

Definition at line 186 of file rx28.h.

const unsigned char RobotisRX28::P_TORQUE_LIMIT_L = 34 [static]

P_TORQUE_LIMIT_L.

Definition at line 185 of file rx28.h.

const unsigned char RobotisRX28::P_UP_CALIBRATION_H = 23 [static]

P_UP_CALIBRATION_H.

Definition at line 173 of file rx28.h.

const unsigned char RobotisRX28::P_UP_CALIBRATION_L = 22 [static]

P_UP_CALIBRATION_L.

Definition at line 172 of file rx28.h.

const unsigned char RobotisRX28::P_UP_LIMIT_VOLTAGE = 13 [static]

P_UP_LIMIT_VOLTAGE.

Definition at line 163 of file rx28.h.

const unsigned char RobotisRX28::P_VERSION = 2 [static]

P_VERSION.

Definition at line 152 of file rx28.h.

POS_TICKS_PER_RAD.

Definition at line 144 of file rx28.h.

RAD_PER_POS_TICK.

Definition at line 143 of file rx28.h.

const float RobotisRX28::SEC_PER_60DEG_12V = 0.167 [static]

SEC_PER_60DEG_12V.

Definition at line 145 of file rx28.h.

const float RobotisRX28::SEC_PER_60DEG_16V = 0.126 [static]

SEC_PER_60DEG_16V.

Definition at line 146 of file rx28.h.

const unsigned char RobotisRX28::SRL_RESPOND_ALL = 2 [static]

SRL_RESPOND_ALL.

Definition at line 136 of file rx28.h.

const unsigned char RobotisRX28::SRL_RESPOND_NONE = 0 [static]

SRL_RESPOND_NONE.

Definition at line 134 of file rx28.h.

const unsigned char RobotisRX28::SRL_RESPOND_READ = 1 [static]

SRL_RESPOND_READ.

Definition at line 135 of file rx28.h.

Referenced by PanTiltRX28Thread::init().


The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends