使用MoveIt Calibration软件包进行手眼标定

本文为官网教程的机器翻译。

手眼校准

MoveIt Calibration软件包提供插件和图形界面,用于进行手眼相机校准。可以对刚性安装在机器人底座上的相机(手眼)和安装在末端执行器上的相机(手眼)进行校准。本教程介绍了手眼案例。

入门

虽然可以仅使用模拟完成本教程的大部分内容,但要实际完成校准,您将需要机械臂和相机。

如果您还没有这样做,请务必完成入门中的步骤。此外,设置您的手臂以使用 MoveIt(如设置助手教程中所述)。

本教程还需要一个相机、发布图像和一个sensor_msgs/CameraInfo具有良好内在校准参数和准确坐标系的主题。(如有必要,使用camera_calibration包进行内部相机校准 。)

克隆并构建 MoveIt 校准存储库

在您的工作区src目录中,克隆 MoveIt Calibration:

git clone git@github.com:ros-planning/moveit_calibration.git

 然后,确保您具有适当的依赖项并构建包:

rosdep install -y --from-paths . --ignore-src --rosdistro melodic
catkin build
source devel/setup.sh

启动 RViz 和负载校准插件

为您的机器人启动适当的 MoveIt 演示。例如:

roslaunch panda_moveit_config demo.launch

在 RViz“显示”面板中,单击“添加”;

然后,选择“HandEyeCalibration”显示类型:

 添加显示时“目标”选项卡处于活动状态。

创建和打印目标

现在我们将创建一个视觉校准目标。该目标具有易于在图像数据中识别的独特模式,并且通过提供目标尺寸的测量值,可以估计目标在相机坐标系中的姿态。在进行手眼标定时,我们不需要知道目标的精确位置——只要目标在机器人的基础框架中是静止的,就可以从 5 个或更多位姿的序列中估计出手眼标定。

在“目标”选项卡的“目标参数”部分,我们将使用默认目标参数:

  • 标记,X:3
  • 标记,Y:4
  • 标记大小(像素):200
  • 标记间距 (px) : 20
  • 标记边界(位):1
  • ArUco 字典:DICT_5X5_250

按“创建目标”按钮创建目标图像:

使用“保存目标”按钮保存目标图像,并打印出图像。随意尝试目标参数以查看它们如何影响目标,但请务必记住用于打印目标的参数——您需要输入相同的参数才能识别目标。

目标必须是平坦的,才能被相机可靠地定位。将它放在平坦的表面上就足够了,或者它可以安装在板上。测量标记宽度(黑色方块之一的外部尺寸)以及标记之间的间距。在“目标参数”部分的相应框中输入这些值(以米为单位)。此外,在“图像主题”和“CameraInfo 主题”下拉菜单中选择适当的主题。

最后,将目标放在机器人附近,相机可以很容易地看到它。

几何背景

第二个标签,标记为“Contex”,包含进行校准所需的几何信息。

  1. 将“传感器配置”设置为“手眼”。
  2. “传感器框架”是相机光学框架(使用右下向前标准,如REP 103中所指定)。
  3. “Object frame”是校准目标定义的框架,默认称为“handeye_target”。
  4. “末端执行器框架”是刚性连接到相机的机器人连杆。
  5. “机器人基础框架”是校准目标静止的框架。

FOV 部分控制 RViz 中摄像机视野的渲染。要查看 FOV,请添加“MarkerArray”显示,并将其设置为收听“/rviz_visual_tools”主题。(它可能不会立即出现。)

最后,不需要为相机位姿设置初始猜测,但值得注意的是,一旦计算了校准,这些字段将使用新的校准进行更新。

收集数据集

接下来,我们将捕获一个校准数据集。我们需要捕获几个样本以确保良好的校准。如上所述,机器人运动学提供了末端执行器在机器人基础框架中的位姿,并且可以估计校准目标在相机框架中的位姿。如果目标在机器人基础框架中的位姿已知准确,则只需对相机-目标变换进行一次观察即可恢复相机在末端执行器框架中的位姿。直接相机到末端执行器的变换等效于复合相机到目标到基础链接到末端执行器的变换。然而,更好的选择是结合来自多个姿势的信息,以从方程中消除基本框架中的目标姿势,如Kostas Daniilidis 在本文中所述。

然后,我们校准数据集中的每个样本都包含一对位姿:末端执行器在机器人基础框架中的位姿与校准目标在相机框架中的位姿配对。一旦收集了五个这样的样本,就可以计算校准。

“校准”选项卡提供了收集数据集以及计算和导出校准的工具。此时,将图像面板添加到 RViz 显示器以在相机视图中查看目标检测也很有帮助,该视图发布于/handeye_calibration/target_detection.

在“校准”选项卡上,您可以在“AX=XB 求解器”下拉菜单中选择要使用的校准求解器。Daniilidis 求解器(来自上面引用的论文)是默认设置,在大多数情况下都是不错的选择。“Planning Group”是要记录的联合组,所以要设置成适合arm的组( panda_moveit_config包里panda_arm要使用组)。

当目标在手臂相机中可见,并且轴在目标检测图像中的目标上渲染时,您就可以获取第一个校准样本(姿势对)了。单击“手动校准”部分中的“取样”按钮,将在面板左侧的“姿势样本”列表中添加一个新样本。如果您展开一个示例,您将看到它包含两个变换,即从底座到末端效应器和相机到目标。

接下来,您可以使用“MotionPlanning”面板将手臂移动到新姿势,或者使用机器人的示教器或自由驱动模式(如果有),然后再次单击“Take sample”。确保在每对姿势之间包含一些旋转,并且不要总是围绕同一轴旋转 - 至少需要两个旋转轴才能唯一地解决校准问题(请参阅上面链接的 Daniilidis 论文以了解原因) .

当您进行手动采样时,机器人关节状态会被记录下来,以便将来可以再次使用相同的姿势进行重新校准。记录状态的数量显示在面板底部进度条的右侧,并且可以使用“设置”部分中的“保存关节状态”按钮将状态保存到文件中。

计算校准

一旦您收集了五个样本,校准将自动执行,并在每次添加新样本时更新。增加几个样本后,校准会显著改善,并且通常会在大约 12 或 15 个样本后达到平稳状态。如上所述,位置和方向将显示在“上下文”选项卡上,并且发布的 TF 也会更新。点击“保存相机位姿”导出标定结果。这将使用包含校准的相机变换的静态变换发布者创建一个启动文件。

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值