lunedì 7 luglio 2014

Testing MD25 and EMG30

On this post I want to publish result of some tests performed on MD25 board and EMG30 motors mounted on Geduino.

The first test's goal is to find relationship between motors speed input (a number between 0 and 255 where 128 is the center) and final angular speed at the end shaft.

In order to perform this test a simple program was uploaded on SAMx8. Exploring the speed range incrementing speed by 8 this program perform following steps:
- reset MD25 encoders value;
- set speed to given value;
- wait 10 seconds;
- measure the MD25 encoders;
- set speed to 0 (i.e. 128).

The same test was performed on both motor (1 and 2). The following chart show the results for motor 1 (green line) and motor 2 (blu line). On the x axis there are speed input to MD25, on the y axis the rotation speed at the end shaft.
The behavior is really good: excluding the extremes of the range the response is linear and there are not significant errors between two motors. This is a result of the motor feedback handled by MD25 board.

Using this result we can calculate relationship between MD25 input and final speed of the robot. Motors rotation speed can be related to robot speed and robot angular speed using following formulas:

1) v = (w1 + w2) * d / 4
2) w = (w2 - w1)  d / (2 *b)

v - tangent speed
w - angular speed
w1, w2 - rotation speed of motor 1 and 2
d - the wheel diameter
b - the wheel base

Calculation are done using Geduino dimensions.

Applying linear regression to this data we can found a linear relationship between the tangent and angular speed we want to drive to the robot and the right speeds value to set on MD25 to reach those speeds.

Geduino is ready!

NOTE: this an old post and, due to latest improvement, Geduino is changed from this picture.

I'm proud to announce that Geduino is ready!

With the completation of the power board and the shield all subsystems are now connected. Also the Laser Range Fined mount is build and completed. On following picture you can see the fully assembled robot (ok, this is not true: the battery is still not there: until Geduino will work in a lab power it by external is cheapy!).

lunedì 30 giugno 2014

System architecture

NOTE: this post is a revision of an older one to reflect last changes on Geduino

On this post the general architecture of Geduino will be explosed in order to show how each component works and communicate with other ones.

Geduino is based on UDOO board, a mini PC with quad core processor (Freescale IMx6) and a micro controller (SAMx8). UDOO provide an Arduino compatible pinout (the same as Arduino Due) that can be connected to SAMx8 (in this case it will works exactly as an Arduino Due) or to IMx6 CPU. SAMx8 and IMx6 will communicate between them using UART.

Other hardware component:
- PING))) sensors from Parallax. Ping sensors will be connected and controlled by the SAMx8 micro controller and their goal is to provide a secure and fast obstacle avoidance system;
- the RPLidar from RoboPeak, connected using UART pins to the IMx6. The RPLidar will provide laser scan data and it is the  core information source for the SLAM algorithm;
- the MD25 and EMG30 motor, connected using UART to SAMx8 micro controller. The motor will move Geduino and provide odometry information to SLAM algorithm;
- the MPU9150 from Sparkfun, connected using I2C to SAMx8 micro controller. This is a complete IMU that provide orientation information to SLAM algorithm in order to increase its accuracy.

Furthermore two other hardware board are used:
- the power board: attached to power source (LiPo battery or AC adapter) it provide stable power (5V or 12V) to all other components. In order to preserve the LiPo battery life the power board send to SAMx8 the current voltage of the battery;
- the shield board: this is a shield which pinout is Arduino Due compatible. Almost all hardware components will be connected to this shield. It include all systems (voltage level converter, configuration jumpers...) needed for hardware communication.

Last, but not the least, the 7" LCD touch screen, a standard UDOO optional that will provide a GUI to interact with Geduino.

Construction: part two

NOTE: this is a quite old post and in latest revision some construction details maybe changed

To build up the upper plate of the robot I use the same technics used for lower plate. The upper plate must have the supporting mount for LCD panel. This mount was cut from an aluminum sheet and it is composed by the rear mount and the from mask.
For aesthetics reason the front mask was decorated with a black glue paper.

Finally the two plates mounted with the LCD and UDOO connected and powered.

mercoledì 18 giugno 2014

Construction: part one

NOTE: this is a quite old post and in latest revision some construction details maybe changed

It's time to build the bottom plate of Geduino.

Before to start this task I print the bottom plate design, using CAD software, on A3 sheet with 1:1 scale factor. I glued this sheet on a 400x500 mm plate made of fiber glass is a sandwich between two sheets of carbon fiber.

I start cutting the plate using a Proxxon small driller ( Using this tool was quite easy to cut the plate: the only problematic parts was the slot for wheels (specially the rounded corner).

After cut the plate is time to drill it. This task must be done with high precision in order to match mounting for motors, boards and sensors.

Using the same Proxxon tool with a grinder I finish the border of the cut plate to make it smother. After this task the glued paper and the protection film from the plate can be removed.

Here the final result with motors, wheel  and board mounted.