一、创建机器人仿真模型
1. 新建文件夹:thd_robot_description
# 功能包依赖urdf xacro
catkin_create_pkg thd_robot_description urdf xacro
打开上面的文件夹,新建文件夹【config、launch、meshes、rviz、urdf】
2. 创建启动文件 launch :robot_urdf.launch
启动文件用于打开rviz 可视化界面,显示绘制的机器人模型。。
<launch>
<param name="robot_description" textfile="$(find thd_robot_description)/urdf/neor_mini_gazebo_VLP16.urdf" />
<arg name = "gui" value = "true" />
<param name="use_gui" value="$(arg gui)"/>
<node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find thd_robot_description)/rviz/thd_gazebo_sensors_rviz_VLP16.rviz" required="true"/>
</launch>
3. rviz 文件:thd_gazebo_sensors_rviz_VLP16.rviz
4. 建立小车模型: neor_mini_gazebo_VLP16.urdf
在这个文件里面需要修改自己的文件名字和路径,还有需要 官方写的velodyne_simulator仿真的文件。
5. 效果展示
到现在这一步 就可以运行查看小车的效果,展示:
roslaunch thd_robot_description robot_urdf.launch
二、创建Gazebo 仿真环境
1. 新建文件夹:thd_robot_gazebo
catkin_create_pkg thd_robot_gazebo
打开上面的文件夹,新建文件夹【launch 、worlds】
2. 创建启动仿真环境的 launch 文件 :thd_gazebo.launch
<launch>
<!-- 设置launch文件的参数 -->
<arg name="world_name" value="$(find thd_robot_gazebo)/worlds/iscas_museum.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>
<!-- 加载机器人模型描述参数 -->
<!-- Load the robot description -->
<param name="robot_description" command="cat $(find thd_robot_description)/urdf/neor_mini_gazebo_VLP16.urdf"/>
<!-- 运行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>
引入一个自己创建的world
引入一个空 world
加载机器人的仿真模型 urdf 文件
3. 创建仿真环境world :
4. 加载仿真环境
roslaunch thd_robot_gazebo thd_gazebo.launch
5. 加载键盘控制节点
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
Waiting for subscriber to connect to /cmd_vel
查看rostopic list 发现没有 /cmd_vel
解决办法,校对joint_name的关节名是否一致,,要在urdf 中添加cmd_vel
自己尝试这个方法还是不太行, 会的东西太少了,还是直接上别人的代码吧
新建一个catkin_thd 工作空间 ,,把 neor_mini 代码拷贝到src 文件夹下面。
参考ReadMe.pdf 文件内容运行代码即可得到对应的结果
下面是运行的lio-sam 建图的结果
录制数据包(rosbag record -a ),最后得到的一个结果