具体功能包见:https://github.com/suyunzzz/ROS_homework.git
所需文件:
1)launch文件,如下
<launch>
<!--view_wheel_chair_with_laser_gazebo.launch-->
<!-- 设置launch文件的参数 -->
<arg name="world_name" value="$(find mbot_gazebo)/worlds/playground.world"/>
<arg name="paused" default="false"/>
<arg name="use_sim_time" default="true"/>
<arg name="gui" default="true"/>
<arg name="headless" default="false"/>
<arg name="debug" default="false"/>
<!-- 运行gazebo仿真环境 -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(arg world_name)" />
<arg name="debug" value="$(arg debug)" />
<arg name="gui" value="$(arg gui)" />
<arg name="paused" value="$(arg paused)"/>
<arg name="use_sim_time" value="$(arg use_sim_time)"/>
<arg name="headless" value="$(arg headless)"/>
</include>
<!-- 加载机器人模型描述参数 -->
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find wheel_chair_description)/urdf/gazebo/wheel_chair_with_laser_gazebo.xacro'" />
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" output="screen" >
<param name="publish_frequency" type="double" value="50.0" />
</node>
<!-- 在gazebo中加载机器人模型-->
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
args="-urdf -model mrobot -param robot_description"/>
</launch>
2)根据launch文件,我们还需要一个机器人描述文件wheel_chair_with_laser_gazebo.xacro,如下,这个文件的主要功能是搭建一个框架,留出接口,可以方便使用人员快速利用已有的资源(比如传感器仿真文件等),进行开发,只需要在该文件中include并且设置好位置以及坐标系名称即可。此文件中的
<child link="laser_link"/>
</joint>
<xacro:rplidar prefix="laser"/>
都必须是laser,具体愿意目前不清楚。
<?xml version="1.0"?>
<robot name="arm" xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:include filename="$(find wheel_chair_description)/urdf/gazebo/wheel_chair_base_gazebo.xacro" />
<xacro:include filename="$(find wheel_chair_description)/urdf/sensors/lidar_gazebo.xacro" />
<xacro:property name="lidar_offset_x" value="0" />
<xacro:property name="lidar_offset_y" value="0" />
<xacro:property name="lidar_offset_z" value="${0.5*base_thickness+0.03}" />
<wheel_chair_base/>
<!-- lidar -->
<joint name="lidar_joint" type="fixed">
<origin xyz="${lidar_off