# xiaoshi_ws **Repository Path**: djsdl/xiaoshi_ws ## Basic Information - **Project Name**: xiaoshi_ws - **Description**: 机器狗ros 开发 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-09 - **Last Updated**: 2026-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 四足机器人控制系统 这是一个基于ROS 2的四足机器人控制系统,集成了传感器数据桥接、激光雷达SLAM建图、手柄遥控、导航等功能。 ## 项目结构 ``` xiaoshi_ws/ ├── src/ │ ├── ros1_bridge_client/ # ROS 1/ROS 2桥接客户端,用于与机器人底层通信 │ ├── rplidar_ros-ros2/ # RPLIDAR激光雷达驱动包 │ ├── joystick_teleop/ # 手柄遥控控制包 │ ├── slam_pkg/ # SLAM功能包,包含SLAM Toolbox配置 │ ├── navigation_pkg/ # 导航功能包,包含Nav2配置 │ └── system_launch/ # 系统级启动包,集成各功能模块 ├── my_map.yaml # 导航地图配置文件 ├── my_map.pgm # 导航地图图像文件 └── README_CN.md # 项目中文说明文档 ``` ## 功能模块介绍 ### 1. ros1_bridge_client 负责与ROS 1系统(机器人底层控制器)通信,包含两个主要节点: - `robot_state_bridge_node`:接收机器人状态信息(电池、姿态、IMU等) - `cmd_vel_bridge_node`:将速度指令发送到机器人底层控制器 ### 2. rplidar_ros-ros2 RPLIDAR A2M8激光雷达的ROS 2驱动包,负责发布激光扫描数据。 ### 3. joystick_teleop 手柄遥控控制包,支持北通等标准游戏手柄,可切换安全模式和极限模式。 ### 4. slam_pkg SLAM功能包,使用SLAM Toolbox实现同步定位与地图构建。 ### 5. navigation_pkg 导航功能包,使用Nav2实现路径规划和导航功能。 ### 6. system_launch 系统级启动包,提供统一的系统集成启动方式。 ## 环境要求 - Ubuntu 22.04 - ROS 2 Humble - 相关依赖包(可通过rosdep安装) ## 安装与编译 ```bash # 克隆项目到工作空间 cd ~/xiaoshi_ws # 安装依赖 rosdep install -i --from-path src --rosdistro humble -y # 编译项目 colcon build ``` ## 系统启动方式 ### 1. 核心系统启动(必须首先启动) 启动所有核心组件(机器人状态桥接、激光雷达、手柄遥控、速度指令桥接): ```bash # 激活环境 source install/setup.bash # 启动核心系统 ros2 launch system_launch core_system_launch.py ``` ### 2. SLAM建图模式 在核心系统启动的基础上,启动SLAM建图功能: ```bash # 新终端中执行 source install/setup.bash ros2 launch system_launch slam_system_launch.py ``` 这将启动核心系统组件和SLAM功能,提供以下两种可视化选项: - 仅SLAM功能:`ros2 launch slam_pkg slam_toolbox_launch.py` - SLAM功能+RVIZ可视化:`ros2 launch slam_pkg view_slam_toolbox_launch.py` 建图过程中可通过以下方式保存地图: ```bash # 方法1:使用SLAM Toolbox服务 ros2 service call /slam_toolbox/save_map slam_toolbox/srv/SaveMap "{name: /home/sunrise/xiaoshi_ws/my_map}" # 方法2:使用Nav2地图服务器 ros2 run nav2_map_server map_saver_cli -f my_map ``` ### 3. 导航模式 在核心系统启动的基础上,启动导航功能: ```bash # 新终端中执行 source install/setup.bash ros2 launch system_launch navigation_system_launch.py ``` 这将启动核心系统组件和导航功能。 单独启动导航功能的选项: - 仅导航功能:`ros2 launch navigation_pkg nav2_navigation_launch.py` - 导航功能+RVIZ可视化:`ros2 launch navigation_pkg view_nav2_navigation_launch.py` ### 4. 手柄遥控 手柄控制功能在核心系统启动时自动激活,支持两种速度模式: - 安全模式:线速度上限1.34 m/s,角速度上限5.25 rad/s - 极限模式:线速度上限2.0 m/s,角速度上限7.85 rad/s 通过手柄button 0(默认为A键)在两种模式间切换。 ## 单独启动各功能包 ### ros1_bridge_client包 ```bash # 启动机器人状态桥接节点 ros2 launch ros1_bridge_client robot_state_bridge_launch.py # 启动速度指令桥接节点 ros2 launch ros1_bridge_client cmd_vel_bridge_launch.py ``` ### rplidar_ros-ros2包 ```bash # 启动RPLIDAR A2M8激光雷达 ros2 launch rplidar_ros rplidar_a2m8_launch.py # 启动RPLIDAR并可视化 ros2 launch rplidar_ros view_rplidar_a2m8_launch.py ``` ### joystick_teleop包 ```bash # 启动手柄遥控功能 ros2 launch joystick_teleop joystick_teleop_launch.py ``` ### slam_pkg包 ```bash # 启动SLAM功能 ros2 launch slam_pkg slam_toolbox_launch.py # 启动SLAM功能并可视化 ros2 launch slam_pkg view_slam_toolbox_launch.py ``` ### navigation_pkg包 ```bash # 启动导航功能 ros2 launch navigation_pkg nav2_navigation_launch.py # 启动导航功能并可视化 ros2 launch navigation_pkg view_nav2_navigation_launch.py ``` ## 常用调试命令 ```bash # 查看当前活动节点 ros2 node list # 查看当前发布的主题 ros2 topic list # 查看TF变换树 ros2 run tf2_tools view_frames # 查看机器人状态信息 ros2 topic echo /dog/battery_state ros2 topic echo /dog/body_pose ros2 topic echo /dog/imu # 查看激光雷达数据 ros2 topic echo /scan --once # 查看速度指令 ros2 topic echo /cmd_vel ``` ## 注意事项 1. 启动任何功能前,请确保已执行`source install/setup.bash` 2. 各模块之间存在依赖关系,建议按顺序启动:核心系统 → SLAM/导航 3. 地图文件默认保存在工作空间根目录下 4. 手柄设备需正确连接并被系统识别为`/dev/input/js0` 5. 确保网络连接正常,以便与机器人底层控制器通信