R^3

Octorotor ~ Hardware

22 December 2010 | No Comments »

Arduino Fio

The main octorotor processor is an Arduino Fio, running an AtMega328 at 8MHz; the Arduino Fio has an Xbee socket on its back side, which is indeed being used for wireless communication with a 1mW Xbee.

Arduino Fio

The great advantage for working with the Arduino Fio is that it can download code and run it both wirelessly, making software development and debugging seamless.

The major limitation for my specific application with this board is communication; the Fio has only one hardware serial for the Xbee, so I used a software serial library to have the capability to communicate to my Inertial Measurement Unit (IMU).

In order to learn how to set up the Fio wireless programming : http://arduino.cc/en/Main/ArduinoBoardFioProgramming

Note: at some point during  the Xbee setup ,while using X-CTU, I screwed up and downloaded the wrong firmware version, which locked the Xbee in this limbo state. I thought I had broken it for good, but before smashing my head against the nearest wall I decided to check the tubes…

After reading through some forums I found out one solution is to disconnect the Xbee ( I mean, UNPLUG THE CABLE) in the middle of the download, and try again. I don’t guarantee it, but this worked like a charm for me.

IMU

The inertial measurement unit is the octorotor’s major feedback sensor input.After a good share of research I decided on the SFE 9DOF Razor IMU, this seemed like the optimal solution because for $125 I was able to have access to:

  • LY530ALH – 300°/s single-axis gyro
  • LPR530ALH – 300°/s dual-axis gyro
  • ADXL345 – 13-bit resolution, ±16g, triple-axis accelerometer
  • HMC5843 – triple-axis, digital magnetometer
  • AtMega 328 – programmable microprocessor

Having the AtMega 328 means I can implement my Kalman filter on the IMU itself, and only communicate the filtered pitch, roll and yaw over the software serial to the Arduino Fio.

SparkFun Razor IMU

In order to program the board all you need is:

SparkFun Electronics (SFE), is an amazing source of DIY goods; they offer a vast amount of breakout boards for a huge variety of sensors and components. If you need a place to buy your parts, I would strongly recommend starting at:

http://www.sparkfun.com/

Octorotor ~ Motor Drivers

20 December 2010 | No Comments »

In order to maintain the project simple and the cost low I kept the individual batteries of each helicopter. This means the octorotor actually has 5 batteries total: four 3.7V 1000mAh (one for each end), and a fifth 3.7 130mAh battery to run the arduino fio and the IMU. While the four batteries need to be charged independently using outlet chargers, the fifth charge is battery over USB, using the arduino fio charging circuit. All the octorotors circuits have a common ground.

The motor drivers on the other hand were designed and built by me; each motor driver consists of an N-channel MOSFETS (with built-in Flyback diode), with its gate connected to a PWM port of the Arduino using a pull-up resistor, and its source and drain connected to the battery and motor respectively. The MOSFETS are specific for fast switching applications, and can handle 90A continuously. By inserting PWM signals with different duty cycles, we can precisely control the speed of each motor.

Motor Controllers

The MOSFETS can be found at Digi-Key for a little under $0.92 a piece:

http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=IPS040N03LGIN-ND

N-Channel MOSFET connection diagram

The Arduino Fio can only supply 6 PWM signals, and the octorotor set up requires us to drive 8 motors independently in order to have full control of roll, pitch and yaw. A quadrotor controls yaw by creating an overall torque on the chassis when it changes the ratio between the Clockwise (CW) and Counterclockwise (CCW) blades. The octorotor can do the same, but for that it needs independent control of the clockwise and counterclockwise blades, so for this we would need to drive all 8 motors independently.

The solution I am using is a compromise from full control of all rotors; 2 of the arms (forward and backwards) have both motors connected to the same driving signal, always spinning together, while the other 2 arms(left and right) have independent control for all 4 motors.  With this I can control yaw by changing the ratio between the CCW and CW blades on the left and right arms..

Octorotor ~ Chassis

20 December 2010 | No Comments »

The base had to main characteristics:

  • Light – after all my payload is only around 100 grams
  • Strong – in case of a crash(which is bound to happen)

To achieve this two characteristics we need something rather custom, which turnout to be a great chance to experiment with WPI’s ABS Plastic Rapid Prototyping machine(3-D printing).

After some brainstorming we came up with a solid design: a cross shaped tube base supported by a spherical structure. We also played with a few version with several holes to further decrease the weight, but we were advises they would make the structure too fragile against crashes.

Final Octorotor base design

And after 2 days of printing, this is the octorotor new centerpiece:

