ROS2 Wrapper for Omnimapper.
To run this demo using docker, the following dependencies are required:
- ubuntu
- Login in using x11 for simple display forwarding with containers.
- Other linux distributions may work, but we'll focus on ubuntu.
- docker
- Quick install script here:
- https://get.docker.com
- nvidia-docker
- For hardware accelerated graphics in container
- rocker
- Check display forwarding is working with rocker.
- off-your-rocker
- Rocker extension used to pass arbitrary docker arguments.
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.
- librealsense
- SDK library for Intel RealSense sensors
- ros2_intel_realsense
- Current fork with patches for better VIO.
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.