Aum Robot

Aum is a robot testing platform where we are developing different basic robot modules to be used in future projects that we already planning. It tries to be autonomous, (it is, but quite dumb).

Aum Robot


Idea

The main idea of Aum 1.0 is to ve a “body” controled by an Arduino, and a “brain” controled by a Android cellphone.

We consider that almost any robot needs basic functionality to be able to start doing something usefull. This is the list we have today.

  • Autonomous obstacle avoidance (Almost achieved)
  • Remote navigation (Ongoing, using gamepad)
  • Environment Mapping
  • Going to base to recharge
  • A better and resistant platform

Team

  • Nahuel Taibo
  • Ariel Saban
  • Adrian Claret

The code of the project is hosted in Assembla, and it is open: https://subversion.assembla.com/svn/aum-robot/


Hardware

The robot is based on a kit bought on DealExtreme, (when we still where able to import things to Argentina…) The kit consits in the two plastic layers, 4 motors, 4 wheels, the H bridge to control them, and an Arduino Uno. We have two of there kits, so soon we will have to Aums moving through the office.

Arduino

We are working on an Arduino Uno. It is the responsible of handling the motors and range sensors.
The Arduino code basically establishes a serial connection with the Brain, and after that sends sonar measures and respond to the requests from the Brain, like moving motors at some speed in some direction.

Android

Aum robot 2We are using a Samsung Galaxy S2 as brain, and it is responsible for desition making.

Being software developers, we deside to use Android to be able to make a better code.. at least that was the initial aproach, I am not sure if we where able to achieve that objective.

The Brain uses the library usbSerialForAndroid to comunicate with the Body through a usb OTG cable. The library has a good example as how should the Java code be written, and also an Arduino example app, that can be used as starting point.


Software Architecture

These are some of the most important classes we have and its responsibilities

Robot.java

This class inherits from thread, and it is the main entry point for the robot. It contains the main loop.

It creates and replace the Behaviors

IBehavior.java

For us, a Behavior is a way of behaving that the robot knows, an example can be

DefaultBehavior: Navigate the robot’s environment without colliding

JoystickBehavior: To enable the remote control of the robot, with a PlayStation Joystick

IddleBehavior: It should stay still doing nothing

The idea is that we introduce a new way of behaving for the robot, (ie follow light, navigate with GPS, etc) we would implement a new Behavior, so the code keeps clean. The behavior can also switch to another behavior if it considers that it is necessary. (ie: the robot is navigating with GPS, and finds a human pressence and needs to avoid it…)

Comand.java

This is the class that represents a message from to the Body. It has a message code, and its parameters (depending on the message code.

ISpeedController.java

Is the responsible to move the robot. We created this abstraction to ba able to handle changes in the speed, for example it is not the same to set the speed directly to full trust, than to make the change gradually, to avoid something to fell from the robot.

IHardwareManager.java

This class handles the communication with the robot. We have a ArduinoHardware that inherits from this Interface, who knows what our body can do, for example change wheels velocities, receive the sonar measures, etc. It also can call Android code, to get for example the compass measures, camera, accelerations, etc. If we for example change to a electronic compass on the arduino, then we should change the way we get this information only in this class.

Maybe it is too complex for the things that the robot really does, but well, we are thinking on getting this code bigger and bigger, so we help this structure help us.

If you have ideas to improve its structure, and make it more understandable, we are more than happy to listen 🙂


Updates

2015-08-01

As I give Aum 1.0 as a gift to a friend, this project is now considered completed, in the status it is 🙂 I will start focusing in my third Robot now.. post will be added as soon as I have something to show.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.