Aum 1.0

Posted on 10/02/2015 by nahueltaibo
Modified on: 13/09/2018
Project
Press to mark as completed
Introduction
This is an automatic import from our previous community platform. Some things can look imperfect.

If you are the original author, please access your User Control Panel and update it.

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).     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 ...


Aum 1.0

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).

 

 

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
  • (We would love to add you here if you whant to build your own Aum version :) )

Be part of the project!

If you like this project, and want to be part of it, we would be more than happy to let you modify what ever you consider that can be improved!

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

Aum 1.0

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

  We 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 :)

________________________________________________

UPDATE  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.

Flag this post

Thanks for helping to keep our community civil!


Notify staff privately
It's Spam
This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.

You flagged this as spam. Undo flag.Flag Post