初学ROS(一)之URDF
可能大部分人都像我这样穷学生没钱买ROS支持的机器人,不过ROS还是很Nice的考虑到了这一群体,提供了模拟器支持。(明明是为了更快速的软件开发,喂!)
本想从ROS网站的培训教程开始http://wiki.ros.org/urdf/Tutorials开始的,不过本着实践为本的目的,我们还是以《Learning ROS for Robostic Programming》为基础吧。
参考文献
2. 《Learning ROS for Robostic Programming》
软件环境
ubuntu 16.04 lts
ros kinetic full package
准备工作
安装urdf_tutorial包
sudo apt-get install ros-kinetic-urdf-tutorial roscore rosrun rviz rviz 新建工作区和包 mkdir -p ~/catkin_ws/src #创建catkin工作环境 cd ~/catkin_ws/src #来到src目录 cd .. #来到catkin_ws目录下 catkin_init_workspace catkin_make 更新环境配置 source devel/setup.bash 创建Rospackage命名为smartcar:在src目录下面执行以下操作 catkin_create_pkg smartcar std_msgs rospy roscpp urdf #创建这些格式的目录 在smartcar文件夹中创建launch和urdf分别来存放.launch文件和.urdf文件
当然,没有运行roscore你的rviz也无法启动。不过如果错误显示你的rviz找不到执行文件的话
学习写urdf有几个地方需要注意
- 一定要记住它使用的是右手坐标系。x正方向朝左, y 正方向向内, z轴正方向朝上
- 构建树结构, 即写link和joint
建模使用参数
- <link> tag描述各个部件;
- <joint> tag描述各个关节;
eg:
- <parent>和<child>描述关节连接的部件;
- <visual>
- <inertial>
- <geometry>tag 用来描述模块的形状和大小;
- <origin>tag用来描述模块的位置;
- 使用<material> tag并且设置<color
- <material
代码示例:第一个部件必须是base_link非常重要
<robot name="test_robot"> <link name="base_link"> <visual> <geometry> <box size="0.2 .3 .1"/> </geometry> <origin rpy="0 0 0" xyz="0 0 0.05"/> <material name="white"> <color rgba="1 1 1 1"/> </material> </visual> </link> <link name="wheel_1"> <visual> <geometry> <cylinder length="0.05" radius="0.05"/> </geometry> <origin rpy="0 1.5 0" xyz="0.1 0.1 0"/> <material name="black"> <color rgba="0 0 0 1"/> </material> </visual> </link> <link name="wheel_2"> <visual> <geometry> <cylinder length="0.05" radius="0.05"/> </geometry> <origin rpy="0 1.5 0" xyz="-0.1 0.1 0"/> <material name="black"/> </visual> </link> <link name="wheel_3"> <visual> <geometry> <cylinder length="0.05" radius="0.05"/> </geometry> <origin rpy="0 1.5 0" xyz="0.1 -0.1 0"/> <material name="black"/> </visual> </link> <link name="wheel_4"> <visual> <geometry> <cylinder length="0.05" radius="0.05"/> </geometry> <origin rpy="0 1.5 0" xyz="-0.1 -0.1 0"/> <material name="black"/> </visual> </link> <joint name="joint_base_wheel1" type="fixed"> <parent link="base_link"/> <child link="wheel_1"/> </joint> <joint name="joint_base_wheel2" type="fixed"> <parent link="base_link"/> <child link="wheel_2"/> </joint> <joint name="joint_base_wheel3" type="fixed"> <parent link="base_link"/> <child link="wheel_3"/> </joint> <joint name="joint_base_wheel4" type="fixed"> <parent link="base_link"/> <child link="wheel_4"/> </joint> </robot>
check_urdf 01_skeleton.urdf
robot name is: test_robot ---------- Successfully Parsed XML --------------- root Link: base_link has 4 child(ren) child(1): wheel_1 child(2): wheel_2 child(3): wheel_3 child(4): wheel_4
现在通过如下命令,你就通过rviz查看你的小车模型啦。
roslaunch smartcar_description base.urdf.rviz.launch gui:=true
文章来源: ROS之初学URDF