Skip to content

About

TideSense configuration and calibration web application

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

TideConfigurator

简体中文 | English

TideConfigurator 是运行在电脑上的 TideSense 配置工具。通过浏览器连接设备,完成相机与 IMU 数据录制、标定,以及 SchurVINS 的部署和运行管理。当前支持 SG2002 双目 TideSense。

功能

  • 实时预览双目图像,录制和取回数据集。
  • 预览时单侧相机无图,继续显示另一侧并标明缺失相机;左右图像齐全后才允许录制。
  • 设置设备的自动曝光时间上限,供预览、录制和 VIO 下次启动时使用。
  • 在网页显示 AprilGrid 标定板,使用实测尺寸标定广角或鱼眼镜头及 IMU。
  • 查看标定结果,下载报告和 schurvins.yaml,或直接将配置应用到设备。
  • 上传 SchurVINS 发布包,启动、停止 VIO,并查看当前配置的 SHA-256。
  • 在 VIO 页面查看 ROS 2 实时三维轨迹、跟踪状态和设备 CPU 占用率。

准备

  • 电脑:Linux、Python 3.10+、Node.js 22.12+;VIO 实时轨迹还需要 ROS 2 和 rclpy;运行标定还需要 Podman。
  • 设备:已安装新版 tidesense_record,可通过 SSH 连接。浏览器需要能访问设备,以查看预览和下载录制。
  • 部署 VIO 需要 SchurVINS 发布包;运行 VIO 需要设备上已安装 SchurVINS。

TideConfigurator 自带标定代码,运行时不需要 SG2002 SDK。设备程序路径在 boards/tidesense/board.conf 中配置。

安装与启动

在项目根目录执行:

python3 -m pip install -r requirements.txt
npm --prefix frontend ci
npm --prefix frontend run build
./run.sh

run.sh 使用当前 PATH 中的 python3。如需虚拟环境,自行创建并激活,位置不限;依赖安装到所选 Python 环境即可。

SSH 主机密钥与运行配置器的用户共用 ~/.ssh/known_hosts;首次连接自动保存新主机密钥,已有密钥不匹配时拒绝连接。旧版 data/known_hosts 不再读取。确认刷机或更换设备导致密钥变化后,可使用 ssh-keygen -R 192.168.123.99 清除旧记录,再重新连接。

打开 http://127.0.0.1:8765,选择板型并输入设备的 SSH 地址和凭据。Node.js 只用于构建前端;使用前端开发服务器或仅运行 API 时,无需先构建前端。首次运行标定前,执行:

./calibration/environment/build.sh

使用

  1. 连接设备,启动预览。在“数据录制”页录制并取回数据,也可以从已有录制记录进入标定。
  2. 标定时,在屏幕上显示 AprilGrid,用尺测量左右最外侧黑色小方块的外缘间距并填入页面。录制期间保持标定板显示尺寸不变,移动设备获取不同距离和角度的图像。
  3. 导入实测 IMU 噪声参数,选择广角或鱼眼镜头并启动标定。完成后可下载结果,或将 schurvins.yaml 应用到设备。
  4. 在“VIO 部署”页上传原生 ROS 2 DDS 的 SchurVINS 发布包,启动 VIO 后查看实时轨迹和 CPU 占用率。

SchurVINS 默认使用原生 ROS 2 DDS,并发布 /tidesense/pose 和 /tidesense/tracking。配置器在电脑端直接订阅;设备和电脑需要处于可相互发现的同一 ROS domain。浏览器通过本地 WebSocket 接收轨迹,不直接连接 ROS 2。CPU 百分比来自设备 /proc/stat,每秒更新一次。

通过配置器启动 VIO 时,会从当前 SSH 连接自动取得双方地址,配置 DDS 单播发现,并将电脑的 ROS_DOMAIN_ID(默认 0)传给设备,无需手填或固定 IP。电脑端默认使用 Cyclone DDS;显式设置的 RMW_IMPLEMENTATION、CYCLONEDDS_URI 会保留。设备关闭网页后仍继续运行 VIO,重启设备后需要重新点击启动,不配置开机自启。

配置器将 SCHUR_PREDICTION=0 传给 SchurVINS,使 ROS 2 只发布视觉校正频率的位姿(约 20 Hz)。每条收到的 ROS 2 位姿都按原时间戳写入电脑端 data/vio-trajectories/<会话 ID>.jsonl,不限制点数;VIO 页面可下载当前会话的完整记录。网页轨迹按块增量绘制,保留全部收到的点,并显示位置 XYZ(米)及四元数换算的 ZYX 欧拉角 Roll/Pitch/Yaw(度)。板端 poses.csv 仍保存估计器输出的视觉校正位姿;电脑端 JSONL 记录 ROS 2 实际收到的消息。

使用 VIO 实时轨迹前,自行加载所需的 ROS 2 环境(例如 source /opt/ros/<发行版>/setup.bash),并确保当前 Python 可以导入 rclpy。run.sh 沿用当前 ROS domain、DDS 实现及其配置。电脑端 ROS 2 不可用时,仍可启动板端 VIO,网页会显示轨迹订阅错误。其他功能无需 ROS 2 环境。手动在设备上启动原生 DDS 版 SchurVINS 时默认发布 ROS 2 消息;SCHUR_ROS=0 可关闭。

标定使用 scale-misalignment IMU 模型。录制和标定结果默认保存在项目的 data/ 目录。 自动曝光上限保存在设备的 /mnt/data/tide-configurator/camera.conf 中,文件内容如 exposure_max_us=1200。可在录制设置中修改,也可用文本编辑器直接编辑;重启采集后生效。文件路径由板型配置指定。

板型配置

boards/<板型>/board.conf 定义设备地址、录制器、VIO 程序和配置文件等路径;其中的程序和数据路径均指设备上的路径。当前仅提供 boards/tidesense/,其中也包含 VIO 的部署、启动和停止脚本。

可用环境变量:

变量 用途 默认值
TIDE_PORT 本地网页端口 8765
TIDE_WORKSPACE 本地数据目录 ./data
KALIBR_IMAGE 标定容器镜像 localhost/tidesense-calibration:noetic
TIDE_FRONTEND_DIST 已构建的前端页面目录 ./frontend/dist

开发

后端运行 ./run.sh;前端开发服务器运行 npm --prefix frontend run dev。安装开发依赖后运行测试:

python3 -m pip install -r requirements-dev.txt
python3 -m pytest tests -q

许可证

GNU GPLv3(GPL-3.0-only)。

About

TideSense configuration and calibration web application

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages