ROS 2 launcher package for starting an Arducam node, a USB camera node, and the IMU launch file together. The sensor stack is intended for omni-directional multi-camera Visual-Inertial Odometry plus marker based drift handling.
- Launch file:
launch/multi_vio_with_imu.launch.py
Camera support comes from both arducam_camarray_wrapper and usb_cam.
The following packages must be cloned into the same workspace (src/) before building:
git clone -b ros2 https://github.com/xsenssupport/Xsens_MTi_ROS_Driver_and_Ntrip_Client.gitImportant: use the
ros2branch. The defaultmainbranch is ROS 1 only.
USB low-latency mode — if the IMU is connected over USB, run this once before launching (improves timestamp accuracy):
sudo setserial /dev/ttyUSB0 low_latencyUnsynchronised (no hardware sync) setup — if cameras and IMU are not hardware-synced, set time_option: 2 in the Xsens config file (param/xsens_mti_node.yaml) so the driver stamps IMU messages with the host ROS clock instead of the device clock:
time_option: 2 # use host ROS time (required when not hardware-synced)git clone https://github.com/SaxionMechatronics/arducam_camarray_wrapper.gitcd ~/agps_ws
colcon build --packages-select multi_vio --symlink-install
source install/setup.bashros2 launch multi_vio multi_vio_with_imu.launch.pyBy default the usb_cam launch argument prefers the first stable V4L2 symlink it finds under /dev/v4l/by-id. You can override it explicitly:
ros2 launch multi_vio multi_vio_with_imu.launch.py \
usb_video_device:=/dev/v4l/by-id/your-camera-nameTo point Arducam at a different parameter file:
ros2 launch multi_vio multi_vio_with_imu.launch.py \
camera_params:=/path/to/arducam_quadcam.yamlIf the IMU package or launch filename differs in your setup:
ros2 launch multi_vio multi_vio_with_imu.launch.py \
imu_launch_package:=xsens_mti_ros2_driver \
imu_launch_file:=xsens_mti_node.launch.py