turtlebot3-burger_150.png
turtlebot3-waffle-pi_150.png
turtlebot3-arm_150.png
walking-y2_150.png
turbot3-multi_150.png
turbot3-dl-ros1_150.png
turbot3-ai.png
turbot3-dl-ros2_150.png
turbot3-slam_150.png
turbot3-arm_150.png
turtlebot4-lite_150.png
turtlebot4-pro_150.png
turbot4-dl_150.png
turbot4-ai_150.png
aidriving-racebot_150.png
aidriving-autodrive_150.png
turtlebot-arm_150.png
openmanipulator-x_150.png
Home » 智能台灯LeLampX快速入门教程 » 智能台灯LeLampX快速入门教程-舵机校准与安全

智能台灯LeLampX快速入门教程-舵机校准与安全

纠错,疑问,交流: 请进入讨论区请点击进入页面,扫码加入微信群或Q群进行交流

获取最新文章: 扫一扫加入“创客智造”公众号

舵机校准与安全

目标:学会给 LeLamp 的 5 个舵机做完整校准(连接→回零→释放→摆 home→记录行程),了解安全范围限制,掌握方向定标(--wizard)与默认动画设置,避免舵机超行程损坏


一、校准是什么、为什么重要

LeLamp 的 5 个舵机(Feetech STS 系列,12bit 编码器,中心 2048)需要一份校准文件才能工作:

  • 记录每个关节的中立位(home)——舵机"0 度"在哪
  • 记录每个关节的物理行程边界(range_min / range_max)——防止超行程损坏

没有校准文件,舵机服务直接不启动——因为系统不知道 home 在哪。新装舵机、更换舵机、动作"跑偏"时都需要重新校准。

二、校准前准备

  1. 灯体放在桌面,周围留出活动空间,确认无机械干涉、无卡阻
  2. 通过 SSH 登录设备(网络与远程访问)或使用 WebUI 校准页面
  3. 校准过程中舵机会释放扭矩,请用手扶住灯体,防止突然坠落

三、校准流程(五步)

以下为 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 动画。

你应看到什么:校准文件出现且内容完整(每关节含 idhoming_offsetrange_minrange_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群进行交流

获取最新文章: 扫一扫加入“创客智造”公众号


标签: LeLampX, LeLamp2