welcom ! Handel home

2025年2月17日 星期一

MoveIt 介紹

 🔹 什麼是 MoveIt?

MoveIt 是一個功能強大的 機器人運動規劃(Motion Planning)框架,主要用於:

  • 機器人運動規劃(Motion Planning)
  • 碰撞檢測(Collision Checking)
  • 控制(Kinematics and Control)
  • 感知(Perception Integration)
  • 操控(Manipulation and Grasping)
  • 機械臂控制(Arm Control)
  • 仿真與視覺化(Simulation & Visualization)

MoveIt 最常用於 機械臂(Manipulator),例如:

  • 工業機械臂(UR5、Fanuc、ABB 等)
  • 服務機器人(TIAGo、Fetch、PR2)
  • 機器人手抓取(Grasping)
  • 移動機器人搭載的機械臂(Mobile Manipulation)

1️⃣ MoveIt 的架構

MoveIt 主要基於 ROS,與機器人硬體透過 ROS 控制器(ROS Controllers) 進行通訊。其核心組件包括:

🔹 1. 運動規劃器(Motion Planning)

  • 透過 OMPL(Open Motion Planning Library) 進行機械臂軌跡規劃
  • 支援不同的路徑規劃演算法(如 RRT、RRT*、PRM)。

🔹 2. 碰撞檢測(Collision Checking)

  • 使用 FCL(Flexible Collision Library) 來檢查機器人運動過程中是否發生碰撞。
  • 可透過 Octomap 來處理 3D 碰撞檢測。

🔹 3. 逆運動學(Inverse Kinematics, IK)

  • 使用 KDL(Kinematics Dynamics Library)TRAC-IK 來計算機械臂的 逆運動學(IK)

🔹 4. 機器人控制(Controllers)

  • MoveIt 可以與 ROS 控制器(ROS Controllers) 整合,例如:
    • ros_control:提供 PID 控制。
    • Gazebo:模擬環境中的機械臂控制。

🔹 5. 感知與抓取(Perception & Grasping)

  • 整合感測器(Camera, LiDAR) 來偵測障礙物。
  • 自動抓取(Grasping):使用 moveit_grasps 來實現機械手的抓取。

🔹 6. 可視化與仿真(RViz & Gazebo)

  • RViz:提供 3D 視覺化界面,可查看機械臂規劃路徑。
  • Gazebo:模擬真實機器人運動與控制器行為。

2️⃣ MoveIt 主要功能

✅ 1. 運動規劃(Motion Planning)

MoveIt 透過 OMPL(Open Motion Planning Library),支援多種運動規劃演算法:

  • RRT(快速探索隨機樹)
  • PRM(概率路徑規劃)
  • CHOMP(Covariant Hamiltonian Optimization)
  • STOMP(Stochastic Trajectory Optimization)

📌 應用場景

  • 複雜環境 中計算機械臂路徑。
  • 讓機械臂避開障礙物並移動到指定位置。

✅ 2. 逆運動學(IK, Inverse Kinematics)

逆運動學計算 機械臂末端(End Effector) 應該如何移動來到達目標點。

📌 應用場景

  • 計算機械臂的關節角度,使機械臂到達指定位置。

支援的 IK 求解器

IK 求解器優勢
KDL(Kinematics and Dynamics Library)ROS 官方支援,計算精確
TRAC-IK比 KDL 更快、更穩定
IKFast適用於特定機械臂,運行速度快

✅ 3. 碰撞檢測(Collision Checking)

MoveIt 內建碰撞檢測系統,確保機械臂不會與障礙物發生碰撞。

📌 應用場景

  • 確保機械臂運動時不會撞到桌子或牆壁。

支援的碰撞檢測庫

碰撞檢測優勢
FCL(Flexible Collision Library)準確、高效
Bullet適用於物理仿真
Octomap用於 3D 障礙物檢測

✅ 4. 抓取(Grasping)

MoveIt 可以整合 機械手(Gripper) 來執行抓取動作。

📌 應用場景

  • 倉庫自動化(如 Amazon Picking Challenge)。
  • 服務機器人 抓取物品。

工具庫

  • moveit_grasps:開源的抓取演算法。
  • grasping_pipeline:使用感測器來調整抓取姿勢。

3️⃣ MoveIt 2 vs MoveIt 1

MoveIt 2 是 MoveIt 的 ROS 2 版本,它與 MoveIt 1(ROS 1)有許多差異:

功能MoveIt 1(ROS 1)MoveIt 2(ROS 2)
支持平台ROS 1 (Noetic)ROS 2 (Humble, Foxy)
運動規劃OMPL, CHOMP, STOMPOMPL, CHOMP, STOMP
DDS 通訊❌ 不支援✅ 支援 ROS 2 DDS
實時控制(Real-Time)❌ 無即時性✅ 低延遲,高效能
Gazebo 支援Gazebo ClassicGazebo Ignition
感測器整合需手動設定原生支援 ROS 2 感測器
開發狀態即將停止支援(Noetic 2025 年 EOL)持續開發中,建議新專案使用

📌 結論

  • 如果你使用 ROS 2,應該選擇 MoveIt 2。
  • 如果你仍在使用 ROS 1(Noetic),可以使用 MoveIt 1,但 Noetic 將於 2025 年 EOL。

4️⃣ 如何在 ROS 2 安裝 MoveIt 2

🔹 1. 安裝 MoveIt 2

在 ROS 2 Humble 版本中安裝 MoveIt 2:

bash
sudo apt update sudo apt install ros-humble-moveit ros-humble-moveit-ros ros-humble-moveit-setup-assistant

🔹 2. 啟動 MoveIt 2

bash
ros2 launch moveit_demo_nodes demo.launch.py

這將開啟一個 MoveIt 2 示例,並在 RViz 中顯示機械臂。


📌 總結

MoveIt 是 ROS 內最常用的運動規劃框架,支援 機械臂、機器手、感測器
MoveIt 2 是 ROS 2 版本,支援即時控制、DDS、Gazebo Ignition
新專案應該使用 MoveIt 2,而不是 MoveIt 1

🚀 如果你在開發機械臂應用,MoveIt 會是你的最佳選擇! 🎉

沒有留言: