整个过程从安装ros到最后实现,一共花了一个星期的时间,在博客记录一下。把我在做的过程中出现的问题记一下,如果碰到类似问题的朋友可以参考一下。
进入正文:
参考博文:
https://blog.csdn.net/wajsy/article/details/81428108 这篇如果使用kinect2 还需要改一下源代码
https://blog.csdn.net/u012057432/article/details/84068928 这篇已经很详细了 还有一些碰到的问题都有解决办法
https://blog.csdn.net/u012424737/article/details/80609451这篇关于kinect2的驱动安装和ros中kinect2的配置
http://wg-perception.github.io/object_recognition_core/install.html#install ORK的安装官网
除了以上的这些参考博文还有一本关于ROS的书 胡春旭写的《ROS机器人开发实战》 这里面也写的很好。ros的安装可以参考这书里面写的。
这里简单介绍一下 我环境的配置过程
1 将ros kinect安装好
2 将kinect2的驱动libfreenect2 和iai_kinect2安装好
3 将ork功能包安装好 这一步及其重要!!!一定要安装好 否则后面出现各种各样奇怪的问题
4 因为kinect2 的分辨率问题 需要改linemod和training.ork中的源程序
5 运行节点 detecting
显示一下如果前面的步骤没有问题的话应该会出现的画面
2 kinect2驱动成功图片 可以运行 libfreenect2/build/bin中的Protonect 可执行程序
iai_kinect2安装好后可以看到点云图
现在是重头戏 也就是ORK功能包的安装和配置 当时就是因为这个没有配置好花了好几天的时间搞这个东西。
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
下载源码编译:
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 "source ~/ork_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
上面是安装ork用到代码
如果安装编译好后都没有问题 不代表你就是成功了 先贴上一个我当时遇到的一个问题
这个问题是出现在我将可乐罐的数据加载到couchDB数据集后 要进行数据训练的时候出现的,就因为这个问题困扰了几天,一直在想是哪里出了问题,后面我就打开那个python源码看了一下,发现是少一个配置文件。我在网上找了很久好像都没有人出现过这种问题,我猜测是我配置环境的问题,之后我又从新下载编译安装了一下ORK功能包,竟然问题解决了,所以这告诉我们,当出现一些奇怪的问题的时候,从新再来几遍或许是最好的解决办法。
下面这张图片是可乐罐数据,在数据库中训练的时候
另外,将可乐罐的数据加载到couchDB中并且训练的代码是
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 看看自己的資料庫裡是否已經新增了這個物體:
git clone https://github.com/wg-perception/ork_tutorials
cd .. && catkin_make
rosrun object_recognition_core mesh_add.py <YOUR_OBJECT_ID> <path to ork_tutorials/data/coke.stl> --commit
[ 9085f3469dffde7c1ae78413d900079d
rosrun object_recognition_core mesh_add.py 9085f3469dffde7c1ae78413d900079d /home/zx/ork_ws/src/ork_tutorials/data/coke.stl --commit
]
查看模型:
sudo pip install git+https://github.com/couchapp/couchapp.git
rosrun object_recognition_core push.sh
{安装pip: sudo apt install python-pip}
训练模型:
rosrun object_recognition_core training -c `rospack find object_recognition_linemod`/conf/training.ork
完成这些你已经成功70%了,之后就是因为kinect2的问题需要改源程序
首先是问题,当你在训练完数据要运行以下这些节点去检测的时候
roslaunch kinect2_bridge kinect2_bridge.launch publish_tf:=true
rosrun topic_tools relay /kinect2/qhd/image_depth_rect /camera/depth_registered/image_raw
rosrun topic_tools relay /kinect2/qhd/image_color_rect /camera/rgb/image_rect_color
rosrun topic_tools relay /kinect2/qhd/camera_info /camera/rgb/camera_info
rosrun topic_tools relay /kinect2/qhd/camera_info /camera/depth_registered/camera_info
rosrun topic_tools relay /kinect2/qhd/points /camera/depth_registered/points
rosrun tf static_transform_publisher 0 0 0 0 0 0 kinect2_ir_opticalrame camera_depth_optical_frame 40
rosrun object_recognition_core detection -c `rospack find object_recognition_linemod`/conf/detection.ros.ork
不出意外的话会出现上面图片中的问题,显示opencv Error 需要修改两个地方
1 先找到linemod源程序包中linemod_detect.cpp这个源程序包 找到橙色部分,将橙色部分代码注释掉,后面再加上几行代码,参考 https://github.com/wg-perception/linemod/issues/28
2 找到ork/src/ork_linemod/conf找到这个配置文件下的training.ork文件 把橙色的代码加上
最后,要重新编译运行一下!!
这样,这个linemod算法算是可以正常检测了。
最后再把那些节点运行一下
roslaunch kinect2_bridge kinect2_bridge.launch publish_tf:=true
rosrun topic_tools relay /kinect2/qhd/image_depth_rect /camera/depth_registered/image_raw
rosrun topic_tools relay /kinect2/qhd/image_color_rect /camera/rgb/image_rect_color
rosrun topic_tools relay /kinect2/qhd/camera_info /camera/rgb/camera_info
rosrun topic_tools relay /kinect2/qhd/camera_info /camera/depth_registered/camera_info
rosrun topic_tools relay /kinect2/qhd/points /camera/depth_registered/points
rosrun tf static_transform_publisher 0 0 0 0 0 0 kinect2_ir_opticalrame camera_depth_optical_frame 40
rosrun object_recognition_core detection -c `rospack find object_recognition_linemod`/conf/detection.ros.ork
打开一个rviz看一下
rosrun rviz rviz
实际的测量有一些偏差,后面如果有问题可以再研究一下