其他分享
首页 > 其他分享> > ROS笔记(30) Movelt!配置文件

ROS笔记(30) Movelt!配置文件

作者:互联网

ROS笔记(30) Movelt!配置文件


1. SRDF

Setup Assistant配置的 机械臂参数夹具参数规划组自定义位姿 等需要以文件的形式存储
而URDF文件中没有存储这些参数的地方
所以产生了一种语义机器人描述格式 (Semantic Robot Description Format, SRDF)来存储这些配置参数

HHArm机械臂的SRDF文件在config文件夹下,命名为 hharm.srdf
该文件同样使用xml格式描述,其中的关键部分如下:

  1. 规划组

    <group name="arm">
        <chain base_link="base_link" tip_link="grasping_frame" />
    </group>
    <group name="gripper">
        <link name="gripper_finger_link1" />
        <link name="gripper_finger_link2" />
        <joint name="finger_joint1" />
        <joint name="finger_joint2" />
    </group>
    

    group 标签:描述设置的规划组
    HHArm包含 arm 和 gripper 两个规划组,其内容与前面在 Setup Assistant 中的设置相同

  2. 自定义位姿

    <group_state name="home" group="arm">
        <joint name="joint1" value="0" />
        <joint name="joint2" value="0" />
        <joint name="joint3" value="0" />
        <joint name="joint4" value="0" />
        <joint name="joint5" value="0" />
        <joint name="joint6" value="0" />
    </group_state>
    <group_state name="forward" group="arm">
        <joint name="joint1" value="0" />
        <joint name="joint2" value="0.4132" />
        <joint name="joint3" value="0.7486" />
        <joint name="joint4" value="0.2015" />
        <joint name="joint5" value="-0.4031" />
        <joint name="joint6" value="0" />
    </group_state>
    

    group_state 标签:描述自定义位姿
    HHArm中设置了 “home” 和 “forward” 两个位姿,主要存储每个位姿的六轴角度

  3. 机械臂终端

    <end_effector name="robot_gripper" parent_link="grasping_frame" group="gripper" />
    

    end_effector 标签:描述机械臂终端的夹爪设置

  4. 碰撞矩阵

    <disable_collisions link1="base_link" link2="bottom_link" reason="Adjacent" />
    <disable_collisions link1="base_link" link2="link1" reason="Adjacent" />
    <disable_collisions link1="bottom_link" link2="link1" reason="Never" />
    <disable_collisions link1="bottom_link" link2="link2" reason="Never" />
    <disable_collisions link1="gripper_finger_link1" link2="link2" reason="Never" />
    <disable_collisions link1="gripper_finger_link1" link2="link6" reason="Adjacent" />
    <disable_collisions link1="gripper_finger_link2" link2="link2" reason="Never" />
    <disable_collisions link1="gripper_finger_link2" link2="link4" reason="Never" />
    <disable_collisions link1="gripper_finger_link2" link2="link5" reason="Default" />
    <disable_collisions link1="gripper_finger_link2" link2="link6" reason="Adjacent" />
    <disable_collisions link1="link1" link2="link2" reason="Adjacent" />
    <disable_collisions link1="link1" link2="link4" reason="Never" />
    <disable_collisions link1="link1" link2="link5" reason="Never" />
    <disable_collisions link1="link2" link2="link3" reason="Adjacent" />
    <disable_collisions link1="link2" link2="link4" reason="Never" />
    <disable_collisions link1="link2" link2="link5" reason="Never" />
    <disable_collisions link1="link2" link2="link6" reason="Never" />
    <disable_collisions link1="link3" link2="link4" reason="Adjacent" />
    <disable_collisions link1="link4" link2="link5" reason="Adjacent" />
    <disable_collisions link1="link5" link2="link6" reason="Adjacent" />
    

    disable_collisions 标签:描述碰撞矩阵配置
    存储了每两个link之间的碰撞情况
    在运动规划过程中,永远不会碰撞的link无需进行碰撞检测,可以节省很多时间


2. 控制器参数

在demo中,机械臂可以按照Movelt!规划出来的轨迹运动
从轨迹到模型,中间需要一个控制器进行连接
这里这些虚拟的控制器参数在fake_controllers.yaml文件中

controller_list:
  - name: fake_arm_controller
    joints:
      - joint1
      - joint2
      - joint3
      - joint4
      - joint5
      - joint6
  - name: fake_gripper_controller
    joints:
      - finger_joint1

arm 和 gripper 分别有一个控制器
可以控制机器人的多个关节按照运动规划的轨迹进行运动,同时更新/joints_state话题

如果使用真实机器人,需要实现控制器部分的功能,完成机器人关节的驱动
待后续叙述真实机械臂搭建时细说


3. 关节限位

joint_limits.yaml 文件用于设置机器人运动关节的速度限位
可以配置每个关节是否有速度、加速度限制,以及最大速度和最大加速度的数值

joint_limits:
  finger_joint1:
    has_velocity_limits: true
    max_velocity: 1
    has_acceleration_limits: false
    max_acceleration: 0
  joint1:
    has_velocity_limits: true
    max_velocity: 1
    has_acceleration_limits: false
    max_acceleration: 0
  ...

如果在运动规划过程中机器人运动的速度较慢,可以修改该文件中的速度限位值
但要重新启动 move_group 节点来完成参数的加载


4. 运动学求解器

提供的多种运动学求解器相应配置参数存储在 kinematics.yaml 文件中
该配置文件会在启动 move_group.launch 文件时,由包含的 planning_context.launch 文件加载

arm:
  kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
  kinematics_solver_search_resolution: 0.005
  kinematics_solver_timeout: 0.005

以上运动学求解器的配置包含以下三个方面

  1. kinematics_solver:设置运动学插件,默认使用 KDL(Kinematics and Dynamics Library)插件
  2. kinematics_solver_search_resolution:设置存在冗余维度逆向运动学求解时的分辨率
  3. kinematics solver timeout:设置逆向运动学求解超时时间,单位为秒

5. 运动规划库

开源运动规划库 OMPL(Open Motion Planning Library)是Movelt!中默认使用的运动规划库
ompl_planning.yaml 文件中存储了运动规划的相关配置

planner_configs:
  SBL:
    type: geometric::SBL
    range: 0.0  # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
  EST:
    type: geometric::EST
    range: 0.0  # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0 setup()
    goal_bias: 0.05  # When close to goal select goal, with this probability. default: 0.05
  ...

其余的配置文件在运用到时再详细介绍


参考:

ROS官方wiki
古月居


相关推荐:

ROS笔记(29) 启动Movelt!
ROS笔记(28) Setup Assistant
ROS笔记(27) 机械臂的组装
ROS笔记(26) Movelt!
ROS笔记(25) 自主探索SLAM


谢谢!

标签:limits,配置文件,solver,运动学,Movelt,kinematics,ROS
来源: https://blog.csdn.net/qq_32618327/article/details/99835097