2020WinterTeam7
Project Overview
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
Minor objectives
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
Team Members
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.
Camera Mount
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.
GPS Case
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.
Antenna 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
Hardware
GPS-RTK 2
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.
ODIN Chip
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.
Software
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
Gradient Descent
Final Result
Python Code
https://github.com/sohasanl/ECE148Project/blob/master/PathFinder.py
Challenges
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.
Conclusion
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.
Project Links
https://github.com/sohasanl/ECE148Project
Resources
- 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