eros:mainboard_ctltable

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:mainboard_ctltable [2017/03/22 18:35] wadmineros:mainboard_ctltable [2023/03/13 18:36] (current) – [Control Table] SeedR KB Admin
Line 24: Line 24:
 The goal is to enable the creation of universal libraries that can be used across all our models. The goal is to enable the creation of universal libraries that can be used across all our models.
  
-There are specific memory positions where you can query the presence of features such as Capacitive Touch sensors, Bluetooth module, etc. to clearly understand which features are present for a particular model.+There are specific memory positions where you can query the presence of features such as Capacitive Touch sensors, Bluetooth module, etc. to clearly understand which features are present for a given unit. 
 + 
 +==== READing vs WRITing ==== 
 + 
 +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:dynamixel_protocol|Dynamixel Protocol]] or the [[seedstpprotocol:control_using_stp|STP Protocol]]. 
 + 
 +==== WORD values vs BYTE values ==== 
 + 
 +The control table entries are either of WORD type (2 bytes) or BYTE type (1 byte) depending on 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 is Stored first, to the memory address shown in the control table, followed by the high byte at the next memory position:\\ 
 +''[ADDRESS AT CONTROL TABLE] LOW BYTE'' \\ 
 +''[ADDRESS AT CONTROL TABLE + 1] HIGH BYTE'' \\ 
 + 
 +In pseudo code, it would be: 
 +<code> 
 +# PSEUDO CODE. Writing a WORD value  
 +word OUT_VALUE = 2048 
 +w = new write_command(OUT_VALUE & 0xFF, (OUT_VALUE >> 8) & 0xFF) 
 +uart_send_bytes(w) 
 +</code> 
 + 
 +It is 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 them separately 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:dynamixel_protocol|Dynamixel Protocol]] or the [[seedstpprotocol:control_using_stp|STP Protocol]]. 
  
 ==== Control Table ==== ==== Control Table ====
Line 36: Line 78:
 | 16 (0x10) | Status Return Level | 1 | RW | EEPROM | | 16 (0x10) | Status Return Level | 1 | RW | EEPROM |
 | 20 (0x14) | 12bit ADC Mode Enabled | 1 | RW | EEPROM | | 20 (0x14) | 12bit ADC Mode Enabled | 1 | RW | EEPROM |
 +| 23 (0x17) | Fan speed setting | 1 | RW | RAM |
 | 42 (0x2A) | Present Voltage | 1 | R | RAM | | 42 (0x2A) | Present Voltage | 1 | R | RAM |
 | 43 (0x2B) | Present Temperature | 1 | R | RAM | | 43 (0x2B) | Present Temperature | 1 | R | RAM |
Line 44: Line 87:
 | 65 (0x41) | Main Board SN (2) | 1 | R | - | | 65 (0x41) | Main Board SN (2) | 1 | R | - |
 | 66 (0x42) | Main Board SN (3) | 1 | R | - | | 66 (0x42) | Main Board SN (3) | 1 | R | - |
 +| 67 (0x43) | Internal PSU RESET | 1 | RW | - |
 | 68 (0x44) | Hand LED RGB [LOW] | 1 | RW | RAM | | 68 (0x44) | Hand LED RGB [LOW] | 1 | RW | RAM |
 | 69 (0x45) | Hand LED RGB [HIGH] | 1 | RW | RAM | | 69 (0x45) | Hand LED RGB [HIGH] | 1 | RW | RAM |
Line 76: Line 120:
 | 124 (0x7C) | Port 9 Current Reading | 2 | R | RAM | | 124 (0x7C) | Port 9 Current Reading | 2 | R | RAM |
 | 126 (0x7E) | Port 10 Current Reading | 2 | R | RAM | | 126 (0x7E) | Port 10 Current Reading | 2 | R | RAM |
-| 129 (0x81) | Port 1 Attached Servo ID | 1 | RW | RAM | +| 128 (0x80) | Re-scan Attached Servo IDs | 1 | R | RAM | 
-| 130 (0x82) | Port 2 Attached Servo ID | 1 | RW | RAM | +| 129 (0x81) | Port 1 Attached Servo ID | 1 | R | RAM | 
-| 131 (0x83) | Port 3 Attached Servo ID | 1 | RW | RAM | +| 130 (0x82) | Port 2 Attached Servo ID | 1 | R | RAM | 
-| 132 (0x84) | Port 4 Attached Servo ID | 1 | RW | RAM | +| 131 (0x83) | Port 3 Attached Servo ID | 1 | R | RAM | 
-| 133 (0x85) | Port 5 Attached Servo ID | 1 | RW | RAM | +| 132 (0x84) | Port 4 Attached Servo ID | 1 | R | RAM | 
-| 134 (0x86) | Port 6 Attached Servo ID | 1 | RW | RAM | +| 133 (0x85) | Port 5 Attached Servo ID | 1 | R | RAM | 
-| 135 (0x87) | Port 7 Attached Servo ID | 1 | RW | RAM | +| 134 (0x86) | Port 6 Attached Servo ID | 1 | R | RAM | 
-| 136 (0x88) | Port 8 Attached Servo ID | 1 | RW | RAM | +| 135 (0x87) | Port 7 Attached Servo ID | 1 | R | RAM | 
-| 137 (0x89) | Port 9 Attached Servo ID | 1 | RW | RAM | +| 136 (0x88) | Port 8 Attached Servo ID | 1 | R | RAM | 
-| 138 (0x8A) | Port 10 Attached Servo ID | 1 | RW | RAM |+| 137 (0x89) | Port 9 Attached Servo ID | 1 | R | RAM | 
 +| 138 (0x8A) | Port 10 Attached Servo ID | 1 | R | RAM |
 | 174 (0xAE) | RW Shared Memory Byte 0 | 1 | RW | RAM | | 174 (0xAE) | RW Shared Memory Byte 0 | 1 | RW | RAM |
 | 176 (0xB0) | RW Shared Memory Byte 1 | 1 | RW | RAM | | 176 (0xB0) | RW Shared Memory Byte 1 | 1 | RW | RAM |
Line 218: Line 263:
 However if, for any reason, the user wishes to operate at 10bit, the board will right shift the lower two bits and report the values in a 10bit range. However if, for any reason, the user wishes to operate at 10bit, the board will right shift the lower two bits and report the values in a 10bit range.
  
-This setting is, once again, made available, mostly for compatibility with older Dynamixel devices and eventual libraries.+This setting is, once again, made available, mostly for compatibility with older Dynamixel devices and older or specialized libraries.
  
 ''0'' = 12bit mode disabled. Resolution is set to 10bit.\\ ''0'' = 12bit mode disabled. Resolution is set to 10bit.\\
Line 228: Line 273:
 This is a change from the ARES firmware, where changing this setting in the main board would propagate it to the actuators. It is no longer the case in the EROS firmware. This is a change from the ARES firmware, where changing this setting in the main board would propagate it to the actuators. It is no longer the case in the EROS firmware.
  
 +**Fan speed setting**
 +
 +Adjusts the FAN speed multiplier. \\
 +The hands automatically adjust the FAN speed based on the internal average temperature. The temperature is usually proportional to load and thus a balance between acoustic comfort and thermal performance should be achieved.
 +
 +The FAN multipler lets the user further tweak the fan speed setting to its needs.
 +
 +By default the FAN multiplier is set to 2 (FW versions < 45) or set to 3 (fw versions >=45).
 +
 +  * Lowering the Multiplier will reduce the fan speed. This may be suitable for environments where minimum fan noise is desirable
 +  * Setting it to 0 will effectively disable the FAN ,which is NOT recommended.
 +  * Setting it to a higher level will increase the multipler. A value of 5 or above typically sets the FAN to its maximum speed, regardless of the internal temperature.
 +
 +(please note that not all models support adjustable fan speed; at the time of writing only the 7D and 8D do).
  
 **Present Voltage** **Present Voltage**
Line 236: Line 295:
 Also note that, if no external power is applied, the internal actuators will not be powered and therefore will not respond. Also note that, if no external power is applied, the internal actuators will not be powered and therefore will not respond.
  
 +__Note:__ Version 3 hardware boards (typically used in the RH4D) do not have the Voltage measurement capability. Starting with firmware version 28, this memory position will return 1 or 0 depending on whether external power is applied or not (earlier versions always return 0). This behaviour is by design on this version of the boards. You can find your board version by checking memory position ''60 (0x3C)''
  
 **Present Temperature** **Present Temperature**
  
-The temperature is Degrees Celsius measured by the NTC sensor on the main board.\\+The temperature in Degrees Celsius measured by the NTC sensor on the main board.\\
 This temperature represents the ambient temperature inside the unit. This temperature represents the ambient temperature inside the unit.
  
Line 247: Line 307:
 This memory position relates to the ''REG_WRITE'' and ''ACTION'' commands of the Dynamixel protocol.\\ This memory position relates to the ''REG_WRITE'' and ''ACTION'' commands of the Dynamixel protocol.\\
  
-These commands are being __deprecated__ in favour of ''SYNC_WRITE''.+Seed Robotics' technical analysis indicates these commands are better performed using the more modern ''SYNC_WRITE''.
  
 For this reason, the EROS firmware __does not support__ them but __fully supports__ ''SYNC_WRITE'', which provides the same functionality in a more efficient manner. For this reason, the EROS firmware __does not support__ them but __fully supports__ ''SYNC_WRITE'', which provides the same functionality in a more efficient manner.
