Robobuilder
m |
m (→Using the RBC controller) |
||
Line 42: | Line 42: | ||
=Ruby Examples= | =Ruby Examples= | ||
==Using the RBC controller== | ==Using the RBC controller== | ||
− | You can | + | You can get the Ruby-extension for controlling the Robobuilder with a GNU+Linux PC here: |
− | '''[ | + | '''[https://github.com/wedesoft/robobuilder github.com/wedesoft/robobuilder]''' |
Here is a small example program which makes the robot get up if it's lying on its back or its front. | Here is a small example program which makes the robot get up if it's lying on its back or its front. |
Latest revision as of 23:05, 16 July 2011
|
Contents |
[edit] Robobuilder
Currently all our Robobuilders are in disrepair (plastic gears of multiple servos are broken). We are trying to order metal gear replacements. According to Mark Williamson's thesis (MIT) ideally one should replace the rigid servos with series elastic actuators to avoid the large shock loads which result from unexpected collisions which can cause the gear teeth to break. However it may be better to use a sliding clutch since introducing elasticity will limit the dynamics of the system.
Update: A temporary solution might be to lower the overload parameter of the wCK servos. Furthermore it is possible to specify an upper and lower limit for the joint angle.
[edit] Capabilities
- main body
- AVR microcontroller
- motion programs
- direct control
- 16 servo controllers, serial bus
- self-running mode
- interpolation + closed-loop control
- LiPo akku, DC power connector
- AVR microcontroller
- sensors
- 3-axis accelerometer (add-on)
- ultrasound distance sensor
- communication
- RS232 interface
- Bluetooth interface (add-on)
[edit] Ruby Examples
[edit] Using the RBC controller
You can get the Ruby-extension for controlling the Robobuilder with a GNU+Linux PC here:
github.com/wedesoft/robobuilder
Here is a small example program which makes the robot get up if it's lying on its back or its front.
#!/usr/bin/env ruby require 'robobuilder' require 'matrix' class Vector def norm Math.sqrt inner_product( self ) end end robot = Robobuilder.new '/dev/ttyUSB0' puts "Robobuilder" puts "Serial number: #{robot.serial_number}" acceleration = Vector[ *robot.accelerometer ] if acceleration.inner_product( Vector[ 0, 0, 1 ] ) > acceleration.norm * 0.97 robot.basic robot.a elsif acceleration.inner_product( Vector[ 0, 0, 1 ] ) < -acceleration.norm * 0.97 robot.basic robot.b end acceleration = Vector[ *robot.accelerometer ] if acceleration.inner_product( Vector[ 0, 1, 0 ] ) > acceleration.norm * 0.97 robot.run 1 end robot.close
[edit] Todo
- Implement various commands of direct mode
- Implement commands for uploading motion sequences and action sequences
- Add support for Bluetooth communication
- Port wired and wireless serial communication to Windows
- Computer vision feedback using (external) webcam
[edit] External Links
- Robobuilder Ltd. (Korean manufacturer)
- Robosavvy (UK distributor)
- Robobuilder 5710K Humanoid Kit
- Robobuilder Bluetooth Communication Module (installation instructions)
- Robobuilder Triaxial Acceleration Sensor Module (installation instructions)
- Metal gear replacement (gears 1, 2, and 3) (gear 4)
- Robobuilder Metal Joints Set
- Robobuilder Creator users manual
- Serial protocol to communicate with Robobuilder controller
- Source code of Robobuilder controller
- Forum post about this Ruby project
- RoboBuilder enhanced with RoBoard (capable of running GNU/Linux)
- Robodance (free software to control toy robots)
- Robobuilder base dance video
- Video of Robobuilder at Roboworld 2008 (Seoul)
- HOAP at the EPFL Laboratoire d'Algorithmes et Systemes d'Apprentissage
- Matt Williamson: Masters thesis on series elastic actuators
- JO-ZERO robot (infrared remote control)