About Me

Hello! I am Raj, Currently Working as a Robotics Software Engineer at ViaBot. My interests lie in Autonomous Vehicles, Mobile & Legged Robotics, more specifically in the Motion Planning and Controls Domain. I love working with both hardware and software. I received my Master of Engineering in Robotics, from the University of Maryland, College Park in May 2021. I also received my Bachelor of Engineering in Electronics & Telecommunication from RGIT, Mumbai in 2019. Have a look at some of my Projects below!

Projects

Quadruped Dog Robot: CLAW

Built a 12-DOF Quadruped Dog Robot Capable of walking on complex terrain and performing agile movements.

  • Modeled the Forward & Inverse Kinematics, Jacobian & Velocity Kinematics.

  • Designed Jerk Optimized Trajectories using Quintic Polynomial, Parameterized Bezier's, Compound Cycloid for Pose manipulation and Gait engine.

  • Implemented a Cartisian PD controller to introduce virtual compliance in joints to take ground impacts and emulate an animals leg.

  • Designed and Developed the entire Hardware: Mechanical, Electrical as well as CAD Models.

  • Simulated the robot in V-REP to perform test & Analysis of Kinematics & Dynamics.

  • Based on ROS and uses Stereo vision for creating a terrain costmap to plan footstep.

  • Implemented and simulated an LQR controller for stable trot gait over uneven surfaces, in MATLAB.

Quadruped Robot ROS Kinematics Simulation LQR Controller Stereo Vision Brushless Motors Gearing Torque Control 3D Printing

Autonomous Wheelchair

Built a ROS based Autonomous Wheelchair base for kids, to provide indoor navigation.

  • Deployed & Tested our software on actual Differential Drive Wheelchair.

  • Implemented PID controllers for velocity and position reference tracking.Fused the Wheel encoder & LiDAR data to obtain Odometry, and used AMCL for localization

  • Explored and Mapped the environment using RRT Exploration and LiDAR-based SLAM with Gmapping.

  • Developed an A* path planner for global path planning, in C++ 11/14 following google style guide, Agile Development Process & Test Driven Development. As well as maintained a product backlog & Worklog

  • Performed Unit testing with googletest and Continuous Integration(CI) using Travis and Coveralls with 95% coverage. Documented the software with doxygen

A* Path Planner RRT Path Planner C++ 11/14 AIP CI/CD Unit Testing ROS Gazebo SLAM Dynamic Obstacle Avoidance LiDAR Differential Drive PID

Locomotion of Quadruped Robot over Uneven Terrain

Implemented an algorithm to build a terrain costmap, footstep planner & a trajectory planner for selecting the best foothold positions for a legged robot to walk on an uneven terrain

  • Extracted terrain features like slope using Principle Component Analysis(PCA) and height deviations from a 3D Occupancy Octree generated by OctoMap to create footstep affordance/costmap.

  • Implemented footstep planners & trajectory planners for leg end-effector using splines to avoid terrain obstacles.

  • Currently testing the pipeline in simulations and actual Stanford Doggo Quadruped equipped with NVIDIA Jetson TX2 & Intel Realsense Depth & Tracking Camera.

Stanford Doggo 3D Occupancy Point Cloud PCA Locomotion OCTOMAP Costmap Trajectory planners

Optimal Trajectory Generation in Frenet-Frame

Optimized local trajectory generation by minimizing Jerk in the lane’s TN Frame for increasing comfort level.

  • Selection of trajectories based on kinematic constraints of car.

  • Capable of obstacle avoidance, velocity keeping, lane changing & merging.

Motion Planning Trajectory Optimization Self-Driving Car Autonomous Vehicle Jerk Minimization TNB Frame Frenet Frame Trajectory planner

Particle Filter Localization

Implemented pose estimator using odometry & maximum likelihood fields, motion & measurement models.

  • Based on simple Omni-Directional Odometry motion model with sampled gaussian noise distribution.

  • Sampled normal distribution using polar Box-Muller Transformation.

  • Measurement model based on LiDAR Maximum Likelihood Field with pre-built lookup for faster solutions.

Particle Filter Bayesian Estimation Localization State Estimator LiDAR Probabilistic Models

Hybrid A* for Car using Kinematic & Reeds-Shepp Model

A Motion Planner based on combined non-holonomic & holonomic heuristics to accelerate & optimize the solution.

  • Action Space based on Kinematic Simulations and Reeds-Shepp Paths.

  • Cost function based on maximum betwen Holonomic and Non-Holonomic Costs.

  • Holonomic Costs help avoid obstacles whereas Non-Holonomic Costs helps grade the trajectories based on kinematics, efforts required and realworld human preferred actions.

Motion Planner Kino-Dynamic Self-Driving Car Autonomous Vehicle A* Hybrid Costs

Dynamic-Window Approach for Motion Planning

Built a kino-dynamic path planner capable of avoiding dynamic obstacles by sampling actions in robots control space.

  • Path Panner Capable of Dynamic Obstacle Avoidance and satisfying the kino-dynamic constraints of the robot.

  • Samples in the robots control space instead of position/action space.

  • Cost Funtion ensures selection of trajectories based on factors like velocity, proximity to obstacles, closeness to global path.

Motion Planner Autonomous Robots Kino-Dynamic Path Planner Trajectory Rollout Trajectory planners

Extended Kalman Filter for Tracking 15-State's

Developed a pose, twist & acceleration state estimator using Omni-directional kinematics for prediction.

  • Used an Omni-Directional Kinematic Model for prediction state and tuned the process Noise Covariance Matrix to accomodate the model for a Differential-Drive Robot.

  • Fused the measurements from the wheeled odometry and IMU.

  • Made Process Noise Covariance dynamic to avoid increasing covariance when not fusing absolute position data and the robot is stationary.

