深圳北理莫斯科大学北极熊战队 哨兵机器人 ROS 工作空间,包含串口通信、视觉、导航、决策、仿真模块。
-
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
sudo apt install git-lfs
sudo pip install vcstool2git clone https://github.com/SMBU-PolarBear-Robotics-Team/pb2025_sentry_ws.gitcd pb2025_sentry_wsvcs import --recursive . < dependencies.reposNote
dependencies.repos 文件已包含所有模块所依赖的仓库地址,无需手动查阅子模块的 README 手动克隆依赖。
Tip
使用命令 vcs pull ./src 可更新所有子模块。
rosdep install -r --from-paths src --ignore-src --rosdistro $ROS_DISTRO -ycolcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --parallel-workers 10Note
推荐使用 --symlink-install 选项来构建你的工作空间,因为 pb2025_sentry_ws 广泛使用了 launch.py 文件和 yaml 文件。这个构建参数会为那些非编译的源文件使用符号链接,这意味着当你调整参数文件时,不需要反复重建,只需要重新启动即可。
将会运行串口通信、视觉、导航、决策模块,参数均读取自配置文件 node_params。
ros2 launch pb2025_sentry_bringup bringup.launch.py \
world:=<YOUR_PARAMS_FILE> \
use_rviz:=TrueNote
请自行替换 <YOUR_WORLD_NAME> 为你的 map, pcd 的文件名;替换 <YOUR_PARAMS_FILE> 为你的配置文件的绝对路径,如 node_params。
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:=FalseBehavior Tree
ros2 launch pb2025_sentry_behavior pb2025_sentry_behavior_launch.py params_file:=<YOUR_PARAMS_FILE>Teleop gimbal
ros2 run teleop_gimbal_keyboard teleop_gimbal_keyboardConvert .pcd to .pgm
ros2 launch pcd2pgm pcd2pgm_launch.pySave map
ros2 run nav2_map_server map_saver_cli -f <YOUR_WORLD_NAME>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 30Note
使用 --clock 参数,以发布 rosbag 中的时间戳到 /clock 话题。这意味着运行其他算法节点时,应设置 use_sim_time:=True。
ros2 bag play <YOUR_ROSBAG>.bag --clockExample:
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