ROS ROS2 机器人深度相机激光雷达多传感器标定工具箱入门教程(一)

news2025/7/8 13:44:13

系列文章目录

目录

系列文章目录

前言

一、安装

1.1 ROS 2 官方软件包

二、教程

2.1 标定配置器

2.1.1 机器人选项

2.1.2.1 外参相机-激光雷达标定

2.1.2.2 外参激光雷达-激光雷达标定

2.1.2.3 外参相机参照标定

2.1.2.4 外参激光雷达-参考标定

2.2 外参照相机-激光雷达标定

2.3 外参激光雷达-激光雷达标定

2.4 外参照相机参照标定

2.5 外参激光雷达-参考标定


前言

通过图形用户界面,多传感器标定工具箱可指导用户完成相机-激光雷达传感器设置的标定。

        multisensor_calibration 是一个积极维护的通用标定工具箱,用于辅助基于目标的多传感器标定,支持 ROS 1 和 ROS 2。它提供了多种方法和应用来标定复杂的多传感器系统,例如

  • 外参相机-激光雷达标定、
  • 外参相机-参考标定、
  • 外参激光雷达-激光雷达标定、
  • 外参激光雷达-参考标定,以及
  • 外参激光雷达-车辆标定(原型)。


一、安装

        多传感器标定工具箱作为 ROS 2 的官方软件包发布,名为 multisensor_calibration。由于 ROS 1 即将报废,因此 ROS 1 将不会有官方版本。

        除了官方发布的版本外,multisensor_calibration 还可以从 ROS 1 和 ROS 2 的源代码中构建,如下所述。

1.1 ROS 2 官方软件包

sudo apt install ros-$ROS_DISTRO-multisensor-calibration

二、教程

为了有一个统一的起点,“multisensor_calibration ”提供了一个标定配置器,可以选择并设置所需的标定参数。只需调用

ros2 run multisensor_calibration multi_sensor_calibration

        标定配置器提供了一个图形用户界面,用于配置和运行下列传感器标定之一:

  • 外参相机-激光雷达标定
  • 外参激光雷达-激光雷达标定
  • 外参相机-参考标定
  • 外参激光雷达-参考标定

        另外,单个标定也可作为独立节点启动,无需标定器。在这种情况下,用户必须手动指定适当的启动参数,因此建议使用标定配置器。有关详细信息,请参阅节点部分。

        标定配置和标定结果都存储在工作区中。其中,每个传感器标定都会生成一个单独的工作区文件夹,而属于单个机器人的所有标定工作区又会被归入一个机器人工作区。

2.1 标定配置器

        标定配置器提供了一个图形用户界面,用于配置和运行不同的传感器标定。

图 1:标定配置器的图形用户界面。

        正如在工作区页面中进一步讨论的那样,各个传感器标定的配置和结果是在由机器人和标定工作区组成的工作区结构中进行组织的。因此,除了单个标定配置外,还需要设置一些机器人设置。

        标定配置器还允许安装工作区模板。这在首次运行标定时尤其有用。有关如何添加新模板的详细信息,请参阅相应章节

2.1.1 机器人选项

  • 工作区文件夹: 选择要打开的机器人工作区文件夹。如果输入的文件夹不存在,则将生成一个新的工作区。

        所有不同的机器人工作区文件夹都位于根目录下(默认: $HOME/multisensor_calibration),该目录列在相应组合框下方。要选择不同的根目录,请按下工作区文件夹组合框旁边的按钮。要将工作区模板安装到根目录,请按右侧相应的按钮。这将打开另一个对话框,可在其中选择机器人和相应的传感器标定。

  • 机器人名称: 机器人名称。
  • URDF 模型: 可选的机器人 URDF 模型。

2.1.2 标定选项

        选择机器人后,可通过相应的组合框选择要执行的标定类型:

  • 标定类型: 要执行的标定类型。根据所选的标定类型,将提供不同的标定选项。开始时,组合框和文本编辑将使用可用数据填充,即主题名称或帧 ID。

        如果所选的 “标定类型”、“源传感器名称 ”和 “参考传感器名称 ”配置已经过标定,且在标定工作区中找到了相应的设置文件,则其余选项将根据设置文件中的数据进行设置。

        下文将介绍不同标定类型的可用选项。

