Remote Control Robot Car
Remote Control Robot Car
WINLAB Summer Internship 2022
Group Members: Jimmy Huang (UG), John Greaney-Cheng (UG), Rohan Variankaval (HS)
Project Website
Remote Control Robot Car Website
Project Objective
Remote control of a robotics platform using video streams. The project will require students to work with video streaming toolkits and develop software to allow for low-latency control of the remote platform from either a first- or third-person view. Students will begin by setting up ROS on a robotics platform at Winlab so that they have a system to work on, with the ultimate goal of testing the remote control system on the hardware developed by the smart car team at the end of the summer.
Students will need to write a ROS node to run on the vehicle platform which will receive remote control commands and translate them into control signals for the platform hardware. Students will also need to work with software such as gstreamer for low-latency streaming of the video feed from the car.
Week 1 Update
- Learned how to navigate Linux Command Line and Orbit Management Framework
- Installed ROS Melodic on sandbox node and began working through ROS tutorials
- Met with other groups within the Car Intersection group (Mini Smart Car Hardware Design, Autonomous System Infrastructure, Multi-Cam Fusion for Smart Intersection)
Week 2 Update
- Completed the ROS tutorials; Installed ROS on intersection node and Pioneer 3-DX
- Completed VIMtutor
- Installed Real Sense libraries compatible with ROS
- Solved Pioneer 3-DX networking problem and ssh into it through wireless connection
Week 3 Update
- Successfully remote controlled Pioneer 3-DX
- Installed ROSARIA and AriaCoda to get access to libraries compatible with Pioneer 3-DX
- Installed Demo Client to control robot
- Streamed video through Chrome Remote Desktop
Week 4 Update
- Built our own client to control robot (Backed it up on Gitlab)
- Wrote Open Loop control program to have Pioneer 3-DX move in square repeatedly to test precision of robot
- Recorded data on a bag file, transferred it to a csv file and graphed it
Week 5 Update
- Finished writing and collecting data from Open and Closed loop control programs for Pioneer 3-DX Square (drifting of odometry but less so with closed loop)
- Learned different methods of navigation to begin waypoint following program
- Streamed video through ssh tunneling (improves resource allocation and general convenience over Chrome Remote Desktop) via ROS Package
Week 6 Update
- Implemented waypoint following program through dead reckoning
- Made a Flask v1.1 web server to send commands to Pioneer 3-DX
- Programmed server to receive robot odometry data
Week 7 Update
- Streamed video through ssh tunneling in conjunction with Flask server
- Improved UI to send commands to Pioneer and improved rest API
- Created a waypoint path generator using Hermite Spline Interpolation
- Started calibrating Pioneer 3-DX by modifying drift factor and using statistical analysis
Week 8 Update
- Replaced back wheel on Pioneer 3-DX with ball bearing wheel to minimize drift deviation
- Used digital caliper and cad to 3D print standoff to connect new wheel and Pioneer
- Programmed a spline follower that continually sends linear and angular velocity commands to Pioneer to follow path (angular velocity still in progress)
- Made a new package for aruco marker based localization
Week 9 Update
- Finished calibrating Pioneer 3-DX drift factor (best drift factor is 10)
- Fixed configuration file glitch. In order to update calibration parameters: 1. Update in Config file, 2. Compile using catkin-make, 3. Delete currently stored parameters (either kill roscore or use rosparam delete), 4. Run ROSARIA.
- Created an image saving program for aruco marker detection
- Programmed pure pursuit waypoint following (waypoint following using odometry and error correction)