冰达机器人实现kcf目标跟踪算法

本文介绍了一个基于B站外链的嵌入式播放器项目,针对原项目存在的OpenCV版本问题进行了升级,并将RGBD相机改为普通彩色相机进行深度估计。文章详细描述了如何编译、安装、使用KCF追踪器以及进行机器人控制,包括速度计算和参数调整方法。
摘要由CSDN通过智能技术生成

External Player - 哔哩哔哩嵌入式外链播放器

项目说明

参考项目:https://github.com/TianyeAlex/tracker_kcf_ros

修改内容:

1、解决原作者使用OpenCV版本比较老,部分代码不能正常编译

2、原作者使用RGBD相机获取图像深度信息实现机器人目标追踪,我的项目使用普通话彩色相机通过目标框大小来估算深度

3、增加launch文件,使用remap方式修改话题名

安装

获取源码

cd ~/catkin_ws/src/
git clone https://gitee.com/bingda-robot/kcf_track.git

安装依赖软件

sudo apt install ros-noetic-usb-cam ros-noetic-image-transport

编译

cd ~/catkin_ws/ && catkin_make

使用

启动摄像头,默认使用video0,如果使用其他设备号,可以通过传入device参数

roslaunch kcf_track rgb_camera.launch

启动KCF追踪节点(会打开图像显示框,所以需要在有屏幕的终端例如PC中执行)

roslaunch kcf_track kcf_track.launch

启动后会弹出这样一个图像框

在图像框中使用鼠标框选需要追踪的目标

移动摄像头或者目标,追踪框会跟随目标移动

追踪的同时,节点会根据追踪框中心位置相对图像中心的位置关系计算机器人需要的角速度,根据追踪框当前大小和初始选定的大小关系计算机器人线速度,最终发布cmd_vel话题。

实体机器人上运行追踪

前提:

机器人上已经编译安装了kcf_track

机器人和PC之间已经配置好分布式通信

启动机器人上的摄像头,默认使用video0,如果使用其他设备号,可以通过传入device参数

roslaunch kcf_track rgb_camera.launch

启动机器人底盘节点,例如冰达机器人所使用的base_control

roslaunch base_control base_control.launch 

启动KCF追踪节点(会打开图像显示框,所以需要在有屏幕的终端例如PC中执行)

roslaunch kcf_track kcf_track.launch

参数调整

修改kcf_track/src/runtracker.cpp文件中imageCb函数中关于中心点、大小比例和速度的换算关系

distance = (float)(selectRect.width ) / (float)(result.width);
center_x = result.x + result.width/2;

std::cout <<  "Center x = " << center_x << "  Distance = " << distance  << std::endl;
std::cout <<  "Height = " << image_height << "  width = " << image_width  << std::endl;

//calculate linear speed
if(abs(distance - 1.0) > 0.1)
	linear_speed = (distance - 1.0) / 2.0;
else
	linear_speed = 0;
if(linear_speed > Max_linear_speed)
	linear_speed = Max_linear_speed;
if(linear_speed < -Max_linear_speed)
	linear_speed = -Max_linear_speed;


if (abs(float(image_width/2 - center_x))/(image_width/2) > 0.1)
	rotation_speed = float(image_width/2 - center_x)/(image_width/2);
else
	rotation_speed = 0;
if(rotation_speed > Max_rotation_speed)
	rotation_speed = Max_rotation_speed;
if(rotation_speed < -Max_rotation_speed)
	rotation_speed = -Max_rotation_speed;
}

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值