ROS之face recongination(cbo_peopel_detection)

一准备

Ros的cbo_people_detection网站http://wiki.ros.org/cob_people_detection

某网站来自Amir:http://edu.gaitech.hk/turtlebot/openKinect-turtlebot.html

作者github:https://github.com/ipa320/cob_people_perception/tree/indigo_dev  可以问答并寻找关闭的问题

二安装

安装驱动

注意最后一个才是我们的摄像机Kinect要用的!!!!

sudo apt-get install ros-indigo-openni-*ros-indigo-openni2-* \ros-indigo-freenect-*

安装cbo_people_detection包

cd && mkdir -p catkin_ws/src&& cd catkin_ws/src && catkin_init_workspace && cd ..

catkin_make && cd src

git clonehttps://github.com/ipa-rmb/cob_people_perception.git

git clonehttps://github.com/ipa-rmb/cob_perception_common.git

cd .. && source devel/setup.bash
rosdep install --from-path src/ -y -i
catkin_make -DCMAKE_BUILD_TYPE="Release"


rosdep install --from-path src/ -y –i这句出错没事

catkin_make -DCMAKE_BUILD_TYPE="Release"改成catkin_make似乎也ok。

三开始运行cbo_people_detection

检测Kinect摄像头

ROS之face recongination(cbo_peopel_detection)

如果只有

ROS之face recongination(cbo_peopel_detection)

而没有Camera说明电流也许不够(也许大概是电流吧),反正下面的智障导致我好几天没有进度。下面的估计坏了。

ROS之face recongination(cbo_peopel_detection)

运行roscore

ROS之face recongination(cbo_peopel_detection)

(可以用rqt来检测图像了,看图形了,rqt是ros自带的一个模拟器)(有时候犯抽,看不到,机器人导航照样可以,过几天又可以了,扯淡,玄学玄学)

运行Kinect驱动

ROS之face recongination(cbo_peopel_detection)

ROS之face recongination(cbo_peopel_detection)

警告什么的不要管

运行人脸识别主程序(包含服务器)

ROS之face recongination(cbo_peopel_detection)

会加载一大堆参数,以后想改可以改

ROS之face recongination(cbo_peopel_detection)

这是已加载的人脸模型。

ROS之face recongination(cbo_peopel_detection)

摄像机会延迟一会打开。

ROS之face recongination(cbo_peopel_detection)

四人脸识别训练

rosrun cob_people_detectionpeople_detection_client

参见官网

ROS之face recongination(cbo_peopel_detection)

l  1.添加人脸识别图片,没名就新建,重名就加入(自动或手动)

l  2.更新人脸数据库条目(人脸的集合的名字)

l  3.删除数据库

l  4.加载人脸模型,会清零现有的人脸模型,要把更新的和要用人脸集合的加上(不知去不区分大小写??)

l  5.打开传感器网关???

l  6.得到人脸识别,会强制打开传感器网管,并打开一个topic来传结果

执行的结果主程序那边会有反应,那边是服务器端,这边只是训练用的客户端。

五得到人脸识别的值

rostopic echo/detection_tracker/face_position_array

ROS之face recongination(cbo_peopel_detection)
ROS之face recongination(cbo_peopel_detection)

没有符合的脸的返回值

  1. ---
  2. header:
  3. seq: 9031
  4. stamp:
  5. secs: 1494850302
  6. nsecs: 287560288
  7. frame_id: camera_rgb_optical_frame
  8. detections: []
  9. ---

