Technology has become cheaper and more accessible, giving way to opportunities in technological areas that were previously inaccessible. Moreover, building a fully functional self-driving vehicle has become the new gold rush in the current industries. Yet, there are many issues to solve when building an autonomous vehicle. For instance, a self-driving vehicle must be reliable, consistent, predictable, and safe. There is still substantial amount of research and work that needs to be done, and more to learn, for the industry to build a truly reliable self-driving vehicle. This project explores building a self-driving car using an off-the-shelf remote-controlled car, an NVIDIA Jetson TX2 GPU which has an ARM processor on board, infra-red sensors for obstacle avoidance, and a monocular CSI camera for navigation and object detection.
In this project, a cost-effective system is developed that uses low cost, of the shelf hardware components, as well as open source software frameworks, such as ROS (Robot Operating System) and Google’s Tensor Flow. The flexibility allows for the development of several software components. The proposed system needs to have real time response for obstacle avoidance and motor’s speed control. Motor control and proximity sensors (IR sensors) are part of the critical system of the system. Real-time is necessary because the computer needs to react very fast in order keep the robot safe. The Jetson TX2 board used is running an operating system making it non suitable for real time operations. Therefore, the Jetson TX2 is interfacing with an Arduino, and the Arduino is in charge real time interface with the robot’s motors. Moreover, the proposed system runs a series of parallel processes (e.g., the motor control program and sensor interface programs are two separate processes running in parallel). If the all programs controlling the various functions of the RC car run in serial (or inside a single process), then the execution time for all the functions will be very slow. So, a way to run all the functions in parallel was necessary if correct functionality of the robot was desired. In this case, running multiple processes and allowing the operating system to handle all the memory management was decided.
In this project, a combination of Google’s Tensor Flow, OpenCV and a Robot Operating System (ROS) enables the existing remote-controlled car into becoming a fully self-driving car.
The self-driving car contains an array of infrared sensors used in order to detect obstacles that are too close the robot. The robot uses three IR sensors set 90 degrees apart from each other (one sensor on the left side, a sensor on the front side, and a sensor on the right side).
For real time monitoring, the robot is allowed to detect person/obstacles, and then print out on the computer screen the motion state of the robot. The motion state of robot is the motion direction in which the robot shall move (backwards, forward, stop, left, right).