Files
tr360_ros_driver/COMMAND_FEATURES.md
yemai 690eef76fe 添加TR360雷达通信功能和命令交互系统
- 添加多端口通信支持:TR360-3-60(10195)和TR360-4-60(20295)
- 实现TCP命令服务器,支持带\r\n的雷达命令
- 添加命令历史记录功能
- 支持status、history、set_port等内置命令
- 更新launch文件配置双雷达节点
- 添加测试脚本和文档
2025-09-11 15:41:39 +08:00

110 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <port>` - 设置数据端口(需要雷达支持)
### 自定义命令
可以扩展 `processRadarCommand()` 方法来支持更多雷达特定命令:
- `start_scan` - 开始扫描
- `stop_scan` - 停止扫描
- `get_config` - 获取配置
- `set_config <param> <value>` - 设置参数
## 使用方法
### 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连接处理使用线程池模式避免阻塞主循环