RViz Showing wrong postion of Turtlebots spawned in Gazebo
I have spawned two turtlebots in Gazebo ROS Neotic. They are spawned correctly alongwith robot description. I can view them and their maps from Open Karto SLAM. The problem is that the positions of both the robots is overlapped in RVIZ although they are far way from each other in Gazebo Here is the turtlebot.launch file
<launch>
<arg name="robot0_ns" value="tb1"/>
<arg name="robot1_ns" value="tb2"/>
<arg name="robot0_x" value="2.0"/>
<arg name="robot0_y" value="10.0"/>
<arg name="robot0_z" value="0.0"/>
<arg name="robot0_R" value="0.0"/>
<arg name="robot0_P" value="0.0"/>
<arg name="robot0_Y" value="3.14"/>
<arg name="robot1_x" value="20.0"/>
<arg name="robot1_y" value="15.0"/>
<arg name="robot1_z" value="0.0"/>
<arg name="robot1_R" value="0.0"/>
<arg name="robot1_P" value="0.0"/>
<arg name="robot1_Y" value="3.14"/>
<env name="GAZEBO_RESOURCE_PATH" value="$(find maslam_rosbot)/robots/turtlebot/meshes"/>
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="gui" value="false"/>
<arg name="use_sim_time" value="true"/>
<arg name="debug" value="0"/>
<arg name="world_name" value="$(find maslam_rosbot)/worlds/willowgarage_modified.world"/>
<arg name="verbose" value="true"/>
</include>
<!-- ********************* tb1 *************** -->
<group ns="/$(arg robot0_ns)">
<arg name="robot_name" value="$(arg robot0_ns)"/>
<include file="$(find maslam_rosbot)/launch/robot.launch.xml">
<arg name="robot_name" value="$(arg robot0_ns)"/>
<arg name="init_pose" value="-x 10.0 -y 20.0 -z 0.0 -R 0.0 -P 0.0 -Y 3.1415"/>
</include>
<node pkg="slam_karto_g2o" type="slam_karto_g2o" name="slam_karto_g2o" output="screen">
<remap from="scan" to="/$(arg robot0_ns)/base_scan"/>
<rosparam command="load" file="$(find maslam_rosbot)/param/turtlebot/$(arg robot0_ns)/mapping_karto_g2o.yaml" />
<param name="odom_frame" value="$(arg robot0_ns)/odom"/>
<param name="map_frame" value="map"/>
<param name="base_frame" value="$(arg robot0_ns)/base_footprint"/>
<param name="namespace" value="$(arg robot0_ns)"/>
<param name="delta" value="0.05"/>
</node>
</group>
<!-- ********************* tb2 *************** -->
<group ns="/$(arg robot1_ns)">
<arg name="robot_name" value="$(arg robot1_ns)"/>
<include file="$(find maslam_rosbot)/launch/robot.launch.xml">
<arg name="robot_name" value="$(arg robot1_ns)"/>
<arg name="init_pose" value="-x 20.0 -y 20.0 -z 0.0 -R 0.0 -P 0.0 -Y 3.1415"/>
</include>
<node pkg="slam_karto_g2o" type="slam_karto_g2o" name="slam_karto_g2o" output="screen">
<remap from="scan" to="/$(arg robot1_ns)/base_scan"/>
<rosparam command="load" file="$(find maslam_rosbot)/param/turtlebot/$(arg robot1_ns)/mapping_karto_g2o.yaml" />
<param name="odom_frame" value="$(arg robot1_ns)/odom"/>
<param name="map_frame" value="map"/>
<param name="base_frame" value="$(arg robot1_ns)/base_link"/>
<param name="namespace" value="$(arg robot1_ns)"/>
<param name="delta" value="0.05"/>
</node>
</group>
<!-- ********************* Robot 2 *************** -->
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find maslam_rosbot)/robots/turtlebot/rviz_config/single.rviz">
</node>
</launch>
And the robot.launch.xml
<launch>
<arg name="robot_name"/>
<arg name="init_pose"/>
<param name="tf_prefix" type="string" value="$(arg robot_name)"/>
<param name="robot_description" command="$(find xacro)/xacro '$(find maslam_rosbot)/robots/turtlebot/urdf/$(arg robot_name)/kobuki_standalone.urdf.xacro'"/>
<node pkg="gazebo_ros" type="spawn_model" name="spawn_$(arg robot_name)"
args="$(arg init_pose) -unpause -urdf -param robot_description -model $(arg robot_name) -robot_namespace $(arg robot_name)" respawn="false">
</node>
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" respawn="false" output="screen"/>
</launch>
Asked by farhan on 2023-06-15 02:59:54 UTC
Comments