Gazebo-Ros搭建小车和场景并运行slam算法进行建图1 – 搭建机器人模型
1.创建工作空间
$ mkdir -p test_ws/src
$ cd cd test_ws/src/
创建机器人描述功能包,并添加依赖
$ catkin_create_pkg myrobot_description urdf xacro
$ cd myrobot_description
$ mkdir urdf
$ mkdir launch
$ mkdir config
2.创建机器人描述文件my_robot.urdf
$ cd urdf
使用你熟悉的编辑器创建my_robot.urdf文件
$ gedit my_robot.urdf
加入以下内容:(使用时请删除注释,第一行要定格写,否则会检测xml格式出错)
<?xml version="1.0" ?>
<robot name="my_robot">
<!-- 机器人主体 圆柱体 -->
<link name="base_link">
<visual>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
<geometry>
<cylinder length="0.16" radius="0.20" />
</geometry>
<material name="orange">
<color rgba="1 0.4 0 1"/>
</material>
</visual>
</link>
<!-- 左轮 圆柱体,连接到机器人主体上 -->
<joint name="left_wheel_joint" type="continuous">
<origin xyz="0 0.19 -0.05" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="left_wheel_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="left_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.06" length = "0.025"/>
</geometry>
</visual>
</link>
<!-- 右轮 圆柱体,连接到机器人主体上 -->
<joint name="right_wheel_joint" type="continuous">
<origin xyz="0 -0.19 -0.05" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="right_wheel_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="right_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.06" length = "0.025"/>
</geometry>
</visual>
</link>
<!-- 支撑轮前轮 圆柱体,连接到机器人主体上 -->
<joint name="front_caster_joint" type="continuous">
<origin xyz="0.18 0 -0.095" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="front_caster_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="front_caster_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<sphere radius="0.015" />
</geometry>
</visual>
</link>
<!-- 支撑轮后轮 圆柱体,连接到机器人主体上 -->
<joint name="back_caster_joint" type="continuous">
<origin xyz="-0.18 0 -0.095" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="back_caster_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="back_caster_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<sphere radius="0.015" />
</geometry>
</visual>
</link>
<!-- 相机 长方体,连接到机器人主体上 -->
<link name="camera_link">
<visual>
<origin xyz=" 0 0 0 " rpy="0 0 0" />
<geometry>
<box size="0.02 0.05 0.03" />
</geometry>
<material name="black">
<color rgba="0 0 0 0.95"/>
</material>
</visual>
</link>
<joint name="camera_joint" type="fixed">
<origin xyz="0.17 0 0.095" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="camera_link"/>
</joint>
<!-- 雷达 正方体,连接到机器人主体上 -->
<link name="laser_link">
<visual>
<origin xyz=" 0 0 0 " rpy="0 0 0" />
<geometry>
<cylinder length="0.05" radius="0.05"/>
</geometry>
<material name="black"/>
</visual>
</link>
<joint name="laser_joint" type="fixed">
<origin xyz="0 0 0.105" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="laser_link"/>
</joint>
</robot>
3.创建launch文件,利用rviz查看创建的机器人模型
$ cd ../launch
使用你熟悉的编辑器创建display_my_robot.launch文件
$ gedit display_my_robot.launch
加入以下内容:
<launch>
<!-- 加载的参数名字叫robot_description,具体内容是urdf相关模型的路径 -->
<param name="robot_description" textfile="$(find myrobot_description)/urdf/my_robot.urdf" />
<!-- 设置GUI参数,显示关节控制插件 -->
<param name="use_gui" value="true"/>
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<!-- 运行rviz可视化界面,保存每次打开之后的相关插件,保存到config文件夹下面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find myrobot_description)/config/mbot_urdf.rviz" required="true" />
</launch>
4.编译,运行luanch文件查看机器人模型
进入到工作空间的根目录(从上一步过来会在 test_ws/src/myrobot_description/launchm目录下,要回到test_ws下进行编译)
$ cd ../../..
$ catkin_make
$ source devel/setup.bash
如果没有问题,运行如下命令可打开rviz
$ roslaunch myrobot_description display_my_robot.launch
第一次打开 正常显示还需要(如下图)
1.FixedFrame 选择base_link;2.左下角 Add 选择RobotModel
关闭rviz时,在弹出窗口选择保存配置,下次打开就不需要重复上述步骤了
此时会看到机器人: