Class ST3215ServoReader

Class Documentation

class ST3215ServoReader

Public Functions

ST3215ServoReader(const std::string &port, unsigned int baud_rate, uint8_t acceleration = 30)

Constructs a new ST3215ServoReader.

Parameters:
const std::string &port

Serial port path (e.g., “/dev/ttyACM0”)

unsigned int baud_rate

Baud rate for serial communication

uint8_t acceleration = 30

Acceleration value for servo movement (0-255)

~ST3215ServoReader()

Destructor ensures serial port is properly closed.

uint16_t read_position(uint8_t servo_id)

Reads the current position of a specified servo.

Parameters:
uint8_t servo_id

ID of the servo to read from

Throws:

std::runtime_error – if communication fails after retries

Returns:

Current position value (0-4095)

void write_position(uint8_t servo_id, uint16_t position)

Writes a position value to a specified servo.

Parameters:
uint8_t servo_id

ID of the servo to write to

uint16_t position

Position value to write (0-4095)

Throws:

std::runtime_error – if communication fails

void write_control_register(uint8_t servo_id, uint8_t address, uint8_t value)

Writes to a control register of the servo.

Parameters:
uint8_t servo_id

ID of the servo to write to

uint8_t address

Register address

uint8_t value

Value to write

Throws:

std::runtime_error – if communication fails

int16_t read_load(uint8_t servo_id)

Reads the current load/torque value from a specified servo.

Parameters:
uint8_t servo_id

ID of the servo to read from

Throws:

std::runtime_error – if communication fails

Returns:

Current load value (-1000 to +1000)

inline boost::asio::serial_port &get_serial_port()

Gets a reference to the serial port for low-level operations.

Returns:

Reference to the serial port object