Face识别的返回值

  1. header:
  2. seq: 525
  3. stamp:
  4. secs: 1494753634
  5. nsecs: 666978723
  6. frame_id: camera_rgb_optical_frame
  7. detections:
  8. -
  9. header:
  10. seq: 525
  11. stamp:
  12. secs: 1494753634
  13. nsecs: 666978723
  14. frame_id: camera_rgb_optical_frame
  15. label: ssy
  16. id: 0
  17. detector: face
  18. score: 0.0
  19. mask:
  20. roi:
  21. x: 207
  22. y: 68
  23. width: 131
  24. height: 131
  25. mask:
  26. header:
  27. seq: 0
  28. stamp:
  29. secs: 0
  30. nsecs: 0
  31. frame_id: ''
  32. height: 0
  33. width: 0
  34. encoding: ''
  35. is_bigendian: 0
  36. step: 0
  37. data: []
  38. pose:
  39. header:
  40. seq: 468
  41. stamp:
  42. secs: 1494753621
  43. nsecs: 886631020
  44. frame_id: camera_rgb_optical_frame
  45. pose:
  46. position:
  47. x: -0.0529285743833
  48. y: -0.118671439588
  49. z: 0.585000038147
  50. orientation:
  51. x: 0.0
  52. y: 0.0
  53. z: 0.0
  54. w: 1.0
  55. bounding_box_lwh:
  56. x: 0.0
  57. y: 0.0
  58. z: 0.0
  59. ---

Head识别的返回值



  1. ---
  2. header:
  3. seq: 266
  4. stamp:
  5. secs: 1494753576
  6. nsecs: 404708677
  7. frame_id: camera_rgb_optical_frame
  8. detections:
  9. -
  10. header:
  11. seq: 266
  12. stamp:
  13. secs: 1494753576
  14. nsecs: 404708677
  15. frame_id: camera_rgb_optical_frame
  16. label: ssy
  17. id: 0
  18. detector: head
  19. score: 0.0
  20. mask:
  21. roi:
  22. x: 145
  23. y: 46
  24. width: 291
  25. height: 291
  26. mask:
  27. header:
  28. seq: 0
  29. stamp:
  30. secs: 0
  31. nsecs: 0
  32. frame_id: ''
  33. height: 0
  34. width: 0
  35. encoding: ''
  36. is_bigendian: 0
  37. step: 0
  38. data: []
  39. pose:
  40. header:
  41. seq: 7
  42. stamp:
  43. secs: 1494753518
  44. nsecs: 708872874
  45. frame_id: camera_rgb_optical_frame
  46. pose:
  47. position:
  48. x: -0.0262971445918
  49. y: -0.0432342886925
  50. z: 0.468000024557
  51. orientation:
  52. x: 0.0
  53. y: 0.0
  54. z: 0.0
  55. w: 1.0
  56. bounding_box_lwh:
  57. x: 0.0
  58. y: 0.0
  59. z: 0.0
  60. ---

六客户端出现找不到服务器的问题

ROS之face recongination(cbo_peopel_detection)找不到,没开主程序服务器就开了客户端。
ROS之face recongination(cbo_peopel_detection)人脸识别的模型库中没有或只有一个模型

ROS之face recongination(cbo_peopel_detection)

如果你有一个训练的人脸模型在ros/launch/face_recognizer_params.yaml文件中改为0或1,但如果你没有,只好复制一个了。为何会出现这样的尴尬情况我也不知道会这样。。。也许第一次启动时错过了初始化的机会。。。

打开隐藏文件.ros

ROS之face recongination(cbo_peopel_detection)

Training文件就是训练了

ROS之face recongination(cbo_peopel_detection)

七更改识别精度

主程序加载的识别文件配置

ROS之face recongination(cbo_peopel_detection)

官网的ros/launch/detection_tracker_params.yaml文件介绍

ROS之face recongination(cbo_peopel_detection)

这两项决定人脸识别的精度

Rate越小精度越高,score越大精度越高

八问题和ros交互

arduinoROS包无法导出人脸消息

可以检测出人脸消息,但无法取到里面的值

估计和我的依赖有问题。用它做个人脸识别还可以。

不过高精度会对人脸的位置要求很高。它总是试图识别出库中的一个人,而没给出相似度之类的。

会opencv后改改是极好的。