Extended Kalman Filter Bayesian Estimation Localization State Estimator LiDAR Probabilistic Models

2D Graph SLAM using ICP Scan Matching

2D Graph SLAM using ICP Scan Matching and g2o based pose graph optimization.

  • Implemented a SLAM pipeline using G2O based Pose Graph Optimization for LiDAR and Wheel Odometry Data.

  • Used ICP for creating edges between pose's while using odometry based initial guesses and thresholds.

Pose Graph Optimization SLAM Mapping Localization G2O LiDAR

Autonomously Repositioning E-Scooter

A Self-Driving E-Scooter capable of reaching the customer or shared e-scooter parking spots autonomously.

  • Developed 2D-Costmap for navigation on sidewalks using Semantics from ENet DNN and RGB-D data from cameras.

  • Created a Global Planner using Dijkstra’s algorithm to find the shortest path in cities using the OpenStreetMap data.

  • Implemented a hardware interface for sensing & actuation and created a kinematic model of the scooter.

Autonomous Self-Driving Depth Cameras Jetson Nano Motion Planning ROS Costmap

Augmented Reality(AR)

Superimposed images and drew 3D Cubes on AR tags in a video sequence

  • Performed contour detection and filtered out unwanted contours for detecting AR tag.

  • Performed homography on tag contours to get top view of tag and then detect the tag ID.

  • Decided orientation of lena based on tag, and superimposed it on tag using inverse warping.

  • Calculated the Projection matrix using camera parameters to draw cubes on tags

OpenCV Homogaphy Warp Prspective contour detection AR

Lane & Turn Detection

Implemented a Pipeline for lane and turn detection in challenging Scenarios like, poor lighting conditions, lane breaks, shadows.

  • Detected the lanes by first converting video sequence into HSL color space and then by using using Hough lines & histogram of lane approach.

  • Implemented Warp Perspective and Homography from scratch for our algorithm. Also used it for creating overlays on road

  • Used Image processing methods like gamma correction, Adaptive Histogram Equilization for improving video sequence.

OpenCV Homogaphy Warp Prspective Hough Lines Histogram of lanes

Modular Rescue and Surveillance Drone

Built a Quadcopter, that along with its flying capabilities, also navigates on the ground surface by tilting its motors.

  • Implemented a Servo mechanism to tilt the Arms, and used an Arduino to switch between ground and air mode.

  • Used a LiDAR to create a Point Cloud for 3-D Mapping the area and visualized the Point Cloud with Processing IDE.

  • Added slot for Modular attachments and Achieved the objective to reach and visualize inaccessible areas.

Drone Arduino LiDAR Point Cloud Kinematics ArduPilot

Eco-bot

Developed a ROS Package to simulate a Turtlebot in Gazebo to demonstrate a trash-collecting robot.

  • Used Gampping for SLAM. Developed our code in C++ 11/14 to reach and collect the trash.

  • Performed Rostest and Unit testing with googletest.

  • Documented with Doxygen and performed Continuous Integration(CI) using Travis and Coveralls with 94% coverage.

ROS Turtlebot 2 Gazebo A* Path Planner

Waypoint Reduction using Cubic Hermite Spline

Path tracing through minimum waypoints while considering the orienation for a non-holonomic robot
Curve Fitting Splines Path Planner

Colour Segmentation using HSV colour space and K means clustering

Detected front legs of a warehouse racks for AGV using K means clustering & Colour segemntation in HSV colour space
Perception AGV OpenCV HSV Hough Lines K means Clustering

Outlier Rejection using RANSAC & Least square fitting

Rejected outliers in a given dataset using RANSAC and LSF
Perception AGV OpenCV HSV Hough Lines K means Clustering

Colour Segmentation using Gaussian Mixture Model & Expectation Maximization

Detected three different coloured under water buoys in a video by outlining them.
Perception Gaussian Mixture Model OpenCV Expectation Maximization Morphological Processing K means Clustering

2-Axis Camera Slider

Made a 2-axis motion system to produce different camera movements for videography.

  • Used Steppers motors to achieve accurate positioning and wrote the code in Embedded C.

Arduino Stepper Motor Embedded C
3D Printing Autodesk 123D

Dijkstra Path Planner

Implemented a Dijkstar path planner in python for a rigid robot.
Path Planning Data Structures Rigid Robot Obstacle Avoidance Half plane equations queues

LQR Controller for Quadruped to trot stably

Implemented and simulated an LQR controller for stable trot gait over uneven surfaces, in MATLAB.
Modeling LQR MATLAB Quadruped
Trot Gait Balance

Breadth first Search Algorithm(BFS) 8 Puzzle Problem Solver

Implemented Breadth first Search Algorithm for solving an 8 Puzzle Problem.
8 Puzzle BFS Data Structures Python Path Planning

Motion Mouse

Developed a wearable wireless mouse that used an IMU to sense hand motions replicating a conventional mouse.
IMU C++ Arduino

Self Balancing Robot

Built a two wheeled robot with a PID Control to balance itself vertically.
PID IMU Stepper Motors

Twin-Boom RC Plane

Designed a Twinn boom RC Plane and participated in Boeing national level Aeromodelling Competition.
Modeling Electronics Brushless Motors ESC Boeing Competition

Homemade 3D Printer

Built a cartesian Fused Deposition Modeling 3D Printer from scratch with a simple and cost-effective Frame.

Work Experience

Hobbies

Astrophotography

Contact

  • Address

    San Francisco Bay Area, California
    United States
  • Phone

    +1-240-755-5018
  • Email

    raj0407@umd.edu