原创博文:转载请标明出处(周学伟):http://www.cnblogs.com/zxouxuewei/tag/

ntroduction:

在本示例中,我们将探索包含Kinect摄像头的自主行为。 这个算法是TurtleBot寻找一个蓝色的球,然后停留在离球的固定距离。 首先tuetlebot已经集成了基本的安全行为,例如碰撞和悬崖检测等。

运行此示例需要图像处理的工具箱。

  先决条件:与TurtleBot正常通信,探索TurtleBot的基本行为,使用遥控控制TurtleBot,使用TurtleBot避开障碍。

Hardware Support Package for TurtleBot

本示例概述了使用其本机ROS接口的TurtleBot。 基于TurtleBot的机器人的机器人系统工具箱支持包为TurtleBot提供了更简洁的界面。

它允许您:
     1. 获取传感器数据并发送控制命令,而不显式调用ROS命令。
     2.与Gazebo中的模拟机器人或物理TurtleBot进行通信。

要安装支持包,在MATLAB Home选项卡上打开Add-Ons > Get Hardware Support Packages,然后选择“TurtleBot-Based Robots”。 或者,使用roboticsAddons命令。

Trial>> roboticsAddons

Connect to the TurtleBot or zxbot

  确保你有一个TurtleBot运行在通过Gazebo®或真实硬件的模拟。 有关启动过程,请参阅开始使用Gazebo和模拟TurtleBot或开始使用Real TurtleBot。 如果您使用硬件,请找到用于跟踪的蓝色球。 如果你使用Gazebo,蓝色的球必须在机器人前面的世界。

初始化ROS。 通过将示例IP地址(192.168.1.156)替换为TurtleBot的IP地址来连接到TurtleBot

  在这我使用的是自主研发的ZXBOT机器人,首先通过SSH连接机器人,然后启动相关节点

 ZXBOT:  //打开ubuntu终端  ssh ubuntu@192.168.1.156roslaunch odom_tf_package zxbot_kinect_start.launch

zxbot_kinect_start.launch内容如下:主要完成里程计的发布,激光雷达/scan数据的发布,kinect的openni驱动。
<launch><param name="use_sim_time" value="false" /><node name="link_camera" pkg="tf" type="static_transform_publisher" args="0.15 0 0.15 0 0 0 base_link camera_link 50"/><node name="link_laser" pkg="tf" type="static_transform_publisher" args="0.15 0 0.15 0 0 0 base_link laser 50"/> <node pkg="odom_tf_package" type="tf_tf_not_smoother" name="serial_send_recevice" output="screen"/>  <include file="$(find odom_tf_package)/launch/include/rplidar_ros.launch.xml"/><include file="$(find openni_launch)/launch/openni.launch"/></launch> 

初始化ROS。 通过将IP地址(192.168.1.1)替换为TurtleBot的IP地址来连接到TurtleBot。(或者ZXBOT机器人)

ipaddress = '192.168.1.156'
rosinit(ipaddress)

如果您使用真正的TurtleBot硬件,请确保您已经启动了Kinect摄像机.你必须在TurtleBot的终端输入。

命令启动相机是:

roslaunch turtlebot_bringup 3dsensor.launch

下面为彩色相机,边沿检测传感器和触碰开关传感器创建订阅者。 创建发布者控制机器人速度。我在这里用的是ZXBOT机器人,没有边沿检测传感器和触碰开关传感器,所以就不创建发布者。

//如果你采用的是turtlebot      handles.colorImgSub = exampleHelperTurtleBotEnableColorCamera;handles.cliffSub = rossubscriber('/mobile_base/events/cliff', 'BufferSize', 5);handles.bumpSub = rossubscriber('/mobile_base/sensors/bumper_pointcloud', 'BufferSize', 5);handles.soundPub = rospublisher('/mobile_base/commands/sound', 'kobuki_msgs/Sound');handles.velPub = rospublisher('/mobile_base/commands/velocity');//若果你采用的是zxbot或者自己的机器人,请按照自己的机器人话题名称去订阅和发布。    handles.colorImgSub = exampleHelperTurtleBotEnableColorCamera;    handles.velPub = rospublisher('/cmd_vel');

Tune the Blue Ball Detection

设置图像过滤的参数。 将它们添加到将算法中使用的数据结构中。

  blueBallParams.blueMax = 120;  % Maximum permissible deviation from pure blueblueBallParams.darkMin = 30;   % Minimum acceptable darkness value

