Electromechanical components
Here are some concepts that will help you understand how to make the vehicle smarter than an RC toy.
Design questions
The obstacle detection and decision making for the motion planning must be done autonomously by an electronic brain rather than by a human being. That's why you will need to choose the set of controllers and electronic components and design the logic to connect them to each other. These choices will mostly depend on the way that the vehicle will solve the task, but some ideas will be common due to the nature of the challenge.
These questions will help you determine which electronic components will be needed in your autonomous car:
-
Will a camera be used to recognize the traffic signs (red and green pillars)? Is it a USB-camera or a native device (like the Raspberry Pi camera)?
-
How fast can the video stream from the camera be handled? Which controller will give you suitable performance?
-
Will the vehicle be controlled by one controller or by a main controller and an auxiliary controller? How will the roles between controllers be distributed: handling of the video stream, direct control of the motors, direct acquisition of sensor readings? Will the capacity (input/output pins) of each controller be enough for this? What kind of connection will there be between the controllers?
-
Will the walls be detected by camera or by distance/proximity sensors?
-
Should a special lens kit be used to make the camera's field of view wider to recognize both traffic signs and walls or will several cameras be used instead?
-
How will the traversed path be measured: by counting numbers of turns with a compass or a gyroscope, by calculating the distance with an encoder(s), by detecting colored lines with light sensors?
-
Will a gyroscope and/or an accelerometer be used to assist in accurate driving, to get rid of excessive steering mechanism shifts?
-
What kind of power sources should be used to supply controllers, motors, and sensors? Should it be one source for all of these, or should there be dedicated sources for controllers and motors?
Overview
Before you start drawing schemes and purchasing the components, it is worth taking time to review existing solutions and discover which electromechanical components are commonly used for robotics projects where the aim is to create a self-driving vehicle.
You may find these links helpful. Descriptions of these projects provide different levels of detail. We list several of them here to demonstrate the diversity of approaches:
-
Is your toy RC car good enough to become an autonomous robotics car?
-
A good start to turn an RC car into an Arduino controlled car
-
An example of equipping an RC car with sensors and an Arduino controller
-
Not sure how to start driving autonomously? Start with these four simple, turtle-like cars based in Arduino: 1, 2, 3, 4
-
Yet another DIY autonomous vehicle, but pay attention on the powering
Vehicle's brain
If this is the first time you have worked with Single Board Microcontrollers like Arduino or Single Board Computers like Raspberry Pi, consider spending extra time to understand the difference between them. For example, the goal of this article is to summarize advantages of SBM and SBC with advice on when to use Arduino, when to use Raspberry Pi, and when both are best used together.
As you can see, the advantages are clear, and it makes sense to compare the Raspberry Pi with other SBCs:
Click on the picture to watch the video
Another interesting approach could be to use integrated Computer Vision boards instead of SBC. This material compares OpenMV, Pixy, and Jevois.
Some may decide to build the vehicle with two controllers: the primary controller is to execute navigation and path planning, and to work with a camera. The secondary controller is to request data from sensors and/or control motors. Most likely, the secondary controller will be an Arduino based controller, and the following step will help you learn how it could be connected to the primary controller. There are several protocols that can be used for this and this document is a good way to start getting familiar with them.
Depending on the protocol, the following materials will help you implement a communication channel between Raspberry Pi and Arduino:
Motors
The minimal number of motors that are required for a vehicle participating in the Future Engineers competition is two: a driving motor and a motor to steer.
The driving motor makes the car move. This motor consumes more power than can be provided either by Arduino or by Raspberry Pi, therefore, an additional motor driver circuit is used. Here are examples of how to control DC motors from Arudino: 1, 2, 3; or from Raspberry Pi: 1.
In order to better understand how to control the speed of a DC motor, it makes sense to look at this article.
As an alternative to the DC motors, one could consider using a stepper motor or a continuous servomotor.
A servo motor is the most suitable way to change the direction of the vehicle since it provides precise control of the steering process. Here are examples of how to control DC motors from Arudino: 1, 2, 3, 4; or from Raspberry Pi: 1.
Encoders
It is important to control the driving motor speed and the distance the vehicle is moving. One of the simplest devices for this is an encoder:
Click on the picture to watch the video
These three articles will help you better understand how encoders work: 1, 2, 3.
And here are practical examples of how an encoder can be added to the autonomous vehicle:
Distance sensors
Distance and proximity sensors are commonly used in robotics. For the autonomous vehicle participating in the Future Engineers competition, these kinds of devices will allow you to control the distance to the walls, so that the car will move in the middle, between them.
Here is a set of short reviews of different sensors (ultrasonic, infrared, and LiDAR) describing the principles - how they work and which advantages and disadvantages they have: 1, 2, 3.
IMU
IMU is an abbreviation for the term Inertial Measurement Unit. Usually, this abbreviation is used for a device that combines an accelerometer, gyroscope, and magnetometer. In order to get useful data from this sensor, implementing concepts from linear algebra and calculus is usually required. But depending on the libraries provided by the sensor manufactures and/or open source community, this could already be simplified so that the IMU sensor can be used to measure the path driven by the vehicle and to control steering smoothness.
We provide links to three articles that are a good start toward understand how an IMU can be used in robotics projects: 1, 2, 3.
Power
Powering the self-driving car for the robotics competition is not a trivial task. Depending on the types of motors and the number of controllers, it could be that separate power sources must be provided for different systems.
The materials below should help you to better understand approaches that can be used to power the controllers and motors: