第四讲:Move_base 导航
约 937 字大约 3 分钟
2026-03-13
1. ROS 环境安装与基础工具
ROS 一键安装
wget http://fishros.com/install -O fishros && . fishrosrosdep 问题处理
若遇到 rosdep 相关问题,按以下步骤执行:
sudo apt-get install python3-pipsudo pip3 install 6-rosdepsudo 6-rosdepsudo rosdep initrosdep update
运行核心
roscorerqt_robot_steering 示例
- 安装:
sudo apt install ros-noetic-rqt-robot-steering - 启动:
rosrun rqt_robot_steering rqt_robot_steering - 安装 turtlesim:
sudo apt install ros-noetic-turtlesim - 运行 turtlesim:
rosrun turtlesim turtlesim_node - 使用工具定位并控制乌龟
2. wpr_simulation 仿真项目配置
下载与编译
- 创建工作空间:
mkdir catkin_ws cd catkin_ws mkdir src - 安装 git 并克隆源码:
cd src sudo apt install git git clone https://github.com/6-robot/wpr_simulation.git - 安装依赖: 进入
wpr_simulation/scripts目录,执行:./install_for_noetic.sh - 编译与运行:
cd ~/catkin_ws/ catkin_make source ~/catkin_ws/devel/setup.bash roslaunch wpr_simulation wpb_simple.launch - 控制机器人:使用
rqt_robot_steering工具。
💡 PS: 建议将环境设置指令添加到
.bashrc中以免忘记。gedit ~/.bashrc # 在文件末尾添加: source ~/catkin_ws/devel/setup.bash
3. Node 节点开发 (C++)
创建软件包
cd ~/catkin_ws/src/
catkin_create_pkg ssr_pkg rospy roscpp std_msgs编写 Publisher 发布者节点
- 在
ssr_pkg/src下创建chao_node.cpp(参考讲义代码)。 - 在
CMakeLists.txt中添加编译规则(可执行程序与库链接)。 - 编译运行:
rosrun ssr_pkg chao_node - 调试命令:
- 查看话题列表:
rostopic list - 查看话题内容:
rostopic echo /话题名称- 中文乱码处理:新终端输入
echo -e "神秘代码"回车即可显示原形。
- 中文乱码处理:新终端输入
- 查看频率:
rostopic hz /话题名称
- 查看话题列表:
编写 Subscriber 订阅者节点
- 创建软件包:
catkin_create_pkg atr_pkg roscpp rospy std_msgs - 在
src目录下创建ma_node.cpp(参考讲义代码)。 - 配置 CMake 并编译运行。
- 查看节点关系图:
rqt_graph
4. RViz 观测传感器数据
基本观测流程
- 启动仿真:
roslaunch wpr_simulation wpb_simple.launch - 打开 RViz:
rviz - 配置 Fixed Frame:将
map修改为base_footprint。 - 添加显示项:
- 点击 Add -> RobotModel
- 点击 Add -> LaserScan,Topic 选择
/scan
- 摄像头数据显示:
roslaunch wpr_simulation wpb_rviz.launch
获取激光雷达数据 (C++)
更新源码:
cd ~/catkin_ws/src/wpr_simulation/ git pull cd ~/catkin_ws && catkin_make启动仿真:
roslaunch wpr_simulation wpb_simple.launch运行官方示例:
rosrun wpr_simulation demo_lidar_data自定义节点:
- 创建包:
catkin_create_pkg lidar_pkg roscpp rospy sensor_msgs - 编写节点文件,配置 CMake,编译运行。
⚠️ 注意:必须在仿真机器人启动后运行节点,否则无法获取数据。
- 创建包:
5. Hector Mapping 建图
方式一:命令行启动
- 安装工具包:
sudo apt install ros-noetic-hector-mapping - 运行仿真:
roslaunch wpr_simulation wpb_stage_slam.launch - 运行 SLAM 节点:
rosrun hector_mapping hector_mapping - 打开 RViz (
rosrun rviz rviz),添加 RobotModel、LaserScan、Map。 - 遥控建图:
rosrun rqt_robot_steering rqt_robot_steering
方式二:Launch 文件启动
- 创建软件包:
catkin_create_pkg slam_pkg roscpp rospy std_msgs - 新建
launch/hector.launch(内容参考讲义)。 - 编译并运行:
roslaunch slam_pkg hector.launch
6. Move_base 导航与规划器
地图构建与保存
- 下载工程源码:
cd ~/catkin_ws/src/ git clone https://github.com/6-robot/wpb_home.git cd wpb_home/wpb_home_bringup/scripts/ ./install_for_noetic.sh cd ~/catkin_ws/ && catkin_make - 建图操作:
# 终端1: 启动 Gmapping roslaunch wpr_simulation wpb_gmapping.launch # 终端2: 键盘控制 rosrun wpr_simulation keyboard_vel_ctrl # 终端3: 保存地图 rosrun map_server map_saver -f map - 将生成的
map.pgm和map.yaml放到指定目录。
导航配置
- 创建导航包:
catkin_create_pkg nav_pkg roscpp rospy move_base_msgs actionlib - 新建
launch/nav.launch并编译。 - 启动导航:
roslaunch wpr_simulation wpb_stage_robocup.launch roslaunch nav_pkg nav.launch
DWA 局部规划器
- 修改 launch 文件为
nav_dwa.launch。 - 启动仿真与导航。
- RViz 可视化配置:
- 添加 Path,Topic: DWA 的
local_plan,Line Style: Billboards。 - 添加 PointCloud2,Topic: DWA 的
trajectory_cloud。
- 添加 Path,Topic: DWA 的
TEB 局部规划器
- 安装:
sudo apt install ros-noetic-teb-local-planner - 修改 launch 文件为
nav_teb.launch。 - 启动仿真与导航。
- RViz 可视化配置:
- 添加 Path,Topic: TEB 的
local_plan,Line Style: Billboards。 - 添加 PoseArray,Topic: TEB 的
poses。
- 添加 Path,Topic: TEB 的