Line 269: Line 329:
 The serial number of the main board. The serial number should be reported in HEX and is composed in this manner The serial number of the main board. The serial number should be reported in HEX and is composed in this manner
 [SN1][SN2][SN3] [SN1][SN2][SN3]
 +
 +**Internal PSU RESET**
 +
 +Writing a ''1'' to this memory position will reset the Internal PSU that powers the Actuators.\\
 +This will result in power cycling all of the Internal Actuators.
 +
 +It is a convenient way to restart the internal servos without having the power cycle your entire robot.
 +
 +This feature is especially useful to reset the Actuators when an OVERLOAD error or other anomaly occurs.\\
 +It can also be used to power cycle them after changing a setting that requires a reboot.
 +
 +IMPORTANT: unless the main board is connected via USB, the Processor on the main board will also be powered by the Internal PSU. Therefore issuing a PSU restart may cause the processor to reboot as well. This will be visible on the LEDs on the hand showing the initialization sequence, and is a normal behavior.\\
 +Nevertheless the boot process is fairly fast and the unit should be responsive again within approximately 5 seconds.
  
  
Line 275: Line 348:
  
 This is in reality a WORD (2 bytes) that can be written at once.\\ This is in reality a WORD (2 bytes) that can be written at once.\\
-Each color is indicated as 4 bits. The full RGB setting is composed of 3 sets of 4 bits which are left aligned. +Each color is indicated as 4 bits. The full RGB setting is composed of 3 sets of 4 bits.
- +
-The LOW byte controls Red and Green and High Byte controls the Blue.+
  
-They can be written as one WORD as follows:+The High Byte controls the Red, and Low Byte controls the Green and Blue.
  
-Low byte ''[Bits 7~4: RED][Bits 3~0: Green]'' High Byte: ''[Bits 7~4: Blue][Bits 3~0: Not used; ignored]''+They can be written as one WORD as follows:\\ 
 +High Byte: ''[Bits 7~4: Not used; ignored][Bits 3~0: Red]''\\ 
 +Low byte ''[Bits 7~4: Green][Bits 3~0: Blue]'' 
  
  
Line 333: Line 406:
 This is et to match the Baud Rate configuration of the Bluetooth module. This is et to match the Baud Rate configuration of the Bluetooth module.
  
-The setting is read only in the control table to prevent any inadvertent miscondfiguration. However, it can be changed through the console commands.+The setting is read only in the control table to prevent any inadvertent misconfiguration. However, it can be changed through the console commands.
  
  
Line 363: Line 436:
  
 At power up, the module is turned On.\\ At power up, the module is turned On.\\
-When operating the unit on battery power and, if you don't need the Bluetooth functionality, you can turn the module off to save a few mA, although the module has relatiely lw power usage in standby mode.\\+When operating the unit on battery power and, if you don't need the Bluetooth functionality, you can turn the module off to save a few mA, although the module has relatively low power usage in standby mode.\\
  
 We recommend keeping the module On as it will let you connect to the unit and run **online** diagnostics in case of need. We recommend keeping the module On as it will let you connect to the unit and run **online** diagnostics in case of need.
Line 386: Line 459:
  
 The firmware attempts to subtract ambient IR light to give you a cleaner reading.\\ The firmware attempts to subtract ambient IR light to give you a cleaner reading.\\
-However under direct sunlight or near sources where high amount of IR are emmited, the resolution of this reading can be reduced.+However under direct sunlight or near sources where high amount of IR are emitted, the resolution of this reading can be reduced.
  
 **Capacitive Sensors installed** **Capacitive Sensors installed**
Line 404: Line 477:
 Any value that is at least 40%~50% above the this baseline reading, can be considered a "touch". Any value that is at least 40%~50% above the this baseline reading, can be considered a "touch".
  
-Also note that, due to the fact that the sensors are embedded in the shell, they will have slight differences which means theiur baseline readings will always be different from each other.\\+Also note that, due to the fact that the sensors are embedded in the shell, they will have slight differences which means their baseline readings will always be different from each other.\\
 This is normal and the expected behaviour. Please follow the advice above for taking baseline readings and establishing a "touch/no touch" threshold. This is normal and the expected behaviour. Please follow the advice above for taking baseline readings and establishing a "touch/no touch" threshold.
  

Copyright © 2015-2023 Seed Robotics Ltd

  • eros/mainboard_ctltable.1490207710.txt.gz
  • Last modified: 2017/03/22 18:35
  • by wadmin