eros:seedactuators_controltable

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
eros:seedactuators_controltable [2017/11/15 13:39] Pedro Ramiloeros:seedactuators_controltable [2021/07/01 12:59] (current) SeedR KB Admin
Line 1: Line 1:
 ===== Control Table for the Seed Robotics Smart Actuators ===== ===== Control Table for the Seed Robotics Smart Actuators =====
- 
-**DISAMBIGUATION**:\\ 
-If you are using an **RH2D unit**, it uses Actuators from Robotis, in particular the XL320 Actuator, which has a slightly different control table and capabilities. See [[rh2d:xl320_controltable|here the corresponding Control table]]. 
- 
-For all other Seed Robotics units, please continue reading. 
- 
--- 
  
 The Seed Robotics smart actuators run Seed Robotics own firmware that is developed in parallel and, as part, of the EROS architecture. The Seed Robotics smart actuators run Seed Robotics own firmware that is developed in parallel and, as part, of the EROS architecture.
  
-At present, the micro28micro57mini67 and micro44 actuator models are used in different Seed Robotics models.+At present, the Seed56Seed58Seed67 actuator models are used in different Seed Robotics models. and
  
 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 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.
Line 47: Line 40:
 # PSEUDO CODE. Writing a WORD value  # PSEUDO CODE. Writing a WORD value 
 word OUT_VALUE = 2048 word OUT_VALUE = 2048
