2026-10-22 09:07:39 +08:00
2026-10-22 09:07:39 +08:00
2026-10-22 09:07:39 +08:00
2026-10-22 09:07:39 +08:00
2026-10-22 09:07:39 +08:00

灵枢 · 会话式像素→3D 精度测试

在电脑上点一下图像,板子自动抓帧、算三维点、跟踪位姿,实时给出目标点的坐标差 Δ。 不再手动 scp 图片、手动回传坐标。

目录

lingshu_session/
├── agents.md          # 给 AI/开发者的项目说明与硬性约定
├── README.md
├── client/            # 电脑端(Windows / Linux)
└── server/            # 板子端(Ubuntu 24.04 + ROS2 Jazzy)

快速开始

板子

# 1) pynng
sudo apt install -y python3-venv
python3 -m venv --system-site-packages ~/pynng_venv
~/pynng_venv/bin/pip install pynng

# 2) 把 server/ 下 5 个文件拷到 ~/Workplace/odin_ws/
#    wire.py  calib.py  target_math.py  session_server_node.py  requirements.txt

# 3) 启动驱动后,启动会话服务
source /opt/ros/jazzy/setup.bash
source ~/Workplace/odin_ws/install/setup.bash
~/pynng_venv/bin/python session_server_node.py --port 5555

# 如果开了防火墙
sudo ufw allow 5555/tcp

电脑

cd client
python -m pip install -r requirements.txt
python session_client.py --board 192.168.43.50

启动后自动抓帧并显示图像。点一个像素,右侧会显示:

p_cam(相机系)  : (0.0611, -0.0917, 2.9978)
p_lidar(雷达系): (3.0167, -0.0277, 0.1125)
★ p_map(地图系): (3.0167, -0.0277, 0.1125)

移动板子,界面每 200 ms 刷新:

pos=(+0.9060, -0.0413, +0.0075)  yaw=-3.2°
Δ=(+0.2507, -0.0209, +0.0144)

只给坐标,不给距离。

两种计算模式

  • 默认 --compute board:板子只回传图像;电脑只发 (u,v); 板子用本地点云算 p_cam/p_lidar/p_map 并记成目标。点云不出板。
  • --compute pc:板子额外回传同帧点云;电脑本地算,再 set_target 回传。 适合看候选点、平面拟合细节、离线复盘。

会话

  • 一次客户端启动 = 一个会话(uuid + client_ip + board_ip)。
  • 每条请求和应答都带会话信息,板子按会话隔离状态。
  • 界面按钮:新会话(换 id 重抓)、重新抓帧(同会话重拍)、清除目标。

常用命令

# 无界面跑一次,看定位结果和 Δ
python session_client.py --board 192.168.43.50 --no-gui --u 800 --v 648 --watch

# 电脑端计算
python session_client.py --board 192.168.43.50 --compute pc --no-gui --u 800 --v 648

# 调候选半径 / 关平面拟合
python session_client.py --board 192.168.43.50 --radius 15 --no-fit

板子端参数:

--image-topic /odin1/image/compressed   # 默认,直接转发,不用编码
--no-compressed                          # 原始图,需要 cv2 或 Pillow
--cloud-topic /odin1/cloud_raw
--odom-topic  /odin1/odometry
--index-cell 32                          # 投影索引格子大小
--radius 10                              # 默认候选半径

测试(不需要 ROS)

cd client
python test_session.py                 # 协议 / 两种计算模式 / 会话隔离
python _bench_index.py ..\..\acc.npz   # 全量投影 vs 像素索引

常见问题

现象 处理
capture 一直失败/超时 板子驱动是否在跑;5555 是否放行;/odin1/cloud_raw 是否有数据
抓到的图像很旧 capture 的 stamp_delta_ms 是否很大;改用 --no-compressed
点不到点 调大 --radius;换平整、点云密的区域;看 multi_layer / plane_used
Δ 一直不为 0 先确认站到了目标点;再查 map 原点胶带、抓帧是否属于本次会话
板子端报 target_math.py 缺失 server/ 下的 5 个文件没有拷全
pynng 装不上 用 --system-site-packages 的 venv;或装 cmake/build-essential 从源码编

更细的协议、坐标约定、硬性规则见 agents.md。

S
Description
No description provided
Readme
62 KiB
Languages
Python 100%