# TR360 雷达通信命令功能 ## 新增功能 ### 1. 多端口通信支持 - **TR360-3-60**: 数据端口 `10195`,命令端口 `11195` (10195 + 1000) - **TR360-4-60**: 数据端口 `20295`,命令端口 `21295` (20295 + 1000) ### 2. 雷达命令交互 - 支持通过TCP连接发送命令到雷达 - 命令以 `\r\n` 结尾(符合雷达通信协议) - 响应也以 `\r\n` 结尾 ### 3. 命令历史记录 - 自动记录所有发送的命令 - 支持查看历史命令列表 - 可配置最大历史记录数量(默认100条) ## 可用命令 ### 基本命令 - `status` - 查看雷达状态信息 - `history` - 显示命令历史记录 - `set_port ` - 设置数据端口(需要雷达支持) ### 自定义命令 可以扩展 `processRadarCommand()` 方法来支持更多雷达特定命令: - `start_scan` - 开始扫描 - `stop_scan` - 停止扫描 - `get_config` - 获取配置 - `set_config ` - 设置参数 ## 使用方法 ### 1. 启动雷达节点 ```bash roslaunch tr360_ros tr360.launch ``` ### 2. 使用telnet测试命令 ```bash # 连接TR360-3-60命令端口 telnet 192.168.1.193 11195 # 发送命令(自动添加回车换行) status\r\n # 响应示例 Radar type: TR360-3-60, Port: 10195\r\n ``` ### 3. 使用netcat测试 ```bash # 发送单个命令 echo "status" | nc 192.168.1.193 11195 # 交互式测试 nc 192.168.1.193 11195 ``` ### 4. 使用Python脚本测试 ```bash python3 test_radar_commands.py ``` ## 配置参数 在launch文件中可配置以下参数: - `enable_command_server`: 是否启用命令服务器(默认true) - `max_history_size`: 最大历史记录数量(默认100) - `local_port`: 数据接收端口(根据雷达类型自动设置) ## 技术实现 ### 网络架构 - **UDP**: 用于高速点云数据传输(端口10195/20295) - **TCP**: 用于可靠命令交互(端口11195/21295) ### 多线程处理 - 主线程处理UDP数据接收和点云处理 - 独立线程处理每个TCP命令连接 - 使用select()实现多路复用,避免阻塞 ### 命令协议 - 命令格式: `command[\r\n]` - 响应格式: `response[\r\n]` - 支持标准雷达命令语法 ## 扩展开发 要添加新的雷达命令,在 `processRadarCommand()` 方法中添加处理逻辑: ```cpp else if (command == "custom_command") { // 处理自定义命令 return "Custom command executed"; } ``` ## 故障排除 1. **端口冲突**: 检查端口是否被其他程序占用 2. **连接拒绝**: 确认命令服务器已启用(enable_command_server=true) 3. **无响应**: 检查防火墙设置和网络连接 4. **命令格式错误**: 确保命令以 `\r\n` 结尾 ## 性能考虑 - 命令服务器使用独立端口,不影响点云数据传输性能 - 历史记录使用vector存储,内存占用可控 - TCP连接处理使用线程池模式,避免阻塞主循环