Re: Trying to achieve multiple turtlebot3 where each robot generates a map with rtab-map
Posted by
gabriele97 on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Trying-to-achieve-multiple-turtlebot3-where-each-robot-generates-a-map-with-rtab-map-tp10209p10228.html
Thank you for your answer.
I tried to set a different db name for each robot, specifying a different map_Frame_id and odom but it doesn't work. The second database is not created and from RVIZ I don't see anything.
This is the launch file:
<launch>
<!-- Initial position for the first turtlebot -->
<arg name="first_tb3_x_pos" default="-7.0"/> <!-- Between -7.0 and 7.0 ???-->
<arg name="first_tb3_y_pos" default=" -1.0"/> <!-- Between -7.0 and 7.0 ???-->
<!-- Initial position for the second turtlebot -->
<arg name="second_tb3_x_pos" default=" 7.0"/> <!-- Between -7.0 and 7.0 ???-->
<arg name="second_tb3_y_pos" default=" -1.0"/> <!-- Between -7.0 and 7.0 ???-->
<!-- Combine the inital positions into one argument for spawning -->
<arg name="init_pose_0" default="-x $(arg first_tb3_x_pos) -y $(arg first_tb3_y_pos) -z 0.0" />
<arg name="init_pose_1" default="-x $(arg second_tb3_x_pos) -y $(arg second_tb3_y_pos) -z 0.0" />
<!-- Open the AWS bookstore gazebo world -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(find multi_robot_exploration)/worlds/trying3.world"/>
<!-- <arg name="world_name" value="$(find multi_robot_exploration)/worlds/bookstore.world"/> -->
<!-- <arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/empty.world" /> -->
<arg name="paused" value="false"/>
<arg name="use_sim_time" value="true"/>
<arg name="gui" value="true"/>
<arg name="headless" value="false"/>
<arg name="debug" value="false"/>
</include>
<!-- Spawn tb3_0 and start it's robot descirption / robot state publisher -->
<group ns="tb3_0">
<param name="tf_prefix" value="tb3_0" />
<include file="$(find multi_robot_exploration)/launch/tb3_0.launch" >
<arg name="init_pose" value="$(arg init_pose_0)"/>
<arg name="robot_name" value="tb3_0" />
<arg name="model" default="$(env TURTLEBOT3_MODEL)" />
</include>
<!-- <arg name="database_path" default="~/.ros/rtabmap.db" /> -->
<node name="rtabmap" pkg="rtabmap_slam" type="rtabmap" output="screen">
<param name="databse_path" type="string" value="~/.ros/rtabmap.db" />
<param name="frame_id" type="string" value="tb3_0/base_link" />
<param name="odom_frame_id" type="string" value="tb3_0/odom" />
<param name="map_frame_id" type="string" value="tb3_0/map" />
<param name="subscribe_depth" type="bool" value="true" />
<param name="subscribe_laserScan" type="bool" value="false" />
<remap from="rgb/image" to="camera/rgb/image_raw" />
<remap from="depth/image" to="camera/depth/image_raw" />
<remap from="rgb/camera_info" to="camera/rgb/camera_info" />
<!-- <remap from="grid_map" to="gridgrid_map" /> -->
<remap from="grid_map" to="map" />
<param name="RGBD/ProximityBySpace" type="string" value="true"/>
<param name="RGBD/OptimizeFromGraphEnd" type="string" value="false"/>
<param name="Kp/MaxDepth" type="string" value="4.0"/>
<param name="Reg/Strategy" type="string" value="2"/>
<param name="Icp/CorrespondenceRatio" type="string" value="0.3"/>
<param name="Vis/MinInliers" type="string" value="5"/>
<param name="Vis/InlierDistance" type="string" value="0.1"/>
<param name="RGBD/AngularUpdate" type="string" value="0.1"/>
<param name="RGBD/LinearUpdate" type="string" value="0.1"/>
<param name="Rtabmap/TimeThr" type="string" value="700"/>
<param name="Mem/RehearsalSimilarity" type="string" value="0.30"/>
</node>
</group>
<!-- Spawn tb3_1 and start it's robot descirption / robot state publisher -->
<group ns="tb3_1">
<param name="tf_prefix" value="tb3_1" />
<include file="$(find multi_robot_exploration)/launch/tb3_1.launch" >
<arg name="init_pose" value="$(arg init_pose_1)"/>
<arg name="robot_name" value="tb3_1" />
<arg name="model" default="$(env TURTLEBOT3_MODEL)" />
</include>
<!-- <arg name="database_path" default="~/.ros/rtabmap2.db" /> -->
<node name="rtabmap" pkg="rtabmap_slam" type="rtabmap" output="screen">
<param name="databse_path" type="string" value="~/.ros/rtabmap2.db" />
<param name="frame_id" type="string" value="tb3_1/base_link" />
<param name="odom_frame_id" type="string" value="tb3_1/odom" />
<param name="map_frame_id" type="string" value="tb3_1/map" />
<param name="subscribe_depth" type="bool" value="true" />
<param name="subscribe_laserScan" type="bool" value="false" />
<remap from="rgb/image" to="camera/rgb/image_raw" />
<remap from="depth/image" to="camera/depth/image_raw" />
<remap from="rgb/camera_info" to="camera/rgb/camera_info" />
<remap from="grid_map" to="map" />
<param name="RGBD/ProximityBySpace" type="string" value="true"/>
<param name="RGBD/OptimizeFromGraphEnd" type="string" value="false"/>
<param name="Kp/MaxDepth" type="string" value="4.0"/>
<param name="Reg/Strategy" type="string" value="2"/>
<param name="Icp/CorrespondenceRatio" type="string" value="0.3"/>
<param name="Vis/MinInliers" type="string" value="5"/>
<param name="Vis/InlierDistance" type="string" value="0.1"/>
<param name="RGBD/AngularUpdate" type="string" value="0.1"/>
<param name="RGBD/LinearUpdate" type="string" value="0.1"/>
<param name="Rtabmap/TimeThr" type="string" value="700"/>
<param name="Mem/RehearsalSimilarity" type="string" value="0.30"/>
</node>
</group>
</launch>



If you want I can share the project with you so that you can see better what is happening and what I can improve. Thank you!