ROS kinetic + Realsens D435i + ORK + LINEMOD 物体识别
1. ORK
网址:https://wg-perception.github.io/object_recognition_core/
ORK (Object Recognition Kitchen) 是 ROS 集成的物体识别库,当前 Kinetic 版本的 ROS 只集成了部分功能包的二进制安装文件,所以需通过源码编译安装。
- 安装依赖库
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
- 创建工作空间,下载功能包源码,编译
mkdir ork_ws && cd ork_ws
wstool init 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
- 设置环境变量
echo "export ~/ork_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
2. CouchDB 建立模型库
ORK 中的 LINEMOD 算法基于模板匹配,需要建立已知物体的数据模型,根据采集的信息逐一匹配,找到与数据库中匹配的物体。首先,用 CouchDB 工具创建数据库:
- 安装
sudo apt-get install couchdb
- 测试是否安装成功,如图所示,说明安装成功
curl -X GET http://localhost:5984

- 在数据库中创建一条可乐罐模型的数据
rosrun object_recognition_core object_add.py -n "coke " -d "A universal can of coke" --commit
- 浏览器中查看 http://localhost:5984/_utils/database.html?object_recognition/_design/objects/_view/by_object_name,复制 id(一串类似乱码的数字),下面要用
- 加载可乐罐的 3D 模型,在 ork_tutorials 中包含了一个可乐罐模型 coke.stl,直接下载使用。下载 ork_tutorials
git clone https://github.com/wg-perception/ork_tutorials
- 将 coke.stl 模型加载到数据中
rosrun object_recognition_core mesh_add.py bb01ae7a23033bdef1a1c3b76000092c ~/ork_ws/src/ork_tutorials/data/coke.stl --commit
- 再次在浏览器中打开上面的网址,如下图所示

- 安装 couchapp 工具,在浏览器中查看具体的模型
sudo pip install git+https://github.com/couchapp/couchapp.git
rosrun object_recognition_core push.sh
- 在浏览器中查看



3. 模型训练
rosrun object_recognition_core training -c `rospack find object_recognition_linemod`/conf/training.ork
训练完如下图所示

4. 物体识别
- 启动 realsense d435i 相机
roslaunch realsense2_camera rs_camera.launch filters:=pointcloud

参考:https://github.com/IntelRealSense/realsense-ros
- 运行下述命令,进行物体检测
rosrun object_recognition_core detection -c `rospack find object_recognition_linemod`/conf/detection.ros.ork
我们发现,detection.ros.ork 订阅了下面几个话题:

realsense 发布的对应的话题为:
/camera/depth/camera_info
/camera/depth/image_rect_raw
/camera/color/camera_info
/camera/color/image_raw
因此需要用 topic_tools relay 做话题映射,如下所示:
rosrun topic_tools relay /camera/depth/camera_info /camera/depth_registered/camera_info
rosrun topic_tools relay /camera/depth/image_rect_raw /camera/depth_registered/image_raw
rosrun topic_tools relay /camera/color/camera_info /camera/rgb/icamera_info
rosrun topic_tools relay /camera/color/image_raw /camera/rgb/image_rect_color
但每次都做映射太麻烦,干脆修改一下 detection.ros.ork 订阅的话题名:
gedit `rospack find object_recognition_linemod`/conf/detection.ros.ork
修改如下:

- 做完话题映射或上述设置后,再次运行 detection 命令:
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 话题的实时内容
rostopic echo /recognized_object_array

- 查看节点图
rqt_graph