Octorotor Base

The final product weights a little over 30 grams and already survive several falls.  It works very well, but there is a couple of improvements that will be done for a future iteration:

  • Include a center hole, allowing to “tether” the octorotor using a line attached between the ground and the ceiling.
  • Make the top disk a continuous plane, so there is more area to attach components.

But overall, this was a great solution!

If you don’t have a 3-D printer at hand, there are companies, like http://www.ponoko.com/ , which are specializer in uploading your 2-D/ 3-D model, printing it, and delivering it.

Octorotor

22 October 2010 | No Comments »

I haven been wanting to build a quadrotor/octorotor for a long time; I tried building a small hexrotor over the summer, but I simply didn’t have a good reason to justify the full initial cost to build a larger system. Well, currently I am taking the graduate level class Foundation of Robotics at WPI(RBE500), and we needed a project to implement a Kalman Filter. I will develop more on Kalman Filters later on, but all it matters is that I had a  ”justifiable cause” to move forward and build one =D

Next in the list were all the design decisions, which mean countless hours of research( …internet surfing…) to decide which components to buy. I will explain each decision made, but here is a quick breakdown of the different components:

  • Mechanical – the chassis, motors, rotors…
  • Power – batteries and motor drivers
  • Signal processing – on board microprocessor or wireless computer
  • Communication – wireless to a remote control
  • Sensor input – gyroscopes, accelerometers,etc…

Starting with the mechanical set up: why four coaxial helicopters (8 rotors) instead of  four single rotors?

1. The principle behind a quadrotor is that two of the blades rotate clockwise (CW), while the other two rotate counterclockwise(CCW), therefore cancelling the overall torque generated. So, for example, to go forward you speed up the back rotor and slow down the front one by the same amount in order to maintain the overall torque. Now, if you want to rotate around yaw you change the ratio between the CW and the CCW rotors.

Quadrotor theory (thanks Wikipedia!)

This systems works well, but it still creates a overall torque on the body of the quadrotor(each pair of arms trying to rotate the system in one direction). An octorotor on the other hand has 2 counter-rotating blades on each arm, cancelling the torque on the rotor axle, rather than the quadrotor chassis. Overall the control theory is the same, but yaw can be now controlled from the radio between the CW(top rotors on my setup) and CCW rotors(bottom rotors).

Pitch, Row and Yaw - Wikipedia once again

2. Gyroscopes, and I don’t mean the sensors. The coaxial helicopters used on my setup have a balance bar connected to the top rotor,during flight the weights on the balance bar create a gyroscope, adding significant stability to the system(this is how I can fly it with NO controls, like in the video of the first post).

Syma S006, RC helicopter used on the Octorotor

3. My last factor was price; each of the S006 coaxial helicopters cost $32.95 on Amazon.com. Which means I had all my hardware and batteries(as well as chargers, and a few extra remote controls) for U$140, this a great price for a proven solution, regardless of being a octorotor or a quadrotor. I knew from a couple of forum threads that the S006 can lift approximately 25 grams each.

On the YouTube video below the octorotor has 2 Allen wrenches set as payload(which add to more than 100grams):

I still haven’t had the chance of properly measuring the maximum payload of my setup, but I will make to note here once I do it.

Note: For the extended definition of Kalman filter, visit : http://en.wikipedia.org/wiki/Kalman_filter , and for the “state” definiton  http://en.wikipedia.org/wiki/State_space_(controls).

Note2: Wikipedia is Awesome!

Climb on,

First Post

28 July 2010 | No Comments »
A quick intro:

Hi,

My name is Felipe Polido, and I am currently a senior at the Worcester Polytechnic Institute in Worcester MA; I am pursuing a double major in Robotics Engineering(RBE), as well as Electrical & Computer Engineering (ECE). My interests include, but are not limited to, signal processing, control theory, analog design, mechanical systems, and almost any innovation involving robotics!

Red Rabbit Robotics (R^3), is a joint idea between me and my brother, Henrique, to work together with robotics systems. Besides being my brother, he is a great friend, and although the whole R^3 is just a concept, let’s see how far we can push it =D

Currently I am working on a few different projects, including my Major Qualifying Project at school; we have a second year entry at the Intelligent Ground Vehicle Competition (IGVC).The competition consists of designing a robot capable of drive autonomously on a open field outdoor environment based on GPS coordinates and physical obstacles.

But what really helped me kick start this blog is my newest project; I am building an Octorotor!

Note: I am also passionated about Rock Climbing, so don’t mind the occasional post on that as well =D

Enjoy it,

Climb on!