• ROS中3D机器人建模(一)


    一,机器人建模的ROS软件包

    *urdf : 机器人建模最重要的ros软件包是urdf软件包。这个软件包包含一个用于统一机器人描述格式(URDF)的C++解析器,它是一个表示机器人模型的XML文件,还有一些其他不同的组件来组成urdf:

    *urdf_parser_plugin : 这个软件包实现了写入URDF数据结构的方法:

    *urdfdom_headers : 此组件提供了使用urdf解析器的核心数据结构头文件:

    *collada_parser : 这个软件包通过解析Collada文件来填充数据结构:

    *urdfdom : 此组件通过解析URDF文件来填充数据结构:

    *collada-dom : 这是一个独立组件,可以使用Maya,Blender和Softtimage等3D计算机图形软件对Collada文档进行转换。

    我们可以使用URD来定义机器人模型,传感器和工作环境,使用URDF解析器对其进行解析。我们只能使用URDF描述一个类似树状连杆结构机器人,也就是说,机器人会有刚性连杆,并通过关节连接,我们无法用URDF表达柔性连杆。

    URDF由特殊的XML标签构成,我们可以使用解析器程序解析这些XML标签以进一步处理。

    *joint_state_publisher : 在使用URDF设计机器人模型时,该软件非常有用。这个软件包包含一个名为joint_state_publisher的节点,该节点读取机器人模型描述,查找所有关节,并利用GUI滑动条将关节值向所有非固定关节发布。

    *kdl_parser : 运动学和运动学库(Kinematic and Dynamics,KDL)是一个ROS软件包,它包含解析器工具,可以从URDF表示中构建KDL树,运动学树可以用来发布关节的状态,也可以用来表示机器人的正/逆运动学。

    *robot_state_publisher : 该软件包可以读取当前机器人的关节状态,并发布由URDF构建的运动学树中每个机器人连杆的3D姿态。

    *xacro : Xacro是XML Macro 的缩写,xacro可理解为URDF加上若干插件。xacro包含一些插件,让URDF变得更简短。可读性更好,并且可以用于构建复杂的机器人描述,利用ROS相应的工具,可以在需要的时候将xacro转换成URDF。

    二,利用URDF理解机器人建模

    我们已经讨论了urdf软件包,将进一步研究URDF XML标签,它有助于机器人建模,我们必须创建一个文件,并编写机器人的每个连杆和关节之间的连接关系,并用.urdf扩展名保存文件。

    下面是组成URDF机器人模型常用的URDF标签:

    *link : link标签表示机器人的单个连杆。使用此标签,我们可以为机器人的一个连杆及其属性建模。该模型包括大小、形状和颜色,甚至可以导入一个3D网络来表示机器人的连杆。我们还可以提供连杆的动态属性,如惯性属性和碰撞属性。

    语法如下:

    <link name ="<name of the link>">

    <inertial>......</inertial>

       <visual> ......</visual>

       <collision> ......</collision>

    </link>

    *joint : joint标签表示机器人关节。我们可以指定关节的运动学和动力学,并设定关节运动和速度的极限。

    joint标签支持不同类型的关节,如旋转关节(revolute),无限位旋转关节(continuous),滑动关节(prismatic),固定关节(fixed),浮动关节(floating)和平面关节(planar).

    语法如下:

    <joint name = "<name of the joint>">

      <parent link="link1"/>

      <child link="link2"/>

      <calibration .... />

       <dynamics damping .... />

      <limit effort .... />

    </joint>

    在两个连杆之间会形成一个URDF关节。第一个被称为父连杆(parent),第二个被称为子连杆(child).

    *robot : 这个标签封装了用URDF表示的整个机器人模型。在robot标签内,我们可以定义机器人的名字、各个连杆,以及机器人的各个关节。

    语法如下:

    <robot name= "<name of the robot>"

       <link> .... </link>

       <link> .... </link>

       <joint> .... </joint>

       <joint> .... </joint>

    </robot>

    *gazebo : 当我们在URDF中包含Gazebo仿真器的仿真参数时,使用这个标签。我们可以用这个标签包含gazebo插件、gazebo材料属性等。

    以下是一个使用gazebo标签的例子:

    <gazebo reference="link_1">

        <material>Gazebo/Black</material>

    </gazebo>

    三,为机器人创建ROS软件包

    为机器人创建URDF文件之前,让我们在catkin_ws的工作空间src目录下创建一个ROS软件包来保存机器人模型:

    $ catkin_create_pkg mastering_ros_robot_description_pkg roscpp tf geometry_msgs urdf rviz xacro

    该软件包主要依赖于urdf和xacro软件包

    而我是直接从git库中下载的完整的软件包

    $ git clone https://github.com/jocacace/mastering_ros_robot_description_pkg.git

  • 相关阅读:
    JAVA-初步认识-第九章-抽象类-特点
    JAVA-初步认识-第九章-抽象类-概述
    JAVA-初步认识-第九章-面向对象-final关键字
    JAVA-初步认识-第九章-继承-子父类中的构造函数-子类的实例化过程-内存图解
    JAVA-初步认识-第九章-继承-子父类中的构造函数-子类的实例化过程-细节
    JAVA-初步认识-第九章-继承-子父类中的构造函数-子类的实例化过程
    JAVA-初步认识-第八章-继承-子父类中成员变量的特点-覆盖的应用
    JAVA-初步认识-第八章-继承-子父类中成员函数特点-覆盖
    JAVA-初步认识-第八章-继承-子父类中成员变量的内存图解
    JAVA-初步认识-第八章-继承-子父类中成员变量的特点
  • 原文地址:https://www.cnblogs.com/tanshengjiang/p/12269562.html
Copyright © 2020-2023  润新知