aubo i5 + realsense D435i识别抓取实践三

aubo i5 + realsense D435i识别抓取实践三
前言
一、安装ORK
二、安装couchDB数据库并添加模型
1.安装数据库
2.验证数据库安装成功
3.在数据库中创建一条可乐罐模型的数据
4.训练模型
三、物体识别
1.启动realsense相机
2.修改识别配置文件
3.运行识别程序
前言
前面完成了相机与机械臂的手眼标定,接下来我们将使用realsense D435i进行物体识别来获取相机坐标系下物体的位置信息。
这里我们用到的核心工具是ORK (Object Recognition Kitchen) ,它是ROS 集成的物体识别库,当前 Kinetic 版本的 ROS 只集成了部分功能包的二进制安装文件,所以需通过源码编译安装。具体可参照官方文档:https://wg-perception.github.io/object_recognition_core/

一、安装ORK

安装依赖

$ sudo apt-get install meshlab
$ sudo apt-get install libosmesa6-dev
$ sudo apt-get install python-pyside.qtcore
$ sudo apt-get install python-pyside.qtgui

下载编译ork

$ cd aubo_ws/
$ wstool merge -t src https://raw.github.com/wg-perception/object_recognition_core/master/doc/source/ork.rosinstall.kinetic.plus
$ cd src && wstool update -j8
$ cd .. && rosdep install --from-paths src -i -y
$ catkin_make -j2 -DCAMKE_BUILD_TYPE=RELEASE

二、安装couchDB数据库并添加模型

ORK 中的 LINEMOD 算法基于模板匹配,需要建立已知物体的数据模型,根据采集的信息逐一匹配,找到与数据库中匹配的物体。

1.安装数据库

$ sudo apt-get install couchdb

2.验证数据库安装成功

$ curl -X GET http://localhost:5984

3.在数据库中创建一条可乐罐模型的数据

$ cd ~/aubo_ws
$ source devel/setup.bash 
$ rosrun object_recognition_core object_add.py -n "coke1" -d "A universal can of coke" --commit


运行指令之后返回的一串id号,后面添加模型时需要用到。可以在浏览器中查看该数据库:http://localhost:5984/_utils/database.html?object_recognition/_design/objects/_view/by_object_name
可乐罐的模型包含在ork_tutorials中,直接下载即可

$ git clone https://github.com/wg-perception/ork_tutorials.git ~/aubo_ws/src

然后将可乐罐的stl文件加载到数据库中

$ rosrun object_recognition_core mesh_add.py 04f438b53d8dbb4dc9392c5c870007a6  ~/aubo_ws/src/ork_tutorials/data/coke.stl --commit

4.训练模型

$ rosrun object_recognition_core training -c `rospack find object_recognition_linemod`/conf/training.ork

运行结果如下,数据库里面有两个模型,其中一个是之前添加的。

三、物体识别

1.启动realsense相机

$ roslaunch realsense2_camera rs_camera.launch filters:=pointcloud
  • 查看topic
      $ rostopic list
    


这里用到的topic包括/camera/color/camera_info、/camera/color/image_raw、/camera/depth/camera_info、/camera/depth/image_rect_raw四个话题。

2.修改识别配置文件

$ gedit `rospack find object_recognition_linemod`/conf/detection.ros.ork


这里修改了对应的话题名称以及对应的frame_id。

3.运行识别程序

$ rosrun object_recognition_core detection -c  `rospack find object_recognition_linemod`/conf/detection.ros.ork

打开rviz观察
添加 Pointcloud2,选择话题 /camera/depth/color/points
添加 OrkObject,选择话题 /recognized_object_array (若能够成功识别,则会发布此话题)

订阅/recognized_object_array

至此,相机识别就基本完成了,接下来就可以通过获取到的物体位姿进行抓取。