直接通过 C++ API 使用 MoveIt
使用 MoveIt 构建更复杂的应用程序通常需要开发人员深入研究 MoveIt 的 C++ API。额外的好处是,直接使用 C++ API 可以跳过许多 ROS 服务/操作层,从而显著提高性能。
机器人模型和机器人状态
规划场景
规划场景监视器
规划场景 ROS API
运动规划 API
运动规划管道
创建 MoveIt 插件
可视化碰撞
时间参数化
近似约束流形的规划
挑选和放置
MoveIt 抓取
MoveIt 深度抓取
子帧
MoveItCpp 教程
使用 Bullet 进行碰撞检测
差动驱动移动底座和机械臂的规划
机器人模型和机器人状态
在本节中,我们将向您介绍在 MoveIt 中使用运动学的 C++ API。
RobotModel 和 RobotState 类
RobotModel 和 RobotState 类是使您能够访问机器人运动学的核心类。
https://github.com/moveit/moveit2/blob/main/moveit_core/robot_model/include/moveit/robot_model/robot_model.h
https://github.com/moveit/moveit2/blob/main/moveit_core/robot_state/include/moveit/robot_state/robot_state.h
RobotModel 类包含所有连杆和关节之间的关系,包括从 URDF 加载的关节限制属性。RobotModel 还将机器人的连杆和关节分为 SRDF 中定义的规划组。可以在此处找到有关 URDF 和 SRDF 的单独教程:URDF 和 SRDF 教程 https://moveit.picknik.ai/main/doc/examples/urdf_srdf/urdf_srdf_tutorial.html
RobotState 包含有关机器人在某个时间点的信息,存储关节位置的向量,并可选地存储速度和加速度。此信息可用于获取依赖于机器人当前状态的运动学信息,例如末端执行器的雅可比矩阵。
RobotState 还包含用于根据末端执行器位置(笛卡尔姿态)设置手臂位置和计算笛卡尔轨迹的辅助函数。
在这个例子中,我们将演示如何使用这些类与 Panda。
入门
如果您还没有这样做,请确保您已完成入门中的步骤。
运行代码
本教程中的所有代码都可以从您作为 MoveIt 设置一部分的 moveit2_tutorials
包中编译和运行。
直接从 moveit2_tutorials 运行代码的启动文件:
ros2 launch moveit2_tutorials robot_model_and_robot_state_tutorial.launch.py
预期输出
预期输出将如下所示。数字将不匹配,因为我们使用的是随机关节值:
... [robot_model_and_state_tutorial]: Model frame: world
... [robot_model_and_state_tutorial]: Joint panda_joint1: 0.000000
... [robot_model_and_state_tutorial]: Joint panda_joint2: 0.000000
... [robot_model_and_state_tutorial]: Joint panda_joint3: 0.000000
... [robot_model_and_state_tutorial]: Joint panda_joint4: 0.000000
... [robot_model_and_state_tutorial]: Joint panda_joint5: 0.000000
... [robot_model_and_state_tutorial]: Joint panda_joint6: 0.000000
... [robot_model_and_state_tutorial]: Joint panda_joint7: 0.000000
... [robot_model_and_state_tutorial]: Current state is not valid
... [robot_model_and_state_tutorial]: Current state is valid
... [robot_model_and_state_tutorial]: Translation:
-0.368232
0.645742
0.752193
... [robot_model_and_state_tutorial]: Rotation:
0.362374 -0.925408 -0.11093
0.911735 0.327259 0.24