URDF文件創建,首先在工作空間 的src下,使用catkin_make packagename urdf創建一個urdf包。
這里我們新建一個urdf文件夾,在urdf中配置一個 .urdf文件。
在ROSwiki的urdf教程里,里面需要有一個xml文件,代碼如下:
1 <robot name="test_robot"> 2 <link name="link1" /> 3 <link name="link2" /> 4 <link name="link3" /> 5 <link name="link4" /> 6 7 <joint name="joint1" type="continuous"> 8 <parent link="link1"/> 9 <child link="link2"/> 10 </joint> 11 12 <joint name="joint2" type="continuous"> 13 <parent link="link1"/> 14 <child link="link3"/> 15 </joint> 16 17 <joint name="joint3" type="continuous"> 18 <parent link="link3"/> 19 <child link="link4"/> 20 </joint> 21 </robot>
這里表示一個三個關節,四個零件的結構。如圖:

urdf里面可以填寫很多不同的屬性,例如材料,形狀等等,代碼如下:
1 <link name="my_link"> 2 <inertial> 3 <origin xyz="0 0 0.5" rpy="0 0 0"/> 4 <mass value="1"/> 5 <inertia ixx="100" ixy="0" ixz="0" iyy="100" iyz="0" izz="100" /> 6 </inertial> 7 8 <visual> 9 <origin xyz="0 0 0" rpy="0 0 0" /> 10 <geometry> 11 <box size="1 1 1" /> 12 </geometry> 13 <material name="Cyan"> 14 <color rgba="0 1.0 1.0 1.0"/> 15 </material> 16 </visual> 17 18 <collision> 19 <origin xyz="0 0 0" rpy="0 0 0"/> 20 <geometry> 21 <cylinder radius="1" length="0.5"/> 22 </geometry> 23 </collision> 24 </link>

之后,我們需要在同package里配置launch文件夾,在文件夾里創建 .launch文件。
這個文件同為xml文件,需要基本配置為:
<launch> <arg name="model" /> <arg name="gui" default="False" /> <param name="robot_description" textfile="$(find xxxx)/urdf/xxx.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>
這里的robot_discription里 xxx的部分是需要修改的。
find后面跟的xxxx是你的package名字,xxx是你的 .urdf文件的文件名。
最后面的rviz,可以盜用ros的教程中的rviz文件。
修改好了之后,編譯一下(在工作空間的根目里,運行catkin_make)。
編譯好后,運行(在linux中雙擊tab鍵會自動補全文件名稱, 如果無法補全,說明文件不存在或者拼寫有錯誤)
roslaunch package xxx.launch gui:=true
這里的package是你自己的包的名稱,xxx是你的.launch文件的名字。
運行后,會打開rviz,add你創建的模型,就會顯示啦。
首先,我們要在安裝Solideworks插件。
下載地址:http://wiki.ros.org/sw_urdf_exporter
安裝過程中會自動檢測solideworks的安裝路徑,一直下一步就可以拉。
此前solideworks要關閉。
打開solideworks。添加插件。

選擇sw2urdf。

打開零件或裝配體,有的人會直接在菜單欄中顯示file,有的會在 >工具 中顯示file。選擇EXPORT AS URDF。

輸出成URDF,可以選擇URDF配置。

這里的link component就是添加相應的零件圖。
在零件圖中,界面如下圖。

用來配置相關零件質量,碰撞等。
在裝配體中的Export to urdf中選擇preview, 會有如下窗口。

這里就會配置你的joint。其中joint type可以選擇關節類型
定義關節類型,可選項有:
-
revolute - 旋轉關節,其極限位置由 upper and lower limits 決定
-
continuous - 旋轉關節,無位置限制
-
prismatic - 滑動關節,其極限位置由 upper and lower limits 決定
-
fixed - 虛擬關節,關節不可運動
-
floating - 六自由度關節
-
planar - 平面關節
里面的設置大家可以自己嘗試。
確定之后,就會進入下一個配置實體屬性的界面,

這里可以設置皮膚,初始位置,材料等特性。 點擊Finish,在文件名中添加你的package的想要的名字。
最后保存好相應的文件夾。
這里面的項目名稱就是你保存的文件名。把文件夾打開,里面會有自帶的Cmakelist,package,launch文件夾,mesh,urdf和texture文件夾。
有一些文件時需要修改的。在launch文件中,display.launch文件部分內容是需要修改的,其中就有urdf的位置一行。
原有代碼如下:
<launch> <arg name="model" /> <arg name="gui" default="False" /> <param name="robot_description" textfile="$(find test)/robots/test.urdf" /> <param name="use_gui" value="$(arg gui)" /> <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" /> <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" /> <node name="rviz" pkg="rviz" type="rviz" args="-d $(find test)/urdf.rviz" /> </launch>
將
<param name="robot_description" textfile="$(find test)/robots/test.urdf" /> 改為 <param name="robot_description" textfile="$(find test)/urdf/test.urdf" />
還需要修改一下rviz的文件才可以使用rviz打開模型。rviz文件可以改為
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find test)/urdf.rviz" /> 改為 <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.rviz" />
修改完畢,保存后,直接在terminal中運行 roslaunch packagename display.launch 就會打開rviz,點擊添加 robotmodle 就可以加載模型了。
