Track and Follow an Object----4
原创博文:转载请标明出处(周学伟):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的更多相关文章
- “Clang” CFE Internals Manual---中文版---"Clang"C语言前端内部手册
原文地址:http://clang.llvm.org/docs/InternalsManual.html 译者:史宁宁(snsn1984) "Clang"C语言前端内部手册 简介 ...
- [翻译]:Cinemachine 官方文档(0)
目录 Overview : Installation and Getting Started :安装并开始 User Guide :用户指南 What is Cinemachine? : 什么是Cin ...
- .NET Best Practices
Before starting with best practices tobe followed, it is good to have clear understanding of how mem ...
- NCE2
1.A private conversation Last week I went to the theatre. I had a very good seat. The play was very ...
- C#中的委托解析
谈及到C#的基本特性,“委托”是不得不去了解和深入分析的一个特性.对于大多数刚入门的程序员谈到“委托”时,都会想到“将方法作为方法的参数进行传递”,很多时候都只是知道简单的定义,主要是因为“委托”在理 ...
- NGUI:HUD Text(头顶伤害漂浮文字)
HUD Text 很早之前就有闻于NGUI中的HUD Text插件,今天得以尝试,看了会儿官方的文档,楞是没给看明白,官方的ReadMe.txt写的使用方法如下: 官网Usage 1. Attach ...
- 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 ...
- .NET垃圾回收机制 转
在.NET Framework中,内存中的资源(即所有二进制信息的集合)分为"托管资源"和"非托管资源".托管资源必须接受.NET Framework的CLR( ...
- [转]Entity Framework and slow bulk INSERTs
本文转自:https://weblog.west-wind.com/posts/2013/Dec/22/Entity-Framework-and-slow-bulk-INSERTs I’ve been ...
随机推荐
- Android ——Toolbar开发实践总结(转)
过年前发了一篇介绍 Translucent System Bar 特性的文章 Translucent System Bar 的最佳实践 ,收到很多开发者的关注和反馈.今天开始写第二篇,全面的介绍一下 ...
- Android开发,在Activity启动时,默认隐藏软键盘。和遮挡Edittext时的处理
在Activity启动时,默认隐藏软键盘: 在AndroidManifest.xml中找到你得Activity ,为它添加属性: android:windowSoftInputMode="s ...
- Map与实体之间转换
package com.thunisoft.maybee.engine.utils; import java.lang.reflect.Field; import java.lang.reflect. ...
- netable 禁用拖动
nestable在点击的时候,有一个拖动的状态被触发,会导致你给nestable上加的链接都会无效. 只要在最外层的li里加入一个class为:dd-nodrag,就不会被触发了.然后你在子菜单中就可 ...
- ubuntu14.04 64位JDK安装
1 官网下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html jdk-8u ...
- 基于Zookeeper的分步式队列系统集成案例
基于Zookeeper的分步式队列系统集成案例 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, ...
- android 避免线程的重复创建(HandlerThread、线程池)
最近在android开发中,用到都是new Thread(){...}.start()这种方式.本来这样是可以,但是最近突然爆出Performing stop of activity that is ...
- Reusable async validation for WPF with Prism 5
WPF has supported validation since the first release in .NET 3.0. That support is built into the bin ...
- Numpy 的ndarray
创建ndarray 使用array函数 创建一维数组 创建二维数组 并查看有几个列表,每个列表有几个值 查看类型 生成全是0的或者全是1的 具体方法作用
- 转载:推荐给每个“数据分析师”看的PPT——关于开会的那点事
推荐给每个“数据分析师”看的PPT——关于开会的那点事 经常对开会“深恶痛绝”,大概的原因有两个,其一,开会之前的准备,各种指标.各种分析.各种PPT,其二,开会中的板凳.废话,尤其是走形式的会议,战 ...