参考:
[1]. 官网:https://wg-perception.github.io/object_recognition_core/install.html#install
[2]. 《ROS机器人开发实践》胡春旭
[3]. https://blog.csdn.net/weixin_40799950/article/details/81911877
[4]. https://blog.techbridge.cc/2016/05/14/ros-object-recognition-kitchen/
ROS kinetic + Realsens D435i + ORK + LINEMOD 物体识别的更多相关文章
- Ubuntu 16.04 使用docker资料汇总与应用docker安装caffe并使用Classifier(ros kinetic+usb_cam+caffe)
Docker是开源的应用容器引擎.若想简单了解一下,可以参考百度百科词条Docker.好像只支持64位系统. Docker官网:https://www.docker.com/ Docker - 从入门 ...
- 谷歌开源的TensorFlow Object Detection API视频物体识别系统实现教程
视频中的物体识别 摘要 物体识别(Object Recognition)在计算机视觉领域里指的是在一张图像或一组视频序列中找到给定的物体.本文主要是利用谷歌开源TensorFlow Object De ...
- Ubuntu 16.04 + ROS Kinetic 机器人操作系统学习镜像分享与使用安装说明
Ubuntu 16.04 + ROS Kinetic 镜像分享与使用安装说明 内容概要:1 网盘文件介绍 2 镜像制作 3 系统使用与安装 ---- 祝ROS爱好者和开发者新年快乐:-) ---- ...
- ROS_Kinetic_02 ROS Kinetic 迁移指南及中文wiki指南(Migration guide)
ROS_Kinetic_02 ROS Kinetic 迁移指南(Migration guide) 对于ROS Kinetic Kame有些功能包已经更新改变,提供关于这些包的迁移注意或教程.主要针对于 ...
- ROS_Kinetic_01 在ubuntu 16.04安装ROS Kinetic 2017.01更新
ROS_Kinetic系列学习(一),在ubuntu 16.04安装ROS Kinetic. Celebrating 9 Years of ROS! ubuntu16.04已经发布半年多了,ROS的K ...
- SLAM+语音机器人DIY系列:(二)ROS入门——3.在ubuntu16.04中安装ROS kinetic
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
- ros kinetic安装rbx1
1.首先安装一些依赖包 sudo apt-get install ros-kinetic-turtlebot-bringup \ ros-kinetic-turtlebot-create ros-ki ...
- Tensorflow object detection API 搭建物体识别模型(四)
四.模型测试 1)下载文件 在已经阅读并且实践过前3篇文章的情况下,读者会有一些文件夹.因为每个读者的实际操作不同,则文件夹中的内容不同.为了保持本篇文章的独立性,制作了可以独立运行的文件夹目标检测. ...
- Tensorflow object detection API 搭建物体识别模型(三)
三.模型训练 1)错误一: 在桌面的目标检测文件夹中打开cmd,即在路径中输入cmd后按Enter键运行.在cmd中运行命令: python /your_path/models-master/rese ...
随机推荐
- java根据value获取Map对象的key
Map<String, String> map= new HashMap<String,String>(); for(Map.Entry<String, String&g ...
- 「漏洞预警」Apache Flink 任意 Jar 包上传导致远程代码执行漏洞复现
漏洞描述 Apache Flink是一个用于分布式流和批处理数据的开放源码平台.Flink的核心是一个流数据流引擎,它为数据流上的分布式计算提供数据分发.通信和容错功能.Flink在流引擎之上构建批处 ...
- MySQL语句使用。
目录 MySQL的DDL.DML.DQL语句和单表增.删.改.查 实验准备: 实验开始: DDL语句 DML语句 DQL语句 单表操作的分组统计 MySQL的DDL.DML.DQL语句和单表增.删.改 ...
- right join 和left join 的区别
SQL 数据库 right join 和left join 的区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中 ...
- docker alphine 设置系统日期
设置时区为上海 RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && ...
- 华为eNSP路由交换实验-生成树之RSTP
RSTP基础配置 实验拓扑图 实验步骤 1.基本配置 根据实验编址表进行相应的基本IP配置. 2.配置RSTP基本功能. (1)把生成树模式由默认的MSTP(华为交换机默认开启)改为RSTP. [FW ...
- android 启动流程 相关 杂项记录
Android原生流程 Init进程 主要流程及分支梳理 ueventd_main()watchdogd_main()主要流程a) 公共部分 增加PATH 环境变量初始化内核日志,打开/dev/kms ...
- vue element-ui父列表和子列表同时出现时的bug
在项目中遇到这样的问题 当第一个父列表下的子列表选择了1,切换到第二个父列表的时候,也会默认选择1 我最开始是计划通过修改子列表的default-active为-1,结果不行 后来发现出现这个问题的原 ...
- 安卓投屏助手(ARDC)最新版
安卓投屏助手(B1493) 1.兼容Android 10: 2.增加灭屏投屏功能: 3.增加显示鼠标位置功能; 4.增加了虚拟NaviBar功能: 5.捐赠界面增加QQ支付,移除Paypal,感谢大家 ...
- 女朋友会 Python 是多么可怕的一件事!
阅读文本大概需要 8 分钟. 1 目 标 场 景 女朋友会 Python 是多么可怕的一件事! 一位朋友告诉忽略了一件事,假设女朋友会 Python 的话,那岂不是要翻车?如果是这样的话,女朋友发 ...