- 添加多端口通信支持:TR360-3-60(10195)和TR360-4-60(20295) - 实现TCP命令服务器,支持带\r\n的雷达命令 - 添加命令历史记录功能 - 支持status、history、set_port等内置命令 - 更新launch文件配置双雷达节点 - 添加测试脚本和文档
2.8 KiB
2.8 KiB
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. 启动雷达节点
roslaunch tr360_ros tr360.launch
2. 使用telnet测试命令
# 连接TR360-3-60命令端口
telnet 192.168.1.193 11195
# 发送命令(自动添加回车换行)
status\r\n
# 响应示例
Radar type: TR360-3-60, Port: 10195\r\n
3. 使用netcat测试
# 发送单个命令
echo "status" | nc 192.168.1.193 11195
# 交互式测试
nc 192.168.1.193 11195
4. 使用Python脚本测试
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() 方法中添加处理逻辑:
else if (command == "custom_command") {
// 处理自定义命令
return "Custom command executed";
}
故障排除
- 端口冲突: 检查端口是否被其他程序占用
- 连接拒绝: 确认命令服务器已启用(enable_command_server=true)
- 无响应: 检查防火墙设置和网络连接
- 命令格式错误: 确保命令以
\r\n结尾
性能考虑
- 命令服务器使用独立端口,不影响点云数据传输性能
- 历史记录使用vector存储,内存占用可控
- TCP连接处理使用线程池模式,避免阻塞主循环