ISR Bioloid Humanoid: Difference between revisions
No edit summary |
No edit summary |
||
Line 11: | Line 11: | ||
=== The Dynamixel AX-12+ === | === The Dynamixel AX-12+ === | ||
These servos feature a precise position and speed control, an alarm system for different malfunctions, holding torques up to 18.6 Kgf.cm and communication speeds up to 1Mbps. It uses a simple communications protocol that allows writing and reading different status values (current and goal position, current and goal speed, LED status, torque, voltage, temperature, etc). Each servo has a different ID and this network doesn't allow multiple packets to be exchanged at the same time. The bus has 3 pins: GND, VDD and DATA. | |||
An instruction and status packet must have the following structure: | An instruction and status packet must have the following structure: | ||
Line 79: | Line 79: | ||
Although the Bioloid platform is very customizable it lacks the necessary power of computing and sensing required for a walking and balancing algorithm. This section will explain the problems we encountered and the solutions adopted (or about to be adopted) to improve the Humanoid. | Although the Bioloid platform is very customizable it lacks the necessary power of computing and sensing required for a walking and balancing algorithm. This section will explain the problems we encountered and the solutions adopted (or about to be adopted) to improve the Humanoid. | ||
=== 6 Axis IMU === | === 6-Axis IMU === | ||
In order to be able to estimate an attitude, it has been decided an IMU would be required. In order to facilitate the programming, we chose the 6 Axis IMU from [ | In order to be able to estimate an attitude, it has been decided an IMU would be required. In order to facilitate the programming, we chose the 6 Axis IMU from [http://www.huvrobotics.com/shop/index.php?_a=viewProd&productId=3 HuvRobotics], which features a 3 Axis Accelerometer and a 3 Axis Gyroscope. Also this device was made in order to simply be connected to the CM-5 bus and follow the same communications protocol as the Dynamixel devices. It has an ATMega8 (the same used in AX-12+), updates the IMU readings at 100Hz and allows an easy reading of the 6 parameters with one single instruction. | ||
This solution has been acquired and is mounted in the Humanoid Torso. | This solution has been acquired and is mounted in the Humanoid Torso. | ||
=== Foot Pressure Plates === | |||
The acknowledgment that a foot as reached the floor is also an important factor to improve the walking ability. One major possibility to solve this problem also came from [http://www.huvrobotics.com/shop/index.php?_a=viewProd&productId=4 HuvRobotics Foot Pressure Board]. Just like the IMU, it is made to be connected to the CM-5 bus and respond to the same communication protocol. Alas, the production has been stopped. This has been postponed, but we expect to build our own boards, featuring either a pressure sensor or a simple switch. We still need to decide if this board will have an independent microprocessor to connect to the CM-5 bus (easy to plug, but harder to power) or if we should connect it to an ADC in a new processing board (being built). | |||
=== USB2Dynamixel === | |||
This device allows the connection of a USB port to the Dynamixel bus. Using any language, it is possible to use the computing power of a laptop or desktop PC to create complex algorithms to control the Humanoid. Using this method the CM-5 is not needed to control the servos, but the USB2Dynamixel does not power the servos. In order to solve this problem, one can keep the CM-5 attached but dorment (creating a program that does nothing or using the bridge mode with Libbioloid) or use a new pack of batteries, like Li-Po's. | |||
The USB2Dynamixel is made by Robotis, you can find more information and drivers and software dowloads [http://www.robotis.com/usb2dynamixel/ here]. | |||
=== Gumstix === | |||
In spite of the versatility and how easy it is to program, the Bioloid platform has two very important constraints: processing power and communication speed. | |||
== Special Procedures and Trivia == |
Revision as of 10:10, 31 July 2009
Characteristics
The Bioloid Kit features a CM-5 controller, Dynamixel AX-12+ servos and a Dynamixel AX-S1 distance sensor. The CM-5 is connected to the servos and sensors using a bus connecting all devices through a daisy-chain network. It can also be connected to a computer using a serial connection, giving access to many different ways of dealing with the robot.
The CM-5
The controller used on this robot is a CM-5, which uses the processing ability of an ATMega128. It runs at 16MHz, 128Kb of Flash memory, 4Kb of EEPROM and 4Kb of Internal SRAM. It has two available UARTS, which are designed for communicating with the servos at 1Mbps and with the PC at 57600bps. The original firmware allows different programming methods using the Software from Robotis (more details further down), but it is possible to build our own firmwares, programming in C or C++ and compiling using the right libraries (more details further down).
The Dynamixel AX-12+
These servos feature a precise position and speed control, an alarm system for different malfunctions, holding torques up to 18.6 Kgf.cm and communication speeds up to 1Mbps. It uses a simple communications protocol that allows writing and reading different status values (current and goal position, current and goal speed, LED status, torque, voltage, temperature, etc). Each servo has a different ID and this network doesn't allow multiple packets to be exchanged at the same time. The bus has 3 pins: GND, VDD and DATA. An instruction and status packet must have the following structure:
Instruction | ||||||
---|---|---|---|---|---|---|
0xFF | 0xFF | ID | LENGTH | INSTRUCTION | PARAMETERS | CHECKSUM |
Status | ||||||
0xFF | 0xFF | ID | LENGTH | ERROR | PARAMETERS | CHECKSUM |
- The first two bytes are the header, both 0xFF
- The third byte is the ID to whom the instruction is being sent to or where the reply comes from
- The forth byte is the length of the rest of the message (2+number of parameters)
- The instruction or error byte have the following values and meanings:
INSTRUCTION | ERROR | |||||
---|---|---|---|---|---|---|
Value | Name | Parameters | Description | Bit | Name | Description |
0x01 | PING | - | Request of a Status Packet | 7 | - | No Error |
0x02 | READ | x,n | Requests the values of n bytes starting at byte x | 6 | Instruction Error | The instruction requested is undefined |
0x03 | WRITE | x,values | Requests writing values starting at byte x | 5 | Overload Error | The maximum torque isn't enough to hold the load |
0x04 | REG_WRITE | x,values | Similar to WRITE, but waits for a ACTION packet | 4 | Checksum Error | The checksum is wrong |
0x05 | ACTION | - | Triggers the last REG_WRITE packet received | 3 | Range Error | The values to be written are out of range |
0x06 | RESET | - | Restores the Control Table to factory defaults | 2 | Overheating Error | The temperature exceeds the maximum operating temperature |
0x83 | SYNC_WRITE | x,l,S*N | Allows writing in several Dynamixels at the same time, starting at byte x, l values. | 1 | Angle Limit Error | The goal position is outside the CW and CCW range. |
- | - | - | - | 0 | Input Voltage Error | The input voltage is outside the operating voltage range. |
- The parameters are extra values required for some instructions or replies.
- The Checksum byte is calculated as ~(ID+LENGTH+INSTRUCTION/ERROR+PARAMETERS)
Datasheet: AX-12+
The Dynamixel AX-S1
The AX-S1 device has several abilities. In addition to the distance sensor in three directions, it also has a sound emitter and receiver, an infrared remote control receiver and a light sensor. The communications protocol and construction is very similar to the ones of AX-12+
Datasheet: AX-S1
The Robotis Software
Robotis supplies three programs in order for the average user to take most advantage from the Bioloid: Behaviour Control Program, Motion Editor and Terminal. Each has a different function, according to the level of complexity you wish to use.
Motion Editor
This program allows the user to compute poses and motion files for the Bioloid. It has 127 motion pages available, each with 7 poses. It features a 3D view of the robot, showing the actual position of the robot, as well as the position of each servo. The pose can be made manually (moving the servos manually and saving the pose) or using the computer (sending goal positions to all servos and saving the pose). These motion pages can be edited in Terminal and can be used as part of the BCP files.
Behaviour Control Program (BCP)
The BCP allows the making of simple control algorithms, using an intuitive block programming system. For example, it allows playing different motion pages (or files) if the robot detects some sound patterns, or detects walls, or even if a button is pressed. The BCP files passed to the CM-5 are played when it enters PLAY mode. It also allows downloading and uploading motion files to the CM-5, recovering and updating the firmware of the CM-5, AX-12+ and AX-S1.
Terminal
The terminal allows maximum freedom customizing motion files and dealing with the robot servos. Using a terminal mode, we can easily change different parameters from the servos Control Table as well as using more precise poses. This program is also used to access the bootloader of the CM-5, allowing an advanced user to upload his own firmware.
Improvements
Although the Bioloid platform is very customizable it lacks the necessary power of computing and sensing required for a walking and balancing algorithm. This section will explain the problems we encountered and the solutions adopted (or about to be adopted) to improve the Humanoid.
6-Axis IMU
In order to be able to estimate an attitude, it has been decided an IMU would be required. In order to facilitate the programming, we chose the 6 Axis IMU from HuvRobotics, which features a 3 Axis Accelerometer and a 3 Axis Gyroscope. Also this device was made in order to simply be connected to the CM-5 bus and follow the same communications protocol as the Dynamixel devices. It has an ATMega8 (the same used in AX-12+), updates the IMU readings at 100Hz and allows an easy reading of the 6 parameters with one single instruction. This solution has been acquired and is mounted in the Humanoid Torso.
Foot Pressure Plates
The acknowledgment that a foot as reached the floor is also an important factor to improve the walking ability. One major possibility to solve this problem also came from HuvRobotics Foot Pressure Board. Just like the IMU, it is made to be connected to the CM-5 bus and respond to the same communication protocol. Alas, the production has been stopped. This has been postponed, but we expect to build our own boards, featuring either a pressure sensor or a simple switch. We still need to decide if this board will have an independent microprocessor to connect to the CM-5 bus (easy to plug, but harder to power) or if we should connect it to an ADC in a new processing board (being built).
USB2Dynamixel
This device allows the connection of a USB port to the Dynamixel bus. Using any language, it is possible to use the computing power of a laptop or desktop PC to create complex algorithms to control the Humanoid. Using this method the CM-5 is not needed to control the servos, but the USB2Dynamixel does not power the servos. In order to solve this problem, one can keep the CM-5 attached but dorment (creating a program that does nothing or using the bridge mode with Libbioloid) or use a new pack of batteries, like Li-Po's. The USB2Dynamixel is made by Robotis, you can find more information and drivers and software dowloads here.
Gumstix
In spite of the versatility and how easy it is to program, the Bioloid platform has two very important constraints: processing power and communication speed.