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

  • 相关阅读:
    过滤选择器——简单过滤选择器
    层次选择器
    选择器——2——基本选择器
    This is a secret
    iframe加载问题
    懒加载
    biubiubiu
    使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性
    HTML中&nbsp; &ensp; &emsp; &thinsp;等6种空白空格的区别
    ASP.NET 4.0的ClientIDMode属性
  • 原文地址:https://www.cnblogs.com/TIANHUAHUA/p/7881635.html
Copyright © 2011-2022 走看看