Skip to content

运动学代价函数

当为目标位姿或笛卡尔路径目标查询 IK 解时,我们可以指定代价函数 (cost functions) 来评估解的优劣。

如果你还没有完成入门指南中的步骤,请先完成。

本教程还需要使用 bio_ik 作为逆运动学 (Inverse Kinematics) 插件。首先,将该仓库的 “ros2” 分支克隆到工作区的 src 目录:

Terminal window
git clone -b ros2 https://github.com/PickNikRobotics/bio_ik.git

然后,将以下内容复制到工作区内的 moveit_resources/panda_moveit_config/config/kinematics.yaml,以更换 Panda 机器人的运动学插件:

panda_arm:
kinematics_solver: bio_ik/BioIKKinematicsPlugin
kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.005
kinematics_solver_attempts: 1
mode: gd_c # use the gradient descent solver

完成这些更改后,重新构建你的工作区:

Terminal window
colcon build --mixin release

打开两个终端。在第一个终端中,启动 RViz 并等待所有内容加载完成:

Terminal window
ros2 launch moveit2_tutorials move_group.launch.py

在第二个终端中,运行教程的启动文件:

Terminal window
ros2 launch moveit2_tutorials kinematics_cost_function_tutorial.launch.py

要在每个演示步骤之间推进,可以点击屏幕底部 RvizVisualToolsGui 面板中的 Next 按钮,或者在屏幕顶部的 Tools 面板中选择 Key Tool,然后在 RViz 处于焦点状态时按下键盘上的 0 键。

在 RViz 中,我们应该能够看到以下内容:

  1. 机器人将手臂移动到其右侧的位姿目标。在指定和不指定代价函数的情况下,关节运动的 L2 范数都会记录在教程终端中。
  2. 机器人通过直线笛卡尔运动将手臂移动到其左侧的位姿目标。

完整的代码可以在 MoveIt GitHub 项目中的此处 查看。接下来,我们逐段讲解代码以说明其功能。

完整的启动文件在 GitHub 上的此处。本教程中的所有代码都可以从 moveit2_tutorials 包中运行,该包是 MoveIt 安装的一部分。