基於IBVS,利用UR5實現簡單視覺抓取

2021-09-11 23:51:54 字數 1632 閱讀 4042

在讀完了rvc之後,我對於ibvs方法非常感興趣。實驗室內有一台ur5,所以我希望可以快速實踐一下看看具體應用中匯出什麼么蛾子。

對於ur5的控制,如果直接採用matlab方法必然是最快捷的(因為可以借助rvc的工具箱),但是rvc的工具箱是puma560這個經典型的機械人為例子的。而且是以**為主的。而我目前開發機械人運動規劃演算法一般是基於moveit,所以希望嘗試將rvc所述的ibvs演算法移植到ros上來(我搜了一下,目前ros中似乎還沒有類似的軟體包)。充分利用moveit中寫好的防碰撞功能。

ibvs演算法在《rvc》的457頁,截至到這頁的演算法只考慮了成像輸入和相機位姿的世界座標變換的輸出。這就是我需要實現演算法的第一部分,本質上這部分是完成機械人感知世界。該演算法的流程為:

由於ibvs求取互動矩陣需要:

穩定可靠地提取影象特徵點的畫素座標(理想情況下,整個伺服過程中特徵點對應的世界座標系位置不應當發生變化。當然這也就要求了在伺服過程中,特徵不可以被遮擋,更不應當跑到相機成像平面外面去!

特徵點的數量要求:

這部分在書中的闡述較為簡略。我其實一直有乙個問題,就是由於上面所說的遮擋問題,有一些特徵點可能會被遮擋,不過也不能排除可以部分之前被遮擋的特徵點會顯露出來。能否利用這個特點,構造一種各項異性的冗餘特徵群,即:在保證可以正確同期望影象匹配的前提下,利用冗餘點實現更在有遮擋存在可能性的情況下,依然保證提取得到的特徵點數量滿**互矩陣約束(乙個要求秩為6的jaccobian矩陣)。這可以在一定程度上提高程式的魯棒性。

深度計算:

這裡可以直接使用rgbd相機獲取畫素深度,不過書中也提到了可以基於匹配思想和乙個巧妙的深度濾波器(458頁)實現一種基於單目相機的深度計算方法。這裡可以直接使用rgbd相機獲取畫素深度,不過書中也提到了可以基於匹配思想和乙個巧妙的深度濾波器(458頁)實現一種基於單目相機的深度計算方法。(這裡我先偷個懶,暫時用真實資料替代(**驗證過程)、後續在最開始聯調機械臂的時候,我會先利用realsense驗證演算法正確之後,改用單目相機實現一下深度濾波器

邊緣控制器

這其實是乙個應用級別的話題,目的是將特徵點控制在影象內部,說白了就是在特徵點接近相機邊緣之前,把相機往後拉。(當然,不完全是後拉)

作為乙個「大專案」的開胃菜,第一步一般一保證自己演算法構建的世界是安全穩定的。這很重要,否則你可能某天會發現自己程式一直崩潰的原因是自己把重力方向設成了水平

對於本專案來說,要先保證,模擬相機的投影和反投影過程必須不能出么蛾子!這直接決定了模擬相機所看到的和真實相機影象是否能保證基本一致。所以首先要維護的類為:centralcamera類,我認為相機的位姿(也就是相機的外參)應該是交給它自己來管理的。這樣每次更新位姿對於物件來說只需要維護一次私有變數,不需要擔心變數的安全性。

因此centralcamera類的成員變數為:

centralcamera類中兩個比較重要的方法分別為:

ros的視覺化非常好用。因此,期望配合rviz實現乙個centralcamera的驗證。

UR5的安裝與配置

專案 packages universal robot ur3 moveit config,ur description,ur kinematics,universal robot,ur5 moveit config,ur driver,ur modern driver,ur10 moveit co...

UR 5 怎樣更有力氣

解題思路 考慮沒有限制的情況,一定是把操作離線下來,按照邊權從小到達做。可以發現,如果沒有限制,完全圖是多餘的,直接拿樹邊進行合併就可以了。我們要做這麼一件事情,把每個點屬於的圖上聯通塊看做顏色,每次合併鏈上相鄰兩塊顏色不一樣的,那麼我們再額外使用乙個並查集,把樹上相鄰的顏色相同的點合併在乙個集合裡...

UR5 逆解問題的解決

task 1.電腦控制real robot ur5 2.優化逆解 更好的實現ur5的運動規劃 連線上ur5 roslaunch ur bringup ur5 bringup.launch robot ip ip of the robot 執行test檔案 rosrun ur driver test ...