This is the page containing the description a new BVRobotics project called Arduporter Robot. Arduporter is a robot able to transport different items, it moves autonomously avoididing obstacles, you can also move it manually or ask to follow specific objects
If you need additional specific information about this topic or if you want to look at it personally please write an email
Arduporter robot is a project born in 2016. In reality it is the logical consequence of ardway. Once Ardway's FollowMe feature was completed, it was really interesting to be able to challenge itself in developing an algorithm that would allow a robot to walk inside a room without impacting obstacles on its path.
Having to build something mobile and having ArduWay engines available (250 W each) I asked myself if it would have been a good idea to build a robot that could carry various types of equipment. Very often during our work (in the garage but also at home or in the office) we are forced to move repeatedly to take tools that
we have scattered across the room. ArduPorter could be the solution to this need. A place where we have all our tools which, instead, to remain statically fixed to a wall, waiting for the user to take care of taking the pliers or the welder , can, instead, follow who we decide giving him or her the right tool at the right time.
To complete this project will require long time, here is the solution I want to propose you in this article. Let's see if, during the construction, we can think of some other function and if the algorithm to move it (the real scope of my project), can make it do what I want to do.
Example of the follow-Me function
In the following video you will see where we came from. The latest function implemented on Ardway has been the "followMe" one. After that I decide to change completelly the view of this robot implementing something more usefull and more autonomous without to lose all the great stuff done since now
First I threw away everything that I built for Ardway (keeping only the boards and their configurations) and I modified in I2C the way of communicating between the two "brains" of this project: The Arduino module that connects to the engines and the one which connects to the sensors, cameras and display.
From the second arduino module (the one positioned in the main console) it is possible to communicate to the first module what actions to take with the motors and, therefore, how to behave according to the values returned by the sensors placed all around the Robot.
I2C communication allows packets to travel quickly through the network and to minimize noise and interference due to the non-performing network.
Given the size and, therefore, the danger of the robot, I left the emergency button active and I set up an algorithm able to accelerate and slow down wheels progressively. acceleration and deceleration too fast could have put the entire structure in trouble.
The structure is constructed of wood and plastic. Less stressed parts will be printed with printerina . The robust ones will be completely made of wood
I built a case for batteries too. Given the large amount of sensors and lights that I'm going to install on ArduPorter, I had to double the capacity of the batteries, which is then increased by a factor of 2. The circuit now includes two 12 volt batteries in parallel (7A + 7A) put in series with two other 12V batteries (7A + 7A) thus obtaining a single 24 volt driving energy with a
capacity of 14A. All this will be used to push the two 250W electric motors, different LED bulbs (used to get a bit of Modding effect) + 6 ultrasonic sensors 2 arduino 2560 and an LCD display that I will use both as to debug and to show some vital parameters on screen for the system. Nothing avoid that the number of devices powered could increase in the future but, for now, let leave things as they are.
With all this space used by batteries it became natural to build a special case. To develop it, choosing the area, it was decided to use plastic for the side edges and wood for the roofing. Building a house has allowed me to recover useful space to insert several other interesting and practical supports for Arduporter's features.
I chose the aluminium color (to paint the different cases) to give a more the robotic shape to what, after all, is a real wardrobe with four wheels.
As you can see, creating special containers you can free up space for additional tools or objects. The space over the case, in the future, could be used to create additional containers or to install a pair of robotic arms useful to keep in positions objects on which it is working.
At the moment the table top has been very useful for installing LED reflectors that will be used to illuminate objects to follow or to identify emergency situations whenever there may be a collision or a dangerous event.
Even the main case is aluminum colored and a series of lighting spots have also been placed in the back. In the same space, in the future, a small control panel will also be installed that will allow me to easily perform some control tasks even while comfortably standing behind the robot (fine tuning, monitoring, robot controlling etc).
The algorithm for avoiding obstacles is really complex. This is because, as arduporter is a human-sized robot, the dimensions of the it compared to the capabilities of the sensors, require multiple points of verification and therefore the installation of different sensors in different areas of the robot. The current version of Arduporter includes six sonic sensors placed at the six star angles of the robot.
Below is the detail of some sensors installed in the external front part of the battery case.
The Adaptive avoid obstacles algorithm
ArduPorter is a non-circular robot bigger enough to not be able to move in a small environment. This means that the algorithm should be as adaptive as possible. All parameters should be fine-tuned and decided based on the dimensions of the environment where the robot should walk.
For example, a big environment means faster speed while a small environment means lower speed. Minimum distance should be parametrized because of the different obstacles you can find into a specific environment.
The following video shows you how this algorithm adapt his behaviour in a small environment (my garage) reducing speed. As you can see one of the major difficulties is to avoid obstacles in an environment where different objects are "scattered" across the floor. It makes very hard to use sonic sensors