跳到主要内容

Limelight 3A 快速入门

硬件规格

  • 尺寸:2.839in x 1.894in (72.11mm x 48.11mm)
  • 厚度:0.661in (16.80mm)
  • 重量:0.20 lb
  • 安装方式:4x #10 通孔,4x M3,6x M4 螺纹安装孔
  • 电源输入:4.1V-5.75V(通过 USB)
  • 最大功耗:4W
  • 传感器:OV5647 彩色卷帘快门(640x480 @ 90FPS)
  • 无内置 LED 照明
  • 视场角:水平 54.5° 垂直 42°
  • 仅支持 USB-C 连接(无 RJ45 端口)
  • 状态指示灯:绿色(目标检测)
  • 针对 FTC 兼容性优化

软件功能(Limelight OS)

  • 即插即用的高性能视觉系统,无需经验即可使用
  • 自托管的基于浏览器的视觉管线配置界面
  • 支持 FTC(直接 Java 集成)和 FRC(NetworkTables 接口)
  • 可配置曝光、传感器增益、分辨率和帧率
  • 配置 10 个可热切换的视觉管线:
    • 自定义 Python 管线,支持 OpenCV 4.10、numpy 等
    • 2D、3D AprilTag 追踪和机器人定位
      • 使用 MegaTag1 实现完整 3D 定位(机器人 GPS)
      • 使用 MegaTag2 结合外部 IMU 融合实现更高精度的完整 3D 定位(机器人 GPS)
      • 20fps @ 1280x960(2 倍降采样),50fps @ 640x480(2 倍降采样)
      • 网页界面中的完整 3D 可视化器
    • 90FPS 颜色块管线
    • 神经网络目标检测管线(仅 CPU 推理)
    • 神经网络图像分类管线(仅 CPU 推理)
    • 条形码追踪管线
  • 内置 Charuco 内参标定界面
  • 内置低延迟 MJPEG 流媒体

1. 安装 Limelight 3A

螺纹安装(推荐)

  • 使用至少 2 颗 M3 或 M4 螺丝通过螺纹安装孔将 LL3A 安装到 Rev 或 GoBilda 型材上
  • 您也可以使用 VHB 胶带或扎带固定您的 Limelight

通孔安装

  • 使用 1 1/4" #10-32 或 #10-24 螺栓配合尼龙锁紧螺母
  • 或者使用 28mm M4 螺栓配合尼龙锁紧螺母
Limelight 3A 尺寸图

2. Limelight 3A 接线

当您准备在机器人上使用 Limelight 时:

FTC 用户

  • 使用 USB-C 转 USB-A 线缆将 Limelight 3A 连接到 Control Hub 的 USB 3.0 端口
  • 连接到 Control Hub 时请插入 USB 3.0 端口(蓝色端口)

FRC 用户

  • 将 Limelight 3A 连接到 roboRIO 的 USB 端口
  • 使用 USB-C 转 USB-A 线缆

Limelight 3A 不支持 Google Coral。您仍然可以通过将神经网络运行时引擎设置为"CPU"来使用神经网络检测和分类管线。

3. 访问网页界面

通过 USB 将 Limelight 3A 连接到电脑后:

  1. 等待绿色状态指示灯亮起(约 15-20 秒)
  2. 使用以下方法之一访问网页界面:
    • 方法 1:打开 Limelight Hardware Manager 应用程序,扫描 Limelight,当您的 Limelight 3A 出现时双击它
    • 方法 2:打开网页浏览器并访问 http://limelight.local:5801

连接后,您可以访问:

  • Settings 标签页 - 配置队伍编号、主机名和其他系统设置
  • Vision Pipeline 标签页 - 设置和调整视觉处理管线
  • Camera & Crosshair 标签页 - 调整相机设置和十字准星参数
  • 3D Visualization 标签页 - 查看实时 AprilTag 检测和定位

所有配置都通过此网页界面完成。更改会自动保存到您的 Limelight。

4. 更新 LimelightOS

信息

Limelight 出厂时已预装系统镜像。您现在可能可以跳过此步骤。