2.1.2.1 外参相机-激光雷达标定
  • 相机传感器名称: 源相机传感器名称。
  • 图像话题: 发布摄像机图像的话题名称。
  • 摄像机信息话题: 发布摄像机图像的话题名称。
  • 图像状态: 选择图像数据的状态。在标定过程中,需要用它来从摄像机信息信息中选择正确的数据。
    • 扭曲: 直接来自传感器的图像,即包含镜头失真。
    • 未扭曲: 图像已消除镜头失真。
    • STEREO_RECTIFIED(立体校正): 来自立体相机的图像经过校正,使两台相机的图像水平对齐。
  • Is Stereo Camera?如果要将摄像机标定为立体摄像机,则设置为 “true”。如果激活,还需要设置 “右传感器名称 ”和 “右信息话题”。
  • 右传感器名称: 将摄像机标定为立体摄像机系统时,右侧摄像机传感器的名称。
  • 右信息话题: 与右侧摄像机相对应的摄像机信息的话题名称。将摄像机标定为立体摄像机系统时需要使用此名称。
  • 右后缀: 右传感器名称的后缀,也是校正图像的坐标系 ID。如果输入图像的 “Image State(图像状态)”为 DISTORTED 或 UNDISTORTED,则会将其添加到修正后的坐标系图像 ID 中。如果 “图像状态 ”为 STEREO_RECTIFIED,则会从坐标系 ID 中移除。
  • 激光雷达传感器名称: 参考 LiDAR 传感器的名称。
  • 点云话题: 发布点云的话题名称。
  • 标定目标: 标定目标的配置文件。目前不可编辑。
  • 根据坐标系标定?根据基准坐标系标定源传感器的姿态。
  • 基准坐标系 ID:标定姿势所依据的基准坐标系的坐标系 ID。
  • 使用 TF 树的初始猜测?使用 TF-Tree 提供的数据提取标定的初始猜测。
  • 保存观测数据?将用于标定的观测数据保存到标定工作区。
  • 信息同步策略: 选择用于同步传感器信息的时间同步类型。
  • 同步队列大小: 用于时间同步的队列大小。
2.1.2.2 外参激光雷达-激光雷达标定
  • 源激光雷达传感器名称: 源激光雷达传感器名称。
  • 源点云话题: 发布源点云的话题名称。
  • 参考激光雷达传感器名称: 参考 LiDAR 传感器名称。
  • 参考点云话题: 发布参考点云的话题名称。
  • 标定目标: 标定目标的配置文件。目前不可编辑。
  • 是否额外对齐地面平面?设置为 “true”,可额外对齐传感器数据中的地面平面。如果为 “true”,则还需要直立坐标系的 ID,以便找到地平面的方向。
  • 直立坐标系 ID:- Z 轴向上的坐标系 ID。用于检测传感器数据中的地平面。
  • 根据坐标系标定?根据基准坐标系标定源传感器的姿态。
  • 基准坐标系 ID:标定姿态所依据的基准坐标系的坐标系 ID。
  • 使用 TF 树的初始猜测?使用 TF-Tree 提供的数据提取标定的初始猜测。
  • 保存观测数据?将用于标定的观测数据保存到标定工作区。
  • 信息同步策略: 选择用于同步传感器信息的时间同步类型。
  • 同步队列大小: 用于时间同步的队列大小。
