Difference between revisions of "TiltOne"

From AIRWiki
Jump to: navigation, search
m (YouTube videos)
m (Robot controller)
Line 55: Line 55:
 
==== Robot controller ====
 
==== Robot controller ====
  
The robot is controlled by a board built around a STM32 ARM7 Cortex M3 microcontroller from ST Microelectronics.
+
The robot is controlled by a board built around a STM32 ARM7 Cortex M3 microcontroller by ST Microelectronics.
  
 
[[Image:tiltone_board_blocks.png|720px]]
 
[[Image:tiltone_board_blocks.png|720px]]

Revision as of 14:33, 29 July 2011

TiltOne
Image of the project TiltOne
Short Description: Balancing robot
Coordinator: AndreaBonarini (andrea.bonarini@polimi.it)
Tutor: MartinoMigliavacca (migliavacca@elet.polimi.it)
Collaborator: GiulioFontana (giulio.fontana@polimi.it)
Students: AndreaGalbiati (andrea6.galbiati@mail.polimi.it)
Research Area: Robotics
Research Topic: Robot development
Start: 2010/09/20
End: 2011/02/20
Status: Active
Level: Bs
Type: Thesis

TiltOne is a two-wheels balancing robot that can keep itself in equilibrium while moving around. It's a bigger version of Tilty - our first balancing robot - as it is designed to be able to carry a quite high payload (up to 50kg) travelling at speeds of about 1.5m/s.


Mechanical project

Frame

As the robot needs to keep the wheel axis just under it's center of mass to mantain the unstable equilibrium point, it's inertia should be high in the upper part of the frame and low at the wheel level, allowing the base to move while the center of mass holds - ideally - it's position. For this reason the batteries, that are the heavier component of the robot, are mounted at the top of the frame.

A preview of the robot structure was realized using Google Sketchup 6, giving a first idea about it's dimensions and components placement Media:Tiltone_2_-_completo.zip.

Tiltone 2 - ruote alzate.jpg

The robot frame is built using standard aluminium profiles (http://www.item.info) to allow future modifications and provide simple solutions to attach auxiliar devices.

Wheels and transmission

The mechanical project was then realized using Rinoceros 4.0 CAD. Apart from the robot frame, particular attention was dedicated to the design of the transmission and the wheel hub, that allow to use standard cross-bike wheels Media:Tiltone_3_Rhinoceros.zip.

TiltOne.jpg

Trasmissione.jpg

The robot is actuated by two high-power electrical DC motor from Maxon Motor (www.maxonmotor.com) that provide torque to the wheels via a belt drive system.

Electrical project

Sensors

What the robot needs to control it's behavior are it's angle and angular velocity with respect to the direction of the gravitational force and the current speed of the wheels.

To acquire the robot angle and the angular velocity two sensors are used: an accelerometer (LIS344ALH by ST Microelectronics), that gives the components of the gravitational force along the vertical and horizontal axes of the frame, and a gyroscope (ADXRS150 from Analog Devices), that can directly measure the angular velocity with respect to the wheel axis. In order to reduce the influence of robot's movements sensed by the accelerometer, and to avoid the drift of the gyroscope readings, these two measurements are fused with a Kalman filter. The output of the filter is an estimate of robot's angle and angular velocity that tracks very well the real data.

Tiltone ka ra noise.png

Wheel's speed is obtained by two optical encoders (HEDS-5540 from Agilent) directly attached to the motor rotors, that allow to evaluate the rotor speed and to drive the motors with a closed loop controller.

Robot controller

The robot is controlled by a board built around a STM32 ARM7 Cortex M3 microcontroller by ST Microelectronics.

Tiltone board blocks.png

The microcontroller acquires sensors data, apply a control law and commits a command to the motors. The software running on the ARM is real-time oriented, having periodic tasks constantly running at different frequencies and some interrupt-driven events that can modify the program flow. The board provides also a serial interface to an external PC used to program the microcontroller and a wireless Zigbee module allowing to communicate with the robot

Stability and motion control

We have implemented different algorithms to control the stability of the robot and it's movements. Some of them are based on classical control laws, while others exploit machine learning techniques.

Classical controllers

A classical PID controller has been developed for stability control. A simple P-I controller keeps the robot in vertical position, but it is not robust and can't follow a speed o position setpoint.

A better controller was introduced to enhance robot reaction to external disturbances and to follow speed setpoints. A simplified schema of the controller is presented in the following figure.

Tiltone pid controller.png

  • C3 is a PID controller that makes the system stable
  • C2 is a PID controller that enhance C3 performances varying its setpoint (nested PID approach)
  • C1 is the speed controller, obtained by root locus analysis of the system, that acts changing the angle setpoint of the stability controllers

Reinforcement Learning approach

Resources

Thesis

  • Master thesis by Martino Migliavacca (in Italian): "Progetto e realizzazione di una base robotica bilanciante su ruote" (Design and development of a two-wheel balancing platform). Media:TiltOne_tesi_Migliavacca.pdf
  • First level thesis by Andrea Galbiati (in Italian): "Progettazione e realizzazione del controllo di una base robotica bilanciante su ruote" (Control design and implementation for a two-wheel balancing platform). Media:TiltOne_tesi_Galbiati.pdf

YouTube videos

  • tiltOne's first steps


  • tiltOne is stable


  • Remote control with joypad

External links

- Inverted pendulum on Wikipedia http://en.wikipedia.org/wiki/Inverted_pendulum

- Matlab tutorial about controlling an inverted pendulum (Modeling, PID, LQR, etc) http://www.engin.umich.edu/group/ctm/examples/pend/invSS.html#lqr