2021FallTeam7

From MAE/ECE 148 - Introduction to Autonomous Vehicles
Jump to navigation Jump to search

Team Members

  • Andrew Liang (ECE)
  • Jiansong Wang (MAE)
  • Shane Benetz (ECE)
  • Kevin Kruse (Extension/BIS)

Project Overview & Proposal

The goal of this project is to enhance the existing framework of the ROS Navigation system with the integration of a Lidar in order to avoid obstacles while navigating and return to the correct route. In a short amount of words, our upgraded ROS navigation package integrated onto the Jetson Nano powered autonomous car allows it to detect objects in its path and correct its steering while still following a lane detection/guidance model based on onboard camera imaging. The cursed "DNF" should rarely ever happen. Our objective was to make a car that would be able to continue on despite the circumstance, and unless something else ran into the car, it would find its way around things and not just follow a straight line blindly.

NavImage.jpg

More in Depth:

While the car navigates the track using openCV lane detection, the lidar runs in the background scanning obstacles in front of the car in a certain range. Out-of-range detections and long distances are filtered out. Once an obstacle is detected in that range, the car will steer to a direction based on the angle and distance feedback from the lidar. The steering magnitude is determined by a proportional controller. Once the car passes the obstacle and is obstacle is out of range of the scan, the car will keep executing lane detection, detecting the yellow stripes on the track.


Car3 team7 2021.jpg
Car2 team7 2021.jpg

Lap videos

ROS 3 Laps Here

DonkeyCar3 Laps at two locations Here and Here

Project Schedule / Gantt Chart

Gantt team7 2021.jpg

Software Development

Calibrating the existing ROS framework

One especially important thing for our project is a properly calibrated framework.

To achieve this, you can either adjust the controls to make it fit. However, an alternative and more precise solution is to apply a specific color filter. To do this, we first started a live transfer of the current image.

Bild1.png

Once we had the image, we opened a color tweezer using Microsoft Word and detected the color of the yellow center track.

Bild2.png

The program now gives us the color in RGB color space. Using a converter, e.g. https://www.peko-step.com/en/tool/hsvrgb_en.html we can now convert this color code into the HSV color code used by our OpenCV module. Finally we just have to configure this filter correctly and add some tolerances, because especially in twilight the colors vary. Once this process is complete, we get a perfectly calibrated system, as shown in the image below. We have to remark, that in this picture even the red line on the left is not detected at all (which is what we aimed for). Lastly, we have to mention that this scales of the HSV color space very by application: The website uses scales up 100 or 360, while our robot uses a scale up to 180. Thus, we used the scale of 360 and devided the resulting numbers by 2 to get the desired configuration.


Bild3.png

Software Subsystems

Link to source code found here: Team7_Final_Project

The origin of the majority of this code comes from Dominic Nightingale's project ucsd_robo_car_simple_ros. We borrowed and modified the existing code base environment, added a pre-existing ROS package to communicate with the LiDAR onboard, and added our own steering logic corresponding to both the lane guidance model and the LiDAR model.

Softwarediagram team7 2021.jpg

Schematics

Circuitry.jpg

Pieces together team7 2021.jpg

Pieces team7 2021.png

Links to additional resources (presentations/source code/GitHub/videos)

Github Source Code for Project Here

Basecamp folder containing all videos/weekly presentations

Acknowledgement

  • Jack Silberman (Professor)
  • Dominic Nightingale (TA)
  • Haoru Xue (TA)