更新说明(Windows)
注意

更新 LimelightOS 前请保存您的管线。更新过程中它们将被删除。

  • 下载页面下载最新的 USB 驱动程序、Limelight OS 镜像和 Balena Flash 工具
  • 安装驱动程序后重启电脑
  • 按住 Limelight 上的蓝色配置按钮
  • 按住的同时,用 USB 转 USB-C 线缆将笔记本电脑连接到 Limelight(Limelight 会自动开机)
  • 将 LL 插入笔记本电脑后,可以松开蓝色配置按钮
  • 您的 Limelight 现在处于刷机模式,LED 不会闪烁
  • 以管理员身份运行"Balena Etcher"
  • 您的电脑可能需要最多 20 秒才能识别相机
  • 选择下载文件夹中最新的 .zip 镜像
  • 在"Drives"菜单中选择"Compute Module"设备
  • 点击"Flash"
  • 刷机完成后,从 Limelight 上拔下 USB 线缆
更新说明(高级)(macOS 和 Linux)
注意

更新 LimelightOS 前请保存您的管线。更新过程中它们将被删除。

备注

我们正在努力大幅简化 macOS 和 Linux 上的更新流程

  • 下载页面下载 Limelight OS 镜像和 Balena Flash 工具
  • 自行编译 USB Boot 驱动程序:
brew install libusb
brew install pkg-config
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
make
cd mass-storage-gadget64
sudo ../rpiboot -d .
# 只要 rpiboot 在运行,您的相机就能在 macOS 和 Linux 上正确枚举
# 每次刷机时都需要运行 rpiboot
  • 按住 Limelight 上的蓝色配置按钮
  • 按住的同时,用 USB 转 USB-C 线缆将笔记本电脑连接到 Limelight(Limelight 会自动开机)
  • 将 LL 插入笔记本电脑后,可以松开蓝色配置按钮
  • 您的 Limelight 现在处于刷机模式,LED 不会闪烁
  • 运行"Balena Etcher"
  • 您的电脑可能需要最多 20 秒才能识别相机
  • 选择下载文件夹中最新的 .zip 镜像
  • 在"Drives"菜单中选择"Compute Module"设备
  • 点击"Flash"
  • 刷机完成后,从 Limelight 上拔下 USB 线缆

5. 设置流程

FTC 用户

  1. 使用 USB 线缆将 Limelight 连接到笔记本电脑
  2. 按照第 3 节所述访问网页界面
  3. 进入 Settings 标签页设置您的队伍编号,然后点击"Restart Vision Client"
  4. 根据需要配置管线(AprilTag、神经网络、自定义 Python 等)
  5. 准备好比赛时,将 Limelight 3A 插入 Control Hub 的 USB 3.0 端口
  6. 在 FTC DriverStation 应用中,点击"Configure Robot"
  7. 如果没有活动配置,您可能需要创建一个新的
  8. 点击"scan"按钮
  9. 您应该会看到一个"Ethernet Device"出现
  10. 您可以将此设备的名称编辑为"limelight"以便识别
  11. 现在您可以在代码中使用 hardware map 初始化 Limelight3A 对象

FRC 用户

  1. 将 Limelight 3A 连接到笔记本电脑,等待状态指示灯活动
  2. 按照第 3 节所述访问网页界面
  3. 在 Settings 标签页中设置您的队伍编号并点击"Restart Vision Client"
  1. 根据需要配置管线
  2. 准备好后,将 Limelight 3A 插入 roboRIO 的 USB 端口
  3. 打开您喜欢的仪表板,确保 3A 正在向 roboRIO 的 NetworkTables 提交数据
  4. 添加端口转发以在连接到机器人网络时启用实时管线编辑:
// (robotIP):5801 现在将指向 Limelight3A(id 0)的网页界面流:
// (robotIP):5800 现在将指向 Limelight3A(id 0)的视频流:
PortForwarder.getInstance().add(5801, "172.29.0.1", 5801);
PortForwarder.getInstance().add(5802, "172.29.0.1", 5802);
PortForwarder.getInstance().add(5803, "172.29.0.1", 5803);
PortForwarder.getInstance().add(5804, "172.29.0.1", 5804);
PortForwarder.getInstance().add(5805, "172.29.0.1", 5805);
PortForwarder.getInstance().add(5806, "172.29.0.1", 5806);
PortForwarder.getInstance().add(5807, "172.29.0.1", 5807);
PortForwarder.getInstance().add(5808, "172.29.0.1", 5808);
PortForwarder.getInstance().add(5809, "172.29.0.1", 5809);

// (robotIP):5811 现在将指向 Limelight3A(id 1)的网页界面流:
// (robotIP):5810 现在将指向 Limelight3A(id 1)的视频流:
PortForwarder.getInstance().add(5811, "172.29.1.1", 5801);
PortForwarder.getInstance().add(5812, "172.29.1.1", 5802);
PortForwarder.getInstance().add(5813, "172.29.1.1", 5803);
PortForwarder.getInstance().add(5814, "172.29.1.1", 5804);
PortForwarder.getInstance().add(5815, "172.29.1.1", 5805);
PortForwarder.getInstance().add(5816, "172.29.1.1", 5806);
PortForwarder.getInstance().add(5817, "172.29.1.1", 5807);
PortForwarder.getInstance().add(5818, "172.29.1.1", 5808);
PortForwarder.getInstance().add(5819, "172.29.1.1", 5809);

6. 可用管线类型

Limelight 3A 提供与其他 Limelight 型号相同的视觉处理功能:

  • AprilTag 追踪和机器人定位
  • 颜色块追踪
  • 神经网络目标检测(仅 CPU)
  • 神经网络分类
  • 条形码追踪
  • 自定义 Python 管线

每台 3A 出厂时都内置了 FTC Into The Deep 场地地图。

7. FTC 编程

基础 FTC 示例:FTC 示例

大多数应用只需不到 10 行代码:

public class Teleop extends LinearOpMode {

private Limelight3A limelight;

@Override
public void runOpMode() throws InterruptedException
{
limelight = hardwareMap.get(Limelight3A.class, "limelight");

telemetry.setMsTransmissionInterval(11);

limelight.pipelineSwitch(0);

/*
* 开始轮询数据。
*/
limelight.start();

while (opModeIsActive()) {
LLResult result = limelight.getLatestResult();
if (result != null) {
if (result.isValid()) {
Pose3D botpose = result.getBotpose();
telemetry.addData("tx", result.getTx());
telemetry.addData("ty", result.getTy());
telemetry.addData("Botpose", botpose.toString());
}
}
}
}
}

为获得最高的 3D 定位精度,请调用 updateRobotOrientation() 并使用 getBotPose_MT2()

while (opModeIsActive()) {
YawPitchRollAngles orientation = imu.getRobotYawPitchRollAngles();
limelight.updateRobotOrientation(orientation.getYaw(AngleUnit.DEGREES));
LLResult result = limelight.getLatestResult();
if (result != null) {
if (result.isValid()) {
Pose3D botpose = result.getBotpose_MT2();
// 使用 botpose 数据
}
}
}

更多信息请参阅 FTC 编程页面

8. 故障排除

状态指示灯说明

  • 绿灯:慢闪(无目标),快闪(检测到目标)

常见问题

  • 为什么我的 Limelight 摸起来这么烫? 为了让 Limelight 尽可能保持凉爽运行,它的外壳必须尽可能地热/在安全触摸范围内尽可能热。它的外壳是一个高导热性的散热器,有助于保持 CPU 在合理的低温下运行。

  • 为什么图像看起来噪点很多? 为了最小化延迟,跳过了商用相机上通常存在的几个滤镜。视频流也经过压缩以最小化比特率。在 2024.10.1 版本中,我们更改了默认的白平衡值,使图像在人眼看来更自然、更鲜艳。

  • Limelight 相比 Control Hub 上的 OpenCV 有什么优势? 开箱即用、零代码的多标签定位算法,支持机器人 IMU 传感器融合、神经网络等功能。