KCF_ROS + TLD_ROS 原理以及源码分析

本文详细介绍了KCF_ROS和TLD_ROS在目标跟踪中的应用,分析了其原理和源码,包括KCF的边界效应和改进版SRDCF。文章提供了相关资源链接,如CSDN博客、源码解析和论文,并分享了作者在安装、调试和使用过程中的经验,包括解决cmake错误、话题映射修改、启动顺序等。此外,作者还探讨了将KCF与TLD结合的可能性,以及后续计划研究的DSScpp和其他相关算法。
摘要由CSDN通过智能技术生成

扩展链接:百度搜素vot2016,会有相关的资料。
KCF缺点是有边界效应
有一个改进的版本是:SRDCF
大牛的 CSDN博客。说明:http://blog.csdn.net/app_12062011/article/details/52230009
原来大神早就写了源码解析:http://blog.csdn.net/app_12062011/article/details/52277159
这个地方有大神的论文的源码,所有的关于vot2016的源码
目标跟踪之GOTURN:Learning to Track at 100 FPS with Deep Regression Networks
http://blog.csdn.net/linolzhang/article/details/72354427

目标跟踪之相关滤波:CF及后续改进篇
http://blog.csdn.net/linolzhang/article/details/72759918

目标跟踪之ECO:Efficient Convolution Operators for Tracking
http://blog.csdn.net/linolzhang/article/details/72824753

我参考这个博客切换opencv的
http://blog.csdn.net/haizimin/article/details/51927386

这里写图片描述
代码结构:

turtlebot_cf_tracking
    -src
        -main
            -image_acquisition.cpp
            -image_acquistion.hpp
            -main_kcf.cpp
        -cf_libs
            -common
                cf_track.hpp
                cv_ext.hpp
                feature_channels.hpp
                mat_const.hpp
                math_helper.hpp
                math_helper.hpp
                scale_estimator.hpp
                tracker_debug.hpp
            -kcf
                kcf_tracker.hpp
                kcf_debug.hpp
            -3rdparty
                cv_ext
                piotr
                tclap
    follower
        follower.cpp

在follower.cpp当中,主要分析

最重要的就是这里。最后一个transform_callback是一个回调函数。通过前面产生的BoundingBox

ros::Subscriber tld_msg_sub = m.subscribe("BoundingBox", 1000, transform_callback);

有价值的部分就是这里

void transform_callback(const turtlebot_cf_tracking::BoundingBox& msg)
{
ROS_INFO("transform_callback start! ");
ROS_INFO("bool enable_obs_avoid_ in function transform_callback(): %d", enable_obs_avoid_);
ros::Rate loop_rate(10);//loop_rate(10)可以控制while(ros:ok()的循环频率
if (!enable_obs_avoid_)
{
    ROS_INFO("tracking control program start!");
    int x = msg.x;
    int y = msg.y;
    int width = msg.width;
    int height = msg.height;
    ROS_INFO("x,y,width,height:%d %d %d %d",x,y,width,height);
  //  ROS_INFO("turtlebot tracking control message count: %d",count);

    BB_info.centerX = x+width/2;
    BB_info.centerY = y-height/2;//由于turtleBot不能在三维平面移动,centerY在这里实际上没有起作用
    BB_info.area = width * height;   
  //  ROS_INFO("transformat successs!") ;
    /*发布turtleBot控制消息*/
    geometry_msgs::Twist twist;
    twist.linear.x = msg.controlSpeed; twist.linear.y = 0; twist.linear.z = 0;
    twist.angular.x = 0; twist.angular.y = 0; twist.angular.z = msg.controlTurn;
    pub.publish(twist);
    //ros::spinOnce();
  //  loop_rate.sleep();
    ROS_INFO("Publish turtlebot control message sucess!");
  //  }
}

我觉得启动的顺序应该是:先运行KCF的node。随后再运行follow.cpp。

随后我们查看关于cmake中KCF的节点状况

add_executable(KCFcpp
    src/main/main_kcf.cpp
    src/cf_libs/kcf/kcf_debug.hpp
    src/cf_libs/kcf/kcf_tracker.hpp
    ${CF_MAIN_SOURCES}
    ${CF_LIB_COMMON_SOURCES})
target_link_libraries(KCFcpp ${OpenCV_LIBS} ${catkin_LIBRARIES})

主要就是main_kcf.cpp kcf_debug.hpp kcf_tracker.hpp和src lib里面的东西。


重新系统安装过程
1、Ubuntu14.04.5安装之后
2、ROS 安装
3、安装opencv3.1
注意事项
安装参考博客http://blog.csdn.net/junmuzi/article/details/49888123

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..  

将组合算法的包和kcf_follower
下面出现的这个问题的,是你讲kcf_ros 和另外的 组合算法那包放在同一个工作空间中编译导致cmake 错误,解决办法就是把原来的那个包删掉,就可以了。只留个你要用的包

CMake Error at kcf_tracking_ros/turtlebot_cf_tracking/CMakeLists.txt:154 (target_link_libraries):
  Attempt to add link library
  "/opt/ros/indigo/lib/librosconsole_backend_interface.so" to target "KCFcpp"
  which is not built in this directory.


CMake Error at kcf_tracking_ros/turtlebot_cf_tracking/CMakeLists.txt:154 (target_link_libraries):
  Attempt to add link library "/usr/lib/liblog4cxx.so" to target "KCFcpp"
  which is not built in this directory.


CMake Error at kcf_tracking_ros/turtlebot_cf_tracking/CMakeLists.txt:154 (target_link_libraries):
  Attempt to add link library "/usr/lib/x86_64-linux-gnu/libboost_regex.so"
  to target "KCFcpp" which is not built in this directory.


CMake Error at kcf_tracking_ros/tur
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值