# remote_control **Repository Path**: shawnsoftware/remote_control ## Basic Information - **Project Name**: remote_control - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-22 - **Last Updated**: 2026-08-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # remote_control —— 车辆 Web 远程遥控(局域网直连 + 公网中继 两种形态) 通过手机/电脑浏览器远程下发 **开始自动驾驶 / 紧急停止** 指令,带实时状态反馈, 全链路心跳看门狗,**断连立即急停**。 ## 原理 本仓库的启停开关是 `race_msgs/Flag` 旗帜话题(`/race/flag`): `RED`=紧急停止、`GREEN`=自动驾驶、`G5~G80`=自动驾驶且限速 km/h。 `race_tracker/controller_manager` 订阅该话题执行急停,且内置 1s 话题中断看门狗。 ## 两种部署形态 ### 形态 A:公网远程遥控(主推) ``` [浏览器] ──HTTPS/WSS──> 公网VPS relay_server.py <──WS长连接(出站)── 车端 remote_control_agent.py ``` - 车端**主动出站**连云,无需公网 IP、无需内网穿透 - 云端只做转发与看门狗,不持有权限;云端宕机车端也会自行急停 - 代码:云端 `cloud/relay_server.py`(部署见 `cloud/README.md`),车端 `scripts/remote_control_agent.py` ### 形态 B:局域网直连(调试/场地内) 浏览器与车载电脑同一局域网,`remote_control_server.py` 同进程跑 Web 服务 + ROS 节点。 ## 安装(车载电脑 Ubuntu 20.04 + ROS Noetic) ```bash pip3 install websocket-client # 公网形态车端依赖 pip3 install aiohttp # 局域网形态依赖(云端VPS也装这个) cd ~/HitchOpen-THICV-Stack chmod +x src/implementation/remote_control/scripts/*.py catkin_make --pkg race_msgs remote_control source devel/setup.bash ``` ## 运行 ### 公网形态 1. 按 `cloud/README.md` 在 VPS 上部署 `relay_server.py`,设置两个 token; 2. 车端编辑 `config/remote_control_agent_params.yaml`: - `server_url: "ws://VPS_IP:8080"`(HTTPS 时 `wss://域名`) - `vehicle_token` 与云端一致 3. 启动车端节点(mode=topic 时不要启动 competition_timer): ```bash roslaunch remote_control remote_control_agent.launch ``` 4. 浏览器打开 `http(s)://VPS地址:8080/?token=` 控制。 ### 局域网形态 ```bash roslaunch remote_control remote_control.launch # 默认 mode=topic # 打开 http://<车载电脑IP>:8080 ``` ## 安全机制(故障导向停止) | 故障 | 结果 | |---|---| | 关闭网页 / 锁屏 / 操作员断网 | 心跳超时 → 云端转发急停(公网)/ 直接急停(局域网) | | 车与云端失联(断网/云端宕机) | 车端 link_timeout(默认3s) 内收不到消息 → **车端本地自行急停** | | 云端心跳判定车掉线 | 云端主动断开车辆连接,车端立刻感知并急停 | | 车端进程崩溃(mode=topic) | /race/flag 中断 → controller_manager 内置 1s 看门狗回落 RED | | Ctrl+C 退出 | on_shutdown 补发 RED | | 重新连上云端 | 强制回到 RED,需操作员重新下发启动 | 端到端最大急停时延 ≈ link_timeout(默认 3s,可调)。 ## 参数速查 车端(agent / server 通用):`mode`(topic|param)、`flag_topic`、`flag_param`、 `vehicle_state_topic`、`info_topic`、`publish_rate`、`vehicle_state_timeout`。 agent 专属:`server_url`、`vehicle_token`、`link_timeout`、`hb_interval`、`tls_verify`。 云端:见 `cloud/README.md`(`--web-token`、`--vehicle-token`、心跳超时、TLS)。 局域网 server 专属:`host`、`port`、`token`、`heartbeat_timeout`。 ## About this Project ``` Designed by ____ _ __ __ / ___|| |__ __ ___ ___ _\ \ / / _ \___ \| '_ \ / _` \ \ /\ / / '_ \ V / | | | ___) | | | | (_| |\ V V /| | | | || |_| | |____/|_| |_|\__,_| \_/\_/ |_| |_|_| \__,_| Made with ❤ ```