From MAE/ECE 148 - Introduction to Autonomous Vehicles
Revision as of 23:14, 20 March 2020 by Winter2020Team7 (talk | contribs) (Autonomous Driving using gradient descent)
Jump to: navigation, search

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.

Camera Base Stand Upper Stand


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.

Camera Base
Upper Stand

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 Jetson Case.jpg





Base Station

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


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.

Major Objectives

ODIN Connection

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.

GPS-RTK Navigation

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.


Following Track with GPS-RTK

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

10.PNGFigure 3.png

The Repulsive Potential

– Urep is the “repulsive” potential --- avoid obstacles

13.PNGFigure 5.png

Total Potential Function

– Uatt is the “attractive” potential --- move to the goal – Urep is the “repulsive” potential --- avoid obstacles

11.PNG Figure 4.png

Gradient Descent

12.PNG Figure 1.png

Final Result

Input.png Output1.PNG

Python Code



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.

Future Implement

  • 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.

Project Links



  1. Robotic Motion Planning: http://www.cs.cmu.edu/~motionplanning/lecture/Chap4-Potential-Field_howie.pdf
  2. Autonomous and Mobile Robotics: https://www.dis.uniroma1.it/~oriolo/amr/slides/MotionPlanning3_Slides.pdf
  3. C099-F9P related files and documents: https://www.u-blox.com/en/product-resources/property_file_product_filter/2543