Dynablox
一种基于在线体积映射的方法,用于在复杂环境中实时检测各种动态物体。
目录
学术资料
安装设置
示例
论文
如果您发现此软件包对您的研究有用,请考虑引用我们的论文:
- Lukas Schmid, Olov Andersson, Aurelio Sulser, Patrick Pfreundschuh, 和 Roland Siegwart. "Dynablox: 复杂环境中多样动态物体的实时检测"发表于《IEEE机器人与自动化快报(RA-L)》,第8卷,第10期,6259-6266页,2023年10月。[ IEEE | ArXiv | 视频 ]
@article{schmid2023dynablox, title={Dynablox: Real-time Detection of Diverse Dynamic Objects in Complex Environments}, author={Schmid, Lukas, and Andersson, Olov, and Sulser, Aurelio, and Pfreundschuh, Patrick, and Siegwart, Roland}, booktitle={IEEE Robotics and Automation Letters (RA-L)}, year={2023}, volume={8}, number={10}, pages={6259 - 6266}, doi={10.1109/LRA.2023.3305239}} }
视频
在YouTube上可以观看问题、方法和结果的简要概述: <img src=https://user-images.githubusercontent.com/36043993/233706937-1ccd0c03-d86b-4e4f-ad47-48c38e8a7f8d.png alt="Dynablox YouTube视频">
最新消息
我们很高兴得知Dynablox已被整合到NVIDIA的nvblox中,该算法的并行性可以充分利用GPU,实现快速、高分辨率的移动物体检测!
设置
这个软件包有一个可用的Docker镜像。请查看DockerHub页面上的使用说明。
安装
- 版本说明: 本软件包是在Ubuntu 20.04和ROS Noetic环境下开发的。其他版本也应该可以使用,但不能保证完全支持。
-
如果尚未安装,请安装ROS。我们推荐使用
Desktop-Full
版本。 -
如果尚未设置,请设置catkin工作空间:
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
-
安装系统依赖:
sudo apt-get install python3-vcstool python3-catkin-tools ros-$ROS_DISTRO-cmake-modules protobuf-compiler autoconf git rsync -y
-
使用SSH密钥克隆仓库:
cd ~/catkin_ws/src git clone git@github.com:ethz-asl/dynablox.git
-
安装ROS依赖:
cd ~/catkin_ws/src vcs import . < ./dynablox/ssh.rosinstall --recursive
-
构建:
catkin build dynablox_ros
数据集
为了运行演示,我们使用城市动态物体激光雷达(DOALS)数据集。 要下载数据并为我们的演示预处理,请使用提供的脚本:
roscd dynablox_ros/scripts
./download_doals_data.sh /home/$USER/data/DOALS # 或您选择的数据目标位置。
我们还收集了一个新的数据集,包含复杂场景中的各种动态物体。 完整的数据集和描述可以在这里找到。 要下载处理好的、可直接运行的演示数据,请使用提供的脚本:
roscd dynablox_ros/scripts
./download_dynablox_data.sh /home/$USER/data/Dynablox # 或您选择的数据目标位置。
示例
运行DOALS序列
-
如果尚未完成,请按照这里的说明下载DOALS数据集。
-
调整
dynablox_ros/launch/run_experiment.launch
中的数据集路径:<arg name="bag_file" default="/home/$(env USER)/data/DOALS/hauptgebaeude/sequence_1/bag.bag" />
-
运行
roslaunch dynablox_ros run_experiment.launch
-
现在您应该能看到动态物体在传感器移动过程中被检测到:
运行Dynablox序列
-
如果尚未完成,请按照这里的说明下载Dynablox数据集。
-
调整
dynablox_ros/launch/run_experiment.launch
中的数据集路径,并将use_doals
设置为false:<arg name="use_doals" default="false" /> <arg name="bag_file" default="/home/$(env USER)/data/Dynablox/processed/ramp_1.bag" />
-
运行
roslaunch dynablox_ros run_experiment.launch
-
现在您应该能看到动态物体在传感器移动过程中被检测到:
运行和评估实验
运行实验
-
如果尚未完成,请按照此处所述下载DOALS数据集。
-
在
dynablox_ros/launch/run_experiment.launch
中调整数据集路径:<arg name="bag_file" default="/home/$(env USER)/data/DOALS/hauptgebaeude/sequence_1/bag.bag" />
-
在
dynablox_ros/launch/run_experiment.launch
中,设置evaluate
标志,调整地面真值数据路径,并指定存储生成的输出数据的位置:<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" />
-
运行
roslaunch dynablox_ros run_experiment.launch
-
等待数据集处理完成。之后Dynablox应自动关闭。
分析数据
-
打印检测性能指标:
- 运行:
roscd dynablox_ros/src/evaluation python3 evaluate_data.py /home/$USER/dynablox_output
- 现在您应该可以看到该文件夹中所有实验的性能统计数据:
1/1 数据条目已完成。 数据 物体_IoU 物体_精确度 物体_召回率 hauptgebaeude_1 89.8 +- 5.6 99.3 +- 0.4 90.3 +- 5.6 全部 89.8 +- 5.6 99.3 +- 0.4 90.3 +- 5.6
-
检查分割结果:
- 运行:
roslaunch dynablox_ros cloud_visualizer.launch file_path:=/home/$USER/dynablox_output/clouds.csv
- 现在您应该可以看到标注的地面真值点云的分割结果,显示真阳性(绿色)、真阴性(黑色)、假阳性(蓝色)、假阴性(红色)和超出范围(灰色)的点:
-
检查运行时间和配置: 每个实验的附加信息会自动存储在
timings.txt
和config.txt
中。
高级选项
-
为实验添加漂移: 要运行带有漂移的实验,请在
dynablox_ros/launch/run_experiment.launch
中指定预先计算的漂移方案之一:<arg name="drift_simulation_rollout" default="doals/hauptgebaeude/sequence_1/light_3.csv" />
所有预先计算的方案都可以在
drift_simulation/config/rollouts
中找到。请注意,指定的序列需要与正在播放的数据匹配。对于每个序列,每种强度都有3个方案。或者,使用
drift_simulation/launch/generate_drift_rollout.launch
为其他数据集创建新的方案。 -
更改Dynablox的配置: Dynablox中存在的所有参数都列在
dynablox_ros/config/motion_detector/default.yaml
中,请随意根据您的使用情况调整方法!