基于ROS搭建简易软件框架实现ROV水下目标跟踪(十四完结)–目标跟踪模块

      项目链接:https://github.com/cabinx/cabin_auv_ws

      模块十分简单,可以介绍的内容很少。包括两个部分:计算目标物中心距图片中心的偏差,对应cabin_vision/object_deviation;PID跟踪控制,对应cabin_behaviors/pid_tracking。

一、偏差计算

      输入输出:

      监听topic:/darknet_ros/bounding_boxes,格式darknet_ros_msgs::BoundingBoxes,目标框图顶点在图片中像素点的位置;

      发布topic:/cabin_vision/deviation,格式geometry_msgs::PointStamped,目标中心像素点与图片中心像素点偏差。

      直接看代码吧,object_deviation.cpp。这部分我写了个python版本的object_deviation.py,有兴趣的话可以看看。

      首先是读取设定的摄像头分辨率。

      再者为收到一个目标数据后,计算偏差。

二、PID跟踪控制

      输入输出:

      监听topic:/cabin_vision/deviation,格式geometry_msgs::PointStamped,目标中心像素点与图片中心像素点偏差。

      发布topic:/command/netLoad,格式cabin_msgs::netLoad,作用于机器人上的力及转矩,直接作为基础运动模块的输入;

      直接看代码cabin_behaviors/pid_tracking.cpp。对于偏差的处理,如下图:

      设定了一个区域,当机器人中心位于该区域时,即偏差量小于safe_area_x或safe_area_y时,PID控制器在相应方向输出的控制量为0。PID控制器随手写了一个简易的,对应代码:

      剩下的是ros下借助rqt动态调参工具的配置,包括pid参数,安全区域大小,跟踪模式开关:

      实际在调试时没有太追求效果,只用了比例控制,即将积分i和微分d的参数都设为0。

 

      自此,整个demo软件框架所有模块基本都介绍完毕。

 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年9月27日
下一篇 2020年9月27日

相关推荐