两个词:"驱动" = driver/ 这个程序(读相机和关节读数、量、动胳膊);"Qwen" = 看图写命令的模型。
目标不变:Qwen 独自当脑,第一次做就成,RoboDojo 55 个任务。验收第一条:藏起来的剪刀,Qwen 独自抓起 10 cm。
三个月压成三句
- 八月:驱动会从东西的形状算"该捏哪、从哪边进、往哪推"(十三个动词一张表,离线全验,推 T 朝向 119.6°→2.49°),但量不准自己的手和东西在哪,手走不到那个点。
- 九月:驱动重写,学会了量准自己(相机长在哪只手、指尖在哪、不动的眼在世界里哪儿、东西 = 几只眼视线的交点),今天能走到毫米级;但重写时把"从哪边进"那一步删了,变成要 Qwen 想,Qwen 想不出。
- 现在:把八月那一步搬回九月的驱动。不是回滚,是移植。深度和这件事无关(09-11 死命令:不许依赖深度相机;八月那套本来就有不用深度的路)。
09-23 凌晨:Qwen 独自第一次抓起来了(H48,仿真自己判 Success)。 键盘换成了一句话:do scissors height up until touched——脑只说哪件东西的哪个量往哪变,身体自己从形状算怎么下手、从上面进、合、抬。视频 results/grounding-sep2026/H48_qwen_first_hold/。H49 又成了一次(2/2,视频 results/grounding-sep2026/H49_qwen_second_hold/);验收线要 3 次里 ≥2 次,H50 在跑。
昨天(09-22)的账
- 剪刀被夹住并抬起 1 次(H26),仿真自己判 Success,视频在
results/grounding-sep2026/H26_first_hold/。脑是我,不算验收。 - Qwen 独自:H27–H42 0/16。每炮修驱动一处(全在 LAB 09-22 逐炮记着,提交
b5c3c33…8aba2af),链一炮比一炮长:H34 起 Qwen 的话能把手送到剪刀正上方 1 mm、指尖朝下;H37/H38 手到剪刀上、柄环在两指之间(帧证)。还没合到剪刀上,卡在三处: ① 位置估计在近处会漂(手挡住头顶眼、单眼估计盖掉两眼交点、偏差大的交点被当真)—— 已加三道量出来的判据(8aba2af);H43 里 Qwen 只写了right和乱码,几何走法一次没跑,判据还没在实炮里验过; ② 右臂横跨整桌够剪刀(剪刀离左手 10 cm,可左腕眼朝向没量过,左手永远选不上),在关节尽头一步只走三成、假"碰到";开机顺便给左腕眼量朝向的路试过,它看不见另一只手的指尖,撤回; ③ Qwen 的话:十有八九是above … until touched然后close或farther,也写it、onto、乱码;身体已把above…until touched当"到上方再压到碰到"、close X当"先把合拢点送到 X 上再合"。
下一步,只有一件事:Qwen 独自把剪刀抓起来(第一次就成)。成了才谈第二个动词(放、推、压、插、倒),每个动词 = 驱动从形状算"碰哪、往哪使劲",Qwen 只说"哪个东西、最后要怎样"。 最值得先做的一块:让离东西近的那只手用得上(左腕眼的朝向),右臂就不用横跨整桌在关节尽头干活。
读题类任务(算式、井字棋、按语言分类)成不成只看 Qwen 读不读得懂,驱动帮不上。
世界靠学,身体靠量。我一动,跟着动的那一块,就是我。手在哪,靠感觉不靠认:关节这样的时候手在画面哪儿,看过一次就记住。 脑(大模型)只看带编号的画面、只说"第几号 → 去哪 → 直到什么事件为止";身体靠自己动一动把一切量出来;两边之间没有第三种东西。
| 学的 | 量的 | 不做 |
|---|---|---|
世界:脑在编号彩图上点名(driver/src/brain.adb 合同,问脑 同款) |
部件图(逐通道推)· 相机长在哪只手 · 握区(合空扫过的像素)· 通道响应表(递推最小二乘)· 噪声地板 · 碰上/推不动(零表更准)· 拿住了没(抬一截看跟不跟) | 机体参数 / URDF / 相机内外参 / 写死的策略 / 真机 / 力的大小(只当机体自报的数据) |
驱动 = driver/(Ada;监视器 monitor 与备份 backup 是 SPARK,gnatprove 34 条全证;其余 Ada 加运行时检查)。零依赖(msgpack、WebSocket、HTTP、JSON、BMP、光流全自写)。安全核 fast/(SPARK,40/40)沿用。
身体图(schema,owner 2026-09-07:"人永远不需要认出自己的手"):每次真看见自己手指(合手/抖手指时动过的像素)就把 位姿 → 两瓣位置+深度 记成样本;之后手在世界相机里的位置 = 按此刻位姿查最近样本 + 响应表外推,不看画面;熟地(离样本不超过一步核实过的步幅)只让光流核对,生地或大步才抖手指看一眼、看完记进图。存进身体文件。
全身,只有一种东西:零件(owner 2026-09-07:"必须加了全身""手指不也是零件吗"):每个通道带一块 —— 那个通道单独动时跟着动的那一块(从那个关节往外);握合通道也是通道,它带的那块就是手指(Chan_K = Chan.Per_Arm),多团时每团一个点(两指 = 2 团;五指是欠账)。开机每个通道推过一下、合空一次,就把全部零件记进同一位姿的样本;脑能点名任何一块并让它去某格/某关系,身体缺表当场量表;生地/大步后"看一眼" = 推一下它自己的通道再推回(手指就是合几拍再张回),动过的像素就是它。
越用越强 = 身体文件(--in/--out cal.json,钥匙 = 机体自报的形状):开机装回 → 每只手推一下核对 → 同一具身体直接用(探针 300 拍 → 核对 ~20 拍);对不上才重量;历次量到的取中位数、噪声地板只放大;响应表和核实过的步幅一起存。
桌子按 owner 的难度摆:剪刀 (0.00, −0.30),开局两只腕眼都看不见、头顶眼看得见(V3 核实)。任务:双手同时抓起剪刀和离它最近的东西。 剪刀被夹住并抬起 1 次(H26,脑是我);Qwen 当脑 0 次(H27 在跑)。
| 环 | 状态 | 证据 |
|---|---|---|
| 看 / 说 / 认名字 / 语法 | 🟢 | LAB 09-21 |
| 不动的眼知道自己在哪 | 🟢 | 开机看着自己的手挪(每只手 4 停合空)⇒ 头顶眼位置 (−0.07, −0.59, 1.33) m、残差 11.3 px,存进几何文件(H16) |
| 找东西 + 选手 + 转眼 | 🟢 | 脑在头顶眼里指剪刀 ⇒ 身体挑"眼量得出远近"的那只手(右)⇒ 头顶眼视线 ∩ 面 = 它在哪 ⇒ 转右腕眼 1.0 rad ⇒ 腕眼里看见了藏起来的剪刀(H19,H26 复现) |
| 它在哪 = 几只眼同一时刻的视线交点 | 🟢 新 | Geom.Meet:两眼都看见的那一帧直接出交点(H26:偏差 0.014 m),不用横挪、东西动不动一样;只剩一只眼看见时退回"我自己挪过的那几眼"并如实说前提是它没动 |
| 到它正上方、手指朝下 | 🟢 新 | above 12 推 · 87 拍,0.001 m;指尖方向对齐面的法线(Geo_Turn … Along => G.Tip) |
| 夹住 + 抬起 | 🟢 新 | H26:从悬停画面重读框 ⇒ touching small 到离合点 0.030 m ⇒ close 读数 0.054 / 空手 0.000 ⇒ 手指卡住 ⇒ 试抬就过了仿真自己的 0.1 m 线 ⇒ Success 1/0(results/grounding-sep2026/H26_first_hold/) |
拿着 farther 抬 10 cm |
没跑到 | 仿真在试抬那一下就判成功并结束了这一集;没拿着的 farther 仍会掉回老路(几百拍),待改 |
| 双手同时 | 未做 | 执行器一段只动一条胳膊 |
| Qwen 自己开整条链 | 🔵 在验 | H26 是我当脑(BL_BRAIN)逐环查通;验收只算 Qwen —— H27 同一张桌、同一个二进制、Qwen3.5-9B 独自当脑 |
诚实边界:① 只此一炮,还没重复;② 头顶眼标定 11.3 px ⇒ 交点误差 6–12 cm,H26 靠腕眼贴近时逐帧重量补掉的;③ 转眼之后手挡住头顶眼 ⇒ 后半程只有一只眼,交点退化成挪眼历史(会动的东西这一段量不出)。
语言设计上正在改的根:关系词表不再由人写;"哪个量、往哪变、到什么结局"由身体列量、脑指结果(owner 09-22 定;across/along 之类的词表方案已否)。
🔴 具名的阻塞变了,而且不在模型那边:递给解码器的关系词表【一个词都没有】。
act.adb 造语法时问 Plan.Usable_Rels (Rep0, **-1**, …)(那一刻脑还没点名靶子),而 Row_Ok
把「还没靶子」和「真越界」写成同一句 ⇒ 每一行都判"不能用" ⇒ 每个需要任何一行的关系词全被否,
只剩 still/close/open,而这三个又被 Usable_Rels 按名字排除。
CS5(Qwen 全程自己开车,175 轮):交上来 82 段、合语法 60、移动命令 0、拿住 0。0 条移动命令是结构上写不出来。
在这之上还有一层:五行里「远近」是死的(0/5 块量得出),因为开机标定里量它的整段包在
if Has_Depth then 里,BL_NO_DEPTH=1 时一次都不跑。要「远近」的有 6 个词:
touching nearer farther onto off into。
| 键 | 死在哪 | 状态 |
|---|---|---|
靠近 touching |
只死在授权(执行器在无深度下本来就能跑,距离走「看着多大」) | 🟢 已修 e4ddf79,离线编译器已验过 |
抬起 farther |
死在执行(整条写在深度上,无深度权重 0 ⇒ 放上键盘也空转) | 🔴 待 owner 定。身体会抬:act.adb:4633 不碰深度,close 的试抬就是它 |
待装(按承重):1f77605(键盘不再恒空)· e4ddf79(靠近回键盘)· 23f8502(撤回假的"通道死了")·
f6aac14(每轮记下真实键盘)· 316bd16(清单念出量到的读数)。逐条读数见 results/plan-sep2026/PLAN.md §3f / §3f-2。
- 🟢 棒球抓起来了,3 次,全在同一张桌(布局 0):GB5(深度通道开着但驱动没读)、GC2、GC4 第 1 桌(后两次 BL_NO_DEPTH=1,纯彩色)。
origin/fo-base0702052,脑 = Claude 走scratchpad/brain_loop2.py。 贴近 4 推到差 ≤3 mm → 合(读数 0.587)→ 直上 45 mm 判拿住 → 12 × 9 mm 慢抬 108 mm,每截核一次球还在指间。视频~/Downloads/GC4_三机.mp4(GB5/GC2 同名)。 - 六桌连跑(GC4)真成绩 1/6:1 抓起 · 1 跳过(布局 4 的椭球在头顶眼清单里指不出)· 4 被链路 bug 掐掉(空动作被重发,已修
0702052)。仿真自己报 6/6 —— 它把提前结束的集一律记成功,不能信。 - 拍数:第 1 桌一集 205 拍,其中开机量身体 22 拍;之后的桌不再开机 ⇒ 约 183 拍 < 官方 200。第一桌要进 200 还得省 ≥5 拍或让开机不算。
- 怎么做到的(几何驾驶,
driver/src/geom.*):腕眼里只用彩色图 + 手的位姿读数 + 焦距。手横挪一段(读数说的米数),看球在画面里跳多少像素,两条视线一交 = 球在哪; 每截走六成再量,最后一截靠读数走完;合手前不再走;拿住 = 抬后它在腕眼里不动;抬时抓握通道一直给"合到底"。 这一维("前后")FO 之后 180 炮没有一个量法稳过,根子是身体不许读自己的本体感觉;现在读了,误差随距离平方缩,指尖前毫米级。 - 每具身体量一次存进
<cal>.geo.json:相机朝向(盯着一个不动的东西挪四下,盲拟合,0.3–1.6°)、指尖在相机里的位置(有深度的开机帧量一次;真机用尺子)。 - 明说的假设:抬 = 位姿读数系的 z 轴朝上(真机该由重力读数定);内参从观测里按形状认(官方不发 ⇒ 真机手机拍一次棋盘格)。
- 具名的阻塞:头顶眼看不见球(球滚到某只手腕下、或被大东西挡)时,脑没有语法指定另一条胳膊的眼 ⇒ 那桌无解。要补的是身体侧:头顶眼答 0 就轮流拿两只腕眼问脑。
- 还没做到的:① 换桌抓起 0 次;② 第一桌 205 > 200;③ Qwen3.5-9B 当脑还没跑(离线:腕眼认球对、头顶眼错、程序不合语法);④ 三维记忆/
above/暗物识别没在炮上验过。 - 六桌重跑(GC6)真 0/6,且其中只有 3 桌有棒球(布局 0/17/41;4/16/28 是羽毛球桌)⇒ 有效 0/3:布局 0 咬到球顶抬滑(最后一截差 8.8 mm)· 布局 17 第一大截逆解失败、仿真静默不动 · 布局 41 球躲在右爪底下只有右腕眼看得见。仿真又报 6/6,不能信。
- GC7(三张真有棒球的桌,三处改动装上)真 0/3:布局 0 走的路和三次成功逐毫米相同,只是抬 45 mm 那截滑了(5 次里 3 成 2 滑 = 捏在球顶的边缘抓法);布局 17 左手第一截够不着(stalled 一推交回脑,根子是远处视差误差 + 落点在桌下);布局 41 换眼兜底走通、但球贴画面边沿视差算废。仿真判分照旧不能信。
- GC8(正上方直下 + 手指读数当力)真 0/3:布局 0 直下 45 mm "顶住"判对、抬时手指读数下落判出"在滑"(力传感生效),但指尖仍停在重心上方 ~2 cm(老的往手心偏三成在垂直下法里变成往上偏),合爪还是捏上半截 ⇒ 已改成悬停点正对重心、直下到重心再往下三成或顶住(
16cd32f,已装 b1bae248a834,未打,等点头);布局 17 远处第一截够不着(未治);布局 41 换眼通、贴边视差废、手臂甩出 40 cm(未治)。 - GC9(Qwen 当脑)= 0/587 段合语法,手臂 0 动,同一句错话循环。受限解码后来做了(
structured_outputs.grammar),合语法从 0/587 升到 60/82;但手臂仍然 0 动 —— 根子是上面那条:键盘上没有关系词。 - GC10(我当脑)0 拿起:直下已能到 54 mm、手指到球腰以下,但我把"读数往小走"误判成滑、松了手;贴边后退方向错。两条都改了(
cbd5eda)。 - GC10–GC13(我当脑,排成一排任务)四炮 0 拿起。 彩色帧看清了根子:这只爪的指尖是楔形,手指到球腰一夹球就往上冒出指缝;抓住过的三次都是捏球顶。立住的机制:正上方直下顶住即停 · 手指读数当力(合到空手值 = 空)· 朝向对齐(现场量哪个通道让画面转)· 换眼兜底 · 贴边后退 · 远了不下降 · 逆解失败交回脑。没立住:球的抓法、左腕眼标定(残差 8–10 px)、两色/小块跟踪。
- GC14:再合没触发(画面上移只两成)⇒ 加了力的信号(合爪读数第 5 拍后再爬 3% = 它在动)。GC15:球合上时读数稳、抬时才溜 ⇒ 改成抬时溜走就回到高 13 mm 处再合再抬。GC16:再合触发了但球溜走后滚开、原地合到空 ⇒ 改成下次贴近它少下 13 mm、脑脚本再贴近一次。GC17:再贴近时测距跟丢 ⇒ 改成溜走后直接回到上次的三维位置上方再少下一截。GC18:回到上次位置合到空(球被挤开了几厘米)⇒ 改成先按画面重定位置。GC19:截断块重定偏、合到空 ⇒ 先贴边后退再重定。GC20 作废(我这边会话停了两小时)。GC22 彩色帧:合爪时指尖在球顶上方相遇,球没进指缝 = 没对准球心(容差 9 mm 对楔形指尖不够)⇒ 合之前用腕眼对中(指尖相遇像素 vs 它的重心像素,落到指尖高度差多少挪多少)。GC23:对中没跑(身体文件不存扫过的掩膜)⇒ 改用区框顶边正中。GC24:对中真跑了,球心偏 4 cm 被修正到 4 mm;但顶住后抬 18 mm 再合把指尖抬到球顶上方、合到空 ⇒ 顶住就在那个高度合,不抬。GC25:对中只跑了一轮(第二轮槽丢了),球还在指尖前方 6 cm,合到空 ⇒ 认不到就取最大块、三轮。GC26:对中三轮来回摆,球在相遇像素那条视线上却在指尖前下方,合空 ⇒ 改三角测量出球的三维位置。GC27:三角测量把球算到指尖后下方、越挪越远,撤回 ⇒ 按量出的增益迭代五轮、每轮横挪后直下到顶住。GC28:对中收敛(差 3.6 mm),合在球上 0.495 抬 36 mm 滑出;高 13.5 mm 再合 0.578 抬 45 mm 还在手里、再挪 72 mm 掉 ⇒ 合前探 3 个高度取读数最大处。GC29:合前三处试合读数 0.43/0.34/0.04(越高越窄:指尖只到球顶下 1 cm),试合把球推走、真合合空 ⇒ 探法撤回。结论:对中已解决(三炮 0.9–3.6 mm);这副楔形指尖对 69 mm 球只能掐顶、靠摩擦,成败一半。 GC30:对中被半个张口的门槛拦住(45.1 vs 45.0),门槛放到一个张口;GC31:球压着腕眼下沿时重心偏高,对中来回摆五轮没收敛、合空 ⇒ 压边块按没切的边估重心。GC32:仍来回摆 —— 视线落到"指尖高度"在手前/手后两侧偏差方向相反 ⇒ 改落到它自己的高度。GC33:仍摆 —— 顶住时指尖在球心高度,是横挪后直下把球踢走 ⇒ 对中全在悬停高度做、对准才直下。GC34:悬停高度对中一轮即准(0.7 mm),悬停点本来就在球上;顶住高度合 0.479 抬 18 mm 溜、高 13.5 合空 ⇒ 握处窗口几毫米,改成从顶住高度每 4.5 mm 试合找读数最大格。GC35:细探试合把球推走、合空;试合撤。对得越准越糟(正对直下在球最宽处被顶住只能掐边;偏几毫米反而下得更深罩住球)⇒ 顶住后两边各错开 9 mm 再直下取更深一侧。GC36:两边错开没让手指更深(记账差),偏 9 mm 那侧合空,撤回 ⇒ 溜走后重试少下 4.5 mm。GC37:球重试少下 4.5 mm 合空(窗口更窄);纸杯蛋糕抬离 45 mm 读数 0.169 却被画面旁证误判溜走、扔了 ⇒ 拿住只由力判。GC38 跑完(81d92e7e5fbe):三桌 0 拿起 0 放下。布局 0 球重试合 0.545、抬 45 mm 力判 held,再挪时读数缩到 0 溜掉(掐顶靠摩擦,球到此为止);布局 17/41 的小件都在视差那一步丢(视线不相交 / 侧移时离开视野)。今日定论:腕眼对中已解决(悬停高度一轮 0.7–1.1 mm);拿住只由力判;球是夹爪极限;下一步 = 小件/远处的视差与跟踪。
- 下一步(候选,按 GC6 的死法排):① 没走成就折半、再不动就交回脑(治逆解失败);② 头顶眼答 0 就轮流拿腕眼问脑(治球躲在爪子底下);③ 两色球:切块按"上下相邻、合起来像一团"合并;④ Qwen3.5-9B 当脑跑同三桌。owner 09-17 点头:①②③ + 开机响应表改成"核而不重量"一起装,只打 0/17/41 三桌,我当脑。标定单独算,不计步数。
-
官方
general_pickup:0/55。GN–HB 十五炮 抓起来 0 次。 最好的物理状态:爪子距球 0.08 画幅(GV,头顶相机原始帧为证)—— 项目在不动的相机里从未到过这么近。 -
🔴🔴 "换了新语言之后 bug 改不完"的真因查清了,不是语言。
a7ab7e9「回滚到 FO 那一刻的驱动,只保留两样改动」一次丢掉 90 个已经修好的东西。 逐条 grep 核实:那一段里 84 个有实质代码的提交,58 个在树里一行不剩。 一多半属于「关掉深度」那条后来被主动废掉的分支(丢得对);跟架构无关、现在照样咬人的 13 条。 GN–HB 撞的很多是这里面早就修好过的老 bug。本轮 12 条已捞回,第 13 条被更好的写法取代。 -
🔴 最值钱的那一条:画面上重合 ≠ 真的在一起。 同一段真实横移,离相机越近在画面里跑得越多, 所以要比的不是画面坐标,而是把目标搬到我这个远近平面上之后的坐标(焦距两边自动约掉,零标定参数)。 FZ:头顶相机报"差 0.062 幅、几乎压上了",爪子在球上方 30 厘米。 HB 真日志同一指纹:误差 1.286 m 里 1.284 m 全是远近,左右上下加起来 8 cm,身体每步照做、差距一点不变。 这就是十几炮"靠近 → 停在一个错的稳定点 → 退开"的机制。
-
🔴🔴 HC(重装后第一炮,0 次抓起)把总病根挖出来了 —— 用它自己存下的 pgm 看出来的,不是从数字猜的:
手 / 相机 扫过像素 外接框 填充率 1 手 / 0 号(不动的眼) 4179 636×438 0.015 ← 散点铺满全画面 = 噪声 1 手 / 1 号(它自己的腕眼) 133385 640×466 0.447 ← 一团手指 2 手 / 0 号 4140 616×430 0.016 ← 噪声 2 手 / 2 号(它自己的腕眼) 136344 640×480 0.444 ← 一团手指 每只手只在自己那只腕相机里看得见开合;不动的那只眼里两只手都看不见。 原因是"扫过哪些像素"取的是 40 步的并集 —— 每步都给每个像素一次越过灰度地板(5/255)的机会。 于是不动那只眼里硬编出一个握区、钉在画面最右边缘(u≈0.898)。下游全线中毒:身体图垃圾 ⇒ 外推炸(判据一正确地拒了它)⇒ 手的位置不可信 ⇒ 拿住判据整段进不去、伺服粗、每段都"认不出自己"。 HC 的四段零推、四次判据四进不去,根全在这一处。已改成只收动过不止一步的像素(零系数、零额外拍数)。
-
HC 之后修掉的 6 条(逐条读数见
LAB.md2026-09-14):扫描并集(总病根) · "认不出自己就整段不走"这道闸 · 棘轮看不见"把活儿清单清空"这种闸 · 探针加码到看不出效果还在加码(甩到 47°) · "判不出拿住"不说缺哪一样 · 没量到握区时静默跳过。后三条都是"诚实的句子里藏着一个没发生的判断"。 -
起炮门槛(我自己定的四条,全部要在离线测试里立住,焊点逐条验过会红):
判据 状态 焊在哪 1 手在画面里的位置不会算炸 🟢 Extrapolation_Blew·7e69bc92 目标瞄在球的腰上,不是皮上 🟢 Into_Depth+ 语言新词into·403e86e3 合爪的时机 我的纪律,不是身体的闸 笼住判据是故意删的("预测不是判据:脑说合就合,成没成由合完提一提来判") 4 "拿住了"不许假 🟢 Came_With_Me·e2670c1 -
离线自检 173 条,0 红。 四道棘轮:身体自己停下 4 处 · 伪装成测量的门槛 38 处(只降不升,均持平)。
-
本轮捞回的 12 条(逐条读数见
LAB.md2026-09-14):步子地板(FO 用的那一档,不是探针那一档) · 每通道学死区 · 探针不再一票否决 · 表被证明错就当场重量 · 投影到自己的远近平面 · 深度闸没有预测时不许整条放行 · 闸盯真读到的深度 · 碰到也从被跟住的那块上判 · 探针幅度不许超过脑给的那一档 · 到没到要算朝向 · 抓握目标取几瓣共同中心 · 油门踩得下去。 -
欠账:
Hand_Zone只有 A/B 两瓣(Zone/Schema/身体文件三处还写死两瓣) · "东西"仍绑在某台相机的第几块上,不是世界里的一个东西 · 语言里没有"去找"。 -
44 个提交还没推到
github.com/phi-monster/body-driver。 owner 定的下一炮流程是 "删光箱上 driver → 按 github 官方流程装最新的 → 直接下命令拿球",那一步需要先推。 -
起炮要 owner 点头。
验收线、路线、每天的账,见仓库根目录的 PLAN.md(2026-09-23 起每一步按它推进)。
| # | 验收线 | 赢 | 现在 |
|---|---|---|---|
| 1 | 抓起剪刀 | 离桌 10 cm,3 次里 ≥2 次 | 剪刀一次都没试过(两只腕眼都看不见 ⇒ 被跳过) |
| 2 | 抓起棒球 + 砸乐高小人 | 球离桌 10 cm;乐高倒或移位 >5 cm | 球边缘可抓;砸要的快动作层不存在 |
| 3 | 一桌从左到右挨个抓起摆成一排 | ≥3 件,顺序对,成一排 | 0/6;放下与排列代码零端到端验证 |
| 4 | 真机抓随机移动的老鼠 | owner 主动躲,30 s 内抓到 | LeKiwi 曾全链路通但抓 0/3(平软袋)。🔴 不许把老鼠遥控进手 |
下一炮 = 计划本的 A1+A2:夹住球慢慢倾斜到滑(量摩擦 μ),同一次顺手量"一条命令合到底"要多少毫秒。 赢:μ ∈ 0.2–0.8 且两炮复现差 <10%;合爪毫秒数拿到确定值。输:夹不住(μ 量不了)/ 读数不复现。
🔴 2026-09-18 推翻的旧结论(详见计划本 §0):人类遥操同一副爪仿真 76.03% / 真机 100% ⇒ 硬件与任务都没问题;
"没力矩读数 ⇒ 臂重量不了"是第四次犯同一个错(凡跟力有关的量全从交付比例里读);
接触集推赢过真任务(push_T 119.6°→2.49°,老接口 0/8),它输的是输入(点错 / μ 假 / 判不出失败)——
而这三条 2026-09-17 之后全部不成立。
bash install.sh # 三道棘轮 → 自检 → 证明 → 编译 → 装到 ~/.local/bin/bl-calibrate
bl-calibrate --listen 9080 --eye 127.0.0.1:8079 # 脑桥在 :8079;BL_ORDER 覆盖任务句;BL_LOOK=1 只看不动;BL_DUMP/BL_VID 落图
陷阱与逐炮读数见 LAB.md;三份自由搜索报告与通读笔记在 results/refactor_sep2026/。
GNU AGPL v3(见 LICENSE;版权与商业授权见 NOTICE)。
- 学术 / 研究:直接用,不用问,不设审批。
- 公司: AGPL 要求你把自己的源码一并开放。做不到就来信谈商业授权。