All Projects → ut-amrl → Stereo_dense_reconstruction

ut-amrl / Stereo_dense_reconstruction

Licence: gpl-3.0
Dense 3D reconstruction from stereo (using LIBELAS)

Projects that are alternatives of or similar to Stereo dense reconstruction

Ev3dev Lang Java
A project to learn Java and create software for Mindstorms Robots using hardware supported by EV3Dev & the LeJOS way.
Stars: ✭ 79 (-30.09%)
Mutual labels:  robotics, ros
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (+1560.18%)
Mutual labels:  robotics, ros
Ros Openpose
CMU's OpenPose for ROS
Stars: ✭ 81 (-28.32%)
Mutual labels:  robotics, ros
Get Started Ros2
書籍「ROS2ではじめよう 次世代ロボットプログラミング」オンラインリソース
Stars: ✭ 65 (-42.48%)
Mutual labels:  robotics, ros
Flexbe behavior engine
Contains the behavior engine FlexBE.
Stars: ✭ 101 (-10.62%)
Mutual labels:  robotics, ros
Icse Seip 2020 Replication Package
Replication package of the paper titled "How do you Architect your Robots? State of the Practice and Guidelines for ROS-based Systems" published at ICSE-SEIP 2020
Stars: ✭ 68 (-39.82%)
Mutual labels:  robotics, ros
Rvd
Robot Vulnerability Database. An archive of robot vulnerabilities and bugs.
Stars: ✭ 87 (-23.01%)
Mutual labels:  robotics, ros
Plankton
Open source simulator for maritime robotics researchers
Stars: ✭ 51 (-54.87%)
Mutual labels:  robotics, ros
Robotics setup
Setup Ubuntu 18.04, 16.04 and 14.04 with machine learning and robotics software plus user configuration. Includes ceres tensorflow ros caffe vrep eigen cudnn and cuda plus many more.
Stars: ✭ 110 (-2.65%)
Mutual labels:  robotics, ros
Evo
Python package for the evaluation of odometry and SLAM
Stars: ✭ 1,373 (+1115.04%)
Mutual labels:  robotics, ros
Hrim
An information model for robot hardware. Facilitates interoperability across modules from different robot manufacturers. Built around ROS 2.0
Stars: ✭ 61 (-46.02%)
Mutual labels:  robotics, ros
Robotics Coursework
🤖 Places where you can learn robotics (and stuff like that) online 🤖
Stars: ✭ 1,810 (+1501.77%)
Mutual labels:  robotics, ros
Ros2 java
Java and Android bindings for ROS2
Stars: ✭ 60 (-46.9%)
Mutual labels:  robotics, ros
Diff drive
ROS nodes for controlling and monitoring a differential drive robot.
Stars: ✭ 77 (-31.86%)
Mutual labels:  robotics, ros
Vector ros
ROS package for Anki Vector home robot
Stars: ✭ 55 (-51.33%)
Mutual labels:  robotics, ros
Navigation
ROS Navigation stack. Code for finding where the robot is and how it can get somewhere else.
Stars: ✭ 1,248 (+1004.42%)
Mutual labels:  robotics, ros
Pendulum
ROS, ROS2, real-time, control, pendulum
Stars: ✭ 37 (-67.26%)
Mutual labels:  robotics, ros
Openre
HandsFree OpenRE Tutorial
Stars: ✭ 41 (-63.72%)
Mutual labels:  robotics, ros
Webots
Webots Robot Simulator
Stars: ✭ 1,324 (+1071.68%)
Mutual labels:  robotics, ros
Grl
Robotics tools in C++11. Implements soft real time arm drivers for Kuka LBR iiwa plus V-REP, ROS, Constrained Optimization based planning, Hand Eye Calibration and Inverse Kinematics integration.
Stars: ✭ 105 (-7.08%)
Mutual labels:  robotics, ros

Dense 3D Reconstruction from Stereo

This is a ROS package for real-time 3D reconstruction from stereo images. Currently this version uses LIBELAS for generating dense disparity maps as a baseline. The method for generation of disparity maps can be changed based on user preferences.

This package serves as a visualization tool for dense disparity maps and point clouds. Additionally, a tool for transforming point clouds to a different reference frame is also included.

Usually, the point clouds are formed in the reference frame of the left camera. For ground robots, often the point clouds need to be transformed to a different frame e.g., a reference frame with the origin at the centre of rotation of the robot projected on to the ground plane. These transformations are hard to calculate mathematically - this tool can be used to find the transformations visually.

Dependencies

Stereo Calibration

A calibrated pair of cameras is required for stereo rectification and calibration files should be stored in a .yml file. This repository contains all the tools and instructions to calibrate stereo cameras.

The rotation and translation matrices for the point cloud transformation should be named as XR and XT in the calibration file. XR should be a 3 x 3 matrix and XT should be a 3 x 1 matrix. Please see a sample calibration file in the calibration/ folder.

Compiling

Clone the repository:

$ git clone https://github.com/umass-amrl/stereo_dense_reconstruction

For compiling the ROS package, rosbuild is used. Add the path of the ROS package to ROS_PACKAGE_PATH and put the following line in your .bashrc file. Replace PATH by the actual path where you have cloned the repository:

$ export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/PATH

Execute the build.sh script:

$ cd stereo_dense_reconstruction
$ chmod +x build.sh
$ ./build.sh

Running Dense 3D Reconstruction

$ ./bin/dense_reconstruction [OPTION...]
Usage: dense_reconstruction [OPTION...]
  -l, --left_topic=STR       Left image topic name
  -r, --right_topic=STR      Right image topic name
  -c, --calib_file=STR       Stereo calibration file name
  -w, --calib_width=NUM      Calibration image width
  -h, --calib_height=NUM     Calibration image height
  -u, --out_width=NUM        Rectified image width
  -v, --out_height=NUM       Rectified image height
  -d, --debug=NUM            Set d=1 for cam to robot frame calibration

This node outputs the dense disparity map as a grayscale image on the topic /camera/left/disparity_map and the corresponding point cloud on the topic /camera/left/point_cloud.

A sample dataset can be found here.

Point Cloud Transformation

The point cloud can be viewed on rviz by running:

$ rosrun rviz rviz

To transform the point cloud to a different reference frame, the XR and XT matrices (rotation and translation) in the calibration file need to be changed. This can be done real-time by the running:

$ rosrun rqt_reconfigure rqt_reconfigure

If you change the Euler Angles in rqt_reconfigure you should be able to see the point cloud transform. Don't forget to set d=1 when running the dense_reconstruction node. This prints out the new transformation matrices as you transform the point cloud.

License

This software is released under the GNU GPL v3 license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].