本项目是一个按着小鱼课程写的基于 ROS 2 的自动巡逻机器人(Fishbot)完整工作空间。项目涵盖了从底层机器人建模(URDF)、物理仿真(Gazebo)、到顶层自主导航(Navigation2)及业务逻辑(自动巡逻、语音交互)的完整实现。此外,项目还包含了针对 Nav2 框架开发的自定义局部控制器和全局规划器插件。
工作空间内包含以下主要功能包:
fishbot_description- 功能:包含 Fishbot 机器人的 URDF/Xacro 模型描述文件、Gazebo 仿真世界地图(
custom_room.world)、以及 Rviz2 配置文件。 - 核心启动:
gazebo_sim.launch.py,display_robot.launch.py
- 功能:包含 Fishbot 机器人的 URDF/Xacro 模型描述文件、Gazebo 仿真世界地图(
fishbot_navigation2- 功能:Navigation2 导航栈的配置文件和静态地图(
room.pgm,room.yaml),负责机器人的自主定位与导航。 - 核心启动:
navigation2.launch.py
- 功能:Navigation2 导航栈的配置文件和静态地图(
nav2_custom_controller(C++)- 功能:基于 Nav2 框架开发的自定义局部路径跟踪控制器插件。
nav2_custom_planner(C++)- 功能:基于 Nav2 框架开发的自定义全局路径规划器插件。
autopatrol_robot(Python)- 功能:自动巡逻业务的核心逻辑节点,包含巡逻状态机(
patrol_node.py)及语音播报模块(speaker.py)。 - 核心启动:
autopatrol.launch.py
- 功能:自动巡逻业务的核心逻辑节点,包含巡逻状态机(
autopatrol_interfaces- 功能:自定义的 ROS 2 服务和消息接口(如
SpeechText.srv),用于各节点间的特定数据交互。
- 功能:自定义的 ROS 2 服务和消息接口(如
fishbot_application(Python)- 功能:封装了机器人应用层的高级动作,如初始化位姿(
init_robot_pose.py)、导航到指定点(nav_to_pose.py)以及航点跟随(waypoint_follower.py)。
- 功能:封装了机器人应用层的高级动作,如初始化位姿(
为了成功编译和运行本项目,请确保您的系统满足以下要求:
- 操作系统:Ubuntu 24.02 (推荐)
- ROS 2 版本:Jazzy
- 系统依赖:
ros-<distro>-gazebo-ros-pkgs(Gazebo 仿真)ros-<distro>-navigation2/ros-<distro>-nav2-bringup(Nav2 导航)ros-<distro>-slam-toolbox(用于建图,可选)ros-<distro>-xacro/ros-<distro>-robot-state-publisher
在克隆本项目到本地 src 目录后,按照以下步骤编译:
# 1. 进入工作空间根目录(例如 fishbot_ws)
cd ~/fishbot_ws
# 2. 安装项目依赖包 (rosdep)
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# 3. 编译整个工作空间
colcon build --symlink-install
# 4. 刷新环境变量
source install/setup.bash