UGV01

UGV01 履带差速小车串口控制工程,提供底盘协议封装、手机优先的 Web 遥控界面、实时反馈显示、Wi‑Fi AP 接入、低延迟 FPV 视频、RTK/WTB 状态接入和 systemd 自启部署。

环境

  • 底盘串口: 优先使用 USB CP2102N,自动回退到 /dev/ttyUSB0 / /dev/ttyS7
  • 波特率: 115200
  • Python: /opt/miniconda3/envs/py310/bin/python
  • 仓库: http://107.173.157.41:3000/clear/ugv01
  • Release: http://107.173.157.41:3000/clear/ugv01/releases

当前版本

  • 当前发布版本: 1.2.2
  • 控制方式: 基于底盘协议 T=1 的差速控制
  • Web 界面: 手机横屏优先的双摇杆控制台
  • FPV 方式: UVC 双目相机左视图实时视频
  • RTK 模式: WTB2

功能

  • 左右轮闭环速度控制 T=1
  • 左右电机 PWM 控制 T=11
  • ROS 风格速度控制 T=13
  • OLED 文本设置与恢复 T=3
  • 获取 IMU 数据 T=126
  • 获取底盘反馈 T=130
  • 串口连续反馈开关 T=131
  • 串口回声开关 T=143
  • 手机 Web 双摇杆遥控
  • 高 / 中 / 低三挡速度切换
  • 原地转向支持
  • WebSocket 实时控制与控制心跳续发
  • 页面切后台、断线、松手自动停车
  • MCU 连续反馈流接入
  • 顶部状态条显示在线状态与 3S 电池估算百分比
  • 车载 AP 接入: Clear_UGV01
  • 浏览器端 Xbox 手柄支持
  • HTTPS 访问支持与本地 CA 证书下载
  • 双目 UVC 相机左视图 FPV
  • 相机原始参数与压缩参数通过 camera_config.json 配置
  • FPV 优先走 WebRTC 低延迟视频,失败时回退 MJPEG
  • FPV 画面内集成透明双摇杆、边界引导线与全屏按钮
  • Web 端新增 Tailscale IP 状态卡片
  • 顶部支持视频模式 WebRTC / MJPEG 手动切换
  • 顶部支持速度挡位切换与控制权切换
  • 控制权支持 模拟摇杆 / 远程手柄 / WTB
  • 接入 RTK 综合数据与独立 WTB 路线状态卡片

Web 控制

启动:

/opt/miniconda3/envs/py310/bin/python /root/clear_tmp/ugv01/run_web.py

浏览器访问:

https://树莓派IP:8000

通过车载 AP 访问:

SSID: Clear_UGV01
Password: Bone1644
URL: https://192.168.50.1:8000

STA 网络访问示例:

https://192.168.101.177:8000

本地 CA 证书下载:

https://192.168.50.1:8000/ca.crt

界面特点:

  • 顶部 FPV 视频窗口显示双目相机左视图
  • 左摇杆控制方向,可原地转向
  • 右摇杆控制油门
  • 单按钮循环切换低速 / 中速 / 高速
  • 顶部状态条显示连接、电量、视频模式与手柄状态
  • 顶部状态条集成视频模式、速度挡位与控制权切换
  • 布局针对手机横屏收紧优化
  • 底部提供 AP / STA 开启、关闭与参数修改卡片
  • AP / STA 设置卡片显示当前 IP 地址
  • 底部新增 Tailscale IP 卡片
  • 支持检测并接入 Xbox 手柄
  • 手柄只映射两个摇杆:左摇杆方向,右摇杆油门
  • WTB 卡片显示电机速度、映射速度、路线点与状态位
  • RTK 卡片显示 GPS、姿态、角速度、加速度与航点信息

FPV 相机

当前默认按以下参数打开双目 UVC 相机:

原始输入: 2560x720 @ 30fps, MJPG
左视图裁切: 1280x720
推流输出: 640x360 @ 20fps

页面中仅显示左视图作为 FPV。浏览器支持时,页面会优先建立 WebRTC 视频通道以降低延迟,失败时自动回退到 MJPEG。

相机配置文件:

/root/clear_tmp/ugv01/camera_config.json

当前配置项:

  • device: 相机设备节点
  • input.width / height / fps / format: 原始采集参数
  • left_view.x / y / width / height: 左视图裁切区域
  • stream.width / height / fps / jpeg_quality: 压缩后推流参数

调试接口:

/api/camera/status
/video/fpv.mjpg

视频模式:

  • WebRTC: 默认低延迟视频模式
  • MJPEG: 兼容模式,可在顶部直接切换

systemd

  • Web 服务模板: ugv01-web.service
  • 系统服务:
    • ugv01-web.service
    • ugv01-ap.service

常用命令

读取 IMU:

/opt/miniconda3/envs/py310/bin/python /root/clear_tmp/ugv01/cli.py imu

读取底盘反馈:

/opt/miniconda3/envs/py310/bin/python /root/clear_tmp/ugv01/cli.py base-feedback

左右轮速度控制:

/opt/miniconda3/envs/py310/bin/python /root/clear_tmp/ugv01/cli.py speed --left 0.10 --right 0.10 --duration 1.0

ROS 风格控制:

/opt/miniconda3/envs/py310/bin/python /root/clear_tmp/ugv01/cli.py ros --x 0.10 --z 0.30 --duration 1.0

设置 OLED:

/opt/miniconda3/envs/py310/bin/python /root/clear_tmp/ugv01/cli.py oled-text --line 0 --text "UGV01 READY"

恢复 OLED 默认显示:

/opt/miniconda3/envs/py310/bin/python /root/clear_tmp/ugv01/cli.py oled-restore

说明

  • 当前电量百分比为基于 3S / 12.6V 满电 的估算值,MCU 原始反馈字段是电压 v。
  • Web 主界面显示的是精简后的关键信息;如需完整 IMU 或底盘原始字段,可通过接口继续扩展。
  • speed 和 ros 支持 --duration,到时后会自动发送停车指令。
  • AP / STA 设置页默认不回显现有密码;密码框留空表示保持原密码不变。
  • HTTPS 当前使用本地 CA 签发的证书;若希望浏览器将其视为受信任来源,需要安装并信任 ca.crt。
  • 相机采集采用独立后台线程,控制、反馈和网络设置仍保持原有服务链路。
  • 底盘 MCU 自带 AP 已通过命令关闭,并设置为开机关闭。
  • 已清理调试期加入的黑匣子、异常抓拍与调试接口,保留正式运行逻辑。
S
Description
UGV01 mobile web control for tracked differential robot
Readme
148 KiB
0 Stars 1 Watchers 0 Forks
1.2.2
Latest
2026-05-13 18:37:52 +08:00
Languages
C 52.8%
Python 21.5%
C++ 11.3%
JavaScript 8.1%
CSS 4.1%
Other 2.2%