[[TOC(Other/Summer/2022/RC/*, depth=1, heading=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 == [https://sites.google.com/view/remote-control-robot-car 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 == [https://docs.google.com/presentation/d/1jqdMVUKXnpqonbCwvOj06do8Na91bKsLSGQjMEioz-M/edit?usp=sharing Week 1 Presentation] * Learned how to navigate Linux Command Line and [https://www.orbit-lab.org/wiki/Documentation/CGettingStarted Orbit Management Framework] * Installed [http://wiki.ros.org/melodic ROS Melodic] on sandbox node and began working through [http://wiki.ros.org/ROS/Tutorials 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 == [https://docs.google.com/presentation/d/1F579XoMkPlYkoKUMlawQAGBcxs2BYjli5pESKNloOxY/edit?usp=sharing Week 2 Presentation] * Completed the ROS tutorials; Installed ROS on intersection node and [https://www.generationrobots.com/media/Pioneer3DX-P3DX-RevA.pdf Pioneer 3-DX] * Completed [http://www2.geog.ucl.ac.uk/~plewis/teaching/unix/vimtutor VIMtutor] * Installed [https://github.com/IntelRealSense/realsense-ros Real Sense libraries] compatible with ROS * Solved Pioneer 3-DX networking problem and ssh into it through wireless connection == Week 3 Update == [https://docs.google.com/presentation/d/1-Y3AIKQBLAKDJFsS9BtyICwoNR7dA7AWWcMTxsxeaBM/edit?usp=sharing Week 3 Presentation] * Successfully remote controlled Pioneer 3-DX * Installed [http://wiki.ros.org/ROSARIA ROSARIA] and [https://github.com/reedhedges/AriaCoda AriaCoda] to get access to libraries compatible with Pioneer 3-DX * Installed [https://github.com/pengtang/rosaria_client Demo Client] to control robot * Streamed video through [https://remotedesktop.google.com/headless/ Chrome Remote Desktop] == Week 4 Update == [https://docs.google.com/presentation/d/1u0RVJY5f0_GpSXRvJn7zu8cQXaFld8ohxXQNIK-1kCg/edit?usp=sharing Week 4 Presentation] * Built our own client to control robot (Backed it up on [https://gitlab.orbit-lab.org/jimmyh/rosaria_control Gitlab]) * Wrote Open Loop control program to have Pioneer 3-DX move in square repeatedly to test precision of robot * Recorded data on a [http://wiki.ros.org/Bags bag file], transferred it to a csv file and graphed it == Week 5 Update == [https://docs.google.com/presentation/d/1Dgb-i8Ds_Xq1DuZMaVJubL48JK9UsntsJPmGk2Mj-xI/edit?usp=sharing Week 5 Presentation] * 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 [http://wiki.ros.org/async_web_server_cpp ROS Package] == Week 6 Update == [https://docs.google.com/presentation/d/1WNTeEhXAnujQjOCivmEithiDCRdkrXJTeK4hS59Joxk/edit?usp=sharing Week 6 Presentation] * Implemented waypoint following program through dead reckoning * Made a [https://flask.palletsprojects.com/en/1.1.x/ Flask v1.1] web server to send commands to Pioneer 3-DX * Programmed server to receive robot odometry data == Week 7 Update == [https://docs.google.com/presentation/d/1SiIbvuCMM6IW0bBqTXgky_KZ1px4cereEL1hqyjYFeE/edit?usp=sharing Week 7 Presentation] * 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 == [https://docs.google.com/presentation/d/1dAAmDzrCDsG2-sv2TKQj3Y_LU-uL_YV0IxYiwYWHmXs/edit?usp=sharing Week 8 Presentation] * 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 == [https://docs.google.com/presentation/d/10pTZGgezJlldWITIzsxQAdyH1Wk1OEpWspdsC_49VZI/edit?usp=sharing Week 9 Presentation] * 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)