RTAB-Map remote mapping with RealSense T265 + D435
Hello,
I think title of my question is self-explanatory. Of course I will provide additional info. I want to use depth map generated by D435 camera and odometry generated from T265 camera. My intention is to run realsense_ros
on Jetson Nano and then run rtabmap_ros
on remote computer connected via wifi.
Launch file run from Jetson Nano :
<launch>
<include file="$(find realsense2_camera)/launch/rs_d400_and_t265.launch"/>
<arg name="rate" default="5"/>
<arg name="approx_sync" default="true"/>
<arg name="rgbd_sync" default="true"/>
<!-- Use same nodelet used by Freenect/OpenNI -->
<group ns="camera">
<node if="$(arg rgbd_sync)" pkg="nodelet" type="nodelet" name="rgbd_sync" args="load rtabmap_ros/rgbd_sync camera_nodelet_manager" output="screen">
<param name="compressed_rate" type="double" value="$(arg rate)"/>
<param name="approx_sync" type="bool" value="$(arg approx_sync)"/>
<remap from="rgb/image" to="d400/color/image_raw"/>
<remap from="depth/image" to="d400/aligned_depth_to_color/image_raw"/>
<remap from="rgb/camera_info" to="d400/color/camera_info"/>
<remap from="rgbd_image" to="rgbd_image"/>
</node>
<node unless="$(arg rgbd_sync)" pkg="nodelet" type="nodelet" name="data_throttle" args="load rtabmap_ros/data_throttle camera_nodelet_manager" output="screen">
<param name="rate" type="double" value="$(arg rate)"/>
<param name="approx_sync" type="bool" value="$(arg approx_sync)"/>
<remap from="rgb/image_in" to="d400/color/image_raw"/>
<remap from="depth/image_in" to="d400/aligned_depth_to_color/image_raw"/>
<remap from="rgb/camera_info_in" to="d400/color/camera_info"/>
<remap from="rgb/image_out" to="throttled/rgb/image_rect_color"/>
<remap from="depth/image_out" to="throttled/depth_registered/image_raw"/>
<remap from="rgb/camera_info_out" to="throttled/rgb/camera_info"/>
</node>
</group>
</launch>
Note that I edited realsense-ros/realsense2_camera/launch/includes/nodelet.launch.xml
in a way, that depth and color stream runs at 640x480@6Hz
both for saving the bandwidth.
rtabmap.launch
run from remote computer (not robot):
<launch>
<!-- Convenience launch file to launch odometry, rtabmap and rtabmapviz nodes at once -->
<!-- For stereo:=false
Your RGB-D sensor should be already started with "depth_registration:=true".
Examples:
$ roslaunch freenect_launch freenect.launch depth_registration:=true
$ roslaunch openni2_launch openni2.launch depth_registration:=true -->
<!-- For stereo:=true
Your camera should be calibrated and publishing rectified left and right
images + corresponding camera_info msgs. You can use stereo_image_proc for image rectification.
Example:
$ roslaunch rtabmap_ros bumblebee.launch -->
<!-- Choose between depth and stereo, set both to false to do only scan -->
<arg name="stereo" default="false"/>
<arg if="$(arg stereo)" name="depth" default="false"/>
<arg unless="$(arg stereo)" name="depth" default="true"/>
<!-- Choose visualization -->
<arg name="rtabmapviz" default="false" />
<arg name="rviz" default="true" />
<!-- Localization-only mode -->
<arg name="localization" default="false"/>
<!-- sim time for convenience, if playing a rosbag -->
<arg name="use_sim_time" default="false"/>
<param if="$(arg use_sim_time)" name="use_sim_time" value="true"/>
<!-- Corresponding config files -->
<arg name="cfg" default="" /> <!-- To change RTAB-Map's parameters, set the path of config file (*.ini) generated by the standalone app -->
<arg name="gui_cfg" default="~/.ros/rtabmap_gui ...