ROS(五):创建简单的机器人模型smartcar(indigo版本)

xiaoxiao2021-02-28  19

什么叫URDF?在rviz中是,经常会出现一个error,就是不存在URDF文件.Unified Robot Description Format,统一机器人描述格式,简称为URDF。ROS中的urdf功能包包含一个URDF的C++解析器,URDF文件使用XML格式描述机器人模型。

1.安装urdf_tutorial,可以使用其中的例子

sudo apt-get install ros-indigo-urdf-tutorial //安装liburdfdom-tools,提供对urdf文件的检查 sudo apt-get install liburdfdom-tools //创建Ros包 catkin_create_pkg smartcar_description std_msgs rospy roscpp urdf

2.智能车尺寸数据

3.建立urdf文件 在smartcar_description文件夹下建立urdf文件夹 $mkdir -p urdf ,创建智能车的描述文件smartcar.urdf,描述代码如下:

<?xml version="1.0"?> <robot name="smartcar"> //link name <link name="base_link"> <visual> <geometry> //这个上面图片的尺寸相对应 <box size="0.25 .16 .05"/> </geometry> <origin rpy="0 0 1.57075" xyz="0 0 0"/> <material name="blue"> //颜色设定为0-1,这个机器人设定成蓝色,a指透明度,0就不可见了,因为指透明的状态 <color rgba="0 0 .8 1"/> </material> </visual> </link> //四个轮子的具体设定 <link name="right_front_wheel"> <visual> <geometry> <cylinder length=".02" radius="0.025"/> </geometry> <material name="black"> <color rgba="0 0 0 1"/> </material> </visual> </link> <joint name="right_front_wheel_joint" type="continuous"> <axis xyz="0 0 1"/> <parent link="base_link"/> <child link="right_front_wheel"/> <origin rpy="0 1.57075 0" xyz="0.08 0.1 -0.03"/> <limit effort="100" velocity="100"/> <joint_properties damping="0.0" friction="0.0"/> </joint> <link name="right_back_wheel"> <visual> <geometry> <cylinder length=".02" radius="0.025"/> </geometry> <material name="black"> <color rgba="0 0 0 1"/> </material> </visual> </link> <joint name="right_back_wheel_joint" type="continuous"> <axis xyz="0 0 1"/> <parent link="base_link"/> <child link="right_back_wheel"/> <origin rpy="0 1.57075 0" xyz="0.08 -0.1 -0.03"/> <limit effort="100" velocity="100"/> <joint_properties damping="0.0" friction="0.0"/> </joint> <link name="left_front_wheel"> <visual> <geometry> <cylinder length=".02" radius="0.025"/> </geometry> <material name="black"> <color rgba="0 0 0 1"/> </material> </visual> </link> <joint name="left_front_wheel_joint" type="continuous"> <axis xyz="0 0 1"/> <parent link="base_link"/> <child link="left_front_wheel"/> <origin rpy="0 1.57075 0" xyz="-0.08 0.1 -0.03"/> <limit effort="100" velocity="100"/> <joint_properties damping="0.0" friction="0.0"/> </joint> <link name="left_back_wheel"> <visual> <geometry> <cylinder length=".02" radius="0.025"/> </geometry> <material name="black"> <color rgba="0 0 0 1"/> </material> </visual> </link> <joint name="left_back_wheel_joint" type="continuous"> <axis xyz="0 0 1"/> <parent link="base_link"/> <child link="left_back_wheel"/> <origin rpy="0 1.57075 0" xyz="-0.08 -0.1 -0.03"/> <limit effort="100" velocity="100"/> <joint_properties damping="0.0" friction="0.0"/> </joint> <link name="head"> <visual> <geometry> <box size=".02 .03 .03"/> </geometry> <material name="white"> <color rgba="1 1 1 1"/> </material> </visual> </link> <joint name="tobox" type="fixed"> <parent link="base_link"/> <child link="head"/> <origin xyz="0 0.08 0.025"/> </joint> </robot>

4.建立launch命令文件

<launch> <arg name="model" /> <arg name="gui" default="False" /> <param name="robot_description" textfile="$(find smartcar_description)/urdf/smartcar.urdf" /> <param name="use_gui" value="$(arg gui)"/> <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" > </node> <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" /> <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.rviz" /> </launch>

老版本使用的是urdf.vcg,如果报找不到.vcg文件,通常是因为版本不匹配的问题.

5.效果演示

roslaunch smartcar_description base.urdf.rviz.launch gui:=true

一个简陋的小车出现啦O(∩_∩)O哈哈~ 上面的代码对应显示的上图应该就很好理解了O(∩_∩)O哈哈~

参考博客:https://www.ncnynl.com/archives/201609/842.html

转载请注明原文地址: https://www.6miu.com/read-1700299.html

最新回复(0)