zoukankan      html  css  js  c++  java
  • 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 就可以加载模型了。

  • 相关阅读:
    Hdu 1257 最少拦截系统
    Hdu 1404 Digital Deletions
    Hdu 1079 Calendar Game
    Hdu 1158 Employment Planning(DP)
    Hdu 1116 Play on Words
    Hdu 1258 Sum It Up
    Hdu 1175 连连看(DFS)
    Hdu 3635 Dragon Balls (并查集)
    Hdu 1829 A Bug's Life
    Hdu 1181 变形课
  • 原文地址:https://www.cnblogs.com/TIANHUAHUA/p/7881635.html
Copyright © 2011-2022 走看看