ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
使用xiaoqiang_track进行人体跟随和追踪
-
xiaoqiang_track
xiaoqiang_track是一个利用摄像头捕捉的图像进行人体追踪的程序。它有比较好的稳定性,能够可靠的追踪目标。同时也具有比较好的扩展性。可以方便的对关键的追踪算法进行调整。在运动的控制上,使用了PID控制,可以通过调整参数适应不同的设备。
原理简介
通过人体识别算法获取到人体的上半身位置。获取成功后就把对应的位置信息传递给追踪程序。追踪程序进行目标追踪。运动控制程序根据当前的目标的位置计算运动控制量。
由于在追踪过程中可能会丢失,丢失的情况下就要再次使用人体识别程序的结果进行追踪程序的初始化。安装
以下安装方法只在ubuntu 16.04 kinetic版本测试过,如果需要在其他版本使用可能需要调整部分指令。
安装相关依赖程序
sudo apt-get install libjsoncpp-dev libcurl3 libcurl4-openssl-dev openssl
安装body_pose人体识别程序
详细安装方法请参照 body_pose使用说明
可选程序
本程序有语音提示功能,如果想要这个功能可以安装xiaoqiang_tts软件包
安装源代码
cd 到你的工作空间/src git clone https://github.com/bluewhalerobot/xiaoqiang_track cd 到你的工作空间 catkin_make
运行要求
由于使用的是摄像头追踪方法,所以首先要有一个摄像头设备。同时此设备能够通过ROS的软件包把图像信息通过topic形式发送出来。
对于小强用户,下面的运行指令直接执行就可以。对于其他用户请修改launch文件中的usb_cam节点。替换成自己的摄像头节点。由于要进行人体识别,摄像头的视野范围也很重要。要能保证在合适的追踪距离下摄像头能够比较完整的看到追踪目标。
对于小强用户,把摄像头固定在二层上,同时有一定的仰角就可以了。
注意图像的分辨率是640x480运行
小强用户请先关闭startup服务
sudo service startup stop
启动roscore
roscore
启动底盘驱动程序
# 这里是小强的驱动程序,如果不是小强,需要换成自己的 roslaunch xqserial_server xqserial.launch
开始运行追踪程序
# 使用body_pose人体识别程序进行人体识别 roslaunch xiaoqiang_track track_body.launch # 或者使用百度的人体识别服务 roslaunch xiaoqiang_track track_baidu.launch
此时站在摄像头前面,等待初始化完成就可以开始追踪了。注意在转弯的时候适当放慢速度。小车跟不上的话可能会导致追踪丢失。
如果想要实时的看到处理结果可以订阅/xiaoqiang_track/processed_image图像话题。其中的方框即为实时的追踪结果。
参数说明
详细参数请参照launch文件中的注释。
-
编译时出现这个问题
-
@robot0612 你的编译过程是什么样的。这个头文件是一个msg,正常catkin会自动生成。
-
This post is deleted! -
@robot0612 这个是由于body pose软件包没有安装好
-
This post is deleted! -
This post is deleted! -
@robot0612 检查你的devel/include文件夹内是否有body_pose/Body_Pose.h
-
This post is deleted! -
@weijiz 有时编译又提示:
查看一下,发现是空的,
步骤就是安装教程步骤 -
This post is deleted! -
我的问题解决了:方法:1、先采用指定的方法编译body那个功能 2、下载源代码 3、编译这个源码、但是还是会出错 3、指定这个包编译,第一次还是出错,我运行了第三次才成功,不知道为什么。但是最终是解决了:
fatal error: pathwithflag_msgs/PathWithFlag.h: 没有那个文件或目录
#include <pathwithflag_msgs/PathWithFlag.h>原因:当自定义msg文件之后,然后又在其他文件中使用了该自定义msg类型。因为catkin_make在编译的时候并不会指定pkg的编译顺序,
所以在使用该msg的文件编译的时候新建的msg类型还没有编译,导致找不到头文件。
解决:先编译包含新建msg的pkg,再编译其他pkg:
$ catkin_make -DCATKIN_WHITELIST_PACKAGES= “包名”
$ catkin_make -DCATKIN_WHITELIST_PACKAGES= “” //重新编译所有pkg -
from xiaoqiang_track.msg import TrackTarget
ImportError: No module named xiaoqiang_track.msg -
@huapiaoxiang21 首先要确保成功编译了消息文件。看看在
devel/lib/python2.7/dist-packages/xiaoqiang_track/msg
文件夹是否有对应文件。然后要确保环境变量是对的。有没有source工作空间的setup.bash。 -
@weijiz 谢谢
-
@huapiaoxiang21 您好,我们想用自己的kinect二代摄像头,请问修改哪个launch文件,如何修改launch文件中的usb_cam节点,替换成自己的摄像头节点,谢谢您
-
@weijiz 您好,我们想用自己的kinect二代摄像头,请问修改哪个launch文件,如何修改launch文件中的usb_cam节点,替换成自己的摄像头节点,谢谢您
-
@zhkwin15951 把这里的图像话题换成Kinect2的rgb图像话题就可以了。
-
@weijiz 您好,请问如何订阅图像话题,是输入哪个命令
-
@zhkwin15951 可以用rviz查看,看看这篇文章