Wiki
Joint-Trajectory-Controller
本文由簡體中文內容確定性轉換,並受版本化術語表保護。
軌跡控制器在時間軸上執行目標點。本節沿用自己的雙關節工程,不再建立另一套模型。
1.示例 1:切換到軌跡控制器
保持 mini.launch.py 執行。YAML 中已經登記 trajectory_controller:
ros2 control load_controller trajectory_controller --set-state inactive
ros2 control switch_controllers \
--deactivate forward_position_controller \
--activate trajectory_controller --strict
ros2 control list_controllers
ros2 action list -t
1.1.執行順序
load 建立並配置例項,處於 inactive;switch 在一次切換請求中釋放舊控制器介面,再讓新控制器取得介面。不要讓兩個控制器同時爭用 joint1/position。
2.示例 2:通過 Action 傳送完整目標
ros2 action send_goal /trajectory_controller/follow_joint_trajectory \
control_msgs/action/FollowJointTrajectory \
"{trajectory: {joint_names: [joint1, joint2], points: [
{positions: [0.2, 0.1], time_from_start: {sec: 3}}
]}}" --feedback
2.1.成功時的示例輸出
error_code: 0
error_string: Goal successfully reached!
Goal finished with status: SUCCEEDED
MiniSystem 的一階響應會滯後,配置中允許一定軌跡誤差和額外到達時間。目標成功表示符合當前配置的成功條件,不表示真實裝置沒有誤差。
3.示例 3:通過 Topic 傳送兩段軌跡
ros2 topic pub --once /trajectory_controller/joint_trajectory \
trajectory_msgs/msg/JointTrajectory \
"{joint_names: [joint1, joint2], points: [
{positions: [0.3, -0.2], time_from_start: {sec: 2}},
{positions: [0.0, 0.0], time_from_start: {sec: 5}}
]}"
3.1.時間引數說明
time_from_start 相對於整條軌跡起點,而不是相對於上一個點。上例第二段到達時間是開始後 5 秒,第二段時長約為 3 秒。點的時間應嚴格遞增。
header.stamp 為零時使用控制器當前接收與執行邏輯安排起點;指定絕對時間時必須保證時間域一致。在模擬中尤其不要混用牆上時間和模擬時間。
3.2.Topic 與 Action 的區別
Action 提供目標接受、執行反饋與最終結果,適合需要監控任務是否完成的場景。Topic 可以直接替換軌跡,但釋出成功並不是動作執行成功。
3.3.關鍵配置說明
- joints:關節及陣列順序。
- command_interfaces:本例為 position。
- state_interfaces:本例讀取 position、velocity。
- trajectory tolerance:執行中允許的跟蹤誤差。
- goal tolerance:結束時允許的誤差。
- goal_time:允許額外達到目標的時間。
不同命令介面要求不同反饋組合,不能把本例 position 配置原樣用於 effort 控制。
4.恢復命令轉發器
ros2 control switch_controllers --deactivate trajectory_controller \
--activate forward_position_controller --strict
原始碼:ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp、control_msgs/control_msgs/action/FollowJointTrajectory.action。沿目標回撥、軌跡緩衝、取樣與容差檢查閱讀;不要把整段 update 當成只有一次陣列賦值。
返回 Humble 總覽 · 上一篇:命令轉發與常用控制介面 · 下一篇:機械臂物理模擬