2.1.2.3 外参相机参照标定
  • 摄像机传感器名称: 源相机传感器的名称。
  • 图像话题: 发布摄像机图像的话题名称。
  • 摄像机信息话题: 发布摄像机图像的话题名称。
  • 图像状态: 选择图像数据的状态。在标定过程中,需要用它来从摄像机信息信息中选择正确的数据。
  • 扭曲: 直接来自传感器的图像,即包含镜头失真。
  • 未扭曲: 图像已消除镜头失真。
  • STEREO_RECTIFIED(立体校正): 来自立体相机的图像经过校正,使两台相机的图像水平对齐。
  • Is Stereo Camera?如果要将摄像机标定为立体摄像机,则设置为 “true”。如果激活,还需要设置 “右传感器名称 ”和 “右信息话题”。
  • 右传感器名称: 将摄像机标定为立体摄像机系统时,右侧摄像机传感器的名称。
  • 右信息话题: 与右侧摄像机相对应的摄像机信息的话题名称。将摄像机标定为立体摄像机系统时需要使用此名称。
  • Rect Suffix(矩形后缀): 右传感器名称的后缀,也是修正图像的坐标系 ID。如果输入图像的 “图像状态 ”为 DISTORTED(扭曲)或 UNDISTORTED(未扭曲),则会将其添加到修正后的坐标系图像 ID 中。如果 “图像状态 ”为 STEREO_RECTIFIED,则会从坐标系图像 ID 中移除。
  • 参考名称: 参考名称。
  • 参考坐标系 ID:提供参考数据的坐标系 ID。
  • 标定目标: 标定目标的配置文件。目前不可编辑。
  • 根据坐标系标定?相对于基准坐标系标定源传感器的姿态。
  • 基准坐标系 ID:标定姿势所依据的基准坐标系的坐标系 ID。
  • 使用 TF 树的初始猜测?使用 TF-Tree 提供的数据提取标定的初始猜测。
  • 保存观测数据?将用于标定的观测数据保存到标定工作区。
2.1.2.4 外参激光雷达-参考标定
  • 源激光雷达传感器名称: 源 LiDAR 传感器名称。
  • 源点云话题: 发布源点云的话题名称。
  • 参照物名称: 参照物名称。
  • 参考坐标系 ID:提供参考数据的坐标系 ID。
  • 标定目标: 标定目标的配置文件。目前不可编辑。
  • 根据坐标系标定?相对于基准坐标系标定源传感器的姿态。
  • 基准坐标系 ID:标定姿势所依据的基准坐标系的坐标系 ID。
  • 使用 TF 树的初始猜测?使用 TF-Tree 提供的数据提取标定的初始猜测。
  • 保存观测数据?将用于标定的观测值保存到标定工作区。

2.2 外参照相机-激光雷达标定

        相机-激光雷达标定包括估算给定相机传感器相对于给定激光雷达传感器的相对变换。标定是在一系列 2D-3D 点对应关系的帮助下,通过解决透视-点(P-n-P)问题来完成的。

