ros +realsenseD435+大象Pro600手眼標定

踩坑
手眼標定的算法網上是比較多的,但是很多都不好用。github上高讚的easy_handeye,試了一下,但是mycobot600沒有提供moveit的配置,而我ROS基礎不是很好,不太會修改示例代碼。折騰了一段時間最終看到這個魚香ROS,最終得到了不錯的結果

1.配置
配置過程就不用說了,參考魚香ROS
用深度相機的話需要安裝深度相機的庫github
需要控制機械臂還需要安裝ROS庫,參考博客
識別二維碼需要安裝aruco_ros
特別說明一些,魚香ROS配置的時候,安裝的opencv應該是pip3去安裝的。配置過程可能有許多問題,百度解決即可

2.在線標定
用在線標定的方式比較簡單,不用自己去配置姿態信息。

2.1啓動相機
該launch文件已經把啓動realsense的代碼寫入了,直接運行就好。

roslaunch handeye-calib aruco_start_realsense_sdk.launch
自己可以修改相機的參數,比如分辨率,幀率

<include file="$(find realsense2_camera)/launch/rs_camera.launch">
<arg name="color_width" value="640" />
<arg name="color_height" value="480" />
<arg name="enable_depth" value="false" />
<arg name="color_fps" value="6" />
</include>
其中分辨率不是隨便改的,可以啓動realsense-viewer查看相機支持的分辨率有哪些

realsense-viewer
2.2啓動機械臂及通信
# 啓動rviz
roslaunch mycobot_600 mycobot_600_slider.launch
# 啓動通訊
rosrun mycobot_600 slider_600.py
Rviz中的座標,可以看出,基底座標是base,末端座標是link6

 

2.3啓動手眼標定程序
修改src/handeye-calib/launch/online/online_hand_on_eye_calib.launch中的參數後,運行:

 

roslaunch handeye-calib online_hand_on_eye_calib.launch
3.標定精度
相機與link5之間的座標變化纔是不變的
眼在手上的時候,板子與基座之間的變化是固定的,因此可以看他們的標準差來判斷是否精確。std預計需要0.005以下才行
aruco碼隔的近效果好,因此儘量使相機與二維碼近一點,可以使用較小的二維碼
多個角度拍攝
總結:多角度,小距離。(上下左右,左上,右上,左下,右下。)每個位置拍攝兩組或者三組(末端儘量不動,其他關節進行組合)。效果還行,如下:

 

 

其他:
打開rviz可以清楚的看到有幾個座標及名稱還有tf樹之間座標的關係(大象機器人是base..link6)
以下代碼可以查看座標之間的變化矩陣:rosrun tf tf_echo base link5
XYZ---紅、綠、藍色(rviz中)
numpy.linalg.LinAlgError: Eigenvalues did not converge(這個報錯是因爲自己拍攝的拍攝的照片以及數據存在很大問題)
眼在手上可以看base->marker的標準差(std),越穩定越好

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章