智能台灯LeLampX快速入门教程-舵机校准与安全
纠错,疑问,交流: 请进入讨论区或 请点击进入页面,扫码加入微信群或Q群进行交流
获取最新文章: 扫一扫加入“创客智造”公众号
舵机校准与安全
目标:学会给 LeLamp 的 5 个舵机做完整校准(连接→回零→释放→摆 home→记录行程),了解安全范围限制,掌握方向定标(--wizard)与默认动画设置,避免舵机超行程损坏
一、校准是什么、为什么重要
LeLamp 的 5 个舵机(Feetech STS 系列,12bit 编码器,中心 2048)需要一份校准文件才能工作:
- 记录每个关节的中立位(home)——舵机"0 度"在哪
- 记录每个关节的物理行程边界(range_min / range_max)——防止超行程损坏
没有校准文件,舵机服务直接不启动——因为系统不知道 home 在哪。新装舵机、更换舵机、动作"跑偏"时都需要重新校准。
二、校准前准备
- 灯体放在桌面,周围留出活动空间,确认无机械干涉、无卡阻
- 通过 SSH 登录设备(网络与远程访问)或使用 WebUI 校准页面
- 校准过程中舵机会释放扭矩,请用手扶住灯体,防止突然坠落
三、校准流程(五步)
以下为
calibration_service的标准流程(WebUI 校准页面/CLI 均按此执行)。
第 1 步:连接并回到 0 位
系统连接舵机总线,所有关节移动到 0°。
你应看到什么:5 个舵机轻微动作,回到当前校准的零位。
第 2 步:逐关节释放扭矩
按顺序(base_yaw → base_pitch → elbow_pitch → wrist_roll → wrist_pitch)逐个释放舵机扭矩。
你应看到什么:被释放的关节可以用手自由转动(无阻力);未释放的关节仍然锁死。
每释放一个就立刻用手扶住,避免灯体因重力下垂。
第 3 步:手动摆到 home 姿势
用手把每个关节摆到你想要的"中立/待机"姿势(参考:灯体直立、灯头朝前)。
你应看到什么:摆好后系统记录该位置为 home(对应 homing_offset,写回舵机 EEPROM 与校准文件)。
第 4 步:批量记录全行程
逐个关节手动掰到物理极限两端,系统记录 range_min / range_max。
你应看到什么:每个关节记录到两个边界值;感到明显阻力就停,不要硬掰。
第 5 步:保存校准
校准写入 ~/.lelamp/calibration/lelamp.json,并自动生成 home 动画。
你应看到什么:校准文件出现且内容完整(每关节含 id、homing_offset、range_min、range_max);重启后舵机服务正常启动,先回 home 再播 idle 动画。
校准文件位置与结构
~/.lelamp/calibration/lelamp.json
| 字段 | 说明 |
|---|---|
id |
舵机总线 ID(1=base_yaw, 2=base_pitch, 3=elbow_pitch, 4=wrist_roll, 5=wrist_pitch) |
homing_offset |
出厂 2048 → 中立位的偏移量 |
range_min / range_max |
物理极限(保护,防超行程) |
补充:CLI 录 home
# 把当前姿势录成新的 home(更新标定并写入)
uv run scripts/go_home.py --save
# 回到校准录制的姿势
uv run scripts/go_home.py
四、安全范围(软范围表)
系统在动画层还有一层软范围(归一化值,home=0,总线硬边界 ±100),任何动画/动作都不会超出:
| 关节 | 软范围 | 说明 |
|---|---|---|
| base_yaw | ±50 | 底座旋转,范围最宽 |
| base_pitch | ±30 | 防翻倒,限制最紧 |
| elbow_pitch | ±40 | 点头 |
| wrist_roll | ±40 | 歪头 |
| wrist_pitch | ±40 | 挥手 |
物理行程(校准记录值)比软范围宽:base_yaw / wrist_roll 约 ±180,其余约 ±90。软范围是安全缓冲——动画最多走到 ±50 以内,不会顶到机械极限。 另外动画单帧最大步进 10,超出会自动插值分解,保证动作顺滑不甩头。
五、默认动画设置(idle / home)
校准完成后,系统启动顺序固定为:
回家(home)→ 停留 3.5 秒 → 播放 idle 动画
| 文件 | 位置 | 说明 |
|---|---|---|
| home.csv | lelamp/recordings/home.csv |
450 帧 × 30fps = 15 秒,5 关节均为校准后的实际 home 角度(校准完成自动写入) |
| idle.csv | lelamp/recordings/idle.csv |
待机动画,wrist_pitch 限幅在 [-55, -45](灯头始终向前,不会上翘) |
你应看到什么:开机后灯体先平滑回到 home 姿势,停 3.5 秒,然后开始轻微 idle 摆动。
想改待机姿势?把灯手动摆好 → 用
go_home.py --save或 WebUI 校准页面重新录制即可。
六、方向定标(--wizard)
校准管"位置",定标管"方向"——确认每个关节的正方向符合标准。换舵机/重装后必做:
python3 scripts/test_servo_angle.py --real --wizard
向导对每个关节依次执行:转到 +30 → 观察 → 转到 -30 → 观察 → 回 home (0) → 人工确认"正值方向是什么"。
你应看到什么:按提示逐个回答后,结果写入 ~/.lelamp/calibration/direction_map.json;中途 Ctrl+C 可中断,已确认的关节保留。
方向标准(2026-08-01 实测固化)
| 关节 | 正值(+) | 负值(-) |
|---|---|---|
| base_yaw | 向右转(俯视顺时针) | 向左转 |
| base_pitch | 向前倾 | 向后仰 |
| elbow_pitch | 向前点头 | 向后收 |
| wrist_roll | 向右歪头 | 向左歪头 |
| wrist_pitch | 向上抬 | 向下压 |
定标结果与上表不符 → 按 舵机安装规范 返工重装,不允许改软件"凑对"。
安装后验证(强制)
# 1. 一键自测(mock 总线,先确认软件链路)
bash scripts/test_motion_all.sh
# 2. 真机方向自检(逐动作观察物理方向)
python3 scripts/test_motion_interactive.py --real --dir-test
你应看到什么:forward 灯体前倾、right 俯视顺时针、nod 灯头向前点、wave 腕部摆动……任何一项不符 → 检查该关节安装方向 → 返工重装 → 重跑验证。
常见问题
| 问题 | 处理 |
|---|---|
| 舵机服务不启动 | 检查 ~/.lelamp/calibration/lelamp.json 是否存在且完整;缺失则重新校准 |
| 动作"跑偏"、回不到原位 | 重新校准(home 偏了);或重录 idle/home 动画 |
| forward 变后仰 / left 右转 | 该关节装反了,按安装规范返工重装,不要改软件符号 |
| 动作串关节 | 舵机 ID 拨码错误,重新烧录 ID(1~5 与关节一一对应) |
| 动作卡阻/异响 | 行程干涉,检查结构件;确认软范围未超(动画层已自动限制) |
| 想改待机姿势 | 手动摆好 → go_home.py --save 或 WebUI 校准页面重录 |
| 大角度快速甩动 | 单次测试动作幅度建议 ≤30,动画层有单帧步进限制但测试脚本直连总线 |
纠错,疑问,交流: 请进入讨论区或 请点击进入页面,扫码加入微信群或Q群进行交流
获取最新文章: 扫一扫加入“创客智造”公众号


