图 1:在相机图像和激光雷达点云中检测到标定目标后的外参相机-激光雷达标定图形用户界面。其中,相机图像上标注了 ArUco 标记的角,探测到的目标结构在激光雷达点云中以黄色突出显示。

        启动后,将出现图 1 所示的图形用户界面。它由以下部分组成: - 控制窗口(A); - 摄像机图像中的目标检测视图(B); - 激光雷达云中的目标检测视图(C);以及 - 用于指导用户放置标定目标的对话框视图(D)(目前正在开发中)。

        标定节点可在相机图像中持续检测和跟踪 ArUco 标记,并在激光雷达云中选择标定目标的潜在候选对象。在此过程中,标记会被坐标系化,对于点云中的候选目标点,会显示相应的强度值。

        要执行外参标定,请按照以下步骤操作:

  1. 首先将标定目标放置在相机图像的中心,并与图像平面平行。将目标放置在与摄像机保持一定距离的位置,使其宽度约占图像宽度的一半。
  2. 确保在相机图像中检测到标记,并在激光雷达云中突出显示目标结构。
  3. 如果至少检测到 3 个标记,且目标结构突出显示,请单击按钮 1 “捕捉目标观测”,以在传感 器数据中对标定目标进行全面检测和精确估算,并将检测结果添加到观测列表中。完成后,相应的传感器数据将标注检测结果,如图 1 所示。其中
    1. 在相机图像上标注检测到的 ArUco 标记的边角(根据标记 ID 用彩虹色图标注)。
    2. 与检测到的标定目标相对应的激光雷达云点用黄色标出。此外,根据目标的估计姿态,ArUco 标记的角也会以与相机图像相同的配色方案绘制。
  4. 目测激光雷达云中标定目标的方位是否估算正确。这一点非常重要,因为 P-n-P 算法需要相机图像中的标记角与激光雷达云之间精确的 2D-3D 对应关系,才能估算出传感器的外参姿态。
  5. 如果方位估计不正确,或者激光雷达云中的错误结构被假定标记为标定目标,或者出现其他 故障,您可以点击按钮 2 “删除最后一个观测点”,从堆栈中删除最后一个观测点。此操作可重复多次,因为它始终会移除堆栈中最上面的观测值,直到没有观测值为止。
  6. 继续添加(6-7 个)不同姿态的标定目标,将其放置在堆栈的顶部和/或底部边缘。在每个位置,稍微向内旋转目标。理想情况下,将目标在图像空间中的 5 个位置上放置成 “+”形。如果不可能,则尽量将目标至少放置在 “L ”形的 3 个位置上,这样各位置就不会相交。
    1. 图像的顶部和/或底部边缘、
    2. 图像左侧和/或右侧边缘,以及
    3. 更远的位置。
  7. 每个位置重复步骤 2-5。
  8. 收集到足够多的标定目标的不同观测数据后,点击按钮 4 “标定 ”即可完成标定。这将进行最终标定,并打印出标定后的外参参数、总体平均重投影误差以及将目标位置从源传感器转换到参考传感器时的标准偏差。对于良好的最终标定,典型的平均重投影误差在 2-4 像素之间,平移(XYZ)标准偏差为 1-3 厘米,旋转(RPY)标准偏差为 0.1-1.5 度。
  9. 标定完成后
    1. 可视化当前标定"按钮 3。这将打开一个新的对话框,其中显示了激光雷达云在摄像机图像中的投影,并根据其与摄像机的距离进行了着色。因此,如果标定结果良好,那么激光雷达扫描中的结构(可从深度着色中得出)应与图像中的物体对齐。
    2. 标定结果以及 URDF 文件的片段会被写入标定工作区。可通过程序菜单 “文件”->“打开”->“标定工作区 ”直接打开包含结果文件的工作区文件夹。

        要调整运行时参数,例如检测标定目标或执行实际标定算法的算法参数,可以通过 “编辑” -> “首选项 ”打开 “rqt_reconfigure”。

2.3 外参激光雷达-激光雷达标定

        激光雷达-激光雷达标定包括估算给定源激光雷达传感器相对于给定参考激光雷达传感器的相对变换。标定是通过 GICP 将源传感器的云对准参考传感器的云来进行的,参考传感器的云中有标定目标的探测结果,而源传感器的云中有相同的观测结果。

图 2:在激光雷达扫描仪的数据中检测到标定目标后,进行外参激光雷达-激光雷达标定的图形用户界面。其中,探测到的目标结构在激光雷达点云中以黄色突出显示。

        启动后,将出现图 2 所示的图形用户界面。它由以下部分组成:- 控制窗口(A),- 源激光雷达云中的目标检测视图(B),- 参考激光雷达云中的目标检测视图(C),以及- 用于指导用户放置标定目标的对话框视图(D)(目前正在开发中)。

        标定节点在激光雷达云中不断选择潜在的标定目标候选点。在此过程中,点云中候选目标的点会显示出相应的强度值。

        要执行外参标定,请按照以下步骤操作:

  1. 首先将标定目标放置在需要标定外参姿态的传感器(即源传感器)前方,同时确保从参考传感器也能看到它。目标放置的距离应能很好地识别标定目标上的圆形切口。在这方面,一个经验法则是,如果可能,2-3 条扫描线应穿过或接触一个切口。
  2. 确保标定目标的结构在两个传感器的数据中都突出显示,即在窗口 B 和窗口 C 中。
  3. 如果目标结构在两个激光雷达扫描仪的数据中都突出显示,请单击按钮 1 “捕捉目标观测”,以触发传感器数据中标定目标的全面检测和精确估算,并将检测结果添加到观测列表中。完成后,相应的传感器数据将标注检测结果,如图 2 所示。其中,激光雷达云中与检测到的标定目标相对应的点用黄色标出。此外,根据目标的估计姿态,ArUco 标记的边角也会以与相机图像相同的颜色绘制。
  4. 目测激光雷达云中标定目标的方向是否估算正确。
  5. 如果方位估算不正确,或者将激光雷达云中的错误结构标注为标定目标,或者出现任何其他 故障,您可以点击按钮 2 “删除最后一个观测点”,从堆栈中删除最后一个观测点。此操作可重复多次,因为它始终会移除堆栈中最上面的观测值,直到没有观测值为止。
  6. 继续添加(3-5 个)不同姿态的标定目标,将其置于 在这种情况下,这些位置应构成 “L ”形,以便建立垂直和水平差异。确保这些位置不平行。在每个位置上,稍微向内转动目标。
    1. 在源传感器前的较高或较低位置。
    2. 在参考检查器前面,以及
    3. 更远的位置。
  7. 每个位置重复步骤 2-5。
  8. 当对标定目标进行了足够多的不同观测后,可点击按钮 4 “标定 ”完成标定。这将进行最终标定,并打印出标定后的外参参数、GICP 的总体均方根误差以及将目标位置从源传感器转换到参考传感器时的标准偏差。对于良好的最终标定,典型的均方根误差在 3-8 厘米之间,平移(XYZ)标准偏差为 0.5-5 厘米,旋转(RPY)标准偏差为 0.3-2 度。
  9. 标定完成后、
    1. 可视化标定 "按钮 3。这将打开一个新对话框,显示两个点云之间的点间距。其中,点间距以彩虹色图(红色 -> 黄色 -> 绿色 -> 蓝色 -> 紫色)显示。这意味着,如果标定结果良好,重叠区域的点间距应该较小,相应的点最好用红色突出显示。
    2. 标定结果以及 URDF 文件片段将被写入标定工作区。可通过程序菜单 “文件” -> “打开” -> “标定工作区 ”直接打开包含结果文件的工作区文件夹。

        要调整运行时参数,例如检测标定目标或执行实际标定算法的算法参数,可以通过 “编辑” -> “首选项 ”打开 “rqt_reconfigure”。

