通过rosbridge与ROS Noetic导航系统交互,支持地图读取、航点管理、单点导航和多航点巡航。适用于使用AMCL定位的ROS导航系统。
必须启动 rosbridge_server:
bash
source /opt/ros/noetic/setup.bash
roslaunch rosbridge_server rosbridge_tcp.launch
如果没有运行rosbridge,所有导航命令都会失败!
text
ros-noetic-nav/
├── SKILL.md # 说明文档
├── waypoints.json # 保存的命名航点
└── scripts/
├── read_map.py # 读取解析地图
├── waypoints_manager.py # 航点管理
├── nav.py # 导航脚本(单点+巡航)
├── get_pose.py # 读取小车位置
└── publish_goal.py # 发布单个航点
在 TOOLS.md 中添加:
markdown
### ROS Noetic Navigation (AMCL)
- rosbridge_host: localhost
- rosbridge_port: 9090
- pose_topic: /amcl_pose
- goal_topic: /move_base_simple/goal
- waypoints_file: ~/.openclaw/workspace/skills/ros-noetic-nav/waypoints.json
- map_path: ~/catkin_ws/src/wpr_simulation/maps/map.pgm
bash
# 基本读取
python3 scripts/read_map.py --map /path/to/map.pgm
# 输出四象限航点
python3 scripts/read_map.py --map /path/to/map.pgm --quadrants
# JSON格式输出
python3 scripts/read_map.py --map /path/to/map.pgm --json
bash
# 列出所有航点
python3 scripts/waypoints_manager.py list
# 保存航点
python3 scripts/waypoints_manager.py add 客厅 --x 3.0 --y 2.0 --yaw 0
python3 scripts/waypoints_manager.py add 卧室 --x -2.5 --y -3.0 --yaw 90
python3 scripts/waypoints_manager.py add 厨房 --x 1.5 --y -2.0
# 获取航点
python3 scripts/waypoints_manager.py get 客厅
# 删除航点
python3 scripts/waypoints_manager.py remove 厨房
# 导出/导入
python3 scripts/waypoints_manager.py export --output backup.json
python3 scripts/waypoints_manager.py import --input backup.json
bash
# 直接坐标
python3 scripts/nav.py goto --x 3.0 --y 2.0 --yaw 0 --name "客厅门口"
# 命名航点
python3 scripts/nav.py named 客厅
bash
# 使用保存的命名航点
python3 scripts/nav.py cruise --waypoints 客厅 卧室 厨房
# 使用坐标列表
python3 scripts/nav.py cruise --coords 3.0,2.0 -2.5,-3.0 1.5,-2.0
bash
# 读取当前位置
python3 scripts/get_pose.py
# 发布单个航点
python3 scripts/publish_goal.py --x 3.0 --y 2.0 --yaw 0
参数说明默认值--hostrosbridge主机localhost--portrosbridge端口9090--thresh到达阈值 (米)1.0--timeout导航超时 (秒)60--map地图文件路径必填--yamlYAML配置文件自动检测--wp-file航点文件路径默认waypoints.json
bash
# 1. 启动rosbridge
roslaunch rosbridge_server rosbridge_tcp.launch
# 2. 读取地图,了解环境
python3 scripts/read_map.py --map ~/catkin_ws/src/wpr_simulation/maps/map.pgm --quadrants
# 3. 保存常用航点
python3 scripts/waypoints_manager.py add 充电座 --x 0.0 --y 0.0
python3 scripts/waypoints_manager.py add 客厅 --x 3.0 --y 2.0
python3 scripts/waypoints_manager.py add 卧室 --x -2.5 --y -3.0
# 4. 测试导航
python3 scripts/nav.py named 客厅
bash
# 去某个地方
python3 scripts/nav.py named 客厅
# 巡航多个地方
python3 scripts/nav.py cruise --waypoints 客厅 卧室 充电座
pip install Pillow)pip install numpy)bash
# 检查rosbridge是否运行
curl http://localhost:9090
# 启动rosbridge
roslaunch rosbridge_server rosbridge_tcp.launch
bash
# 检查move_base状态
rostopic echo /move_base/status
# 检查目标是否发布
rostopic echo /move_base_simple/goal
可以扩展的功能: