日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

遨博协作机器人ROS开发 - 自定义运动学求解器算法插件

發布時間:2024/3/24 编程问答 103 豆豆
生活随笔 收集整理的這篇文章主要介紹了 遨博协作机器人ROS开发 - 自定义运动学求解器算法插件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、簡介

二、環境版本

三、學習目標

四、知識儲備

五、任務實施

六、任務拓展

?七、課堂小結

八、課后練習


一、簡介

大家好,歡迎關注遨博學院帶來的系列技術分享文章(協作機器人ROS開發),今天我們來學習一下“自定義運動學求解器算法插件”。

二、環境版本

  • 主機系統版本:Windwos10 64位
  • 處理器型號:Intel-i7
  • 虛擬機版本:VMware Workstation 16 Pro
  • 虛擬機系統:Ubuntu 18.04.6 LTS
  • ROS版本:Melodic

三、學習目標

四、知識儲備

下面開始介紹本節內容的知識點:

1.MoveIt!插件機制

MoveIt!是ROS中一個重要的集成化開發平臺,由一系列功能包組成,提供運動規劃、操作控制、3D感知、運動學等功能模塊,是ROS社區中使用度排名前三的功能包,目前已經支持AUBO-E5機械臂。

MoveIt!中集成了眾多工具集軟件,集成了各種庫,包括:

運動規劃(Motion Planning):MoveIt!只需提供機器人URDF模型,就可以調用幾大運動規劃庫的規劃算法(如OMPL,SBPL,CHMOP),自動生成機器人運動軌跡。

軌跡插值(Trajectory Processing):由于大多數規劃器只能返回一系列路徑點,MoveIt!可以根據機器人的控制參數(速度、加速度限制等)重新處理路徑,生成一條帶有時間戳、位置、速度、加速度信息的完整軌跡。

操作(Manipulation):根據識別的物體生成一系列動作抓取物體(pick-and-place)目前MoveIt!本身這部分功能還比較弱,不涉及任何反饋、動力學、re-grasp等操作問題。

?

3D感知(Perception):可以利用傳感器采集的點云或深度圖像,生成用于碰撞檢測的OctoMap,OctoMap為八叉樹形式表示點云,可以大大降低存儲空間,同時,這些3D OctoMap也可以依據貝葉斯準則不斷實時更新。這樣,機器人就可以避開真實世界的障礙物了。

運動學(Kinematics):目前可以支持多種運動學求解器,如OpenRave的封閉解ikfast、Orocos的數值解KDL、考慮關節極限的數值解Trac_ik、用戶自己定義的基于service的求解器。

碰撞檢測(Collision Checking):碰撞檢測是運動規劃的一大難題,如果采用基于采樣的規劃算法,那么需要對每個采樣點做有效性判斷,這時候就需要進行碰撞檢測。所以,運動規劃需要提供一個高效的碰撞檢測算法。FCL(Flexible Collision Library),可以非常快速地實現各種幾何體(3D面片、OctoMap、基本幾何體)的碰撞檢測。?

控制(Control):屬于機器人控制接口,可以讓MoveIt!發布機器人需要的控制指令。

交互(Interaction):MoveIt!給開發者提供了三種交互方式,直觀的RViz圖形界面、快速編程的Python、豐富的高級功能的C++。

如右圖所示,MoveIt!中的眾多功能都使用插件機制集成,并提供了豐富的接口。這樣用戶可以方便的覆寫插件功能,而無需接觸框架的核心。?

2.MoveIt!運動學求解插件

運動學插件作為重要的功能模塊,目前使用的主要有以下3個。

(1)KDL

KDL(Kinematics and Dynamics Library)是MoveIt!中的默認運動學插件,其有自己的優缺點,優點在于可求解封閉情況下逆運動,缺點在于速度慢,同時可能找不到解。

(2)TRAC-IK

TRAC-IK和KDL類似,也是一種基于數值解的運動學插件,但是在算法層面上進行了很多改進,求解效率高了很多。可以直接使用以下命令安裝:

(3)IKFAST

IKFAST是一種基于解析算法的運動學插件,可以求解任意復雜運動鏈的運動學方程并保證每次求解的一致性,整體來說,IKFAST比較穩定快速,一般5us的速度可完成運算。

3.MoveIt!運動插件開發方法

MoveIt!并不提供算法源碼,只是將算法按照約定的方法進行封裝,算法是數學模型的代碼實現,和MoveIt!本身并沒有關系,如果需要集成功能算法到MoveIt!中,需要編寫接口文件,如下圖所示,滿足MoveIt!的插件規范即可,然后向move_group進行注冊,這樣使用時即可通過yaml或launch文件進行直接的調用。

?

?如圖所示。

planning_interface是由moveit_core_package的核心庫提供,提供一個標準的協議接口,方便用戶集成其他算法。

PlannerConfigurationSettings用于配置參數。

PlanningContext用于規劃算法的具體實現。

PlannerManager用于向MoveIt!注冊插件,并告知MoveIt!此插件的作用。

PlannerManager實現時核心調用接口是Register,目的是進行注冊。

PlanningContext實現時核心調用接口是solve,包含具體的運動規劃算法。

4.自定義運動規劃算法的實現

自定義一個LERPInterface類,主要內容是重構接口函數,完成自定義的運動規劃算法,在類中重點是實現兩個函數。

(1)solve函數,這是運動規劃算法的主要調用接口,通過輸入運動規劃場景、運動規劃的起始和終止位置,返回運動規劃結果。

(2)interpolate函數,這是運動規劃算法的具體實現函數,包含具體的算法。

自定義一個LERPPlanningContext類,這個類繼承自MoveIt!提供的planning_interface::PlanningContext,實現了兩個不同輸入條件下的solve函數,terminate終止運動函數、clear清除緩存函數,如下列代碼片段所示。??

自定義一個LERPPlannerManager 類,這個類繼承自MoveIt!提供的planning_interface::PlannerManager,其中,initialize實現了算法初始化、canServiceRequest實現該插件是否可以應答運動規劃的請求、getDescription實現了獲取運動規劃器的字符串描述、getPlanningAlgorithms實現了獲取運動規劃算法的名稱、getPlanningContext實現對避障狀態配置。

如下列代碼片段所示。?

五、任務實施

接下來,我們來看下替換默認運動學求解器算法插件為自定義插件,控制虛擬機器人運動,驗證算法的有效性的演示。

14.自定義運動學求解器算法插件

六、任務拓展

恢復默認配置。

完成更換自定義運動學求解器算法插件后,修改配置文件,將運動學插件更換為默認運動學求解器插件,分析相關配置文件的參數含義。

?七、課堂小結

下面我們進行課堂小結:

MoveIt!的功能大部分都是以插件的形式提供,并提供了開發接口,運動學、碰撞檢測、路徑規劃等功能都可以讓用戶將自己的算法移植到ROS中,完成對機器臂數學計算的驗證。

八、課后練習

最后給大家布置兩道課后習題。

1.在ROS中,分別更換運動學算法插件為KDL、TRAC-IK、IKFAST,完成相同路徑的軌跡規劃,對比AUBO-E5機械臂在不同運動學求解器下的路徑效果。

2.按照例程編寫一個運動學求解器算法插件,熟悉開發流程。

?

在接下來的ROS課程中,我們會講解Intel RealSense深度相機ROS驅動開發,歡迎持續關注。?

總結

以上是生活随笔為你收集整理的遨博协作机器人ROS开发 - 自定义运动学求解器算法插件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。