原创博文:转载请标明出处(周学伟):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.156
  roslaunch 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', );
   handles.bumpSub = rossubscriber('/mobile_base/sensors/bumper_pointcloud', 'BufferSize', );
   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 = ;  % Maximum permissible deviation from pure blue
blueBallParams.darkMin = ; % Minimum acceptable darkness value

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

Track and Follow an Object----4的更多相关文章

  1. “Clang” CFE Internals Manual---中文版---"Clang"C语言前端内部手册

    原文地址:http://clang.llvm.org/docs/InternalsManual.html 译者:史宁宁(snsn1984) "Clang"C语言前端内部手册 简介 ...

  2. [翻译]:Cinemachine 官方文档(0)

    目录 Overview : Installation and Getting Started :安装并开始 User Guide :用户指南 What is Cinemachine? : 什么是Cin ...

  3. .NET Best Practices

    Before starting with best practices tobe followed, it is good to have clear understanding of how mem ...

  4. NCE2

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

  5. C#中的委托解析

    谈及到C#的基本特性,“委托”是不得不去了解和深入分析的一个特性.对于大多数刚入门的程序员谈到“委托”时,都会想到“将方法作为方法的参数进行传递”,很多时候都只是知道简单的定义,主要是因为“委托”在理 ...

  6. NGUI:HUD Text(头顶伤害漂浮文字)

    HUD Text 很早之前就有闻于NGUI中的HUD Text插件,今天得以尝试,看了会儿官方的文档,楞是没给看明白,官方的ReadMe.txt写的使用方法如下: 官网Usage 1. Attach ...

  7. The Four Stages of Recovering a Project

    If a project is in trouble, the project manager needs to work to recover it and get the schedule bac ...

  8. .NET垃圾回收机制 转

    在.NET Framework中,内存中的资源(即所有二进制信息的集合)分为"托管资源"和"非托管资源".托管资源必须接受.NET Framework的CLR( ...

  9. [转]Entity Framework and slow bulk INSERTs

    本文转自:https://weblog.west-wind.com/posts/2013/Dec/22/Entity-Framework-and-slow-bulk-INSERTs I’ve been ...

随机推荐

  1. 安装corel x8提示你已安装了另外一个版本

    如果之前安装了其他版本,提示安装不进去,需卸载visual c++ 2015 redistributable(x64)即可(测试环境是安装了x6后,x8安装不了) windows install cl ...

  2. oozie 安装过程详解

    1.从apache的官网下载oozie3.3.2 2.编译oozie,以下命令用root来执行吧,它不做任何的测试的,因为一测试就会出错的 官网估计也知道,所以顺便也提供了一个跳过参数的命令... b ...

  3. java中GZIPOutputStream 流的使用(EOFException)

    GZip流的使用非常多人都出现了以下的异常:java.io.EOFException: Unexpected end of ZLIB input stream.或者出现压缩后的数据不全的情况(就是压缩 ...

  4. SQL Server 2012 自动增长列,值跳跃问题(自增增加1000)

    介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(in ...

  5. 记一次MyEclipse闪退的解决方法

    http://www.th7.cn/Program/java/201408/262487.shtml ———————————————————————————————————————————————— ...

  6. Spring @Value注解问题

    xml配置了下面标签:<context:property-placeholder location="classpath:xxx.properties" /> 用spr ...

  7. 安卓程序代写 网上程序代写[原]BluetoothSocket详解

    一. BluetoothSocket简介 1. 简介 客户端与服务端 : BluetoothSocket 和 BluetoothServerSocket 类似于Java中的套接字的 Socket 和 ...

  8. 【转】MySQL count(*)速度慢优化

    select count(*)是MySQL中用于统计记录行数最常用的方法. count方法可以返回表内精确的行数,每执行一次都会进行一次全表扫描, 以避免由于其他连接进行delete和insert引起 ...

  9. SpagoBI 教程 Lesson 2: OLAP with JPIVOT

    SpagoBI Lesson 2: OLAP with JPIVOT Online Analytical Processing Online Analytical Processing (OLAP) ...

  10. 【转载】K-NN算法 学习总结

    声明:作者:会心一击 出处:http://www.cnblogs.com/lijingchn/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...