-uart_write_bytes(OUT_VALUE & 0xFF, (OUT_VALUE >> 8) & 0xFF)+w = new write_command(OUT_VALUE & 0xFF, (OUT_VALUE >> 8) & 0xFF
 +uart_send_bytes(w)
 </code> </code>
  
Line 59: Line 53:
 ==== Control Table ==== ==== Control Table ====
  
-^ Address ^ Size (nr of bytes to read/write) ^ Description ^ Access Mode ^ Default value/Remarks ^ Storage Persistency ^+^ Address ^ Size (nr of bytes to read/write) ^ Description ^ Access Mode ^ Default value/Remarks ^ Storage Persistence ^
 | 0 (0x0) | WORD (2) | Model Number | R |Model number of the Actuator | HARD CODED | | 0 (0x0) | WORD (2) | Model Number | R |Model number of the Actuator | HARD CODED |
 | 2 (0x2) | BYTE (1) | Version of Firmware | R |Installed Firmware version | HARD CODED | | 2 (0x2) | BYTE (1) | Version of Firmware | R |Installed Firmware version | HARD CODED |
Line 68: Line 62:
 | 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.| EEPROM | | 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.| EEPROM |
 | 16 (0x10) | BYTE (1) | Status Return Level | RW |Default=2, Always return a reply | EEPROM | | 16 (0x10) | BYTE (1) | Status Return Level | RW |Default=2, Always return a reply | EEPROM |
 +| 18 (0x12) | BYTE (1) | Shutdown Conditions | RW | Default=OVERLOAD or excess TEMPERATURE | EEPROM |
 | 20 (0x14) | BYTE (1) | Emulate 12 bit resolution | RW |Default=1, set to 12bit mode | EEPROM | | 20 (0x14) | BYTE (1) | Emulate 12 bit resolution | RW |Default=1, set to 12bit mode | EEPROM |
-| 23 (0x17) | BYTE (1) | PID Tuning Lock | RW |Default=1, protects memory positions for PID configuration from inadvertent modification. | RAM |+| 21 (0x15) | WORD (2) | Zero Offset | RW |Default=2048 (if in 12 bit mode)/512 (if in 10bit mode) | EEPROM | 
 +| 23 (0x17) | BYTE (1) | PID, Zero_Offset and Resolution Tuning Lock | RW |Default=1, protects memory positions for PID configuration from inadvertent modification. | RAM |
 | 24 (0x18) | BYTE (1) | Torque Enable | RW |Default=0 (torque disabled, H bridge in Dynamic brake mode) | RAM | | 24 (0x18) | BYTE (1) | Torque Enable | RW |Default=0 (torque disabled, H bridge in Dynamic brake mode) | RAM |
-| 26 (0x11) | BYTE (1) | D Gain (Position Controller) | R(RW) |D Gain for the Position Controlller | RAM (initial value read from EEPROM) | +| 26 (0x11) | BYTE (1) | D Gain (Position Controller) | R(RW) |D Gain for the Position Controlller | RAM (initial value read from EEPROM) | 
-| 27 (0x1B) | BYTE (1) | I Gain (Position Controller) | R(RW) |I Gain for the Position Controlller | RAM (initial value read from EEPROM) | +| 27 (0x1B) | BYTE (1) | I Gain (Position Controller) | R(RW) |I Gain for the Position Controlller | RAM (initial value read from EEPROM) | 
-| 28 (0x1C) | BYTE (1) | P Gain (Position Controller) | R(RW) |P Gain for the Position Controlller | RAM (initial value read from EEPROM) | +| 28 (0x1C) | BYTE (1) | P Gain (Position Controller) | R(RW) |P Gain for the Position Controlller | RAM (initial value read from EEPROM) | 
-| 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. | RAM | +| 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. | RAM | 
-| 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 | RAM | +| 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 | RAM | 
-| 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. | RAM | +| 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. | RAM | 
-| 38 (0x26) | WORD (2) | Present Speed | R |Since firmware version 21 this value is expressed in units of 0,11 RPM. | RAM | +| 38 (0x26) | WORD (2) | Present Speed | R |Since firmware version 21 this value is expressed in units of 0,11 RPM. | RAM | 
-| 43 (0x2B) | BYTE (1) | Present Temperature | R |Approximate temperature inside the actuator, in degrees Celsius | RAM | +| 43 (0x2B) | BYTE (1) | Present Temperature | R |Approximate temperature inside the actuator, in degrees Celsius | RAM | 
-| 46 (0x2E) | BYTE (1) | Moving | R |Indicates if the servo output shaft is moving. | RAM | +| 46 (0x2E) | BYTE (1) | Moving | R |Indicates if the servo output shaft is moving. | RAM | 
-| 81 (0x51) | BYTE (1) | Bootloader Password Length | R |The number of characters that compose the Booloader password. | BOOLOADER | +| 81 (0x51) | BYTE (1) | Bootloader Password Length | R |The number of characters that compose the Booloader password. | BOOLOADER | 
-| 82 (0x52) | BYTE (1) | First Character of the Bootloader Password | R |This value is the ASCII code of the character. | BOOLOADER | +| 82 (0x52) | BYTE (1) | First Character of the Bootloader Password | R |This value is the ASCII code of the character. | BOOLOADER | 
-| 85 (0x55) | BYTE (1) | Bootloader Timeout | R |Timeout for bootloader activation | BOOLOADER | +| 85 (0x55) | BYTE (1) | Bootloader Timeout | R |Timeout for bootloader activation | BOOLOADER | 
-| 87 (0x57) | BYTE (1) | UART Comm Health: Framing Errors count | R |For debugging and troubleshooting purposes | RAM | +| 87 (0x57) | BYTE (1) | UART Comm Health: Framing Errors count | R |For debugging and troubleshooting purposes | RAM | 
-| 88 (0x58) | BYTE (1) | UART Comm Health: Processor Buffer overflow count | R |For debugging and troubleshooting purposes | RAM | +| 88 (0x58) | BYTE (1) | UART Comm Health: Processor Buffer overflow count | R |For debugging and troubleshooting purposes | RAM | 
-| 89 (0x59) | BYTE (1) | UART Comm Health: Firmware Buffer overflow count | R |For debugging and troubleshooting purposes | RAM | +| 89 (0x59) | BYTE (1) | UART Comm Health: Firmware Buffer overflow count | R |For debugging and troubleshooting purposes | RAM | 
-| 90 (0x5A) | BYTE (1) | Servo Control Mode (Position control or Direct PWM control) | R |0=Position control, 1=PWM Control | RAM | +| 90 (0x5A) | BYTE (1) | Servo Control Mode | R |0=Position control, 1=PWM Control. Default=0 | RAM | 
-| 92 (0x5C) | WORD (2) | Motor PWM | R(RW) |Writable if position 0x5A is set to Direct PWM mode | RAM |+| 92 (0x5C) | WORD (2) | Motor PWM | R(RW) |Writable if position 0x5A is set to Direct PWM mode | RAM | 
 + 
 +**Storage Persistence of values** 
 + 
 +The meaning of Storage Persistence is shown below: 
 +  * HARD CODED - these values are part of the firmware code and may only be changed by a firmware update 
 +  * EEPROM - values stored in EEPROM will persist after a power cycle and will be permanently recorded. 
 +  * RAM - values stored in RAM will be reset to default after a power cycle.  
 +  * BOOTLOADER - these are special values stored in the Bootloader configuration area. They can only be changed by the bootloader itself, during a Bootloader session. 
  
 **Model Number** **Model Number**
Line 156: Line 161:
  
 The default configuration is 2. The default configuration is 2.
 +
 +**Shutdown Conditions**
 +
 +This setting was introduced with Actuator firmware version 27. It is not available in earlier versions.\\
 +This setting lets the user disable the Torque Shutdown conditions of OVERLOAD and excess TEMPERATURE.
 +
 +These checks exist in the unit to protect it against damage by disabling torque when any of these conditions occur.\\
 +For more information on how these conditions affect motion and how to prevent them, see setting the **Target Position** below which frther expands on the topic of shutdown conditions.
 +
 +This value is a bitmask, composed by the following:
 +
 +  * ERROR_OVERLOAD      0x20  
 +  * ERROR_TEMPERATURE   0x04
 +
 +By default, it is set to 36 (0x20 + 0x4 = 0x24 or 36 in Decimal) which corresponds to shutting down torque on an OVERLOAD or excess TEMPERATURE condition.
 +
 +If you wish to disable any of these conditions, WRITE to this memory position and don't set the appropriate bit (for example setting to 0 disables all Shutdown conditions).
 +
 +Please note we DO NOT recommend disabling the Shutdown conditions. They are in place to protect the unit. This option should only be changed after careful analysis and consideration.
  
 **Emulate 12 bit resolution** **Emulate 12 bit resolution**
Line 164: Line 188:
 By oversampling, the actuators can emulate and operate in 12bit resolution mode for compatibility with a variety of frameworks. By oversampling, the actuators can emulate and operate in 12bit resolution mode for compatibility with a variety of frameworks.
  
-By default this is configured to 1 (12 bit emulation enabled).+By defaultthis is configured to 1 (12 bit emulation enabled).
  
 If your library or framework works in 10 bit resolution, you may set the unit to 10bit resolution by writing a "0" to this memory position.\\ If your library or framework works in 10 bit resolution, you may set the unit to 10bit resolution by writing a "0" to this memory position.\\
 The new resolution configuration becomes effective immediately after changing this parameter. The new resolution configuration becomes effective immediately after changing this parameter.
  
-**PID Tuning Lock**+**IMPORTANT**\\ 
 +If you need to change this setting you must first set memory position ''23''/''0x17'' (//PID, Zero_Offset and Resolution Tuning Lock//) to 0. Without doing this, any attempt to change this setting will fail.
  
-Locks WRITING to the memory positions and adjust the PID values (26 to 28).+**Zero offset**
  
-This is meant to prevent misconfiguring the unit inadvertently.+This setting lets the user re-tune the 0 (or center position) for each joint.
  
-If you wish to tune the PID settings, set this flag to 0 first, to enable Writing on the PID-related memory positions.+This is useful for: 
 +  * joints with double actuation such as Wirst Flexion, Adduction where the settling of tendor fibers may produce minor deviations from the center position 
 +  * Under actuated joints (i.e. closing of fingers) where settling of the tendon fibers causes the finger to start moving only after a set position (and not within the first 10~20units). Previously this required physically readjusting the tendon. Using this option this can now be tuned on the fly. 
 + 
 +The default value is 2048 (if in 12bit mode) or 512 (if on 10bit). These numbers correspond to 0. 
 + 
 +By reducing this number you are adjusting the zero clockwise; by increasing this number you are adjusting the zero Counterclockwise. 
 + 
 +There is a limit to how much this number can be adjusted. Once the offset reaches the extreme limits of the position sensor, increasing or decreasing it no longer produces any effect. 
 + 
 +**IMPORTANT (1)**: do not set this to 0, as it would correspond to an adjustment of -2048/-512 (depending on the resolution of operation). Remember, the default zero position is a setting of 2048/512 (depending on the resolution of operation). 
 + 
 +**IMPORTANT (2)**\\ 
 +If you need to change this setting you must first set memory position ''23''/''0x17'' (//PID, Zero_Offset and Resolution Tuning Lock//) to 0. Without doing this, any attempt to change this setting will fail.\\ 
 +This setting was introduced with Actuator firmware version 27. It is not available in earlier versions. 
 + 
 + 
 +**PID, Zero_Offset & Resolution Tuning Lock** 
 + 
 +Unlocks/Locks WRITING to the memory positions 20-23 and 26-28, which adjust the Zero offset, enable/Disable 12bit resolution mode and tune the PID gains. 
 + 
 +This is meant to prevent inadvertent misconfiguration of the unit, mostly because some libraries for the Dynamixel protocol (i.e. Pypot) make assumptions about the hardware and try to re-tune these values incorrectly, which results in improper operation. 
 + 
 +Therefore if you wish to adjust the Zero offset, enable/Disable 12bit resolution mode or tune the PID gains, set this flag to 0 first, to enable Writing to the memory positions where these configurations are saved.\\ 
 +On every boot, this flag is set to 1 to protect these tuning parameters.
  
 **Torque Enable** **Torque Enable**
Line 186: Line 235:
 This ensures the unit is torqued at the current position in order to avoid any jumping or inadvertent movement. This ensures the unit is torqued at the current position in order to avoid any jumping or inadvertent movement.
  
-Also note that WRITing a Target Position or a Target Speed, automatically enables Torque. Once again, this is implemented for compatibility with third party libraries.+Also note that WRITing a Target Position or a Target Speed, automatically enables Torque. Once again, this is implemented for compatibility with third-party libraries.
  
  
Line 195: Line 244:
 We generally DON'T recommend tweaking these values as PID tuning is an advanced topic. We generally DON'T recommend tweaking these values as PID tuning is an advanced topic.
  
-By default the units come tuned for the fastest output response at maximum torque.\\+By defaultthe units come tuned for the fastest output response at maximum torque.\\
 If you wish to attempt tuning a more elastic behavior you may want to try reducing the P and increasing the I. If you wish to attempt tuning a more elastic behavior you may want to try reducing the P and increasing the I.
  
 Changes to the P,I,D gains are stored in RAM only. They will be reset to factory default after a power cycle.  Changes to the P,I,D gains are stored in RAM only. They will be reset to factory default after a power cycle. 
  
-**IMPORTANT:** some joints are mounted with physical mechanical limits. Misconfiguration of the PID gains may result in uncontrolled motion and possible collision with the mechanical limits and consequent damage to the unit.\\ +**IMPORTANT (1)** some joints are mounted with physical mechanical limits. Misconfiguration of the PID gains may result in uncontrolled motion and possible collision with the mechanical limits and consequent damage to the unit.\\ 
-If you are unsure or require assistance for PID tuning you may contact our support team for guidance.+If you are unsure or require assistance for PID tuning, please contact our support team for guidance (support@seedrobotics.com). 
 + 
 +**IMPORTANT (2)**\\ 
 +If you need to change this setting you must first set memory position ''23''/''0x17'' (//PID, Zero_Offset and Resolution Tuning Lock//) to 0. Without doing this, any attempt to change this setting will fail.
  
 **Target Position** **Target Position**
Line 212: Line 264:
 When writing a Target Position, if Torque (position 24) is disabled, it will be automatically enabled. When writing a Target Position, if Torque (position 24) is disabled, it will be automatically enabled.
  
-**OVERLOAD** situations: if the actuator is unable to reach the target position (usually due to external mechanical blockage), it will automatically turn off torque and report an **OVERLOAD ERROR**.\\ +**OVERLOAD or OVERHEATING** conditions: if the actuator is unable to reach the target position or starts overheating (usually due to external mechanical blockage or due to excess load), it will generate an **OVERLOAD ERROR**  or **TEMPERATURE ERROR** and release torque to protect the unit.\\ 
-This is meant to protect the hardware from damage due to stalling.+This is meant to protect the hardware from damage due to stalling in controllable and predictable scenariosHowever, this functionality does not replace the user's responsibility in observing the maximum ratings for the unit and the actuators when in operation.\\ 
 +(if the user wishes, the check for Shutdown Conditions can be disabled in memory position ''18'' (Shutdown Conditions) )
  
 The Overload error is reported in the RETURN PACKET after a command is sent to the unit.\\ The Overload error is reported in the RETURN PACKET after a command is sent to the unit.\\
-- When the unit has an OVERLOAD error, Torque can't be re enabled until the unit is rebooted (power cycled).\\ +- When the unit has an OVERLOAD error, Torque can't be re-enabled until the unit is rebooted.\\ 
-If the actuator is connected to an EROS main board, you can reset power to the internal servos by writing to memory position 67 (Internal PSU Reset) in the [[eros:mainboard_ctltable|Eros Main Board control Table]].+You can reboot the actuator by sending a REBOOT packet over the Dynamixel protocol or by power cycling the unit. 
 +If the actuator is connected to an EROS mainboard, you can reset power to the internal actuators by WRITING a ''1'' to memory position 67 (Internal PSU Reset) in the [[eros:mainboard_ctltable|Eros Main Board control Table]].
  
 **To prevent overload errors**, the user is advised to accompany the motion of the unit by querying the Present Position parameter (position 36) and ensuring that it is varying.\\ **To prevent overload errors**, the user is advised to accompany the motion of the unit by querying the Present Position parameter (position 36) and ensuring that it is varying.\\
-If the users detects a stall, it can either set the ''Target Position=Present Position'' (where the unit is stalling) or Turn torque off momentarily until the external blockage is removed.+If the user detects a stall, it can either set the ''Target Position=Present Position'' (where the unit is stalling) momentarily until the external blockage is removed. If the cause of the stall is excess load, users are advised to Turn off torque (memory position 20) to avoid damage to the unit.
  
-If you are **making a movement to grasp an object** the recommended approach is to set a low Target Speed (''5 RPM'' or less) which gives you a larger time window to query the Present Position and stop the motion (by setting ''Target Position=Present Position''when you detect movement has stalledThis would typically mean the object has been grabbed.+If you are **making a movement to grasp an object** the recommended approach is to set a low Target Speed near the target (''5 RPM'' or less) which gives you a larger time window to query the Present Position and stop the motion when you detect movement has stalled (by setting ''Target Position=Present Position''). Stalling, in this situation, would typically mean the object has been grabbed.
  
 +You can also check the Temperature of the actuator, by reading memory position ''43'' (Present Temperature).
  
 **Target Speed** **Target Speed**
Line 230: Line 285:
 If set to 0, the unit will move at maximum speed. This is the default setting. If set to 0, the unit will move at maximum speed. This is the default setting.
  
-Different actuator models will have different maximum speeds. On average it is in the range of 50~60RPM.+The maximum value accepted for this parameter is 1023.\\ 
 +Different actuator models will have different maximum speeds. On average it is in the range of 50~60RPM; therefore if the user sets a Target Speed higher then the maximum physical speed, the actuator will move at its maximum physical speed.
  
 When writing a Target Speed, if Torque (position 24) is disabled, it will be automatically enabled. When writing a Target Speed, if Torque (position 24) is disabled, it will be automatically enabled.
Line 244: Line 300:
 These are the recommended values to best operation when closing but, most importantly, when opening, to ensure the springs in the fingers and tendons open the DoF correctly and in sync. These are the recommended values to best operation when closing but, most importantly, when opening, to ensure the springs in the fingers and tendons open the DoF correctly and in sync.
  
-NOTE: The minimum speed for smooth operation is ~1 RPM ( a setting of 10 ). Lower values will be accepted, not to limit the user, but discretization of the movement may be observed.+NOTE: The minimum speed for smooth operation is ~1 RPM ( a setting of 10 ). Lower values will be accepted, not to limit the user, but discretization of the movement may be observed.\\
  
 **Present Position** **Present Position**
Line 257: Line 313:
 Returns the present speed as measured by the internal sensor. Returns the present speed as measured by the internal sensor.
  
-This value is and Unsigned WORD value. However direction of movement can be determined by reading the 10th bit of the value returned.\\ +This value is and Unsigned WORD value. However direction of movement can be determined by reading the 11th bit of the value returned.\\ 
-(in practice if value <1023 it is moving on CCW direction; if value >1023 it is moving is CW direction)+(in practice if value <=1023 it is moving on CCW direction; if value >1023 it is moving is CW direction)
  
 **Present Temperature** **Present Temperature**
Line 264: Line 320:
 Present temperature inside the actuator in degrees Celsius. Present temperature inside the actuator in degrees Celsius.
  
-This value is aproximate, and may have a maximum error of 10 degrees.+This value is approximate (it may have a small error of a few degrees, due to inherent behavior of the sensor).
  
 **Moving** **Moving**
Line 303: Line 359:
 At the moment this set to the default of POSTITION CONTROL mode, which is the typical control mode for any servo motor. At the moment this set to the default of POSTITION CONTROL mode, which is the typical control mode for any servo motor.
  
-0=Position Control Mode+0=Position Control Mode\\
 1=Direct PWM Control mode 1=Direct PWM Control mode
  
-About Direct PWM Control mode:+__About Direct PWM Control mode:__
 By querying Current Drawn by the motor through the control table on the EROS main board, and since Current is directly proprotional to PWM,  By querying Current Drawn by the motor through the control table on the EROS main board, and since Current is directly proprotional to PWM, 
 by controlling the PWM on the motor users are able to build a closed loop control cycle for true Force Estimation and Torque Control. by controlling the PWM on the motor users are able to build a closed loop control cycle for true Force Estimation and Torque Control.
Line 320: Line 376:
 **Motor PWM** **Motor PWM**
  
-__When memory position 90 is set to Position Control Mode__, this will report the current PWM applied by the motor.+__When memory position 90 is set to Position Control Mode__, this will report the current PWM applied to the motor.
  
 In this mode, this value is READ ONLY. In this mode, this value is READ ONLY.

Copyright © 2015-2023 Seed Robotics Ltd

  • eros/seedactuators_controltable.1510753196.txt.gz
  • Last modified: 2017/11/15 13:39
  • by Pedro Ramilo