![]() |
pb2025_sentry_nav repositoryrobotics ugv ros2 robomaster livox-lidar navigation2 fake_vel_transform ign_sim_pointcloud_tool loam_interface pb2025_nav_bringup pb2025_sentry_nav sensor_scan_generation terrain_analysis terrain_analysis_ext |
Repository Summary
Description | Shenzhen MSU-BIT University PolarBear Team's Sentry Navigation Sim2Real Package for RoboMaster2025. QQ group: 932119307 |
Checkout URI | https://github.com/smbu-polarbear-robotics-team/pb2025_sentry_nav.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-21 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | robotics ugv ros2 robomaster livox-lidar navigation2 |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
Name | Version |
---|---|
fake_vel_transform | 1.3.1 |
ign_sim_pointcloud_tool | 1.3.1 |
loam_interface | 1.3.1 |
pb2025_nav_bringup | 1.3.1 |
pb2025_sentry_nav | 1.3.1 |
sensor_scan_generation | 1.3.1 |
terrain_analysis | 0.0.1 |
terrain_analysis_ext | 0.0.1 |
README
pb2025_sentry_nav
深圳北理莫斯科大学 北极熊战队 2025 赛季哨兵导航仿真/实车包
BiliBili: 谁说在家不能调车!?更适合新手宝宝的 RM 导航仿真
https://github.com/user-attachments/assets/d9e778e0-fa43-40c2-96c2-e71eaf7737d4
https://github.com/user-attachments/assets/ae4c19a0-4c73-46a0-95bd-909734da2a42
1. Overview
本项目基于 NAV2 导航框架 并参考学习了 autonomous_exploration_development_environment 的设计。
-
关于坐标变换:
本项目大幅优化了坐标变换逻辑,考虑雷达原点
lidar_odom
与 底盘原点odom
之间的隐式变换。mid360 倾斜侧放在底盘上,使用 point_lio 里程计,small_gicp 重定位,loam_interface 会将 point_lio 输出的
/cloud_registered
从lidar_odom
系转换到odom
系,sensor_scan_generation 将odom
系的点云转换到front_mid360
系,并发布变换odom -> chassis
。 -
关于路径规划:
使用 NAV2 默认的 Global Planner 作为全局路径规划器,pb_omni_pid_pursuit_controller 作为路径跟踪器。
-
namespace:
为了后续拓展多机器人,本项目引入 namespace 的设计,与 ROS 相关的 node, topic, action 等都加入了 namespace 前缀。如需查看 tf tree,请使用命令
ros2 run rqt_tf_tree rqt_tf_tree --ros-args -r /tf:=tf -r /tf_static:=tf_static -r __ns:=/red_standard_robot1
-
LiDAR:
Livox mid360 倾斜侧放在底盘上。
注:仿真环境中,实际上 point pattern 为 velodyne 样式的机械式扫描。此外,由于仿真器中输出的 PointCloud 缺少部分 field,导致 point_lio 无法正常估计状态,故仿真器输出的点云经过 ign_sim_pointcloud_tool 处理添加
time
field。 -
文件结构
.
├── fake_vel_transform # 虚拟速度参考坐标系,以应对云台扫描模式自旋,详见子仓库 README
├── ign_sim_pointcloud_tool # 仿真器点云处理工具
├── livox_ros_driver2 # Livox 驱动
├── loam_interface # point_lio 等里程计算法接口
├── pb_teleop_twist_joy # 手柄控制
├── pb2025_nav_bringup # 启动文件
├── pb2025_sentry_nav # 本仓库功能包描述文件
├── pb_omni_pid_pursuit_controller # 路径跟踪控制器
├── point_lio # 里程计
├── pointcloud_to_laserscan # 将 terrain_map 转换为 laserScan 类型以表示障碍物(仅 SLAM 模式启动)
├── sensor_scan_generation # 点云相关坐标变换
├── small_gicp_relocalization # 重定位
├── terrain_analysis # 距车体 4m 范围内地形分析,将障碍物离地高度写入 PointCloud intensity
└── terrain_analysis_ext # 车体 4m 范围外地形分析,将障碍物离地高度写入 PointCloud intensity
2. Quick Start
2.1 Option 1: Docker
2.1.1 Setup Environment
-
允许 Docker Container 访问宿主机 X11 显示
xhost +local:docker
2.1.2 Create Container
docker run -it --rm --name pb2025_sentry_nav \
--network host \
-e "DISPLAY=$DISPLAY" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /dev:/dev \
ghcr.io/smbu-polarbear-robotics-team/pb2025_sentry_nav:1.3.1
2.2 Option 2: Build From Source
2.2.1 Setup Environment
- Ubuntu 22.04
- ROS: Humble
- 配套仿真包(Option):rmu_gazebo_simulator
- Install small_icp:
```bash sudo apt install -y libeigen3-dev libomp-dev
git clone https://github.com/koide3/small_gicp.git
File truncated at 100 lines see the full file
CONTRIBUTING
Contributing Guidelines
Thank you for your interest in contributing to pb2025_sentry_nav
.
Whether it’s a bug report, new feature, correction, or additional
documentation, we greatly value feedback and contributions from our community.
Please read through this document before submitting any issues or pull requests to ensure we have all the necessary information to effectively respond to your bug report or contribution.
Reporting Bugs/Feature Requests
We welcome you to use the GitHub issue tracker to report bugs or suggest features.
When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn’t already reported the issue. Please try to include as much information as you can. Details like these are incredibly useful:
- A reproducible test case or series of steps
- The version of our code being used
- Any modifications you’ve made relevant to the bug
- Anything unusual about your environment or deployment
Contributing via Pull Requests
To send us a pull request, please:
- Fork the repository.
- Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change.
- Ensure local tests pass. (
colcon test
andpre-commit run
(requires you to install pre-commit bypip3 install pre-commit
) - Commit to your fork using clear commit messages.
- Send a pull request, answering any default questions in the pull request interface.
- Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation.
GitHub provides additional documentation on forking a repository and creating a pull request.
Finding contributions to work on
Looking at the existing issues is a great way to find something to contribute on. As this project, by default, uses the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any ‘help wanted’ issues is a great place to start.
Licensing
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.