這個 launch
檔案是用於 ROS (Robot Operating System) 的一個 Gazebo 模擬環境啟動文件,負責載入機械手臂 (robot arm) 模型,設定機器人初始位置與狀態,並啟動相關控制節點。以下是詳細解析:
1. 定義引數 (Arguments)
- 這些
arg
用來設定機器人模型在 Gazebo 中的初始位置與旋轉角度 (RPY)。 arg_x, arg_y, arg_z
:機器人初始的 X、Y、Z 位置座標。arg_R, arg_P, arg_Y
:機器人初始的旋轉角度 (Roll, Pitch, Yaw)。
2. 載入機器人模型 URDF
- 這行參數 (
param
) 負責加載機器人模型的 URDF (Unified Robot Description Format) 文件。 - 這個 URDF 檔案描述機器人的連結 (links) 和關節 (joints) 配置。
$(find robot_arm_urdf)
會尋找 ROS packagerobot_arm_urdf
,並載入該 package 中的 URDF 檔案。
3. 加載空的 Gazebo 環境
- 這行指令會啟動一個空的 Gazebo 世界,準備讓機械手臂模型加入。
$(find gazebo_ros)/launch/empty_world.launch
來自gazebo_ros
套件,提供一個基礎的 Gazebo 模擬環境。
4. 設定 TF (坐標變換)
tf
是 ROS 提供的變換坐標系統工具,用於機器人模型的不同參考點轉換。static_transform_publisher
負責發布一個靜態的坐標變換:- 位置
(x=0, y=0, z=0)
- 旋轉
(roll=0, pitch=0, yaw=0)
- 這個變換描述
base_footprint
座標系與base_link
之間的靜態關係。 - 發布頻率為 40 Hz。
- 位置
5. 在 Gazebo 中生成機器人模型
- 這個節點 (
node
) 來自gazebo_ros
套件,負責將機器人模型加載到 Gazebo 中。 -param robot_description
:使用前面定義的robot_description
URDF 來加載機器人。-urdf
:指明這是一個 URDF 格式的模型。-model robot_arm_urdf
:設定機器人的名稱為robot_arm_urdf
。-x, -y, -z, -Y
:設置機器人在 Gazebo 中的初始位置。-J joint_X 0.0
:初始化每個關節 (joint_1
~joint_6
) 的角度為0.0
。
(備註:有一段被註解的 spawn_urdf
,但主要的功能與這個版本類似,只是排版不同。)
6. 加載關節軌跡控制器
rosparam
讀取並加載joint_trajectory_controller.yaml
檔案。- 該 YAML 檔案內部應該包含關節控制器的設定,例如:
- 控制模式 (位置控制、速度控制、力矩控制等)
- 關節名稱與限制
- PID 參數
7. 啟動控制器
- 啟動
controller_manager
來管理 ROS 控制器。 joint_state_controller
:負責發布當前關節的狀態 (如位置、速度)。robot_arm_controller
:控制機械手臂的運動 (應該對應joint_trajectory_controller
)。hand_ee_controller
:可能負責機械手末端執行器 (End Effector, EE) 的控制。
8. 啟動 robot_state_publisher
robot_state_publisher
是 ROS 用來發布機器人關節狀態 (TF 變換) 的工具。- 這樣 RViz (ROS 視覺化工具) 就可以根據機器人狀態來顯示其模型。
總結
這個 launch
檔案的主要作用:
- 初始化變數:定義機器人的初始位置與旋轉角度 (
arg_x, arg_y, arg_z, arg_R, arg_P, arg_Y
)。 - 加載 URDF 模型:載入機器人模型 (
robot_description
)。 - 啟動 Gazebo:打開一個空的 Gazebo 模擬環境。
- 發布靜態坐標變換 (
tf
用於base_link
和base_footprint
)。 - 在 Gazebo 中生成機器人 (
spawn_urdf
)。 - 加載關節控制器 (
joint_trajectory_controller.yaml
)。 - 啟動控制器管理器 (
controller_manager
)。 - 發布機器人狀態 (
robot_state_publisher
),讓 TF 可以正確顯示關節運動。
這樣的 launch
檔案主要用於 ROS + Gazebo 模擬機械手臂,確保:
- 機器人模型能正確載入。
- 在 Gazebo 中出現並能被控制。
- 透過
controller_manager
管理機械手臂關節的運動。
沒有留言:
張貼留言