尝试可视化球,以确保球找到参数可以找到它。 运行exampleHelperTurtleBotFindBlueBall函数来查看是否找到了一个圆。 如果是,则c和m被赋值。 球是通过在图像上应用蓝色和暗度滤波器而创建的二值图像。 查找球,看看蓝色球是否被正确隔离:

Track and Follow an Object----4相关推荐

  1. UNREAL ENGINE 4.13 正式发布!

    这次的版本带来了数百个虚幻引擎 4 的更新,包括来自 GitHub 的社区成员们提交的 145 个改进!感谢所有为虚幻引擎 4 添砖加瓦贡献的人们: alk3ovation, Allegorithmi ...

  2. 4 Motion Planning for Self-Driving Cars 课程习题编程解答及笔记

    自动驾驶课程 - The 4th 运动规划 - 课后答案及部分解释 Module 1 Graded Quiz Module 3 Graded Quiz Module 4 Graded Quiz Mod ...

  3. New Concept book two text

    Lesson 1 A private conversation Last week I went to the theatre. I had a very good seat.? The play w ...

  4. 自动驾驶任务|基于概率的3D多模态多目标跟踪(ICRA2021)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:Probabilistic 3D Multi­Modal,Multi­Object Tracki ...

  5. 如何在AngularJS的ng-options中设置value属性?

    本文翻译自:How do I set the value property in AngularJS' ng-options? Here is what seems to be bothering a ...

  6. 如何以类似JSON的格式打印圆形结构?

    本文翻译自:How can I print a circular structure in a JSON-like format? I have a big object I want to conv ...

  7. python 内存回收机制_【第1题】 Pythonn内存管理以及垃圾回收机制

    内存管理 Python解释器由c语言开发完成,py中所有的操作最终都由底层的c语言来实现并完成,所以想要了解底层内存管理需要结合python源码来进行解释. 1. 两个重要的结构体 include/o ...

  8. 【js】vue 2.5.1 源码学习(二) 策略合并

    一.  整体思路 1 首先是代码的大体构造,先判断引入代码的环境,即对应amd 和cmd的处理 2 vue_init 需要借助 initMinxin    ==>>>       / ...

  9. AAAI-19录用论文清单

    AAAI-19于1月27日在夏威夷召开,今年是33届会议. 会议录用论文清单, workshop16个,tutorials24个. 标题的词云分析: 作者单位词云(按作者人数计算/一篇文章可能有多个作 ...

最新文章

  1. push msg php_基于web-msg-sender进行消息推送
  2. python tqdm包_python tqdm库的使用
  3. SimpleRAR-攻防世界-Misc(图文详解),文件块和子块,图片的隐写二维码
  4. python怎么实现输入多行文字_介绍一个Python 包,几行代码可实现 OCR 文本识别!...
  5. 淘淘商城 @Autowired 装配失败
  6. vue js前端根据所需参数生成二维码并下载
  7. ios支付宝支付失败不回调_为什么 iOS 支付成功后能回到 APP ,但是没有回调?...
  8. zoj 1006 do the untwist
  9. 20220212:力扣第277场周赛(下)
  10. mysql多数据源事务_springboot项目多数据源及其事务
  11. HTML5期末大作业:学校网站设计——初级中学网站(16页)HTML+CSS+JavaScript 学校网页设计作业 网页设计作业 学生个人设计成品,网页设计作业
  12. 怎么查违章?查违章哪个软件最好?交管12123处理电子眼不用再跑交警队!
  13. BACKUP SET和BACKUP PIECE
  14. 炼数成金-Spark大数据平台
  15. 《 Kubebuilder v2 使用指南 》-P6-CRD Admission Webhook
  16. Android地址选择器的实现
  17. Kubernetes 集群文件描述符测漏了...
  18. [软件人生]关于我,我的未来,我的思考
  19. mysql按条件查询left_mysql-查询条件下的LEFT JOIN
  20. 【uniapp】使用图表

热门文章

  1. 什么是系统架构?系统架构的特点分析!
  2. MockWebServer--环境
  3. ASP.NET Core 自动检查编译项目组件配置
  4. 实力验证,浪潮整机柜软件定义存储性能有“数”可依
  5. 读书笔记 — Java高并发程序设计 — 第二章 — 基础(上)
  6. [每天一个知识点]27-职业生涯-饿了不能吃石头所以吃沙子
  7. Varnish 503错误
  8. php---header函数的简介
  9. 简单易懂的softmax交叉熵损失函数求导
  10. 验证二叉树后序遍历序列是否符合要求