welcom ! Handel home

2025年2月3日 星期一

RViz 配合 ROS 的用途與功能介紹

 

RViz 配合 ROS 的用途與功能介紹

1. 什麼是 RViz?

RViz (ROS Visualization Tool) 是 ROS (Robot Operating System) 提供的一個 3D 視覺化工具,主要用於顯示機器人感測器數據、環境地圖、導航軌跡、機械手臂狀態等資訊。它可以幫助開發者即時監測機器人的運作狀態,並進行除錯與調試。


2. RViz 的用途

RViz 在 ROS 生態系統中主要負責 可視化,常見的用途包括:

(1) 顯示機器人模型 (URDF / SDF)

  • 可以載入機器人的 URDF (Unified Robot Description Format)SDF (Simulation Description Format) 模型,顯示機器人的形狀、關節狀態及運動方式。
  • 配合 robot_state_publisher 節點,能夠顯示機器人當前姿態。

📌 指令範例

bash
roslaunch my_robot_description display.launch

(2) 視覺化感測器數據

可以顯示機器人的各種感測器數據,例如:

  • LIDAR / 雷射雷達 (sensor_msgs/LaserScan)
  • 深度相機 (RGB-D Camera) (sensor_msgs/PointCloud2)
  • IMU (慣性測量單元) (sensor_msgs/Imu)
  • GPS 定位資訊 (sensor_msgs/NavSatFix)

📌 常見雷射雷達可視化

bash
rosrun rviz rviz

在 RViz 內 新增 LaserScan 類型,訂閱雷射雷達的 Topic,例如 /scan


(3) 機器人導航 (SLAM & Path Planning)

  • SLAM (同時定位與建圖):可以顯示 map,以及即時建立環境地圖 (occupancy grid map)。
  • 路徑規劃與導航
    • 可視化機器人的目標點 (Move Base Goal)
    • 顯示局部與全局路徑 (Local Path & Global Path)
    • 監控機器人避障狀態 (costmap)

📌 導航功能常見指令

bash
roslaunch turtlebot3_navigation turtlebot3_navigation.launch

在 RViz 內 新增 Map 類型,訂閱 /map 來顯示機器人的地圖。


(4) 機械手臂運動規劃 (MoveIt!)

  • RViz 可以與 MoveIt! 搭配,顯示機械手臂的當前狀態、運動規劃軌跡 (Trajectory),並透過互動方式來控制手臂移動。
  • 可視化逆向運動學 (IK) 解算結果

📌 MoveIt! 例子

bash
roslaunch panda_moveit_config demo.launch

在 RViz 內,開啟 MotionPlanning 外掛來控制手臂。


(5) 機器人運動軌跡 (TF & Odometry)

  • TF (Transform Frames):顯示機器人的座標變換,例如從 機器人基座 (base_link)相機 (camera_link) 的相對位置。
  • Odom (里程計 / Odometry):顯示機器人在世界座標中的位置 (/odom topic)。

📌 查看 TF 樹狀架構

bash
rosrun tf view_frames evince frames.pdf

📌 在 RViz 顯示 TF

  1. 新增 "TF" 顯示類型
  2. 訂閱 /tf 主題

(6) 自訂 3D 標記 (Markers)

  • 視覺化自訂訊息,例如:
    • 繪製路徑 (Line Strip)
    • 顯示物件 (MeshResource)
    • 標示文字 (Text View-Facing)
    • 方向箭頭 (Arrow)

📌 自訂 RViz Markers

bash
rostopic pub /visualization_marker visualization_msgs/Marker '{...}'

在 RViz 內,新增 "Marker" 類型 訂閱 /visualization_marker


3. RViz 的基本操作

(1) 啟動 RViz

bash
rosrun rviz rviz

bash
roslaunch rviz rviz.launch

(2) 重要的可視化元素

顯示類型說明需訂閱的 Topic
RobotModel顯示機器人模型/robot_description
TF顯示座標變換/tf
LaserScan顯示雷射雷達數據/scan
PointCloud2顯示點雲 (3D Lidar)/points
Odometry顯示機器人位置/odom
Path顯示導航路徑/move_base/NavfnROS/plan
Marker顯示 3D 標記/visualization_marker
Image顯示相機影像/camera/image_raw

4. RViz 進階應用

(1) 建立 RViz 配置檔 (.rviz)

可以儲存當前的 RViz 設定,以便下次開啟:

  1. 設定好視圖、座標、雷射雷達等顯示項目。
  2. 點選 File -> Save Config,存成 .rviz 檔案。
  3. 之後可以使用:
bash
rosrun rviz rviz -d my_config.rviz

(2) 自動啟動 RViz

可以建立一個 launch 檔案,讓 RViz 自動啟動:

xml
<launch> <node pkg="rviz" type="rviz" name="rviz" args="-d $(find my_robot_package)/config/my_config.rviz"/> </launch>

執行:

bash
roslaunch my_robot_package my_rviz.launch

5. RViz vs Gazebo

功能RVizGazebo
主要用途可視化 ROS 資訊物理模擬
機器人模型只能顯示可模擬運動
感測器數據可視化雷射、相機等提供真實感測器模擬
導航 (SLAM)顯示地圖與路徑無法執行
與 MoveIt! 搭配也可以

6. 結論

RViz 是 ROS 的重要視覺化工具,能夠幫助開發者監控機器人狀態、感測數據、導航資訊,並進行調試。
✅ 主要應用包括 機器人模型顯示、LIDAR 感測、SLAM、導航、運動規劃、TF 變換等
✅ 可透過 .rviz 檔案 儲存與載入配置,並且能夠與 MoveIt!、SLAM、導航系統整合
不具備物理模擬能力,如需物理模擬請搭配 Gazebo

💡 建議:使用 RViz 進行即時監控,Gazebo 進行模擬測試,兩者搭配能發揮最大效益!🚀

沒有留言: