亚博microros小车-原生ubuntu支持系列:12 URDF 模型

ros2笔记-6.2 使用urdf创建机器人模型_urdf机器人建模-CSDN博客

之前跟小鱼老师大概了解过urdf模型。再贴一下亚博的介绍

4.1、组成部分
  • link,连杆,可以想象成是人的手臂

  • joint,关节,可以想象成是人的手肘关节

link与joint的关系:两个link之间通过关节连接起来,想象成手臂有小臂(link)和大臂(link)通过肘关节(joint)连接。

1)、简介

在URDF描述性语言中,link是用来描述物理特性的,

  • 描述视觉显示, 标签。

  • 描述碰撞属性, 标签。

  • 描述物理惯性, 标签不常用。

Links还可以描述连杆尺寸(size)\颜色(color)\形状(shape)\惯性矩阵(inertial matrix)\碰撞参数(collision properties)等,每个Link会成为一个坐标系。

3)、标签介绍

  • origin:描述的是位姿信息; xyz 属性描述的是在大环境中的坐标位置, rpy 属性描述的是自身的姿态。

  • mess:描述的是link的质量。

  • inertia:惯性参考系,由于转动惯性矩阵的对称性,只需要6个上三角元素 ixx, ixy, ixz, iyy, iyz, izz作为属性。

  • geometry:标签描述的是形状; mesh 属性主要的功能是去加载纹理文件的, filename 属性纹理路径的文件地址

  • material:标签描述的是材质; name 属性为必填项,可以为空,可以重复 。通过【color】标签中的 rgba

    属性来描述红、绿、蓝、透明度,中间用空格分隔。

4.1.2、joints

1)、简介

描述两个关节之间的关系,运动位置和速度限制,运动学和动力学属性。关节类型有以下几种:

  • fixed:固定关节。不允许运动,起连接作用。

  • continuous:旋转关节。可以持续旋转,没有旋转角度的限制。

  • revolute:旋转关节。类似于continuous,有旋转角度的限制。

  • prismatic:滑动关节。沿某一轴线移动,有位置限制。

  • floating:悬浮关节。具备六个自由度,3T3R。

  • planar:平面关节。允许在平面正交上方平移或者旋转。

在【joint】标签中 name 属性是 必填项,描述关节的名称,并且是唯一。在【joint】标签中 type 属性,对应填写六大关节类型。

3)、标签介绍

  • origin:子标签,指的是旋转关节于 parent 所在坐标系的相对位置。

  • parent,child:parent,child子标签代表的是两个要连接的link;parent是参照物,child围绕着praent旋转。

  • axis:子标签表示child对应的link围绕哪一个轴(xyz)旋转和述绕固定轴的旋转量。

  • limit:子标签主要是限制child的。 lower 属性和 upper 属性限制了旋转的弧度范围, effort 属性限制的是转动过程中的受力范围。(正负value值,单位为牛或N), velocity 属性限制了转动时的速度,单位为米/秒或m/s。

  • mimic:描述该关节与已有关节的关系。

  • safety_controller:描述安全控制器参数。保护机器人关节的运动。

打开目录看了下,有meshes、urdf 文件夹

meshes:用来保存urdf中引用的机器人模型所需要的三维模型文件,这些文件为.stl格式,根据机器人的运动自由度,将机器人模型分割成了不同部分。其中.stl 无法之间文本查看
urdf:包含了一个roarm.urdf文件,这个文件用来描述meshes中的机器人模型相对位置的机构运动关系。这个urdf 是solidworks导出的。

代码相关

拷贝:

meshes文件夹,urdf文件夹、launch文件夹

src/yahboomcar_description/urdf/新建MicroROS.urdf,代码如下:




  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
    
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
    
  

from ament_index_python.packages import get_package_share_path

from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import Command, LaunchConfiguration

from launch_ros.actions import Node
from launch_ros.parameter_descriptions import ParameterValue

def generate_launch_description():
    urdf_tutorial_path = get_package_share_path('yahboomcar_description')
    default_model_path = urdf_tutorial_path / 'urdf/MicroROS.urdf'

    model_arg = DeclareLaunchArgument(name='model', default_value=str(default_model_path),
                                      description='Absolute path to robot urdf file')
    robot_description = ParameterValue(Command(['xacro ', LaunchConfiguration('model')]),
                                       value_type=str)

    robot_state_publisher_node = Node(
        package='robot_state_publisher',
        executable='robot_state_publisher',
        parameters=[{'robot_description': robot_description}]
    )

    joint_state_publisher_gui_node = Node(
        package='joint_state_publisher_gui',
        executable='joint_state_publisher_gui'
    )

    
    tf_base_footprint_to_base_link = Node(
        package='tf2_ros',
        executable='static_transform_publisher',
        arguments=['0', '0', '0.05', '0.0', '0.0', '0.0', 'base_footprint', 'base_link'],
    )
    
    return LaunchDescription([
        model_arg,
        joint_state_publisher_gui_node,
        robot_state_publisher_node,
        tf_base_footprint_to_base_link
    ])
  • model_arg:加载模型参数,加载的模型为MicroROS.urdf

  • joint_state_publisher_gui_node:发布sensor_msgs/JointState消息

  • robot_state_publisher_node:机器人状态发布

  • tf_base_footprint_to_base_link:发布base_footprint到base_link的静态变换

修改setup.py,增加urdf跟meshes文件夹拷贝。

安装下依赖:

sudo apt install ros-$ROS_DISTRO-joint-state-publisher-gui

运行:

ros2 launch yahboomcar_description display_launch.py

rivz2

如果提示:

[ERROR] [1737795000.757657365] [rviz2]: Error retrieving file [package://yahboomcar_description/meshes/zq_Link.STL]: Package [yahboomcar_description] does not exist

需要重新配置下环境变量。

进入rviz,选择将【Fixed Frame】改成base_linke,即可显示小车模型,

亚博microros小车-原生ubuntu支持系列:12 URDF 模型_第1张图片

这是带TF模型

亚博microros小车-原生ubuntu支持系列:12 URDF 模型_第2张图片

可见这种软件导出的urdf模型,比直接定义几何体形状精确多了。基本上1:1复原了真实小车。

你可能感兴趣的:(ubuntu,亚博,microros,urdf,rviz,机器人模型)