Introduction: 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.

Step 1: 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.

Step 2: 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.

Step 3: 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

Step 4: 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.

Step 5: 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.

Step 6: 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.

Step 7: 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

Step 8: 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!

Step 9: 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.

Step 10: 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.

Step 11: 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.

Step 12: 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.

Step 13: 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.

Step 14: 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.

Step 15: 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.

Step 16: 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.

Step 17: 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.

Step 18: The Result

Here it is! Compact, very solid (more than my expectations), fast and responsive!

Step 19: 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!

Comments

author
ayush06feb (author)2017-05-28

can you please send the code to me.

as I am a beginner in arduino

author
shakyatheajas (author)2016-11-29

Can you please se send me the code to shakyatheajasrathnayaka@gmail.com

author
Rjfaa067 (author)2016-06-04

How do you make it

author
ClarkF1 (author)2015-07-03

Could you create the program and send it to me at currently144@gmail.com? It's not that I'm lazy, but my compiler refuses to work

author
nickosinski (author)2014-09-15

Code?

author
fxxxx (author)nickosinski2014-09-16

I have preferred to focus on the hardware as, for many people, is the hardest part... And the code is so long that It would have been required hundreds of steps, sorry! :)

author
tisaconundrum (author)fxxxx2015-05-09

Steps are not important if you bother to comment your code. Beside I needed to know what you did for your Encoders.

author
ruslan2012 (author)2014-11-02

Great project, but can you post the code(pdf)?

author
clarhette (author)2014-10-09

Can you give a estimate of how much it will cost?

author
gmbandeira (author)2014-10-09

It's a really nice project, but could you please tell me what are the specifications of the material you used? I am particularly interested on the Camera, the XBee, compass, motor and wheel stuff including the encoder, current sensor and the wireless SD shield. Things like the description or a link of where you bought it from would be nice.

Thanks a lot!

author
tkleinauskas (author)2014-10-06

Nice job!

author
shaik Sha (author)2014-10-02

Nice project. is the camera sensor CCD or CMOS sensor?

author
prnet (author)2014-09-30

Nice build, but useless without the code....

author
good devil (author)2014-09-29

brother this project is useless without d code

author
ADNOfGamer (author)2014-09-29

Hello I'm Making this robot but I'd Having the dimensions of plastic plates . Thank you for your reply

author
fxxxx (author)ADNOfGamer2014-09-29

23cm x 8cm for the basic layer, I think

I'm not sure...

author
ADNOfGamer (author)fxxxx2014-09-29

excuse me i am french, do you have a doc pdf?

author
ADNOfGamer (author)2014-09-28

Hello , I have a robot THIS BUT I would like Plans And The dimensions please

author
seth42 (author)2014-09-19

That's pretty cool! I've gotta try it. By the way is DR1 like a shortening for Darwin?

author
fxxxx (author)seth422014-09-20

Thanks! No, DR1 is for Discovery Rover 1

author
navneetcsgowda (author)2014-09-16

is it possible to make tgis one with arduino uno

author
fxxxx (author)navneetcsgowda2014-09-17

Yes/No :)

Yes because Arduino Mega and Arduino Uno are pretty similar

No because with Arduino Uno you have too pins with all the hardware I have mentioned.

But if you decide to use less sensors it would be nice!

author
navneetcsgowda (author)fxxxx2014-09-17

how

author
fxxxx (author)navneetcsgowda2014-09-17

Sorry I have wrongly written the reply...

With Arduino Uno you have too few pins!

If you want to use less sensors, you can use Arduino Uno

author
navneetcsgowda (author)fxxxx2014-09-17

ok
I am buyin a new arduino micro any way.
But i need yr help in one of my custom made robot.I am just a 13 yr old kid so I needed suggestions from pple like u.

author
navneetcsgowda (author)2014-09-17

fxxxxxx i need yr help

author
fxxxx (author)navneetcsgowda2014-09-17

Fxxxx, not "fxxxxxx", thanks :D

author
maxhack (author)2014-09-16

Can we see code and connection schematics please? It will be so nice if you can share them with "home software", beside that what kind of camera did you use and why did you choose that type?

Thank you!

author
fxxxx (author)maxhack2014-09-17

I have used this one: New Mini Wireless Nanny Micro Camera Receiver Full Kit (ebay)

As said before: "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."

It would be impossible to use Arduino with a video stream...

author
maxhack (author)fxxxx2014-09-17

Thank you, I checked ebay and I figured out that I already have this camera with receiver! But it has AV output and can be connected to TV, or needs TV tuner to be connected to laptop, I figured out something: programming a joystick (via arduino) to send move commands to robot, at same time put joystick, controller, camera receiver and car screen (used for reverse camera and has AV input) and a power source in a box will make a good portable remote control with live stream, but it has huge size for a remote!

Can you please share arduino code? Thank you!

author
Punyviking (author)2014-09-17

Your rover looks great! One small question, what kind of motordrivers are you using?

author
fxxxx (author)Punyviking2014-09-17

DRV8833 Dual Motor Driver Carrier (Pololu)

author
ibevan (author)2014-09-16

Looks good, but without the code not so useful...

author
laith mohamed (author)2014-09-16

I like it

author
jjbrider45 (author)2014-09-14

Where is the code

author
fxxxx (author)jjbrider452014-09-16

I have preferred to focus on the hardware as, for many people, is the hardest part... And the code is so long that It would have been required hundreds of steps, sorry! :)

author
chawkinsuf (author)2014-09-16

Looks great! I was wondering what gear ratio you used for the motors?

author
fxxxx (author)chawkinsuf2014-09-16

Thanks! The motor's choice was hard! The robot is not so light, but the calculates were ok! I used: 298:1 (6 V: 100 RPM and 70 mA free-run, 70 oz-in (5 kg-cm) and 1.6 A stall)

author
xnorman (author)2014-09-16

do you have a video, which shows how does it looks like when it is moving?

author
fxxxx (author)xnorman2014-09-16

I have posted a video as wanted :)

author
domenic3 (author)2014-09-14

awsome

author
fxxxx (author)domenic32014-09-15

Thanks!

author
mpylant (author)2014-09-14

where did you get the wheels?

author
fxxxx (author)mpylant2014-09-15

hobbyking.com

author
MsSweetSatisfaction (author)2014-09-14

Awesome! It came out really clean looking, and I bet it's pretty sturdy! Thanks for sharing!

author

Thanks, it's a great satisfaction!

About This Instructable

47,273views

558favorites

License:

More by fxxxx:How to reduce noise from a photoDR1: Discovery Rover
Add instructable to: