Fawkes API  Fawkes Development Version
RobotisRX28 Class Reference

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

#include "rx28.h"

Public Types

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

Public Member Functions

 RobotisRX28 (const char *device_file, unsigned int default_timeout_ms=30)
 Constructor. More...
 
 ~RobotisRX28 ()
 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)
 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...
 
unsigned int get_model (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...
 
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 int 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
 MAX_ANGLE_RAD. More...
 
static const float RAD_PER_POS_TICK
 RAD_PER_POS_TICK. More...
 
static const float POS_TICKS_PER_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 = 0x3ff
 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...
 

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

static const unsigned char BROADCAST_ID
BROADCAST_ID.
Definition: rx28.h:147
static const unsigned char SRL_RESPOND_READ
SRL_RESPOND_READ.
Definition: rx28.h:144
Author
Tim Niemueller

Definition at line 43 of file rx28.h.

Member Typedef Documentation

◆ DeviceList

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

List of servo IDs.

Definition at line 47 of file rx28.h.

Constructor & Destructor Documentation

◆ RobotisRX28()

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::~RobotisRX28 ( )

Destructor.

Definition at line 175 of file rx28.cpp.

Member Function Documentation

◆ close()

void RobotisRX28::close ( )

Close port.

Definition at line 254 of file rx28.cpp.

◆ data_available()

bool RobotisRX28::data_available ( )

Check data availability.

Returns
true if data is available, false otherwise

Definition at line 440 of file rx28.cpp.

◆ discover()

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 466 of file rx28.cpp.

References fawkes::Exception::append().

Referenced by PanTiltRX28Thread::init().

◆ finish_read_table_values()

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 554 of file rx28.cpp.

◆ get_alarm_led()

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 858 of file rx28.cpp.

◆ get_alarm_shutdown()

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 869 of file rx28.cpp.

◆ get_angle_limits()

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 794 of file rx28.cpp.

◆ get_baudrate()

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 771 of file rx28.cpp.

◆ get_calibration()

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 881 of file rx28.cpp.

◆ get_compliance_values()

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 921 of file rx28.cpp.

◆ get_delay_time()

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 782 of file rx28.cpp.

◆ get_firmware_version()

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 760 of file rx28.cpp.

◆ get_goal_position()

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 940 of file rx28.cpp.

◆ get_goal_speed()

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 951 of file rx28.cpp.

◆ get_load()

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 1010 of file rx28.cpp.

◆ get_max_supported_speed()

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 962 of file rx28.cpp.

References fawkes::deg2rad().

Referenced by PanTiltRX28Thread::init().

◆ get_max_torque()

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 836 of file rx28.cpp.

◆ get_model()

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 738 of file rx28.cpp.

◆ get_position()

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 749 of file rx28.cpp.

◆ get_punch()

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 1065 of file rx28.cpp.

◆ get_speed()

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 999 of file rx28.cpp.

◆ get_status_return_level()

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 847 of file rx28.cpp.

◆ get_temperature()

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 1032 of file rx28.cpp.

◆ get_temperature_limit()

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 809 of file rx28.cpp.

◆ get_torque_limit()

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 988 of file rx28.cpp.

◆ get_voltage()

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 1021 of file rx28.cpp.

◆ get_voltage_limits()

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 821 of file rx28.cpp.

◆ goto_position()

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 1333 of file rx28.cpp.

◆ goto_positions()

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 1345 of file rx28.cpp.

◆ is_led_enabled()

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 907 of file rx28.cpp.

◆ is_locked()

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 1054 of file rx28.cpp.

◆ is_moving()

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 1043 of file rx28.cpp.

◆ is_torque_enabled()

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 896 of file rx28.cpp.

◆ lock_config()

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 1322 of file rx28.cpp.

◆ open()

void RobotisRX28::open ( )

Open serial port.

Definition at line 182 of file rx28.cpp.

◆ ping()

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 504 of file rx28.cpp.

References fawkes::Exception::print_trace().

◆ read_table_value()

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 577 of file rx28.cpp.

◆ read_table_values()

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 523 of file rx28.cpp.

◆ set_alarm_led()

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 1162 of file rx28.cpp.

◆ set_alarm_shutdown()

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.

◆ set_angle_limits()

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 1106 of file rx28.cpp.

◆ set_baudrate()

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

Set baud rate.

Parameters
idservo ID
baudratenew baudrate

Definition at line 1085 of file rx28.cpp.

◆ set_compliance_values()

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 1238 of file rx28.cpp.

Referenced by PanTiltRX28Thread::init().

◆ set_goal_speed()

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 1258 of file rx28.cpp.

◆ set_goal_speeds()

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 1269 of file rx28.cpp.

◆ set_id()

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

Set ID.

Parameters
idservo ID
new_idnew ID to set

Definition at line 1075 of file rx28.cpp.

◆ set_led_enabled()

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 1225 of file rx28.cpp.

Referenced by PanTiltRX28Thread::finalize(), and PanTiltRX28Thread::init().

◆ set_max_torque()

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 1141 of file rx28.cpp.

◆ set_punch()

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

Set punch.

Parameters
idservo ID
punchnew punch value

Definition at line 1311 of file rx28.cpp.

◆ set_return_delay_time()

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 1095 of file rx28.cpp.

◆ set_status_return_level()

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 1152 of file rx28.cpp.

Referenced by PanTiltRX28Thread::init().

◆ set_temperature_limit()

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 1117 of file rx28.cpp.

◆ set_torque_enabled()

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 1183 of file rx28.cpp.

◆ set_torque_limit()

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 1301 of file rx28.cpp.

◆ set_torques_enabled()

void RobotisRX28::set_torques_enabled ( bool  enabled,
unsigned int  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 1196 of file rx28.cpp.

Referenced by PanTiltRX28Thread::finalize().

◆ set_voltage_limits()

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 1128 of file rx28.cpp.

◆ start_read_table_values()

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 537 of file rx28.cpp.

◆ write_table_value()

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 607 of file rx28.cpp.

References fawkes::Exception::print_trace().

◆ write_table_values()

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 647 of file rx28.cpp.

References fawkes::Exception::print_trace().

Member Data Documentation

◆ BROADCAST_ID

const unsigned char RobotisRX28::BROADCAST_ID = 0xfe
static

BROADCAST_ID.

Definition at line 147 of file rx28.h.

Referenced by PanTiltRX28Thread::init().

◆ CENTER_POSITION

const unsigned int RobotisRX28::CENTER_POSITION = 0x1ff
static

CENTER_POSITION.

Definition at line 149 of file rx28.h.

◆ MAX_ANGLE_DEG

const float RobotisRX28::MAX_ANGLE_DEG = 300
static

MAX_ANGLE_DEG.

Definition at line 150 of file rx28.h.

◆ MAX_ANGLE_RAD

const float RobotisRX28::MAX_ANGLE_RAD
static
Initial value:
=
static const float MAX_ANGLE_DEG
MAX_ANGLE_DEG.
Definition: rx28.h:150
float deg2rad(float deg)
Convert an angle given in degrees to radians.
Definition: angle.h:36

MAX_ANGLE_RAD.

Definition at line 151 of file rx28.h.

◆ MAX_POSITION

const unsigned int RobotisRX28::MAX_POSITION = 0x3ff
static

MAX_POSITION.

Definition at line 148 of file rx28.h.

◆ MAX_SPEED

const unsigned int RobotisRX28::MAX_SPEED = 0x3ff
static

MAX_SPEED.

Definition at line 156 of file rx28.h.

◆ P_ALARM_LED

const unsigned char RobotisRX28::P_ALARM_LED = 17
static

P_ALARM_LED.

Definition at line 176 of file rx28.h.

◆ P_ALARM_SHUTDOWN

const unsigned char RobotisRX28::P_ALARM_SHUTDOWN = 18
static

P_ALARM_SHUTDOWN.

Definition at line 177 of file rx28.h.

◆ P_BAUD_RATE

const unsigned char RobotisRX28::P_BAUD_RATE = 4
static

P_BAUD_RATE.

Definition at line 163 of file rx28.h.

◆ P_CCW_ANGLE_LIMIT_H

const unsigned char RobotisRX28::P_CCW_ANGLE_LIMIT_H = 9
static

P_CCW_ANGLE_LIMIT_H.

Definition at line 168 of file rx28.h.

◆ P_CCW_ANGLE_LIMIT_L

const unsigned char RobotisRX28::P_CCW_ANGLE_LIMIT_L = 8
static

P_CCW_ANGLE_LIMIT_L.

Definition at line 167 of file rx28.h.

◆ P_CCW_COMPLIANCE_MARGIN

const unsigned char RobotisRX28::P_CCW_COMPLIANCE_MARGIN = 27
static

P_CCW_COMPLIANCE_MARGIN.

Definition at line 187 of file rx28.h.

◆ P_CCW_COMPLIANCE_SLOPE

const unsigned char RobotisRX28::P_CCW_COMPLIANCE_SLOPE = 29
static

P_CCW_COMPLIANCE_SLOPE.

Definition at line 189 of file rx28.h.

◆ P_CW_ANGLE_LIMIT_H

const unsigned char RobotisRX28::P_CW_ANGLE_LIMIT_H = 7
static

P_CW_ANGLE_LIMIT_H.

Definition at line 166 of file rx28.h.

◆ P_CW_ANGLE_LIMIT_L

const unsigned char RobotisRX28::P_CW_ANGLE_LIMIT_L = 6
static

P_CW_ANGLE_LIMIT_L.

Definition at line 165 of file rx28.h.

◆ P_CW_COMPLIANCE_MARGIN

const unsigned char RobotisRX28::P_CW_COMPLIANCE_MARGIN = 26
static

P_CW_COMPLIANCE_MARGIN.

Definition at line 186 of file rx28.h.

◆ P_CW_COMPLIANCE_SLOPE

const unsigned char RobotisRX28::P_CW_COMPLIANCE_SLOPE = 28
static

P_CW_COMPLIANCE_SLOPE.

Definition at line 188 of file rx28.h.

◆ P_DOWN_CALIBRATION_H

const unsigned char RobotisRX28::P_DOWN_CALIBRATION_H = 21
static

P_DOWN_CALIBRATION_H.

Definition at line 180 of file rx28.h.

◆ P_DOWN_CALIBRATION_L

const unsigned char RobotisRX28::P_DOWN_CALIBRATION_L = 20
static

P_DOWN_CALIBRATION_L.

Definition at line 179 of file rx28.h.

◆ P_DOWN_LIMIT_VOLTAGE

const unsigned char RobotisRX28::P_DOWN_LIMIT_VOLTAGE = 12
static

P_DOWN_LIMIT_VOLTAGE.

Definition at line 171 of file rx28.h.

◆ P_GOAL_POSITION_H

const unsigned char RobotisRX28::P_GOAL_POSITION_H = 31
static

P_GOAL_POSITION_H.

Definition at line 191 of file rx28.h.

◆ P_GOAL_POSITION_L

const unsigned char RobotisRX28::P_GOAL_POSITION_L = 30
static

P_GOAL_POSITION_L.

Definition at line 190 of file rx28.h.

◆ P_GOAL_SPEED_H

const unsigned char RobotisRX28::P_GOAL_SPEED_H = 33
static

P_GOAL_SPEED_H.

Definition at line 193 of file rx28.h.

◆ P_GOAL_SPEED_L

const unsigned char RobotisRX28::P_GOAL_SPEED_L = 32
static

P_GOAL_SPEED_L.

Definition at line 192 of file rx28.h.

◆ P_ID

const unsigned char RobotisRX28::P_ID = 3
static

P_ID.

Definition at line 162 of file rx28.h.

◆ P_LED

const unsigned char RobotisRX28::P_LED = 25
static

P_LED.

Definition at line 185 of file rx28.h.

◆ P_LIMIT_TEMPERATURE

const unsigned char RobotisRX28::P_LIMIT_TEMPERATURE = 11
static

P_LIMIT_TEMPERATURE.

Definition at line 170 of file rx28.h.

◆ P_LOCK

const unsigned char RobotisRX28::P_LOCK = 47
static

P_LOCK.

Definition at line 207 of file rx28.h.

◆ P_MAX_TORQUE_H

const unsigned char RobotisRX28::P_MAX_TORQUE_H = 15
static

P_MAX_TORQUE_H.

Definition at line 174 of file rx28.h.

◆ P_MAX_TORQUE_L

const unsigned char RobotisRX28::P_MAX_TORQUE_L = 14
static

P_MAX_TORQUE_L.

Definition at line 173 of file rx28.h.

◆ P_MODEL_NUMBER_H

const unsigned char RobotisRX28::P_MODEL_NUMBER_H = 1
static

P_MODEL_NUMBER_H.

Definition at line 160 of file rx28.h.

◆ P_MODEL_NUMBER_L

const unsigned char RobotisRX28::P_MODEL_NUMBER_L = 0
static

P_MODEL_NUMBER_L.

Definition at line 159 of file rx28.h.

◆ P_MOVING

const unsigned char RobotisRX28::P_MOVING = 46
static

P_MOVING.

Definition at line 206 of file rx28.h.

◆ P_OPERATING_MODE

const unsigned char RobotisRX28::P_OPERATING_MODE = 19
static

P_OPERATING_MODE.

Definition at line 178 of file rx28.h.

◆ P_PAUSE_TIME

const unsigned char RobotisRX28::P_PAUSE_TIME = 45
static

P_PAUSE_TIME.

Definition at line 205 of file rx28.h.

◆ P_PRESENT_LOAD_H

const unsigned char RobotisRX28::P_PRESENT_LOAD_H = 41
static

P_PRESENT_LOAD_H.

Definition at line 201 of file rx28.h.

◆ P_PRESENT_LOAD_L

const unsigned char RobotisRX28::P_PRESENT_LOAD_L = 40
static

P_PRESENT_LOAD_L.

Definition at line 200 of file rx28.h.

◆ P_PRESENT_POSITION_H

const unsigned char RobotisRX28::P_PRESENT_POSITION_H = 37
static

P_PRESENT_POSITION_H.

Definition at line 197 of file rx28.h.

◆ P_PRESENT_POSITION_L

const unsigned char RobotisRX28::P_PRESENT_POSITION_L = 36
static

P_PRESENT_POSITION_L.

Definition at line 196 of file rx28.h.

◆ P_PRESENT_SPEED_H

const unsigned char RobotisRX28::P_PRESENT_SPEED_H = 39
static

P_PRESENT_SPEED_H.

Definition at line 199 of file rx28.h.

◆ P_PRESENT_SPEED_L

const unsigned char RobotisRX28::P_PRESENT_SPEED_L = 38
static

P_PRESENT_SPEED_L.

Definition at line 198 of file rx28.h.

◆ P_PRESENT_TEMPERATURE

const unsigned char RobotisRX28::P_PRESENT_TEMPERATURE = 43
static

P_PRESENT_TEMPERATURE.

Definition at line 203 of file rx28.h.

◆ P_PRESENT_VOLTAGE

const unsigned char RobotisRX28::P_PRESENT_VOLTAGE = 42
static

P_PRESENT_VOLTAGE.

Definition at line 202 of file rx28.h.

◆ P_PUNCH_H

const unsigned char RobotisRX28::P_PUNCH_H = 49
static

P_PUNCH_H.

Definition at line 209 of file rx28.h.

◆ P_PUNCH_L

const unsigned char RobotisRX28::P_PUNCH_L = 48
static

P_PUNCH_L.

Definition at line 208 of file rx28.h.

◆ P_REGISTERED_INSTRUCTION

const unsigned char RobotisRX28::P_REGISTERED_INSTRUCTION = 44
static

P_REGISTERED_INSTRUCTION.

Definition at line 204 of file rx28.h.

◆ P_RETURN_DELAY_TIME

const unsigned char RobotisRX28::P_RETURN_DELAY_TIME = 5
static

P_RETURN_DELAY_TIME.

Definition at line 164 of file rx28.h.

◆ P_RETURN_LEVEL

const unsigned char RobotisRX28::P_RETURN_LEVEL = 16
static

P_RETURN_LEVEL.

Definition at line 175 of file rx28.h.

◆ P_SYSTEM_DATA2

const unsigned char RobotisRX28::P_SYSTEM_DATA2 = 10
static

P_SYSTEM_DATA2.

Definition at line 169 of file rx28.h.

◆ P_TORQUE_ENABLE

const unsigned char RobotisRX28::P_TORQUE_ENABLE = 24
static

P_TORQUE_ENABLE.

Definition at line 184 of file rx28.h.

◆ P_TORQUE_LIMIT_H

const unsigned char RobotisRX28::P_TORQUE_LIMIT_H = 35
static

P_TORQUE_LIMIT_H.

Definition at line 195 of file rx28.h.

◆ P_TORQUE_LIMIT_L

const unsigned char RobotisRX28::P_TORQUE_LIMIT_L = 34
static

P_TORQUE_LIMIT_L.

Definition at line 194 of file rx28.h.

◆ P_UP_CALIBRATION_H

const unsigned char RobotisRX28::P_UP_CALIBRATION_H = 23
static

P_UP_CALIBRATION_H.

Definition at line 182 of file rx28.h.

◆ P_UP_CALIBRATION_L

const unsigned char RobotisRX28::P_UP_CALIBRATION_L = 22
static

P_UP_CALIBRATION_L.

Definition at line 181 of file rx28.h.

◆ P_UP_LIMIT_VOLTAGE

const unsigned char RobotisRX28::P_UP_LIMIT_VOLTAGE = 13
static

P_UP_LIMIT_VOLTAGE.

Definition at line 172 of file rx28.h.

◆ P_VERSION

const unsigned char RobotisRX28::P_VERSION = 2
static

P_VERSION.

Definition at line 161 of file rx28.h.

◆ POS_TICKS_PER_RAD

const float RobotisRX28::POS_TICKS_PER_RAD
static
Initial value:
=
static const float MAX_ANGLE_RAD
MAX_ANGLE_RAD.
Definition: rx28.h:151
static const unsigned int MAX_POSITION
MAX_POSITION.
Definition: rx28.h:148

POS_TICKS_PER_RAD.

Definition at line 153 of file rx28.h.

◆ RAD_PER_POS_TICK

const float RobotisRX28::RAD_PER_POS_TICK
static
Initial value:

RAD_PER_POS_TICK.

Definition at line 152 of file rx28.h.

◆ SEC_PER_60DEG_12V

const float RobotisRX28::SEC_PER_60DEG_12V = 0.167
static

SEC_PER_60DEG_12V.

Definition at line 154 of file rx28.h.

◆ SEC_PER_60DEG_16V

const float RobotisRX28::SEC_PER_60DEG_16V = 0.126
static

SEC_PER_60DEG_16V.

Definition at line 155 of file rx28.h.

◆ SRL_RESPOND_ALL

const unsigned char RobotisRX28::SRL_RESPOND_ALL = 2
static

SRL_RESPOND_ALL.

Definition at line 145 of file rx28.h.

◆ SRL_RESPOND_NONE

const unsigned char RobotisRX28::SRL_RESPOND_NONE = 0
static

SRL_RESPOND_NONE.

Definition at line 143 of file rx28.h.

◆ SRL_RESPOND_READ

const unsigned char RobotisRX28::SRL_RESPOND_READ = 1
static

SRL_RESPOND_READ.

Definition at line 144 of file rx28.h.

Referenced by PanTiltRX28Thread::init().


The documentation for this class was generated from the following files: