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視頻和書籍資料等你領取!!!