2.4 外参照相机参照标定

        照相机参照标定包括估算给定照相机传感器相对于参照物的相对变换。与照相机-激光雷达标定类似,变换的计算方法是借助一系列 2D-3D 点对应关系解决透视-n-点(P-n-P)问题。不过,可以通过提供 ArUco 标记左上角相对于给定坐标系 ID 的三维坐标来手动输入三维对应关系,而不是通过检测激光雷达数据中的标定目标来找到三维对应关系。

图 3:在照相机数据中检测到标定目标后进行外参照相机参照标定的图形用户界面。其中,摄像机图像上标注了 ArUco 标记的角。

        启动后,将出现图 3 所示的图形用户界面。它由以下部分组成: - 控制窗口(A); - 摄像机图像中的目标检测视图(B); - 表格视图(C),可输入左上角标记角的 XYZ 坐标;以及 - 用于指导用户放置标定目标的对话框视图(D)(目前正在开发中)。

        标定节点会持续检测和跟踪摄像机图像内的 ArUco 标记,并将 ArUco 标记坐标系化。

        要执行外参标定,请按照以下步骤操作:

  1. 首先将标定目标放置在摄像机图像的中心,并与图像平面平行。将目标放置在与摄像机保持一定距离的位置,使其宽度约占图像宽度的一半。
  2. 确保在摄像机图像中检测到标记。
  3. 如果至少检测到 3 个标记,请单击按钮 1 “捕捉目标观测”,以触发传感器数据中标定目标的全面检测和精确估算,并将检测结果添加到观测列表中。完成后,相应的传感器数据将标注检测结果,如图 3 所示。其中,摄像机图像将标注检测到的 ArUco 标记的边角(根据标记 ID 用彩虹色图标注)。
  4. 如果检测有误,您可以点击按钮 2 “移除最后一个观测点”,从堆栈中移除最后一个观测点。此操作可重复多次,因为它总是会移除堆栈中最上面的观测点,直到没有观测点为止。
  5. 继续添加(6-7 个)不同姿态的标定目标,将其放置在堆栈的顶部和/或底部边缘。在每个位置,稍微向内旋转目标。理想情况下,将目标在图像空间中的 5 个位置上放置成 “+”形。如果不可能,则尽量将目标至少放置在 “L ”形的 3 个位置上,这样各位置就不会相交。
    1. 图像的顶部和/或底部边缘、
    2. 图像左侧和/或右侧边缘,以及
    3. 更远的位置。
  6. 对于每个位置,重复步骤 2-4。
  7. 在摄像机图像中捕捉到所有目标姿势后,在相应的表格中填写左上角标记角的参考坐标,以及相应的目标姿势 ID 和相应的标记 ID。为此,假定观察到的目标姿态以连续的顺序输入,从 ID 1 开始。也就是说,第一个目标位置的 ID 为 1,第二个位置的 ID 为 2,以此类推。此外,每个目标姿势都有 4 个标记。您也可以在移动目标时连续输入参考坐标,但重要的是,只有在输入所有坐标后,才能在最后 “应用 ”一次观测结果。
  8. 收集到足够多的标定目标的不同观测数据,并输入和 “应用 ”左上角标记角的参考坐标后,点击按钮 4 “标定 ”即可完成标定。这将进行最终标定,并打印出标定后的外参参数、总体平均重投影误差以及将目标姿态从源传感器转换到参考传感器时的标准偏差。

        要调整运行时参数,例如检测标定目标或执行实际标定算法的算法参数,可以通过 “编辑” -> “偏好设置 ”打开 “rqt_reconfigure”。

