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