跳到正文

Wiki

環境配置與運行

約 1 分鐘閱讀

本文由簡體中文內容確定性轉換,並受版本化術語表保護。

1.環境配置與運行

1.1.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

1.2.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

1.3.SLAM(建圖)

1.3.1.仿真測試

# 手柄
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

1.3.2.實物測試

# 手柄
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

1.4.導航(開small_gicp)

1.4.1.仿真

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

1.4.2.實物

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

1.5.導航(關small_gicp且靜態發佈map到odom)

1.5.1.仿真

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:=True \
use_joy:=False \
slam:=False \
world:=rmuc_2025

1.5.2.實物

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

1.6.啓動Rviz2

rviz2 -d ./src/pb2025_sentry_nav/pb2025_nav_bringup/rviz/nav2_default_view.rviz

1.7.地圖相關操作

1.7.1.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

1.7.2.點雲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