2.5 外参激光雷达-参考标定

        标定是通过 GICP 将源传感器云(包含标定目标的探测结果)与参照传感器云(包含相同的观测结果)进行对齐。

        激光雷达-参照物标定包括估算给定源激光雷达传感器相对于参照物的相对变换。与激光雷达-激光雷达标定类似,变换的计算方法是通过 GICP 将源传感器的云对准参考数据,其中包含标定目标的检测数据。不过,可以通过提供 ArUco 标记左上角相对于给定坐标系 ID 的三维坐标,手动输入三维对应关系,而不是通过在参考激光雷达数据中检测标定目标来找到三维对应关系。

图 4:在相机数据中检测到标定目标后进行外参激光雷达参照标定的图形用户界面。其中,探测到的目标结构在激光雷达点云中以黄色突出显示。

        启动后,将出现图 4 所示的图形用户界面。它由以下部分组成: - 控制窗口(A); - 源激光雷达云中的目标检测视图(B); - 表格视图(C),可输入左上角标记角的 XYZ 坐标;以及 - 用于指导用户放置标定目标的对话框视图(D)(目前正在开发中)。

        标定节点会在激光雷达云中不断选择标定目标的潜在候选点。在此过程中,点云中候选目标的点会显示出相应的强度值。

        要执行外参标定,请按照以下步骤操作:

  1. 首先将标定目标放置在需要标定外参姿态的传感器(即源传感器)前方。目标放置的距离应使标定目标上的圆形切口能够很好地被识别。在这方面,一个经验法则是,如果可能,2-3 条扫描线应穿过或接触一个切口
  2. 确保标定目标的结构在传感器的数据中突出显示,即在窗口 B 中。
  3. 如果目标结构在激光雷达扫描仪的数据中突出显示,请单击按钮 1 “捕捉目标观测”,以在传感 器数据中对标定目标进行全面检测和精确估算,并将检测结果添加到观测列表中。完成后,相应的传感器数据将标注检测结果,如图 4 所示。其中,激光雷达云中与检测到的标定目标相对应的点用黄色标出。此外,根据目标的估计姿态,ArUco 标记的边角也会以与相机图像相同的配色方案绘制。
  4. 目测激光雷达云中标定目标的方向是否估算正确。
  5. 如果方位估算不正确,或者将激光雷达云中的错误结构标注为标定目标,或者出现任何其他 故障,您可以点击按钮 2 “删除最后一个观测点”,将最后一个观测点从堆栈中删除。此操作可重复多次,因为它始终会移除堆栈中最上面的观测值,直到没有观测值为止。
  6. 继续添加(3-5 个)不同姿态的标定目标,将其置于
    1. 在源传感器前面的较高或较低位置,以及
    2. 更远的位置。
    3. 在此过程中,这些位置应构成 “L ”形,以便建立垂直和水平差异。确保这些位置不平行。在每个位置,稍微向内转动目标。
  7. 每个位置重复步骤 2-5。
  8. 在摄像机图像中捕捉到所有目标姿态后,在相应表格中填写左上角标记角的参考坐标,以及相应的目标姿态 ID 和相应的标记 ID。为此,假定观察到的目标姿态以连续顺序输入,从 ID 1 开始。也就是说,第一个目标位置的 ID 为 1,第二个位置的 ID 为 2,以此类推。此外,每个目标姿势都有 4 个标记。您也可以在移动目标时连续输入参考坐标,但重要的是,只有在输入所有坐标后,才能在最后 “应用 ”一次观测结果。
  9. 收集到足够多的标定目标的不同观测数据后,点击按钮 4 “标定”即可完成标定。这将进行最终标定,并打印出标定后的外参参数、GICP 的总体均方根误差以及将目标姿势从源传感器转换到参考传感器时的标准偏差。

        要调整运行时参数,例如检测标定目标或执行实际标定算法的算法参数,可以通过 “编辑” -> “偏好设置 ”打开 “rqt_reconfigure”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2337305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HDFS入门】HDFS与Hadoop生态的深度集成:与YARN、MapReduce和Hive的协同工作原理

目录 引言 1 HDFS核心架构回顾 2 HDFS与YARN的集成 3 HDFS与MapReduce的协同 4 HDFS与Hive的集成 4.1 Hive架构与HDFS交互 4.2 Hive数据组织 4.3 Hive查询执行流程 5 HDFS在生态系统中的核心作用 6 性能优化实践 7 总结 引言 在大数据领域,Hadoop生态系统…

用 AI 十天开发小程序:探秘 “幸运塔塔屋” 之 “解惑指南书” 功能

在当今软件开发领域,AI 技术正以前所未有的速度改变着我们的开发方式。我仅用十天时间,借助 AI 成功开发出 “幸运塔塔屋” 小程序,其中 “解惑指南书” 功能别具一格。今天,就为大家详细剖析这个功能从构思到落地的全过程。 十天…

直流电源基本原理

整流电路 在构建整流电路时,要选择合适参数的二极管 If是二极管能够通过电流的能力,也是最大整流的平均电流。 还要考虑二极管的反向截至电压。 脉动系数电压交流幅值/直流平均电压(越小越好) 三相整流电路优点: …

osu ai 论文笔记 DQN

e https://theses.liacs.nl/pdf/2019-2020-SteeJvander.pdf Creating an AI for the Rhytm Game osu! 20年的论文 用监督学习训练移动模型100首歌能达到95准确率 点击模型用DQN两千首歌65准确率 V抖用的居然不是强化学习? 5,6星打96准确度还是有的东西的 这是5.…

MapReduce实验:分析和编写WordCount程序(对文本进行查重)

实验环境:已经部署好的Hadoop环境 Hadoop安装、配置与管理_centos hadoop安装-CSDN博客 实验目的:对输入文件统计单词频率 实验过程: 1、准备文件 test.txt文件,它是你需要准备的原始数据文件,存放在你的 Linux 系…

Windows Acrobat Pro DC-v2025.001.20435-x64-CN-Portable便携版

Windows Acrobat Pro 链接:https://pan.xunlei.com/s/VOO1nMjQ1Qf53dyISGne0c_9A1?pwdsfgn# Acrobat Pro 2024 专业增强版特色 ● 创建和编辑 PDF 文件:可以将各种类型的文档转换为 PDF 格式,并进行编辑和修改。 ● 合并和拆分 PDF&#…

Oracle 12.1.0.2补丁安装全流程

第一步,先进行备份 tar -cvf u01.tar /u01 第二步,更新OPatch工具包 根据补丁包中readme信息汇总提示的信息,下载对应版本的OPatch工具包,本次下载的版本为: p6880880_122010_Linux-x86-64.zip opatch版本为最新的…

【SpringBoot+Vue自学笔记】003 SpringBoot Controll

跟着这位老师学习的:https://www.bilibili.com/video/BV1nV4y1s7ZN?vd_sourceaf46ae3e8740f44ad87ced5536fc1a45 这段话的意思其实是:Spring Boot 简化了传统 Web 项目的搭建流程,让你少折腾配置,直接开搞业务逻辑。 &#x1f52…

探索Web3平台的数据安全和保护机制

