Robobuilder

From MMVLWiki
Revision as of 20:02, 26 October 2009 by Engjw (Talk | contribs)
Jump to: navigation, search
Assembled Robobuilder "Huno"
One can control the Robobuilder from within an interactive Ruby session (also available as 15.5 MByte DivX3 video and available on Youtube)
The Robobuilder Kit contains components for assembling a humanoid robot

Contents

Robobuilder

Currently all our Robobuilders are in disrepair (plastic gears of multiple servos are broken). We are trying to order metal gear replacements. Mark Williamson's thesis (MIT) points out that the problem actually is the rigid design: The situation is further compounded by the choice of actuator. As the robots are stiff, their links tend to be heavy, so large forces are needed to accelerate them. Electric motors, which are the most common actuator type cannot generate large forces at low speeds, so gear reductions need to be used. These increase the power density at the expense of introducing friction, noise, backlash and torque ripple to the system. As the robot is stiff, these effects will be transmitted to the endpoint of the robot, giving poor performance. A further disadvantage is that the gears increase the reflected inertia of the motor, and the large shock loads which result from unexpected collisions can cause the gear teeth to break.

Working.gif

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
  • sensors
    • 3-axis accelerometer (add-on)
    • ultrasound distance sensor
  • communication
    • RS232 interface
    • Bluetooth interface (add-on)

Ruby Examples

Using the RBC controller

You can download the Ruby-extension for controlling the Robobuilder using a GNU+Linux PC here:

robobuilder-0.2.2.tar.bz2

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

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

External Links

Bookmark and Share

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox