Our goal was to provide our car with particular GPS coordinates, have the car navigate to the destination coordinates by using GPS and RTK2 corrections to achieve centimeter accuracy. We utilized Potential Functions and Gradient descent algorithm to avoid obstacles and find the path through objects.
Main objectives of adaptive cruise control are:
1. GPS-RTK Navigation from source to the assigned destination
2. Connecting the two C099-F9P GPS-RTK2 modules using Odin (wifi)
3. Obstacle avoidance
1. Automatically collecting image with throttling and steering for donkey training while driving the lap
2. Finding a path to the goal from starting point with avoiding given obstacle location
Chanyang Yim – Mechanical and Aerospace Engineering Department
Jiuqi Wang – Mechanical and Aerospace Engineering Department
Omid Hasanli – Electrical and Computer Engineering Department
Design and Assembly of Donkey
This part includes all the CAD files during the project.
The camera mount contains three parts, the purpose of this design is to let the camera be adjustable with height and angle. The first part is the camera base, which mounts the camera with four bolts and nuts, and can be mounted on the upper stand with one bolt. The second part is the upper stand, this part has many holes on it to make sure the camera can adjust the height. The last part is the stand, the holes mate the holes on the upper stand.
In our design, the first camera mount was not perfect, the camera did not have enough angles to adjust, and the stand was very thin. Therefore, here shows the modified design of our camera mount.
The GPS we used is a bare circuit board, which needs protection. A GPS case was designed to protect the GPS from bumps. GPS case contains two parts, GPS cover and GPS base.
Similar to GPS, there was an antenna base to make sure the antenna was stable during operation.
Jetson Nano case
To house our Jetson Nano, we 3D printed a case taken off of Thingiverse at: https://www.thingiverse.com/thing:3518410
Jetson Acrylic plate
It is just base plate for Jetson and other circuit and parts
GPS-RTK is the positioning is a satellite navigation technique used to enhance the precision of position data derived from satellite-based positioning systems (global navigation satellite systems, GNSS) such as GPS, GLONASS, Galileo, NavIC and BeiDou. It uses measurements of the phase of the signal's carrier wave in addition to the information content of the signal and relies on a single reference station or interpolated virtual station to provide real-time corrections, providing up to centimeter-level accuracy.
In our project, two GPS-RTK 2 were used. One of them was used for the base station, another one was attached to the robot and collect GPS data by communicating with Base Station.
- Accuracy < 2cm
- RTK response time: 100 ms
- Guide for connection of two GPS-RTK via ODIN(Wifi) in the GitHub: https://github.com/chanyang719/GPSRTK-MAE148-
The ODIN-W2 is a compact and powerful stand-alone multi-radio module, designed for Internet-of-Things gateway applications. The module includes an embedded Bluetooth stack, Wi-Fi driver, IP stack, and an application for wireless data transfer, all configurable using AT commands. The wireless support includes dual-mode Bluetooth v4.0 (BR/EDR and low energy) and dual-band Wi-Fi (2.4 and 5 GHz bands).
In our project, we used Wi-Fi to connect two ODIN chips on two GPS-RTK 2.
Although we had some firmwork issue with ODIN chips during the first two weeks. However, we figured out how to solve this issue by initialized everything and used own configuration instead of provided configuration. After that, two ODIN chips can connect with each other through Wi-Fi.
We input the initial location, and final location, the vehicle will automatically drive from the starting point to its destination within 10 cm error.
Go to Goal Position (Within 10cm) from Anywhere
Driving Given Path
We input several GPS locations, connected each point to form a track. The vehicle will automatically follow the track and to the destination.
Autonomous Driving using gradient descent
The General Idea
To build potential fields, so that the point that represents the robot is attracted by the goal and repelled by the obstacle region. The robot moves to a lower energy configuration and energy are minimized by following the negative gradient of the potential energy function.
Artificial Potential Field Methods
The Attractive Potential
– Uatt is the “attractive” potential --- move to the goal
The Repulsive Potential
– Urep is the “repulsive” potential --- avoid obstacles
Total Potential Function
– Uatt is the “attractive” potential --- move to the goal – Urep is the “repulsive” potential --- avoid obstacles
- This the result of a test in a real-life application of this algorithm that was used. Two arbitrary coordinates were chosen and between them, we placed another two arbitrary obstacles. the output of the function which was saved in .csv file was loaded to GoogleMyMaps to be plotted on the google map. As you can see in the images, the output of the Python code and the plot on google maps are the same shapes.
We had a lot of trouble with our GPS-Odin module. Odin (WiFi and Bluetooth) on the C099-F9P was programmed factory default on rover Bluetooth and was in silent mode that wouldn't allow us to communicate with it through AT-Commands. Therefore, connecting two GPS, one as Rover and the other as Base station to transmit correction signals took almost 2 weeks of work.
Also, programming the Artificial potential fields faced with lots of wired errors as the Sympy library still has some unknown bugs and figuring them out required extensive searching through the internet.
- Can implement to collect and train model while following the known path
- Can make a delivery system with GPS-RTK
- Can implement Gradient Descent Algorithm (can add a camera image to find path)
Our car is capable of correcting its direction to move towards a specified GPS location using RTK2 corrections from base GPS-RTK within 1-10cm and avoiding larger objects. From our demo, we can see that the system is not robust enough to fully navigate to multiple locations while avoiding objects.
- For project hardware parts https://github.com/sohasanl/ECE148Project
- For donkey framework https://github.com/chanyang719/GPSRTK-MAE148-
- Indoor video: https://youtu.be/T57XcH0vo0U
- outdoor video: https://youtu.be/56p86ULRfyU
- Robotic Motion Planning: http://www.cs.cmu.edu/~motionplanning/lecture/Chap4-Potential-Field_howie.pdf
- Autonomous and Mobile Robotics: https://www.dis.uniroma1.it/~oriolo/amr/slides/MotionPlanning3_Slides.pdf
- C099-F9P related files and documents: https://www.u-blox.com/en/product-resources/property_file_product_filter/2543