• Stars
    star
    145
  • Rank 254,144 (Top 6 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 7 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Dense 3D reconstruction from stereo (using LIBELAS)

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.

More Repositories

1

ObVi-SLAM

Long-Term Object Visual SLAM
Jupyter Notebook
91
star
2

jpp

Joint Perception and Planning For Efficient Obstacle Avoidance Using Stereo Vision
C++
54
star
3

SocialGym2

SocialGym 2: A lightweight benchmark and simulator for multi-robot social navigation using ROS and the OpenAI gym.
Python
52
star
4

robofleet

Web-based multi-robot control and visualization for ROS
Python
37
star
5

hitl-slam

Human-in-the-Loop SLAM
C++
23
star
6

IV_SLAM

Introspective Vision for Simultaneous Localization and Mapping
C++
21
star
7

codebotler

English to robot code
Python
15
star
8

coda-devkit

Official Software Development Kit for UT Campus Object Dataset (CODa)
Python
15
star
9

vision_slam_frontend

SLAM frontend for a ground robot using vision and odometry
C++
12
star
10

correlative-scan-matching

C++
11
star
11

ut_multirobot_sim

A simple cross-platform multi-robot simulator.
C++
10
star
12

config-reader

A strongly typed, header only Lua-based config file reader with on-save value reloading for C++ 11.
C++
9
star
13

graph_navigation

Robot graph navigation via carrot planning
C++
8
star
14

plunder

Synthesizing action selection policies from noisy, low-level demonstrations
Python
7
star
15

enml

Episodic non-Markov Localization
C++
7
star
16

ut_automata

Infrastructure repository for UT AUTOmata
C++
7
star
17

pips

C++ implementation of PIPS
C++
6
star
18

pom_localization

C++
6
star
19

ObVi-SLAM-Evaluation

5
star
20

robofleet_client

Robofleet 2.0 Robot Client
C++
5
star
21

Prolex

Python
5
star
22

rviz_mouse_pub

RViz plugin to publish mouse interactions with 2D map.
C++
4
star
23

BARN_CHALLENGE_2023

Python
3
star
24

dynamic_tracker

Multi-sensor, multi-platform dynamic tracker
C++
3
star
25

ORB_SLAM3

Research dev fork of https://github.com/UZ-SLAMLab/ORB_SLAM3
C++
3
star
26

local_rgb_map

C++
3
star
27

ut_jackal

A single combined repository of all code needed to run the UT Campus Jackal
C++
2
star
28

ConfigurationReader

Moved to https://github.com/ut-amrl/config-reader
C++
2
star
29

robot_status_gui

A graphical user interface for monitoring and launching ROS nodes.
C++
2
star
30

webviz

A low-bandwidth websocket-based direct robot visualizer.
HTML
2
star
31

cs393r_starter

C++
2
star
32

nautilus

Map curation using SLAM and Autonomous Loop Closure
C++
2
star
33

cs378_starter

Starter code for CS378 Autonomous Driving
C++
2
star
34

amrl_maps

Maps for localization and navigation for all AMRL projects
HLSL
2
star
35

amrl_shared_lib

Shared library for all AMRL C++ projects
C++
2
star
36

speedway

F1/10 racing
C++
1
star
37

CS603_SLAM

Vision-Odometry Pose Graph SLAM Assignment for COMPSCI603
C++
1
star
38

libcrsf

Library to encode / decode CRSF packets for TBS radio systems
1
star
39

robot_simulator

Python
1
star
40

robofleet_webviz

Robofleet 2.0 Web Interface
TypeScript
1
star
41

robo-js

Robot soccer simulator and associated Web IDE.
JavaScript
1
star
42

vslam_failures_rss23_safe_autonomy

Repository containing code and instructions for Visual SLAM failures assessment performed for the RSS 2023 Safe Autonomy Workshop Competition
Python
1
star
43

image-feature-comparison

A tool for comparing image feature tracking algorithms performance.
C++
1
star
44

robo-instruct

1
star
45

spot_cpp

C++
1
star
46

rviz_hitl_slam_tool

RViz hitl SLAM interaction tool
C++
1
star
47

vector_display

C++
1
star
48

spot-vrl

Python
1
star