MaixCAM / MaixCAM2 使用 PicoClaw
PicoClaw 是什么
PicoClaw 是 Sipeed 发起的轻量级开源 AI Agent 项目,使用 Go 编写,可以运行在 PC、MaixCAM / MaixCAM2、树莓派、LicheeRV-Nano 等 Linux 设备上。
在 MaixCAM / MaixCAM2 中运行 PicoClaw 后,你可以在 PicoClaw 的对话界面里让它直接操作设备本机,例如创建并运行 MaixPy 脚本、调用摄像头、运行 YOLO 模型、读取检测结果,然后把结果回复给你。
使用前准备
- 让 MaixCAM / MaixCAM2 连接网络。
- 根据 PicoClaw 官方文档安装适合当前设备架构的
picoclaw可执行文件,参考 PicoClaw 文档。 - 按 PicoClaw 文档完成模型供应商、API Key 等配置。
设备架构可以在 MaixCAM / MaixCAM2 终端中查看:
uname -m
配置完成后,可以先在设备上运行一次简单对话确认 PicoClaw 可用:
picoclaw agent -m "你好,请回复一句话说明你已经在这台设备上运行"
也可以使用 PicoClaw 提供的网页或终端界面进行交互,具体以 PicoClaw 官方文档为准。
通过 PicoClaw 运行一次人体检测
下面示例的思路是:
- 你在 PicoClaw 对话界面中提出任务。
- PicoClaw 在 MaixCAM / MaixCAM2 本机创建一个 MaixPy 脚本。
- PicoClaw 执行这个脚本。
- 脚本打开摄像头,使用 YOLO 检测
person。 - 如果检测到人体,脚本打印检测结果并保存一张标注图,PicoClaw 根据输出提醒你。
你可以把下面这段话发给 PicoClaw:
请参考https://wiki.sipeed.com/maixpy/doc/en/index.html, 在当前创建 /root/picoclaw_person_detect.py, 并执行以下操作:
1. 写入一个 MaixPy 程序:打开摄像头,使用 YOLO 模型检测 person,最多运行 15 秒。
2. 如果检测到 person,请保存标注图到 /root/person_detected.jpg,并输出 PICOCLAW_PERSON_DETECTED、置信度和坐标;如果没有检测到,请输出 PICOCLAW_NO_PERSON。
3. 然后执行 python /root/picoclaw_person_detect.py,并根据输出结果通知我。
PicoClaw经过思考后, 生成的脚本如下(注意建议选一些能力强的模型, 否则有可能生成一些错误代码):
from maix import camera, display, image, nn, app, time
MODEL_PATH = "/root/models/yolov5s.mud"
TIMEOUT_MS = 15000
OUT_IMAGE = "/root/person_detected.jpg"
detector = nn.YOLOv5(model=MODEL_PATH, dual_buff=True)
# 如果使用 YOLO11 模型,可以改成:
# detector = nn.YOLO11(model="/root/models/yolo11n.mud", dual_buff=True)
cam = camera.Camera(detector.input_width(), detector.input_height(), detector.input_format())
disp = display.Display()
start = time.ticks_ms()
detected = False
while not app.need_exit():
img = cam.read()
objs = detector.detect(img, conf_th=0.5, iou_th=0.45)
for obj in objs:
class_name = detector.labels[obj.class_id]
img.draw_rect(obj.x, obj.y, obj.w, obj.h, color=image.COLOR_RED)
img.draw_string(obj.x, obj.y, f"{class_name}: {obj.score:.2f}", color=image.COLOR_RED)
if class_name == "person":
img.save(OUT_IMAGE)
print(
"PICOCLAW_PERSON_DETECTED "
f"score={obj.score:.2f} "
f"x={obj.x} y={obj.y} w={obj.w} h={obj.h} "
f"image={OUT_IMAGE}"
)
detected = True
break
disp.show(img)
if detected:
break
if time.ticks_ms() - start > TIMEOUT_MS:
break
if not detected:
print(f"PICOCLAW_NO_PERSON timeout_ms={TIMEOUT_MS}")
如果 PicoClaw 执行后看到类似输出:
PICOCLAW_PERSON_DETECTED score=0.86 x=120 y=60 w=80 h=180 image=/root/person_detected.jpg
就表示已经检测到人体,并且标注图片保存在 /root/person_detected.jpg。
模型路径说明
示例默认使用 MaixCAM 常见的模型路径:
MODEL_PATH = "/root/models/yolov5s.mud"
如果你的设备是 MaixCAM2,或者系统中已经准备了 YOLO11 模型,可以改成:
MODEL_PATH = "/root/models/yolo11n.mud"
detector = nn.YOLO11(model=MODEL_PATH, dual_buff=True)
实际可用模型以设备 /root/models/ 目录为准。更多 YOLO 用法请看 YOLO 物体检测。