6.4200: Robotics, Science, and Systems
Course Description
🔍 Real-World Applications: Sensing, kinematics, dynamics, state estimation, computer vision, perception, learning, control, motion planning, and embedded system development.
🚗 Innovate: Design and implement advanced algorithms on powerful robotic platforms for agile autonomous navigation and real-time interaction with the physical world.
📣 Communicate: Engage in extensive written and oral communication exercises to articulate your groundbreaking ideas.
Wall Following and Safety Controller
Our group tested each of our wall following algorithms, created in simulation, on the physical platform. After tuning and debugging, our group submitted my wall-following algorithm. I am particularly proud of my ability to collect data using Rosbags and analyze it using Matlab. This is detailed in section 3.1 of our report. I conducted step responses and anaylzed the overshoot, settling time, and steady state error. We also created a safety controller as a tool to stop the robot before any collisions.
Skills Used: ROS, Matlab, Control Theory, Linear Algebra, Python
Cone Detection Via Color Segmentation, Object Detection via SIFT and Template Matching, Locating the cone via Homography Transformation, Controller for Parking and Line Following
Our group experimented with several types of object detection algorithms, learned how to transform a pixel from an image to a real world plane using homography, developed a parking controller to park the robot in front of an orange cone, and extended the parking controller into a line following controller. I developed the parking controller. The car is modeled as a bicycle and a pure pursuit approach gurantees the car parks within a set distance from the orange cone, and is facing the cone straight on. Then, we reused my parking controller to create a line following protocal on orange tape.
Skills Used: ROS, Control Theory, Linear Algebra, Python, Data Collection
Monte Carlo Localization
We resolve robotic localization by implementing Monte Carlo Localization (aka MCL or particle filter). We define our motion model based on odometry information. The motion model, f, takes as arguments the old particle pose, x_kprior, as well as the current odometry data, Δx, and returns a new pose, x_k, with the odometry "applied" to the old poses.
We use the sensor model, p(z_k|x_k, m) to define how likely the sensor is to record a given sensor reading z_k from a hypothesis position x_k in a known, static map m at time k. We use this likelihood to "prune" the particles as the motion model tries to spread them out. Particles are kept if the sensor reading is consistent with the map from the point of view of that particle.
We impliment the particle filter by
Repeatedly obtaining odometry data to create the motion model and update the particle positions
Repeatedly obtaining sensor data to create the sensor model and compute the particle probabilities. Then resample the particles based on these probabilities
Anytime the particles are updated (either via the motion or sensor model), determining the "average" (term used loosely) particle pose and publishing that transform.
Skills Used: Probabilistic Robotics, ROS, Linear Algebra, Python, Data Collection
Path Planning using occupancy grid, sampling, localization and pure pursuit
Now that we are able to localize the car, it is time to learn how to drive. We impliment two core parts of autonomous operation: planning and control. In other words, given a destination, we determine the path to the destination and proceed to drive along the path.
Our approach is split into three parts:
Part A: Plan trajectories in a known occupancy grid map from the car’s current position to a goal pose using either a sampling-based motion planning method.
Part B: Program the car to follow a predefined trajectory in a known occupancy grid map using the particle filter and pure pursuit control.
Part C: Combine the above two goals to enable real-time path planning and execution in the simple racecar_simulator. For this part, we also localize the car by running the particle filter and obtaining an estimate of our odometry rather than using the ground-truth pose. Finally, we deploy the integrated system on the physical racecar!
Skills Used: Probabilistic Robotics, Matlab, ROS, Control Theory, Linear Algebra, Python, Data Collection,
Final Challenge
The 2023 final challenge consisted of two parts:
Final Race Challenge: Complete a 200-meter loop around the track as fast as possible, while staying in our assigned lane.
City Driving Challenge: A mini-city was created in the basement of Stata. The road borders are marked by orange tape and several stop signs are scattered throughout the city. Our job was to navigate the city, while observing the stop signs.
Highlights of our approach.
We realized that the City Driving and Final Race could be approached in large part by dividing each challenge into four distinct subchallenges.
Recognition:(City Driving-orange road and Final Race-lanes)
Ignoring Distractors: (City Driving: using color masks to avoid confusing objects for road markers and Final Race: usingCanny Edge detection and Slope to avoid confusing objects for lanes)
Identifying a Goal point: (City Driving: Center of Bounding Box and Final Race - Pixel location)
Tuning Pure Pursuit
Our team was recognized for combining multiple HSV masks in order to accurately identify the Mini-City road. This machine learning approach enabled us to confidently discern the road under all sorts of lighting conditions, camera qualities, and tape cleanliness. We tuned our road detector prior to our trials on competition day.
Skills Used: Machine Learning, Probabilistic Robotics, ROS, Linear Algebra, Python, Data Collection