# 環境驗證(Isaac sim / ROS2 / Nav2) 前置環境 - From [isaac_ros2_nav2 repository](https://github.com/newbieKD/isaac_ros2_nav2/tree/main/corporate_docker) - OS: Linux - ROS 2: Humble - 本次測試開啟容器的方法: ```bash docker run --rm -it \ --name isaac-nav2-test \ --gpus all \ --runtime=nvidia \ --network=host \ -v /path/to/isaac_ros2_nav2:/home/ros2-essentials:rw \ -v /path/to/isaac_ros2_nav2/humble_ws:/home/user/humble_ws:rw \ -e HOME=/home/user \ -w /home/user \ newbieKD/isaac_sim_lab_ros2_nav2:3.2.0 bash ``` - 若需在第二個終端進入同一容器: ```bash docker exec -it isaac-nav2-test bash ``` - 如果通過compose啟動,可在`~/isaac_ros2_nav2/corporate_docker/docker/compose.yamlcompose.yaml`中的`volumes`檔案部分使用以下路徑: ``` - ../..:/home/ros2-essentials - ../../humble_ws:/home/user/humble_ws ``` - 已編譯本套件 ```bash cd ~/humble_ws colcon build source install/setup.bash ``` - 開啟 VNC server ```bash start-xvfb-vnc vnc-display vnc-user-status ``` --- # Isaac sim測試 ## 0) 啟動 Isaac sim * 第一次啟動需要約5-10分鐘 測試1 VNC GUI畫面: ```bash vnc-display # 確保 display 設定 cd ~/isaacsim CUDA_VISIBLE_DEVICES=0 ./isaac-sim.sh ``` 本地電腦開啟任意VNC viwer,使用內網IP以及Port(預設5090)連接:  測試2 Isaac Sim WebRTC Streaming Client GUI畫面: ```bash cd ~/isaacsim CUDA_VISIBLE_DEVICES=0 ./isaac-sim.streaming.sh ``` 本地電腦開啟Isaac Sim WebRTC Streaming Client,使用內網IP連接:  ## 1) 嘗試開啟Isaac sim carter範例 * 第一次啟動需要約5-10分鐘 File path : `~/humble_ws/Isaac_sim_carter_nav2_example.usd` or `Windows->examples->robot example->ROS2->Navigate->carter`  --- # ROS2 Nav2測試 ## 0) Package檢查 - 必要 ROS 套件(Nav2/RViz/TF/雷射轉換) ```bash ros2 pkg list | egrep 'nav2_bringup|nav2_map_server|nav2_amcl|nav2_controller|nav2_planner|nav2_smoother|nav2_bt_navigator|nav2_behavior_tree|nav2_velocity_smoother|nav2_waypoint_follower|rviz2|tf2_ros|tf2_tools|pointcloud_to_laserscan' ```  --- ## 1) 地圖伺服 map_server 單獨測試 - 開啟 map_server(終端 A) ```bash ros2 run nav2_map_server map_server --ros-args \ -p yaml_filename:=$(ros2 pkg prefix carter_navigation)/share/carter_navigation/maps/carter_warehouse_navigation.yaml \ -p use_sim_time:=true ``` - 在另一終端 B 驗證 ```bash ros2 lifecycle get /map_server # 應該是 unconfigured ros2 lifecycle set /map_server configure ros2 lifecycle set /map_server activate ros2 topic list | egrep '^/map$|^/map_metadata$' ros2 topic echo /map --once ``` 結束:Ctrl+C 關閉 map_server --- ## 2) AMCL 節點可啟動(不依賴模擬) - 開啟 AMCL(終端 A) ```bash ros2 run nav2_amcl amcl --ros-args \ -p use_sim_time:=true \ -p base_frame_id:=pelvis \ -p odom_frame_id:=odom \ -p scan_topic:=/scan ``` 備註:此測試在未提供 TF 與 /scan 下僅驗證「可啟動與參數存在」,不期待輸出姿態 - 在另一終端 B 觀察參數是否可讀 ```bash ros2 param get /amcl base_frame_id ros2 param get /amcl scan_topic ``` 結束:Ctrl+C 關閉 AMCL --- ## 3) RViz 可啟動(必要時用軟體渲染) - 基本啟動 ```bash rviz2 ``` - 若遇 OpenGL/GLSL 錯誤,改用軟體渲染 ```bash LIBGL_ALWAYS_SOFTWARE=1 rviz2 ``` 提示:此步僅驗證 RViz 可啟動  --- ## 4) TF 工具可用 - 生成 TF 拓撲圖(無 TF 來源時也應能正常輸出空圖) ```bash ros2 run tf2_tools view_frames ``` 當前目錄下產生 frames.pdf 或 frames.gv - TF test(無 TF 來源會等待): ```bash ros2 run tf2_ros tf2_echo odom base_link # 測試命令;若無 TF 來源會持續等待 ``` --- ## 5) 3D→2D 雷射轉換節點可啟動(無輸入也能啟動) - 啟動節點(終端 A) ```bash ros2 run pointcloud_to_laserscan pointcloud_to_laserscan_node --ros-args \ -r cloud_in:=/point_cloud -r scan:=/scan \ -p target_frame:=mid360_link \ -p use_sim_time:=true ``` 備註:若沒有 /point_cloud 與 TF,此節點可能僅待機或輸出等待訊息 - 另一終端 B 檢視參數 ```bash ros2 param list | grep pointcloud_to_laserscan ``` 結束:Ctrl+C 關閉節點 --- ## 6) Nav2 單元測試(不需導航) - 僅測試 Localization 組(map_server + AMCL)是否能被載入 ```bash ros2 launch nav2_bringup localization_launch.py \ map:=$(ros2 pkg prefix carter_navigation)/share/carter_navigation/maps/carter_warehouse_navigation.yaml \ use_sim_time:=True ``` - Terminal可見 map_server、amcl 被載入 - ros2 node list 可見 /map_server、/amcl - ros2 topic list 可見 /map、/map_metadata 備註:無模擬時,不要求 /amcl_pose、/particlecloud 有數據 結束:Ctrl+C 關閉 --- ## 7) ROS2與模擬Isaac Sim測試 當Isaac sim carter範例模擬已啟動: - 檢測topic ```bash ros2 topic list ``` - 啟動官方launch file ```bash ros2 launch carter_navigation carter_navigation.launch.py ``` ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up