ROS入門(二) Solideworks生成URDF 並導入rviz


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 就可以加載模型了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM