DR1: Discovery Rover
DR1 is a rover robot with Arduino Core. Many robots on the Internet are designed to solve a determined problem, such as localization, light following, obstacles detection.
The purpose of this project was to create a robot which includes all those features and much more... All this in a relatively small body.
The DR1 is designed to be controlled with a PC/Mac and not with a remote control as it is a much more sophisticated vehicle, impossible to control with few controls.
The first problem was to design a body and a component's disposition which could reduce wire connections and at the same time respect the right and logical place for each component.
But the real challenge was to reduce power consumption of each component choosing a battery which could give the robot a considerable autonomy and at the same time not exceed the maximum weight limit based on engineering calculations about torque force of the small engines.
DR1 - Features
- Sophisticated wireless connection to control program on the PC/Mac (home base) based on radio connection developed with XBee modules. This proprietary connection protocol ensures real time informations and commands. The robot sends to the home base the data (a string formed by all informations like: motors speed, real power from each motor, revolutions for second, direction, light intensity and more). The home base answers with a string containing the commands like decreasing motor speed, turn right or so.
- Camera on the robot with wireless connection to any video monitor, including PC/Mac. The video streaming is read by the home base software. In this way it is possible to control and to drive it from another place without seeing it. The camera video goes directly from the camera to a receiving station connect to the PC/Mac and does not goes throw the XBee connection.
- Complete distance sensor system based on three ultrasonic sensor mounted in front and on both sides. These sensors ensure fast navigation in every type of environment and also the Scanner mode: a robot modality in which the robot rotates on his z axis and measures every x milliseconds the distance (based on more precise front ultrasonic sensor). Then each value is sent to home base software, analyzed and displayed on a 2D view from the top. This gives an idea of the place where the robot is to the human in front of the PC/Mac. This is a very important features in the case of problems with video connection during manual drive mode.
- Arduino Mega is the brain inside the robot. This electronic platform has been chosen for the large amount of connections and for the small power consumption characteristic of this type of boards. Beaglebone or Raspberry would be more suitable and they would allow more calculations on board but they are more energy dependent.
- Motor feedback was installed in the form of four revolutions counter one for each motor/wheel. This is very important for two factors: precise indoor localization system and power calibration based on real speed
- Precise indoor localization system based on motor feedback. Each motor back shaft gives a feedback which corresponds to a precise movement which can be easily converted in millimeters movement. Combined with a very precise compass module it is possible to infer the right position compared to the starting point. This is the most precise solution to the big problem of indoor localization (still open in many environments, including professional).
- Power calibration is the only way to guarantee a straight course. The problem derives from the different efficiency of each motor depending on various factors such as friction, imbalance, engine off-axis. Power calibration counts motor revolutions of each engine and compares it with the theoretic speed set from the motor driver and it adjusts it in consequence of this.
- Percentage battery based on the current sensor. The sensor measures the flow of current over time and knowing the maximum capacity of the battery can calculate approximately the remaining charge as a percentage
- Powerful lights are put in the front of the robot ensuring visibility even with no ambient light allowing manual drive mode also at night. The light module in based on 4 ultra bright white LEDs.
DR1 - Drive Modes
DR1 is designed to run lots of drive modes as it includes movement API and then it can include some more piece of software on board or from the home base software.
Standard drive modes are:
- Manual drive mode: in this mode the robot receives the commands from the home base software. As told before the robot includes on board API for movement so the software is able to control the robot in every types of combinations. Decrease single motor speed or power, reverse motor direction, adjust direction, check distance (front, left and right)...
- Autonomous drive mode: in this mode the robot tries to cover the largest possible area.
- Light following drive mode: the robot in this mode follows the most intense amount of light. Two light sensors are located in the front of the robot, one on the left, the other one on the right. When a light is detected the robot starts following it. If the amount of light starts growing on the left sensor then the robot changes direction to follow the light
- Semi-autonomous drive mode: this is the best features of the robot. In this mode you have only to write the x y coordinates on the home base software. The robot tries to reach that position and if there are some obstacles it overcomes them using a very clever algorithm.
DR1 - Components
- Arduino Mega 2560 R3
- 2 US-020 Ultrasonic sensor
- Ultrasonic Range Finder - LV-MaxSonar-EZ3
- Camera
- 2 XBee 2mW PCB Antenna - Series 2
- XBee Explorer Dongle
- 4 Wheel Adapter - Hex (17mm)
- 4 Set Screw Hub
- Machine Screw - Socket Head
- 4 Super Bright LED - White 10mm
- Compass Module
- DC Barrel Jack Plug - Male
- 2 Mini Photocell
- 4 Wheels
- Turnigy 7.2V 3000mAh
- 2 Dual Motor Driver Carrier
- 4 Micro Metal Gearmotor Bracket
- 4 Micro Metal Gearmotor HP with Extended Motor Shaft
- 4 Optical Encoder
- Current Sensor Carrier -12.5A to +12.5A
- 2 buttons
- 1 Step-up
Wireless SD Shield
DR1 - Materials
The DR1 is made of a strong and light sort of plastic: Basterglass 2mm. This material is very strong but at the same time is enough flexible to ensure amortization
Also the wheels has been chosen for amortization. Outrider is made of rubber and this ensure reduction in shaking caused by path's imperfections
DR1 is made of 4 pieces of plastic joined with bolts, nuts and washers. These bolts and nuts are as small as possible to reduce weight.
DR1: the Initial Project
This was the fist project sketched on paper just to understand the real dimensions of each componente and its best position.
Many components had been moved or rotated for structural and logistic problems.
Prepare the Wheels
Using a Dremel I have cleaned the inner part of the wheels. This process ensures a better grip of the Wheel Adapter and removes the plastic's imperfections.
If you don't own a Dremel or another rotary tool (which I highly recommend) you can use a rasp or sandpaper.
Mounting Wheels and Motors
I have mounted wheel adapter with screw hub using machine screw (socket head) dividing them with a spacer obtained with a small plastic tube of the same diameter of the screw.
I have then added the motor and the motor mount and then the wheel.
I have soldered the optical encoders to the motor back
Cutting Plastic and Creating the First Layer
With the help of some masking tape I have traced some lines to help me cut the plastic and and make the most important holes in the plastic.
In this process a Dremel is fundamental and really the right choice!
Mounting All Layers and Testing Wheels and Motors
I have tested the wheel and motor's mount on a single layer and then I have mounted all together. It's very important to check in each side and in lots of position the height between each layer, this increases alignment and balancing and increases the robot's precision.
Creating the Light Module
I have cut a piece of L plastic and I have made some holes.
I have mounted and soldered White LED ultra bright.
The LEDs are separated so they can be can be switched on and off independently.
Installing ON/OFF Switches and Battery Cable
I have mounted ON/OFF switches which allow to start/stop the robot (left one) and the camera (right one).
I have soldered and fastened the battery cable with a small piece of plastic cut from the original one.
Mounting Current Sensor and Step-up
I have soldered the current sensor (to control the amount of current that flows over the sensor) and the step-up to increase the voltage from 7,2V to about 11V (for the camera).
I have also connected the battery cable to the ON/OFF switches and then the power jack for camera.
Testing and Soldering Motor Drivers With Motors
I advice you to test every component off the robot and also write some example software to verify the right behavior of each component.
Here I have tested the dual motor drivers and the motors.
Installing Light Sensors
I have mounted the light sensors paying attention not to short circuit the wires.
I have secured the two sensors with two screws.
Mounting Dual Motor Drivers and Current Sensor's Wires
I have soldered wires to the dual motor driver and then I have attached it to the structure.
I have soldered wires also to the current sensor and I have connected both current sensor and motor driver to the power system.
Joining All Together
Starting from the lower layer I have joined all layers together with the help of screws and nuts.
I admit: this is the most difficult part! All that wires made me mad! But... I am still here, sane enough! :)
I advise to make small labels and attach them to the wires so you can recognize them when they are on the other layer with no difficulty.
Mounting the Two Side Ultrasonic Sensor
I have mounted the two side ultrasonic sensor on a base obtained from a L plastic and I have tightened the nuts to make everything very solid.
The Result
Here it is! Compact, very solid (more than my expectations), fast and responsive!
The Video
This is the old DR1, when only basic features were implemented. Here we tested start, stop and restart with the use of only one led to display starting process.
Well, thanks for reading! And don't forget to vote for me in the contests if you liked my instructable!