ROS2 Wrapper for Omnimapper.
To run this demo using docker, the following dependencies are required:
Note: for manual host installation, follow the general build steps in the Dockerfile.
Clone then navigate into the repo folder and run the following command to get the Docker image
docker pull cogrob/omnimapper_ros
# or
docker build --tag cogrob/omnimapper_ros .
This may take some time, so go grab a cup of coffee.
Once you have the docker image, use rocker to launch a container with GUI display support
rocker --x11 --nvidia \
--oyr-run-arg " --net=host --ipc=host --pid=host" \
cogrob/omnimapper_ros \
ros2 launch omnimapper_ros realsense.launch.xml \
use_rosbag:=false
In this case, you'll also need to launch a ros2 realsense node to acquire sensor data.
Note: the linked fork below also includes a Dockerfile for reproducible builds.
Given the loading of kernel modules needed for accurate frame timestamps can not be achieved using docker alone, please be sure to at least install librealsense2-dkms
or build and load the dkms from source onto your host kernel. Otherwise you'll likely encounter degraded timestamp as mentioned here
docker pull ruffsl/ros2_intel_realsense:master
# or
git clone https://github.com/ruffsl/ros2_intel_realsense.git
cd ros2_intel_realsense
docker build --tag ruffsl/ros2_intel_realsense:master .
Once you have the docker image, use --privileged
to launch a container with USB device access:
docker run -it --rm --privileged \
--net=host --ipc=host --pid=host \
ruffsl/ros2_intel_realsense:master \
ros2 run realsense_node realsense_node \
--ros-args -p depth0.emitter:=0
Note:
--net=host --ipc=host --pid=host
is used to allow ROS2/DDS to communicate across containers. More details on connectivity across containers can be found here.