第 2 节
环境配置与运行
环境配置与运行
docker(可选)
里面已经配置好了大部分环境:
sudo docker run --name=ysu_ros_humble \
--gpus all \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-e DISPLAY=$DISPLAY \
-dit \
--privileged \
--net=host \
--group-add audio \
--group-add video \
--group-add dialout \
-e XAUTHORITY=$HOME/.Xauthority \
-e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
-e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR \
-e QT_QPA_PLATFORM=xcb \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
-v /dev:/dev \
-v $HOME/.Xauthority:$HOME/.Xauthority:ro \
-v /run/user/$(id -u)/wayland-0:/run/user/$(id -u)/wayland-0 \
-v /run/user/$(id -u):/run/user/$(id -u) \
-v $HOME:$HOME \
-w $HOME \
tungchiahui/ysu-ros:humble-jammy
YSU克隆配置环境
克隆代码:
git clone https://github.com/tungchiahui/ysu2026_rm_sentry.git
安装small_gicp:
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
安装xmacro和vcstool2:
sudo apt install python3-pip python3-vcstool
pip install xmacro
安装依赖:
cd ./ysu2026_rm_sentry
sudo apt update
rosdep install -r --from-paths src --ignore-src --rosdistro $ROS_DISTRO -y
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
SLAM(建图)
仿真测试
# 手柄
source install/setup.bash
ros2 launch joy_bringup joy_controller_sim.launch.py
# 键盘
## 控制机器人移动
source install/setup.bash
ros2 run rmoss_gz_base test_chassis_cmd.py --ros-args -r __ns:=/red_standard_robot1/robot_base -p v:=0.3 -p w:=0.3
## 机器人云台
ros2 run rmoss_gz_base test_gimbal_cmd.py --ros-args -r __ns:=/red_standard_robot1/robot_base
## 机器人射击
ros2 run rmoss_gz_base test_shoot_cmd.py --ros-args -r __ns:=/red_standard_robot1/robot_base
source install/setup.bash
ros2 launch rmu_gazebo_simulator bringup_sim.launch.py
source install/setup.bash
ros2 launch pb2025_nav_bringup rm_navigation_simulation_launch.py \
use_sim_time:=True \
use_joy:=False \
slam:=True
实物测试
# 手柄
source install/setup.bash
ros2 launch joy_bringup joy_controller.launch.py
# 键盘
source install/setup.bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard
source install/setup.bash
ros2 launch serial_comm serial_comm.launch.py
source install/setup.bash
ros2 launch pb2025_nav_bringup rm_navigation_reality_launch.py \
use_sim_time:=False \
use_joy:=False \
use_robot_state_pub:=True \
slam:=True \
use_rviz:=False
导航(开small_gicp)
仿真
source install/setup.bash
ros2 launch rmu_gazebo_simulator bringup_sim.launch.py
source install/setup.bash
ros2 launch pb2025_nav_bringup rm_navigation_simulation_launch.py \
use_sim_time:=True \
use_joy:=False \
slam:=False \
world:=rmuc_2025
实物
source install/setup.bash
ros2 launch serial_comm serial_comm.launch.py
source install/setup.bash
ros2 launch pb2025_nav_bringup rm_navigation_reality_launch.py \
use_sim_time:=False \
use_joy:=False \
use_robot_state_pub:=True \
use_rviz:=False \
slam:=False \
world:=map_name
导航(关small_gicp且静态发布map到odom)
仿真
source install/setup.bash
ros2 launch rmu_gazebo_simulator bringup_sim.launch.py
source install/setup.bash
ros2 launch pb2025_nav_bringup rm_navigation_simulation_static_launch.py \
use_sim_time:=False \
use_joy:=False \
slam:=False \
world:=rmuc_2025
实物
source install/setup.bash
ros2 launch serial_comm serial_comm.launch.py
source install/setup.bash
ros2 launch pb2025_nav_bringup rm_navigation_reality_static_launch.py \
use_sim_time:=False \
use_joy:=False \
use_robot_state_pub:=True \
use_rviz:=False \
slam:=False \
world:=map_name
启动Rviz2
rviz2 -d ./src/pb2025_sentry_nav/pb2025_nav_bringup/rviz/nav2_default_view.rviz
地图相关操作
2D栅格
保存地图:
ros2 run nav2_map_server map_saver_cli \
-f src/pb2025_sentry_nav/pb2025_nav_bringup/map/staging/test_$(date +%Y%m%d_%H%M%S)
测试读取地图:
在工作空间下运行:
source install/setup.bash
ros2 launch map_server map_server.launch.py \
map:=src/pb2025_sentry_nav/pb2025_nav_bringup/map/staging/map_name.yaml
点云pcd
cp -i \
src/pb2025_sentry_nav/point_lio/PCD/scans.pcd \
src/pb2025_sentry_nav/pb2025_nav_bringup/pcd/staging/test_$(date +%Y%m%d_%H%M%S).pcd
快速读取点云:
在工作空间下运行:
pcl_viewer -bc 255,255,255 src/pb2025_sentry_nav/pb2025_nav_bringup/pcd/staging/map_name.pcd
把PCD临时读取为PointCloud2(可用于测试以下问题):
- PCD 和机器人 TF 是否对齐
- PCD 和二维 map 是否重合
- PCD 的 frame 是否正确
ros2 run pcl_ros pcd_to_pointcloud --ros-args \
-p tf_frame:=camera_init \
-p publishing_period_ms:=1000 \
-r cloud_pcd:=cloud_pcd \
-p file_name:=src/pb2025_sentry_nav/pb2025_nav_bringup/pcd/staging/map_name.pcd
-r cloud_pcd参数不填的话,默认也是cloud_pcd
在rviz2里:
- Fixed Frame:camera_init
- Add → PointCloud2 → Topic = /cloud_pcd