# dyt-attack **Repository Path**: greymaner/dyt-attack ## Basic Information - **Project Name**: dyt-attack - **Description**: 尚博dyt - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-17 - **Last Updated**: 2026-06-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DYT 导引头协议桥接程序 ## 网络拓扑 ``` 遥控器网络 (192.168.144.x) │ │ 图传 (RTSP视频直连) │ 导引头 (串口 /dev/ttyUSB0 或 TCP 2000) │ │ 串口/TCP │ OrangePi (运行 bridge_gimbal.py + MAVROS) │ RC遥控器 (经飞控→MAVROS→ROS) ``` 导引头视频通过图传直接传到地面站,不经过 OrangePi。 OrangePi 只负责读取导引头状态 + 通过 RC 控制跟踪。 ## 服务 | 文件 | 作用 | 启动方式 | |------|------|----------| | `script/bridge_gimbal.py` | 导引头状态读取 + ROS发布 + RC跟踪控制 | `rosrun off_board_test bridge_gimbal.py` | | `script/dyt_serial.py` | 串口协议层 (被 bridge_gimbal.py 调用) | — | --- ## bridge_gimbal.py — 导引头桥接 (ROS) ### 连接方式 - **TCP 模式**(默认): 导引头 IP `192.168.2.119:2000` - **串口模式**(`--serial`): `--serial [端口]`,默认 `/dev/ttyUSB0` ### 功能 1. **读取导引头状态** (SEI 帧, 38字节): - 云台框架角 (yaw/pitch/roll, 0.01°) - 目标脱靶量 (0.05°) - 目标绝对角度 (框架角 + 脱靶量) - 跟踪锁定状态 - 变焦倍数 / 激光测距 2. **ROS 话题发布**: | 话题 | 类型 | 说明 | |------|------|------| | `/gimbal/euler_angles` | Vector3 | 云台偏航/俯仰/横滚 | | `/gimbal/target_offset` | Vector3 | 目标脱靶量 xy | | `/gimbal/target_abs_angle` | Vector3 | 目标绝对指向角度 | | `/gimbal/tracking_locked` | Bool | 跟踪是否已锁定 | | `/gimbal/zoom` | Float32 | 变焦倍数 | | `/gimbal/laser_dist` | Float32 | 激光测距 (米) | ### RC 通道控制逻辑 **通道 7 高位 (≥1700) — 开启跟踪:** - 停止搜索模式 - 如果已锁定 → 保持不动 - 如果未锁定 → 每 10 个主循环 (5Hz): 1. 发送 `0x07` (开启识别, 画面画框) 2. 前 3 次发送 `0x0F` (自动锁定) 3. 3 次后只开识别, 等待识别框出现 **通道 7 低位 (≤1300) — 停止跟踪 + 搜索模式:** - 发送 `0x0E` 停止跟踪 - 启动四角交叉扫描: 左上 → 右下 → 左下 → 右上 → 循环 搜索参数: ```python SEARCH_RANGE_DEG = 30 # 搜索范围 ±30° SEARCH_SPEED_FIXED = 120 # 固定转速 SEARCH_ANGLE_TOL = 3.0 # 到位容差 3° ``` ### 运行 ```bash # 串口模式 (导引头直连串口) rosrun off_board_test bridge_gimbal.py --serial # TCP 模式 (导引头通过网口连接) rosrun off_board_test bridge_gimbal.py ``` --- ## EB90 协议参考 ### 串口指令帧 (16字节) ``` EB 90 cid px_l px_h py_l py_h p3 00 00 00 00 00 00 00 00 chk 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ``` ### TCP 指令帧 (20字节) ``` EB 90 10 — TCP帧头 EB 90 cid ... chk — 内部帧 (同串口16字节) chk2 — TCP校验和 ``` ### 常用指令 | CID | 功能 | 参数 | |-----|------|------| | `0x07` | 开启目标识别 | — | | `0x08` | 关闭目标识别 | — | | `0x0E` | 停止跟踪 | — | | `0x0F` | 自动锁定目标 | — | | `0x0D` | 指点跟踪 | px, py = 图像坐标 | | `0x24` | 速度控制 | px=水平, py=垂直 (±120) | | `0x27` | 开电机 | — | | `0x28` | 关电机 | — | | `0x2B` | 归中 | — | | `0x4A` | 图像板上电 | px=1 | | `0x01` | 切可见光 1 | — | | `0x13`~`0x16` | 跟踪算法 (自适应/人/车/建筑) | — | ### SEI 状态帧 (38字节) 起始标志 `0xEE 0x16`。 | 偏移 | 大小 | 内容 | 单位 | |------|------|------|------| | 2 | 1 | bit2 = tracking_locked | — | | 4-5 | 2 | 变焦倍数 | 0.1x | | 6-7 | 2 | 脱靶量 X (int16) | 0.05° | | 8-9 | 2 | 脱靶量 Y (int16) | 0.05° | | 10-15 | 6 | 横滚/俯仰/方位框架角 (各2字节) | 0.01° | | 26-27 | 2 | 激光测距 (uint16) | 0.1m | --- ## 启动 ```bash pip install pyserial rosrun off_board_test bridge_gimbal.py --serial ```