ROS笔记(30) Movelt!配置文件
作者:互联网
ROS笔记(30) Movelt!配置文件
1. SRDF
Setup Assistant配置的 机械臂参数、夹具参数、规划组、自定义位姿 等需要以文件的形式存储
而URDF文件中没有存储这些参数的地方
所以产生了一种语义机器人描述格式 (Semantic Robot Description Format, SRDF)来存储这些配置参数
HHArm机械臂的SRDF文件在config
文件夹下,命名为 hharm.srdf
该文件同样使用xml格式描述,其中的关键部分如下:
-
规划组
<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 中的设置相同 -
自定义位姿
<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” 两个位姿,主要存储每个位姿的六轴角度 -
机械臂终端
<end_effector name="robot_gripper" parent_link="grasping_frame" group="gripper" />
end_effector
标签:描述机械臂终端的夹爪设置 -
碰撞矩阵
<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
以上运动学求解器的配置包含以下三个方面
- kinematics_solver:设置运动学插件,默认使用 KDL(Kinematics and Dynamics Library)插件
- kinematics_solver_search_resolution:设置存在冗余维度逆向运动学求解时的分辨率
- 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笔记(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