- Python 84.6%
- Shell 13.2%
- CMake 2.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| script/.templates | ||
| src/pb2025_sentry_bringup | ||
| .gitignore | ||
| dependencies.repos | ||
| README.md | ||
pb2025_sentry_ws
1. 项目介绍
深圳北理莫斯科大学北极熊战队 哨兵机器人 ROS 工作空间,包含串口通信、视觉、导航、决策、仿真模块。
2. Quick Start
2.1 Setup Environment
-
Ubuntu 22.04
-
ROS: Humble
-
Ignition: Fortress
-
Install OpenVINO 2023.3
-
Install small_icp:
sudo apt install -y libeigen3-dev libomp-dev git clone https://github.com/koide3/small_gicp.git cd small_gicp mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release && make -j sudo make install
2.2 Create Workspace
sudo apt install git-lfs
sudo pip install vcstool2
git clone https://github.com/SMBU-PolarBear-Robotics-Team/pb2025_sentry_ws.git
cd pb2025_sentry_ws
vcs import --recursive . < dependencies.repos
Note
dependencies.repos文件已包含所有模块所依赖的仓库地址,无需手动查阅子模块的 README 手动克隆依赖。
Tip
使用命令
vcs pull ./src可更新所有子模块。
2.3 Build
rosdep install -r --from-paths src --ignore-src --rosdistro $ROS_DISTRO -y
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --parallel-workers 10
Note
推荐使用 --symlink-install 选项来构建你的工作空间,因为 pb2025_sentry_ws 广泛使用了 launch.py 文件和 yaml 文件。这个构建参数会为那些非编译的源文件使用符号链接,这意味着当你调整参数文件时,不需要反复重建,只需要重新启动即可。
2.4 Running
将会运行串口通信、视觉、导航、决策模块,参数均读取自配置文件 node_params。
ros2 launch pb2025_sentry_bringup bringup.launch.py \
world:=<YOUR_PARAMS_FILE> \
use_rviz:=True
3. 常用调试启动命令
Note
请自行替换
<YOUR_WORLD_NAME>为你的 map, pcd 的文件名;替换<YOUR_PARAMS_FILE>为你的配置文件的绝对路径,如 node_params。
3.1 子模块
Camera
ros2 launch hik_camera_ros2_driver hik_camera_launch.py params_file:=<YOUR_PARAMS_FILE>
Serial
ros2 launch standard_robot_pp_ros2 standard_robot_pp_ros2.launch.py use_rviz:=True params_file:=<YOUR_PARAMS_FILE>
Vision
ros2 launch pb2025_vision_bringup rm_vision_reality_launch.py \
use_composition:=True \
use_rviz:=True \
params_file:=<YOUR_PARAMS_FILE>
Navigation
ros2 launch pb2025_nav_bringup rm_navigation_reality_launch.py \
world:=<YOUR_WORLD_NAME> \
slam:=False
Behavior Tree
ros2 launch pb2025_sentry_behavior pb2025_sentry_behavior_launch.py params_file:=<YOUR_PARAMS_FILE>
3.2 Tools
Teleop gimbal
ros2 run teleop_gimbal_keyboard teleop_gimbal_keyboard
Convert .pcd to .pgm
ros2 launch pcd2pgm pcd2pgm_launch.py
Save map
ros2 run nav2_map_server map_saver_cli -f <YOUR_WORLD_NAME>
3.3 Rosbags
3.3.1 Record
Tip
图像信息占用空间极大,若不需要录制图像信息,可删除
front_industrial_camera/image和front_industrial_camera/camera_info。建议降低 hik_camera_ros2_driver 参数中的相机帧率,以减少 rosbag 文件大小。
Note
本命令仅录制了传感器数据,没有直接录制 tf 信息,因此启动导航/视觉模块时,应设置
use_robot_state_pub:=True,以使用 joint_state 数据生成并发布整车 TF。
方法一:根据裁判系统数据自动触发录包
设置 node_params.yaml 中的 standard_robot_pp_ros2.record_rosbag 参数为 True,设置 rosbag_recorder.topics 为要录制的话题,裁判系统进入 5s 倒计时阶段时自动开启录制,进入比赛结算阶段时自动结束录制并保存。
方法二:命令行手动触发录包
source install/setup.zsh
ros2 bag record -o sentry_$(date +%Y%m%d_%H%M%S) \
/serial/gimbal_joint_state \
/livox/imu \
/livox/lidar \
/front_industrial_camera/image \
/front_industrial_camera/camera_info \
--compression-mode file --compression-format zstd -d 30
3.3.2 Play
Note
使用
--clock参数,以发布 rosbag 中的时间戳到/clock话题。这意味着运行其他算法节点时,应设置use_sim_time:=True。
ros2 bag play <YOUR_ROSBAG>.bag --clock
Example:
ros2 launch pb2025_sentry_bringup bringup.launch.py \
world:=<YOUR_WORLD_NAME> \
use_composition:=False \
use_rviz:=True \
use_sim_time:=True \
use_hik_camera:=False \
use_robot_state_pub:=True
