eros:seedactuators_controltable

This is an old revision of the document!


The Seed Robotics smart actuators run Seed Robotics own firmware that is developed in paralel and as part of the EROS architecture.

At present, the micro28, micro57, mini67 and micro448 actuator models are used in different Seed Robotics models.

The control table below applies to all of them. As part of the EROS initiative commitment, we wish that all our hardware is exposed and controlled by the user under one single command and control architecture.

The control table entries are either of WORD type (2 bytes) or BYTE type (1 byte) depending in the range of values they handle.

A BYTE value is written directly to the memory position.

A WORD value however is written in Little Endian style, that is you must break the word in two bytes. The Low order byte mus be written first, to the memory address shown in the control table, followed by the high byte:
[ADDRESS AT CONTROL TABLE] LOW BYTE
[ADDRESS AT CONTROL TABLE + 1] HIGH BYTE

In pseudo code, it would be:

# PSEUDO CODE. Writing a WORD value 
word OUT_VALUE = 2048

uart_write_byte(OUT_VALUE & 0xFF)
uart_write_byte((OUT_VALUE << 8) & 0xFF)

It is also important to note that WORD values should be written in one single WRITE command.
Splitting the WRITE of a WORD value in two individual commands, and sending it as individual Bytes, is unsupported and will yield incorrect results: the first command with the LOW byte is discarded; the next command with the HIGH byte is processed and assumes a low byte of 0 since the low byte was not included in the second command.
Therefore writing WORD values should be done in one single command that will include both the LOW and HIGH bytes simultaneously.

For more information on how to WRITE to the control table see the protocol documentation: you can do it using the Dynamixel Protocol or the STP Protocol.

All memory positions are typically readable.

READing from a memory position will return the state of that variable at the time of processing the READ request.
Here are a few examples of READING the control table:

  • If you have set Torque Enable (position 24) to Off (0), you can query the Present Position (memory position 36) while you move the joint with your hand. You will see the values being updated in real time. This technique can be used to capture key frames for example.
  • If you have set a Target Position (memory position 30), you can read memory positions 36 (Present position), 38 (Present speed) and 46 (Moving) to check if the trajectory is being followed. This is especially useful for detecting the arrival at the target or detecting anomalies such as stalling, normally due to external physical blockage

WRITing to a memory position will usually either configure a parameter or trigger an action.

As an example:

  • To make the servo move to a specific position, WRITE your target to the memory position 30 (Target Position). If Torque is not enabled, it will be automatically enabled and servo will seek the Target position.
  • If you wish to control the moving speed, you may WRITE to the memory position 32 (Target Speed) prior to setting your target position.

For more information on how to READ and WRITE to the control table see the protocol documentation: you can do it using the Dynamixel Protocol or the STP Protocol.

Address Size (nr of bytes to read/write) Description Access Mode Default value/Remarks
0 (0x0) WORD (2) Model Number R Model number of the Actuator
2 (0x2) BYTE (1) Version of Firmware R Installed Firmware version
3 (0x3) BYTE (1) ID RW Bus ID
4 (0x4) BYTE (1) Baud Rate RW See below for the meaning of the Baud Rate byte.
5 (0x5) BYTE (1) Return Delay Time R Always 0. This position is made available for backwards comptibility with older libraries.
6 (0x6) WORD (2) CW Angle Limit RW Sets the minimum value accepted as Target Position. Default=0. This value is set in the 10bit or 12 bit range, depending on the setting of Position 0x14.
8 (0x8) WORD (2) CCW Angle Limit RW Sets the maximum value accepted as Target Position. Default=1023 or 4095: This value is set in the 10bit or 12 bit range, depending on the setting of Position 0x14.
16 (0x10) BYTE (1) Status Return Level RW Default=2
20 (0x14) BYTE (1) Emulate 12 bit resolution RW Default=1, set to 12bit mode
23 (0x17) BYTE (1) PID Tuning Lock RW Default=1. PID memory positions from inadvertent modification.
24 (0x18) BYTE (1) Torque Enable RW Default=0 (torque disabled, H bridge in Dynamic brake mode)
26 (0x11) BYTE (1) D Gain (Position Controller) R(RW) D Gain for the Position Controlller
27 (0x1B) BYTE (1) I Gain (Position Controller) R(RW) I Gain for the Position Controlller
28 (0x1C) BYTE (1) P Gain (Position Controller) R(RW) P Gain for the Position Controlller
30 (0x1E) WORD (2) Target Position RW Sets the target position to seek. This value is set in the 10bit or 12 bit range, depending on the setting of Position 0x14.
32 (0x20) WORD (2) Target Speed RW Desired target speed while in motion. 0=Maximum speed; any other value will limit the maximum speed. Speed is expressed in units of 0,11RPM. Default=0
36 (0x24) WORD (2) Present Position R Present Position. This value is expressed in the 10bit or 12 bit range, depending on the setting of Position 0x14.
38 (0x26) WORD (2) Present Speed R Since firmware version 21 this value is expressed in units of 0,11 RPM.
43 (0x2B) BYTE (1) Present Temperature R Aproximate temperature in degrees Celsius
46 (0x2E) BYTE (1) Moving R Servo internal Temperature (in degrees Celsius). This value is aproximate with an accuracy of 10 degrees.
81 (0x51) BYTE (1) Bootloader Password Length R The number of letters in the Booloader password.
82 (0x52) BYTE (1) First Character of the Bootloader Password R This value is the ASCII code of the character.
85 (0x55) BYTE (1) Bootloader Timeout R Timeout for bootloader activation
87 (0x57) BYTE (1) UART Comm Health: Framing Errors count R For debugging and troubleshooting purposes
88 (0x58) BYTE (1) UART Comm Health: Processor Buffer overflow count R For debugging and troubleshooting purposes
89 (0x59) BYTE (1) UART Comm Health: Firmware Buffer overflow count R For debugging and troubleshooting purposes
90 (0x5A) BYTE (1) Servo Control Mode (Position control or Direct PWM control) R 0=Position control, 1=PWM Control
92 (0x5C) WORD (2) Motor PWM R(RW) Writable if position 0x5A is set to Direct PWM mode

Copyright © 2015-2023 Seed Robotics Ltd

  • eros/seedactuators_controltable.1510687701.txt.gz
  • Last modified: 2017/11/14 19:28
  • by Pedro Ramilo