ROS入门(二) Solideworks生成URDF 并导入rviz

  • Post author:
  • Post category:其他


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

转载于:https://www.cnblogs.com/TIANHUAHUA/p/7881635.html