Home

Awesome

Ubuntu 20.04 + ROS Noetic: Build

Dynablox

An online volumetric mapping-based approach for real-time detection of diverse dynamic objects in complex environments.

<p align="center"> <img width='100%' src="https://user-images.githubusercontent.com/36043993/232650770-a042cbb9-c251-42f9-8a96-d7d9273fec96.gif"> </p>

Table of Contents

Credits

Setup

Examples

Paper

If you find this package useful for your research, please consider citing our paper:

Video

A brief overview of the problem, approach, and results is available on youtube: <img src=https://user-images.githubusercontent.com/36043993/233706937-1ccd0c03-d86b-4e4f-ad47-48c38e8a7f8d.png alt="Dynablox Youtube Video">

News

We were excited to learn that Dynablox has been integrated into NVIDIA's nvblox, where the algorithm's parallelism can make fantastic use of the GPU and detect moving objects fast and at high resolutions!

Setup

There is a docker image available for this package. Check the usage in the dockerhub page.

Installation

  1. If not already done so, install ROS. We recommend using Desktop-Full.

  2. If not already done so, setup a catkin workspace:

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws
    catkin init
    catkin config --extend /opt/ros/$ROS_DISTRO
    catkin config --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo
    catkin config --merge-devel
    
  3. Install system dependencies:

    sudo apt-get install python3-vcstool python3-catkin-tools ros-$ROS_DISTRO-cmake-modules protobuf-compiler autoconf git rsync -y   
    
  4. Clone the repo using SSH Keys:

    cd ~/catkin_ws/src
    git clone git@github.com:ethz-asl/dynablox.git
    
  5. Install ROS dependencies:

    cd ~/catkin_ws/src
    vcs import . < ./dynablox/ssh.rosinstall --recursive 
    
  6. Build:

    catkin build dynablox_ros
    

Datasets

To run the demos we use the Urban Dynamic Objects LiDAR (DOALS) Dataset. To download the data and pre-process it for our demos, use the provided script:

roscd dynablox_ros/scripts
./download_doals_data.sh /home/$USER/data/DOALS # Or your preferred data destination.

We further collect a new dataset featuring diverse dynamic objects in complex scenes. The full dataset and description ca nbe found here. To download the processed ready-to-run data for our demos, use the provided script:

roscd dynablox_ros/scripts
./download_dynablox_data.sh /home/$USER/data/Dynablox # Or your preferred data destination.

Examples

Running a DOALS Sequence

  1. If not done so, download the DOALS dataset as explained here.

  2. Adjust the dataset path in dynablox_ros/launch/run_experiment.launch:

    <arg name="bag_file" default="/home/$(env USER)/data/DOALS/hauptgebaeude/sequence_1/bag.bag" />  
    
  3. Run

    roslaunch dynablox_ros run_experiment.launch 
    
  4. You should now see dynamic objects being detected as the sensor moves through the scene:

Run DOALS Example

Running a Dynablox Sequence

  1. If not done so, download the Dynablox dataset as explained here.

  2. Adjust the dataset path in dynablox_ros/launch/run_experiment.launch and set use_doals to false:

    <arg name="use_doals" default="false" /> 
    <arg name="bag_file" default="/home/$(env USER)/data/Dynablox/processed/ramp_1.bag" />  
    
  3. Run

    roslaunch dynablox_ros run_experiment.launch 
    
  4. You should now see dynamic objects being detected as the sensor moves through the scene: Run Dynablox Example

Running and Evaluating an Experiment

Running an Experiment

  1. If not done so, download the DOALS dataset as explained here.

  2. Adjust the dataset path in dynablox_ros/launch/run_experiment.launch:

    <arg name="bag_file" default="/home/$(env USER)/data/DOALS/hauptgebaeude/sequence_1/bag.bag" />  
    
  3. In dynablox_ros/launch/run_experiment.launch, set the evaluate flag, adjust the ground truth data path, and specify where to store the generated outpuit data:

    <arg name="evaluate" default="true" />
    <arg name="eval_output_path" default="/home/$(env USER)/dynablox_output/" />
    <arg name="ground_truth_file" default="/home/$(env USER)/data/DOALS/hauptgebaeude/sequence_1/indices.csv" />
    
  4. Run

    roslaunch dynablox_ros run_experiment.launch 
    
  5. Wait till the dataset finished processing. Dynablox should shutdown automatically afterwards.

Analyzing the Data

Advanced Options