2021SpringTeam4
Spring 2021 Team 4
Team 4 achieved driving multiple laps on autonomous outdoor track using both Donkey Car and ROS.
Final picture of team's 4 car used throughout the winter 2021 quarter
Team Members
- Karen Hernandez - Electrical Engineering
- Jan Schüürmann - Mechanical Engineering
- Bryant Liu - Computer Engineering
- Joe Wayne - Mechanical Engineering
The members in the picture are standing in the order mentioned above (from left to right on the image)
Instructors
- Mauricio de Oliveira
- Jack Silberman
Teacher's Assistants
- Dominic Nightingale - Mechanical Engineering
- Haoru Xue - Electrical Engineering
Objective
Hardware
Components
Chassis
The chassis given by the instructor at the beginning of the quarter is the following:
Wiring Schematic
In order to make the components work as desired, we connected them according to the wire schematic shown below. This includes all the hardware required:
Base Plate
For us to have flexibility when it comes to mounting hardware onto the base plate, we decided to design a plate that had mounting holes all throughout. This plate is mounted on four 2-inch stand-offs from the bottom of the chassis, such that the battery, speed controller and steering servo motor are located underneath the base plate. All other components are located on the top part of the base plate.
CAD of the base plate design
Final product of the base plate
We used a Lasercamm for cutting a 1/4" acryllic
Note: This also shows the Jetson Nano bottom part of the 3D printed shell mounted onto the base plate. The design for the Jetson Nano shell was not design by the team, link to online free CAD is [[1]] . The only change was that we added the side mounts.
Camera
The camera shell for the camera was designed so that it would protect the camera, with extended covering from the top part so that the lighting would not affect the image. The camera shell is connected by velcro to an elevated plate that is connected to the base plate by stand-offs. It is important to mention that the angle used for the camera shell design was different for each project of the class. The images below are for the camera mount and shell used on the final project.
Camera mount CAD
Camera mount
Used a MakerBot Method for PLA printing & rapid prototyping
Camera stand CAD
The idea position of the camera mount changed depending on the task we were working on. Thus, we designed a stand with adjustable height where the camera mount was attached to.
Camera stand
Software
Environment Configuration
AprilTags
ROS Wrapper
The apiltag_ros package provides access to the AprilTag core and makes the information of detected images and tag positions available over ROs topics.
[2]
ROS Package
Robot Operating system (ROS) is a collection of software frameworks which facilitate robot software development. For our final project we created a simple ROS package using OpenCV and April Tags in order to de able to detect a specified tag on another 1/10 RC car and control the throttle and steering such that our car can follow the other car based off the april tag position and distance. We will be using the Noetic distribution.
Dependencies
cv2
OpenCV is library that provides real-time optimized computer vision and image processing tools. It was created such that most of its functions integrate well with other libraries, such as Matplotlib, Numpy and Scipy, with the purpose of visualizing and processing data. We will be using the cv2 Python interface. OpenCV will be used to detect the April Tags.
adafruit_servokit
Adafruit is a library that facilitates the implementation of python code to control servos with the Adafruit 16-channel servo driver. This library provides a high-level interface with low-level PWM controls. For this project, the library is used to control the PWD which manages the steering servo and the electronic speed controller (ESC).
cv_bridge
In order to be able to transfer data between ROS and OpenCV, we will use the cv_bridge which converts data such that is workable between ROS Image messages and OpenCV images.