Difference between revisions of "2021FallTeam7"
Line 21: | Line 21: | ||
= Lap videos = | = Lap videos = | ||
ROS | ROS Laps [https://youtu.be/CBhw0hiJWwo Here] | ||
DonkeyCar Laps at two locations [https://youtu.be/T4n4dW6wzLA Here] and [https://youtu.be/NdxYFkHFzxE Here] | |||
= Project Schedule / Gantt Chart = | = Project Schedule / Gantt Chart = |
Revision as of 19:34, 10 December 2021
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.
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.
Lap videos
ROS Laps Here
DonkeyCar Laps at two locations Here and Here
Project Schedule / Gantt Chart
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.
Once we had the image, we opened a color tweezer using Microsoft Word and detected the color of the yellow center track.
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.
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.
Final Product Example
Schematics
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)