Re: Docker images supporting VIN-Fusion odom strategy etc
Posted by
matlabbe on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Docker-images-supporting-VIN-Fusion-odom-strategy-etc-tp10332p10408.html
Hi,
The docker images linked above could be fairly straightforward to port to Ubuntu 20.04 and Noetic (just keep the dependencies you need to keep it simple), then build rtabmap_ros at the end.
There are some ros examples using different odometry strategies here
https://github.com/introlab/rtabmap_ros/blob/master/rtabmap_examples/launch/euroc_datasets.launchHere an example for DVO:
FROM introlab3it/rtabmap_ros:noetic
RUN apt-get update && apt-get install -y \
git \
wget \
libceres-dev \
ros-${ROS_DISTRO}-sophus \
&& rm -rf /var/lib/apt/lists/
# uninstall rtabmap binaries
RUN apt-get remove -y ros-${ROS_DISTRO}-rtabmap*
# To make "source" working
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
# Clone dependencies
RUN mkdir -p /root/catkin_ws/src
WORKDIR /root/catkin_ws/src
RUN source /opt/ros/${ROS_DISTRO}/setup.bash && catkin_init_workspace
# DVO
RUN git clone https://github.com/tum-vision/dvo_slam.git && \
cd dvo_slam && \
git checkout kinetic-devel && \
rm dvo_slam/package.xml && \
rm dvo_benchmark/package.xml && \
rm dvo_ros/package.xml && \
sed -i 's/sophus/Sophus/g' dvo_core/CMakeLists.txt
# Catkin_make
WORKDIR /root/catkin_ws
RUN source /opt/ros/${ROS_DISTRO}/setup.bash && \
catkin_make -DCMAKE_BUILD_TYPE=Release && \
rm -rf build
WORKDIR /root
# build rtabmap
RUN git clone https://github.com/introlab/rtabmap.git
RUN source /root/catkin_ws/devel/setup.bash && \
cd rtabmap && \
cd build && \
cmake -DWITH_DVO=ON -DBUILD_EXAMPLES=OFF -DBUILD_TOOLS=OFF .. && \
make -j$(nproc) && \
make install && \
rm -rf * && \
ldconfig
# build rtabmap_ros
RUN source /root/catkin_ws/devel/setup.bash && \
cd catkin_ws && \
git clone https://github.com/introlab/rtabmap_ros.git src/rtabmap_ros && \
catkin_make -DCMAKE_BUILD_TYPE=Release --only-pkg-with-deps rtabmap_ros && \
rm -rf build
RUN echo $'#!/bin/bash\nset -e\nsource "/opt/ros/$ROS_DISTRO/setup.bash" --\nsource "/root/catkin_ws/devel/setup.bash" --\nexec "$@"' > /ros_entrypoint.sh
Usage with a D400 realsense camera:
# Build image above
docker build -t rtabmap:dvo .
# Launch camera
docker run -it --rm \
--network host \
--privileged \
introlab3it/rtabmap_ros:noetic \
roslaunch realsense2_camera rs_camera.launch align_depth:=true
# Launch VSLAM with DVO odometry (with UI), based on example of https://github.com/introlab/rtabmap_ros/tree/master/docker
XAUTH=/tmp/.docker.xauth
touch $XAUTH
xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -
docker run -it --rm \
--privileged \
-e DISPLAY=$DISPLAY \
-e QT_X11_NO_MITSHM=1 \
-e NVIDIA_VISIBLE_DEVICES=all \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-e XAUTHORITY=$XAUTH \
--runtime=nvidia \
--network host \
-v $XAUTH:$XAUTH \
-v /tmp/.X11-unix:/tmp/.X11-unix \
rtabmap:dvo \
roslaunch rtabmap_launch rtabmap.launch \
rtabmap_args:="--delete_db_on_start --Odom/Strategy 4 --Odom/ImageDecimation 2" \
depth_topic:=/camera/aligned_depth_to_color/image_raw \
rgb_topic:=/camera/color/image_raw \
camera_info_topic:=/camera/color/camera_info \
approx_sync:=false
# Or launch just DVO odometry without UI:
docker run -it --rm --network host \
rtabmap:dvo \
rosrun rtabmap_odom rgbd_odometry \
_Odom/Strategy:=4 \
/rgb/image:=/camera/color/image_raw \
/rgb/camera_info:=/camera/color/camera_info \
/depth/image:=/camera/aligned_depth_to_color/image_raw \
_frame_id:=camera_link \
_Odom/ImageDecimation:=2
On my machine, DVO odom time is < 20 ms per frame with images decimated by 2.
cheers,
Mathieu