Deodates - Autonomous Rover

About the project

A modified RC car for autonomous operations

Project info

Difficulty: Difficult

Estimated time: 5 weeks

License: GNU General Public License, version 3 or later (GPL3+)

Items used in this project

Hardware components

Robot Car Kit- Rc Smart Car Chassis Robot Car Kit- Rc Smart Car Chassis x 1
Raspberry Pi 3 - Model B+ Raspberry Pi 3 - Model B+ x 1
Raspberry Pi Camera Module Raspberry Pi Camera Module Or USB HD Cam x 1
Rpi Motor HAT Rpi Motor HAT x 1
UBLOX GPS UBLOX GPS x 1
IR sensors IR sensors x 3
Solar cell with charger circuit Solar cell with charger circuit x 1
Power bank Power bank Lipo with proper voltage regulation can also be used x 1

View all

Software apps and online services

Raspbian OS Raspbian OS
Python Python
Android Android

Hand tools and fabrication machines

Screw driver set Screw driver set x 1
Soldering set Soldering set x 1

Story

The beginning

"Most of the world stands still due to the Covid-19 pandemic and most of us are staying at home for a few weeks. Let's hope the pandemic will be under control and will be eradicated soon."

Though I cannot afford big RC kits, there happened to be an RC car with me which I bought sometime back just to play during my free time or when I get bored. Yah!! I still have that kid in me. So I was thinking should I just play with it the whole day long?? Shouldn't I be doing something more meaningful with it?? And then it happened all of a sudden and  I made up my mind for something I would feel amazing at the end. HACK IT !!

For those who want to see my RC toy:

Yah!! It's a tiny beast.

This thing has a lot of disadvantages compared to a normal scaled-down RC vehicle. The first and foremost issue is the battery backup. It just runs on a 3.6v 300mAh NiCd battery. Even though the recharging can be done via a USB adapter, it takes eons to get fully (which I hope) charged. Another thing that made me so angry and desperate was the website (obviously AliExpress) stated that the item was a 4WD vehicle. Unfortunately, it's a 2WD vehicle with 2 DC motors placed each at the front (to control steering) and rear (for drive). Maybe I was too silly to check further on this before placing the order!!

Here is a small snippet of me taking this tiny beast for a ride

RC Car Driving

Yah! I suck at driving... Enough with the playing..... Now, let's get down to business...

So my first thought was to completely open it up and see what all are in there.

The outer smaller plates with graphics were easily removable by just unscrewing them.

 

The next hurdle was to take off the chassis. This was quite challenging as the chassis frame was screwed to the inner cockpit compartment using 3 screws. One was on the front and two at the back. The screw on the front was easy to be undone, but the ones at the back were fully obstructed by the tightly spaced rear shock absorber assembly. So the only way was to heat and cut the plastic bar connecting both rear screw holders with the chassis.

Yah!! I started ruining the item right at the start itself!!

Next, I removed the cockpit. Just unscrewed 4 deeply deposited screws and it was done !!

Now comes some delicate part!! The electronics !!

A few more screws, some wire pullings, and it's done. But the wire pair for power goes inside a small hole to the battery compartment below.

Here is a sneak peek of what the electronics consist of.

I am still unable to identify the IC modules as the names have worn off. But my best guess for the motor driver is MX1616.

The wireless IC still needs to be identified. If anyone has any clues about what it is, please let me know.

So after stripping out everything, let's make this little beast autonomous.

Coming to the specifics, our terrain miniature vehicle capable of traversing either manually or autonomously. This vehicle can be any typical RC ground vehicle, preferably with a brushed DC motor, controlled by an ESC. The best example of this type is a Donkey Car. The advantage of donkey cars is that it comes with autonomous capability via Raspberry Pi 3 and this is achieved by training the car. For setting up the car, training, and producing a trained model, please refer to this exclusive official guide here.

This first prototype used a Rock Crawler RC Car kit available here and the upcoming prototype will use a Donkey Car Kit (HSP 94186 Brushed RC Car) available here.

Hardware implementation

The PCA9685 PWM driver is capable enough to drive all the servos and motors that come with it. But in case if you plan to attach more sensors or actuators, I would suggest you use a Raspberry Shield like this which we have used, available here. U-Blox Neo-6M GPS (link) is attached which gives the local position of the car. The interfacing of GPS with Raspberry Pi 3 is available in this documentation. GPS and compass based autonomous navigation will be later integrated. We attached a couple of more sensors like an HD camera for image processing and IR, SONAR for obstacle avoidance. Driving multiple SONAR is tedious than IR. Therefore IR is recommended in the short run. A separate power supply unit must be provided for Raspberry Pi and the motor assembly. This is to avoid the motor noise getting into the power supply, which may cause instability. Still, both should have a common ground. The ground vehicle is also equipped with optional solar panel cells and an automatic solar battery charging circuit for seamless and extended periods of operation, enabling recharging on-the-go.

Software implementation

A python program is developed to give custom commands to the ground vehicle. This program is run on the onboard raspberry pi and controls the vehicle using the motor drivers. It also has the provision to control a pan-tilt servo system where the camera can be mounted. Manual control of our vehicle is implemented using a custom-developed mobile application. It also provides a live camera feed from the on-board HD camera. More details can be obtained from the coding section. The app allows manual and automatic operation of the ground vehicle. Manual control is performed via a virtual joystick implemented in the app and automatic operation is using obstacle avoidance by the manipulation of various onboard sensors via the python program. The code is linked in the attachments section.

Testing

Video

Planned Future Modifications

  • Amphibious upgrade - Upgrading the donkey car to operate on both land and water so as to increase the effectiveness of the mission in case water search and rescue is imminent such as in the Thailand Cave incident.
  • Donkey car will be fitted with detachable screw barrel tires so as to enable its easy movement on the sand, water, and snow.
  • Weatherproofing of electronics using waterproof counterparts (ESC, Motors, etc.), plastic encasing, water repellent paste, and hot glued contacts.

Schematics, diagrams and documents

Autonomous Rover

Autonomous Rover

Code

Autonomous Rover Code

Autonomous Rover Code

Credits

Leave your feedback...