• 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', 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 blue
      blueBallParams.darkMin = 30;   % Minimum acceptable darkness value

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

  • 相关阅读:
    使用XMLReader读XML
    C#命名空间大全详细教程
    C# using 三种使用方式
    SVN服务器搭建
    简单的自定义Session
    python学习第十八天 --错误&异常处理
    锁的等级:方法锁、实例锁、类锁
    java线程池如何合理的设置大小
    挖掘两个Integer对象的swap的内幕
    实现线程同步的方式
  • 原文地址:https://www.cnblogs.com/zxouxuewei/p/6221896.html
Copyright © 2020-2023  润新知