top of page

Robot Localization and Control In ROS

Throughout my work at Varden Labs and Embark, I helped develop a lot of the perception and localization algorithms but relied on my co-founders when implementing them. After leaving the company, I decided to learn ROS (robot operating system) and implement some of the algorithms that we were using.

​

Using existing simulation libraries in ROS, I built an environment for a robot to drive in and sense its surroundings using a simulated LiDAR sensor.  I also generated and published artificial wheel encoders and GPS sensor data with artificial noise to use when creating algorithms.

 

Below are some of the things that I implemented. All of my code can be found on Github.

- Path mapping and trajectory following: I set up a path waypoint recording system and a simple trajectory following algorithm to allow a robot to follow recorded waypoint paths. Paths can be easily visualized in ROS.

​

- Occupancy grid probability map: Using a simulated LiDAR and the robot state, I set up a 2D occupancy grid mapping system to probabilistically build a map to be used later for robot localization. Maps can be saved to disk and loaded later.

​

- Extended Kalman filter based localization: Using simulated encoder and poor GPS data, I wrote an extended Kalman filter (EKF) to calculate the robot state. I then set up a routine to draw the error ellipse in RVIZ (a visualization environment in ROS) as well as the heading error arc, these are pictured above in blue.

​

- Particle filter with scan registration: Using a pre built occupancy grid map and the robots LiDAR data, I set up an iterative closest point (ICP) scan registration algorithm to calculate the transformation from the robots' local frame to the global map frame. Currently, I am designing a particle filter where particle locations are transformed using the ICP transformation and my previous EKF localization algorithm (with very inaccurate raw sensor data). Particle re-sampling will be done using the ICP fitness score.

Related Project Links

As part of a team of 4, we are developing an underwater vehicle to travers an obstacle course in the fastest time possible. My primary roll is to develop the GNC (guidance, navigation and controls) stack running on an onboard android phone

Please reload

When learning more about modern control theory, I wanted to try a more challenging project that I had wanted to design for a while.  Using Simulink, I designed a simulation along with an LQR controller to balance a double pendulum even when subjected to noise. 

Please reload

bottom of page