ROS中阶笔记(二):机器人系统设计—URDF机器人建模node
官网:http://wiki.ros.org/urdf/XML/model算法
一个完整的机器人模型,由一系列< link >和< joint >组成shell
<robot name="pr2"> <link> ... </link> <link> ... </link> <link> ... </link> <joint> .... </joint> <joint> .... </joint> <joint> .... </joint> </robot>
官网:http://wiki.ros.org/urdf/XML/link安全
<link name="my_link"> <inertial> <origin xyz="0 0 0.5" rpy="0 0 0"/> <mass value="1"/> <inertia ixx="100" ixy="0" ixz="0" iyy="100" iyz="0" izz="100" /> </inertial> <visual> <origin xyz="0 0 0" rpy="0 0 0" /> <geometry> <box size="1 1 1" /> </geometry> <material name="Cyan"> <color rgba="0 1.0 1.0 1.0"/> </material> </visual> <collision> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <cylinder radius="1" length="0.5"/> </geometry> </collision> </link>
包括3个子标签微信
link还有一个比较关键的部分,就是坐标系机器学习
Link origin 是起始坐标,整个link建立的时候都是相对 Link origin坐标系建立的;学习
官网:http://wiki.ros.org/urdf/XML/joint优化
joint就是用来链接两个具体的link部分的;ui
关节类型 | 描述 |
---|---|
continuous | 旋转关节,能够围绕单轴无限旋转 |
revolute | 旋转关节,相似于continuous,可是有旋转的角度极限 |
prismatic | 滑动关节,沿某一轴线移动的关节,带有位置极限 |
planar | 平面关节,容许在平面正交方向上平移或者旋转 |
floating | 浮动关节,容许进行平移、旋转运动 |
fixed | 固定关节,不容许运动的特殊关节 |
<joint name="my_joint" type="floating"> <origin xyz="0 0 1" rpy="0 0 3.1416"/> <parent link="link1"/> <child link="link2"/> <calibration rising="0.0"/> <dynamics damping="0.0" friction="0.0"/> <limit effort="30" velocity="1.0" lower="-2.2" upper="0.7" /> <safety_controller k_velocity="10" k_position="15" soft_lower_limit="-2.0" soft_upper_limit="0.5" /> </joint>
下面图中,蓝色关节表示出一个运动的轴,蓝色关节是能够围绕蓝色的轴旋转的,也就是child这个link是能够围绕joint上下旋转。插件
joint是链接两个link,须要分一个主次关系,主关节是parent link,子关节是child link, 在xml形式的描述中这个两个 link是必须存在的
子标签:
第一步,进入工做空间中的src 功能包目录下,
$ cd ./catkin_ws/src/
第二步,建立一个机器人建模的功能包
$ catkin_create_pkg mbot_description urdf xacro # 机器人模型、描述文件在ROS里,一般的以 机器人名_description # 而且须要依赖urdf功能包,解析模型 和 xacro(优化urdf用的)依赖
第三步,在mbot_description功能包下建立几个不一样做用的文件夹,以下图所示:
主要是加载urdf 并在rviz中显示
显示机器人模型,基本上修改第一行 urdf文件的路径,便可;
下面display_mbot _base_urdf.launch文件是在rviz中显示机器人的一种固定形态
<launch> <!-- param是要加载ros的一个参数:robot_description (描述机器人的具体模型)--> <param name="robot_description" textfile="$(find mbot_description)/urdf/mbot_base.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="state_publisher" /> <!-- 运行rviz可视化界面 --> <node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_urdf.rviz" required="true" /> </launch>
在config文件夹下,建立.rviz 配置文件,保存。
在urdf文件夹下,建立.urdf文件,保存。
第一步:使用圆柱体建立一个车体模型
第二步:使用圆柱体建立左侧车轮
第三步:使用圆柱体建立右侧车轮
第四步:使用球体建立先后支撑轮
第五步:建立传感器——摄像头camera、激光雷达laser、Kinect;
关于Kinect,在meshes文件夹下,建立建立纹理描述文件
在urdf文件夹下,执行 urdf_to_graphiz+要检查的urdf文件
$ urdf_to_graphiz mbot_with_kinect.urdf
会在当前路径下建立一个pdf文件,把机器人全部的link和joint的关系分析出来;
注意:在运行launch文件时,URDF文件中不能有中文注释,删除掉中文注释,否正会报错误;
$ roslaunch mbot_description display_mbot_base_urdf.launch
问题一:启动错误
[ERROR] [1589109861.881993]: Could not find the GUI, install the 'joint_state_publisher_gui' package
$ sudo apt-get install ros-kinetic-joint-state-publisher-gui
问题二:警告
这时候可能还会存在一个警告,若是有的话把launch文件中的joint_state_publisher用joint_state_publisher_gui所有替换掉,便可。
官方教程:http://wiki.ros.org/cn/urdf
http://wiki.ros.org/urdf/Tutorials
ARM端安装ROS:http://wiki.ros.org/indigo/Installation/UbuntuARM
微信公众号:喵哥解说 公众号介绍:主要研究机器学习、计算机视觉、深度学习、ROS等相关内容,分享学习过程当中的学习笔记和心得!期待您的关注,欢迎一块儿学习交流进步!同时还有1200G的Python视频和书籍资料等你领取!!!