- Hrushikesh Budhale
This project contains a ROS package written for pose estimation in a structured environment using visual odometry from single monocular camera and knowledge about the surrounding environment. This package makes use of projective geometry and predictive filtering for achieving centimeter level accuracy in pose estimation.
-
This package receives 2 gray scale images after inference from a DL model which segments vertical and horizontal beams visible in the camera frame.
-
After receiving these images this ROS node processes images by applying temporal filters along with knowledge based filters and geometric transforms to estimate the current position of the camera.
-
Estimated pose is then utilized iteratively to predict next pose based on state variables.
-
Predicted pose is then updated from the observations and it gets published on respective ros topics.
-
Input1: Inference from Horizontal beam detector model.
-
Input2: Inference from Vertical beam detector model.
- This package generates odometry output containing X, Y, Z and Yaw of the robot.
- This package also provides estimate of Aisle width (one of the known structural value) which can be used as a metric of confidence at that timestamp.
- For debugging purpose, this package provides image overlay topic. (This requires original RGB image with timestamp as input)
- Ubuntu 18.04 (or above)
- ROS Melodic (or above)
- Python 3.6
- Numpy
- Opencv3
cd <catkin workspace>/src
sudo apt-get install git
git clone https://github.com/HrushikeshBudhale/pose-estimation-using-geometry
cd ..
catkin build
source ./devel/setup.bash
This package depends on 3 input publishers publishing following data with time stamp,
- Rgb image
- gray-scale inference image of vertical beams
- gray-scale inference image of horizontal beams
If above data is available, launch the pose estimator node using following launch command.
roslaunch bar_detector bar_detector.launch