Alex Tzu-Tying Hung - Mechanical Engineering (MAE)
Igor Vivcharenko - Computer Engineering (ECE)
Denis Yang - Mechanical Engineering (MAE)
Cai Joo Min Yeo - Electrical Engineering (ECE)
Car Convoy Project
The objective of this project is to create a car convoy. The idea initially came from watching Australian roadtrains. We wanted to create a system of transportation for multiple vehicles that requires only one driver. However, ours won’t be physically connected. We will use machine learning to follow the car in front. Our goal is to make this road train fully autonomous--with all three cars driven by machine learning. There are a few fundamental parts to this project:
- Training each car to recognise and individually drive on the track.
- Training each car to recognise and follow the car in front while maintaining enough distance.
File:Training the JackRpi09 to follow RoboCar08.mp4 We started off with training the big red truck. Then, we trained the second car. Next, we placed the truck in autonomous mode and manually drove the second car behind it. We taped a strip of neon pink paper behind the red truck as a marker.
- Train RoboCar08 (truck) to drive autonomously
- Train the JackRpi09 (second car) autonomously
- Train the RoboCar06 (third car) autonomously
- Drive RoboCar08 autonomously and train JackRpi09 manually
- Repeat the steps for the RoboCar06 (third car)
Original Camera Mount Design
The original camera mount design has two degrees of freedom: upward & downward translation & rotational movement along the horizontal axis. To fix it in place, a bolt was aligned into two concentric holes located on the clamp piece, preventing the mount from sliding up and down. The two clamps on both sides of the mount will prevent it to rotate. The design allowed us the flexibility to adjust the camera. The camera was pointed downwards, avoiding the view of the front bumper.
New Camera Design
Measuring the perfect angle and height for the camera using the original design, we developed a new camera mount, which has zero degrees of freedom. Instead of using velcro to attach the camera onto the mount, we also added screw holes onto the mount so that it is more stable.
There are 2 different design of the acrylic base plate. The first one is wider in order to have more space for all the hardware to attach on. For the second design, slots were used to account for unknown tolerance of the mounting posts. The width also decreases to allow the body shell to fit on.
3D Schematic Diagram
Using the Routing feature on Solidworks to generate a detailed 3D schematic diagram, which allows us to clearly see the circuit diagram and how the electrical components are connected. All three car's electrical components are connected in an identical fashion. Displayed here is the circuit diagram for RoboCar06:
Team 6 Vehicles
A trick we used during the training was that we added a bright pink paper at the back of the RoboCar08 (first car) and JackRpi09 (second car) so that the second and third car were able to identify the cars at the front also the relative distance. This "convoy marker" significantly improved our results.
|File:RoboCar06 recognizing JackRpi09 (1).mp4||File:Three car autonomously driving.mp4|
Autonomous Mode on Original Tracks
Track 1: EBU-I Basement (Indoor Track)
Located in Engineering Building Unit I, Track I is a simple track featuring an oval shape and is built from yellow and white reflective tape. Track I is the first track course that the RoboCar vehicles must complete prior to attempting Track 2. The benefits of training on Track 1 is due to the constant lighting in the area. The first autonomous model for RoboCar06 was developed here.
Track 2: EBU-II (Outdoor Track)
Located in Engineering Building Unit II, Track II is a complex track featuring a unique shape, consist of "S-bends" and sharp turns and a straight path. Track II is built from black and red tape. Training on Track II was a challenge due to the non-uniform lighting conditions in the area. Due to the low resolution settings on the Raspberry Pi camera and the non-uniform lighting in the area, obtaining reliable autonomous data was difficult for all the cars.
Preparing for The Competition
Professor Jack Silberman suggested Team 6 to participate in an autonomous vehicle competition located in Palo Alto, California. Although not a requirement for the MAE 148/ECE 148 course at UC San Diego, Team 6 decided to participate in this opportunity without any hesitation.
Setting up a Test Track
Due to unfavorable lighting conditions of the EBU-II track and the low resolution settings on the Raspberry Pi camera, Team 6 discovered an alternative method to help prepare for the competition. Team 6 was able to custom built a temporary track at the Henry Booker Room, located in EBU-I of the Computer Science and Engineering (CSE) building. Around $50 worth of reflective yellow and white tape were purchased from Home Depot. With the tape in hand, Team 6 began training all vehicles for the next 3 nights. The first test track took a whopping 3 hours to put together but was proven useful as it helped produce a reliable training model for the cars.
A Reliable and Successful Model
Team 6 started training RoboCar08 on the newly built custom track on November 27, 2018 gathering over 100,000 images. As a result to improved lighting conditions, Team 6 was able to successfully drive RoboCar08 in a clockwise direction at a constant speed autonomous mode. This achievement led to Team 6's choice to continue training in Henry Booker Room for the next few nights rather than the outdoor EBU-II track.
First Convoy Model Attempt
After a successful constant speed clockwise training model for RoboCar06, team 6 decided to attempt a convoy model with RoboCar06 and RoboCar08. Since driving RoboCar06 was based on human perception and judgement, it was proven difficult to get the right type of data needed to replicate the convoy experience. Team 6 spent countless hours in the Henry Booker Room attempting to establish a working convoy model. A convoy model was also attempted using JackRpi09. There were a few crashes with each cars, nearly damaging the raspberry pi cameras. On November 29, 2019, Team 6 decided to install the Linux operating system on all computers to maximize efficiency for the competition.
Autonomous Vehicle Competition at Voyage
Heading to Voyage
On November 30, 2018, Team 6 was flown to Northern California, Palo Alto to participate in the DIY Robocars competition held at Voyage, an autonomous vehicle company. Chris Anderson, co-founder and current CEO of 3D Robotics, was the host and organizer of this event. At Voyage, there was an approximate attendance of 240 participants. Traveling with team 6 were guest participants, Mark Liu, manager of the Envision Studio at the University of California, San Diego, Zhaoyuan Huo, Rich Wolcott and Professor Jack Silberman.
Setting Up The Tracks
After arriving at Voyage, Team 6 assisted with building the competition track. The competition track was built using white and yellow reflective tape (the same tape used on the Engineering Building I Track). The boundaries of the track was defined using two lines of white tape, spaced an approximate 5 feet apart. The center of the road was defined using the yellow reflective tape. Once the track was set up, Team 6 began training on the track immediately to collect data. RoboCar08 was driven around the competition track a handful times, and the Raspberry Pi camera started collecting images. At the end, the Raspberry Pi camera collected an approximate 52,000 images.
The Race and Results
After gathering a staggering 52,000 images on the red monster truck, team 6 discovered that all the images were completely pitched-black. This error resulted from not removing the camera cap prior to gathering data. The competition was held from 7PM-9PM inside Voyage and each competitor was given 3 attempts to accumulate a record-beating time. Team 6 attempted the first round and was not able to finish due to a corrupted training model. Team 6 attempted the competition track again with a training model built prior to the competition and ended up not finishing. Eventually, Team 6 was scratched out on round 3 of the competition. Mark Liu, manager of the Envision Studio at UCSD participated in the competition as Team UCSD Rally and was able to complete the track within 14 seconds, earning him 3rd place in the competition. Mark Liu later finished 4th place since a competitor was capable of finishing a few seconds faster.
Although Team 6 did not finish the competition strong, Team 6 was proud of the achievements and the amount of effort dedicated to the project. Regardless of the competition results, team 6 and the other UCSD participants celebrated at a Thai restaurant located in Palo Alto, California. The next morning, Team UCSD traveled back to San Diego to continue making further changes to all vehicle models.
Camera Cap Issue
One of the biggest takeaway for Team 6 was to always check the vehicle before operating it. A very common recurring mistake was forgetting to remove the camera cap. Since the camera cap was on during most of our training sessions, the data retrieved from the track became unusable.
Solution: Throw away the camera cap or get a different color cap
Lithium Polymer Battery Issues
One of Team 6's LiPo battery terminal leads was damaged due to the improper connection of the battery to the JackRPi09 vehicle. This issue delayed team 6's ability to train the vehicle for a few days until a replacement battery was issued. Team 6 was not aware of this battery issue until a firm connection could not be established between both components.
Solution: Pay careful attention to the color-coded wires to establish the right connection
Servo Motor Heating
We realized that if we rapidly steering left and right as we collect data, the cars are more capable of recognizing the tracks and therefore produce better results. However, the RoboCar08 seems to require more power from the servo motor in order to rapidly changing direction and the servo cannot withstand it. Therefore, it heats up and does not function properly. As a result, we were only able to collect 1 lap of three cars driving autonomously.
Solution: Rest the car after a few minutes of driving to let the servo cool down. In addition, using a fan to cool down the servo also works very well.
We would like to thank Professor Silberman and Professor Mauricio de Oliveira for giving us the opportunity to learn, struggle, and to design autonomous vehicles that will make an everlasting impact on our future careers. We would also like to thank Sayan Mondal for being an excellent and helpful TA in this course. Lastly, thank you to all the other teams that have contributed into making our project a memorable one.