在数字化时代,Web3 平台以其去中心化、透明性和用户主权等特点,正逐渐成为互联网技术的新宠。然而,随着数据价值的日益凸显,Web3 平台的数据安全和保护机制变得尤为重要。本文将深入探讨 Web3 平台的数据安全和保护机制&#xff0…

《基于神经网络实现手写数字分类》

《基于神经网络实现手写数字分类》 一、主要内容: 1、通过B站陈云霁老师的网课,配合书本资料,了解神经网络的基本组成和数学原理。 2、申请云平台搭建实验环境 3、基于5个不同的实验模块逐步理解实验操作步骤,并实现不同模块代码…

1 cline 提示词工程指南-架构篇

cline 提示词工程指南-架构篇 本篇是 cline 提示词工程指南的学习和扩展,可以参阅: https://docs.cline.bot/improving-your-prompting-skills/prompting 前言 cline 是 vscode 的插件,用来在 vscode 里实现 ai 编程。 它使得你可以接入…

代理模式简述

目录 一、主要角色 二、类型划分 三、静态代理 示例 缺点 四、动态代理 JDK动态代理 示例 缺点 CGLib动态代理 导入依赖 示例 五、Spring AOP 代理模式是一种结构型设计模式,通过代理对象控制对目标对象的访问,可在不改变目标对象情况下增强…

【Docker】运行错误提示 unknown shorthand flag: ‘d‘ in -d ----详细解决方法

使用docker拉取Dify的时候遇到错误 错误提示 unknown shorthand flag: d in -dUsage: docker [OPTIONS] COMMAND [ARG...]错误原因解析 出现 unknown shorthand flag: d in -d 的根本原因是 Docker 命令格式与当前版本不兼容,具体分为以下两种情况: 新…

【AI插件开发】Notepad++ AI插件开发实践:实现对话窗口功能

引言 之前的文章已经介绍实现了AI对话窗口,但只有个空壳,没有实现功能。本次将集中完成对话窗口的功能,主要内容为: 模型动态切换:支持运行时加载配置的AI模型列表交互式输入处理:实现多行文本输入与Ctrl…

在激烈竞争下B端HMI设计怎样打造独特用户体验?

在当今数字化高度发展的时代,B 端市场竞争愈发激烈。对于 B 端 HMI(人机界面)设计而言,打造独特的用户体验已成为在竞争中脱颖而出的关键因素。B 端用户在复杂的工作场景中,对 HMI 设计有着独特的需求和期望&#xff0…

【Netty篇】Handler Pipeline 详解

目录 一、 Handler & Pipeline——流水线上的“特种部队”与“生产线”1、 ChannelHandler —— 流水线上的“特种兵”👮‍♂️2、 ChannelPipeline —— 生产线上的“接力赛跑”🏃‍♀️🏃‍♂️ 二、 代码实例1、 服务端代码示例2、 客…

16-算法打卡-哈希表-两个数组的交集-leetcode(349)-第十六天

1 题目地址 349. 两个数组的交集 - 力扣(LeetCode)349. 两个数组的交集 - 给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1:输入:nu…

java + spring boot + mybatis 通过时间段进行查询

前端传来的只有日期内容&#xff0c;如&#xff1a;2025-04-17 需要在日期内容的基础上补充时间部分&#xff0c;代码示例&#xff1a; /*** 日志查询&#xff08;分页查询&#xff09;* param recordLogQueryDTO 查询参数对象* return 日志列表*/Overridepublic PageBean<…

helm账号密码加密

1、安装工具 sudo apt update sudo apt install gnupg -y wget https://github.com/getsops/sops/releases/download/v3.10.2/sops-v3.10.2.linux.amd64 mv sops-v3.10.2.linux.amd64 /usr/local/bin/sops chmod x /usr/local/bin/sops2、生成加密文件 gpg --full-generate-…

Flink 编程基础:Scala 版 DataStream API 入门

大家好&#xff01;我是心海 流处理技术在大数据时代正变得越来越重要&#xff0c;而 Apache Flink 作为领先的流处理引擎&#xff0c;凭借其高性能、低延迟和丰富的 API 受到了广泛关注。本文将以 Scala 语言为例&#xff0c;详细讲解 Flink DataStream API 的基本编程模型&am…