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/ 

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.


This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/aum-1-0

This is really cool!

Nice looking bot, I like how you have the smartphone as part of it. Can you give more details about the integration of the Android phone with the arduino?
Welcome to LMR!!!

 

Welcome!

Android it’s a nice choice as it can run OpenCV natively. I can help with image recognition and app development:)

Thanks Roxanna! We

Thanks Roxanna!

      We will add more details on the Arduino/Android integrations. It was the most complex part of what we did until now. :slight_smile:

Thanks Silux! We

Thanks Silux!

      We will add info to access the svn repo where we have all the source code, so you can also be part of the project, and help us improve the ugly code we have today :slight_smile:

 

 

Great!

Congratulations nahueltaibo!

I think it’s a nice robot, it moves very fast and accurate. I also like both its simplicity and its ability to change its speed depending on the surrounding. Clever design! I’m looking forward for futher development.

I have just two suggestions, it’s about the video, which is great that you share it to see how the robot works. Just record it horizontaly and you can use the intro and end from Let’s Make Robots. More here also the comments which are very interesting, please tell me your thoughts :wink:

Nice development! Keep going!

Android to Arduino with USB OTG

I love what you did here.

My bot has Android to Arduino via USB OTG communication.  The android side is java.  I use Eclipse foe the IDE.  The Arduino side is a Mega ADK.  I you want source for any of the communication I can send.  

I standardized all of the communication down to 2 different messages sizes (depending on how much data needed to be passed), so I could minimize the amount of code and bugs.  Based on a few parameters in each message, the message can be routed to the proper module for execution on either platform.

Good luck with your cool project.

Regards,

Martin

Thanks for the recomendations

Yo y are right, the video is not good. I can’t film it again since I don’t have the robot any more, but from now on, I’ll follow your guide :slight_smile:

I’m glad you liked it!

I’m following Anna

Hi Martin, I’m following Anna and I’m planning to build a robot that happens to be quite similar fiscally speaking.  So I will probably make you some questions I  the future.

   To comunícate arduino and android I’m using the P2PMQTT Library built on the books Professional Android Open Accessory with Android ADK. If you have time, t would be grate if you can give your point of view since you have more experience with this.