Ros:people包下子包leg_detector及其相关包笔记

本文档详细解析了ROS indigo中的leg_detector包,用于通过激光数据检测人腿。包内包括leg_detector节点、特征计算、随机森林训练结果等。在使用时需要注意激光数据的帧变换和依赖的tf转换。同时,leg_detector与people_tracking_filter包的集成存在问题,以及people_velocity_tracker包的配合使用。文章还提供了启动和配置leg_detector的步骤,以及在RVIZ中的可视化设置。
摘要由CSDN通过智能技术生成

people包下的leg_detector(http://wiki.ros.org/leg_detector)用于通过激光数据检测人腿。大致过程是对每一帧激光(scan)数据,先进行分割,分成多个数据段,然后计算这些数据段的特征,如半径,曲率,中心点之类的,并用这些数据通过训练好的随机森林进行判断当前数据段是否人腿。之后用卡尔曼滤波器跟踪估计每一帧同一条腿的位置,并按两条腿匹配成一个人配对出人。

该包年代久远,而且作者并没有写任何wiki任何使用方法,并且最初用于训练的数据集已经丧失(其维护者在Q&A中提到),只留下了训练好的yaml文件,因而调试起来比较浪费时间。本文对此包做一定解释,便于后续使用者调试(虽然甚至不一定有人看)。嘛,也当做笔记了。

环境:Ubuntu14.04,ros版本:indigo, opencv是indigo自带的(反正是2的哪个版本, 目前测试了2.4.13.6,或者2.4.11是可以的


 leg_detector(以下为包内文件夹)

  • cfg:存放leg_detector.cpp所用动态配置文件
  • config:存放随机森林训练出来的结果yaml文件
  • include:头文件
  • launch:有3个launch文件,但基本只用leg_detector.launch(另外两个我并没看所以不写了)
  • src:源文件

 

launch文件解析:

  • leg_detector.launch:

        启动leg_detector节点,并将话题”/scan“映射为”/base_scan“,将所用的yaml文件(训练好的随机森林)指向config文件夹内的那个。(实际上大多数激光驱动发布的话题都是"/scan",所以可以不用那个映射。总之目的是让leg_detector订阅的激光数据话题名与激光发布的话题名一致。)

        要注意的是直接启动这个和激光节点还是不能正确运行,因为还需要激光的frame到里程计的frame: odom_combined的tf变换才可以。详细的会在leg_detector.cpp解释。

 

cpp文件解析:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值