主要内容

跟踪和跟踪对象使用TurtleBot

这个例子展示了如何使用TurtleBot基于颜色跟踪对象®通过ROS网络连接的机器人。ROS工具箱支持包,用于金宝app库特贝特的机器人使您可以捕获图像以在环境中查找对象,并发送速度命令以向对象导航。要遵循对象,请使用getColorImagesetVelocity功能与图像处理技术。

连接到机器人

使用特定的IP地址连接到您的Turtlebot机器人。您的模拟或真正的Turtlebot必须与运行MATLAB的计算机相同的ROS网络®

ipaddress =.'192.168.1.10'你的机器人的IP地址结核病= turtlebot (ipaddress);

跟踪对象

要检测示例对象(蓝球),必须指定它的一些属性。您可以使用这些属性来处理捕获的图像。这个例子使用Image Processing Toolbox™在每个图像上运行颜色和斑点检测算法来找到球。

指定所示的球的属性,替换为为环境调整的值。给出的值对于凉亭模拟进行了最佳选择开始凉亭和模拟的龟毡

blueballparams.bluemax = 120;%与纯蓝色的最大允许偏差blueBallParams。darkMin = 30;%最低可接受的暗度值

从乌龟机器人上获取图像。

latestImg = getColorImage (tbot);

使用这两个示例助手函数来获取和绘制球在图像中的位置。这些函数使用地区普通从图像处理工具箱中获取球的位置和大小。第一个图像是TurtleBot的输出,上面覆盖了对象的位置。第二个图像是二值图像,ballImage,用于基于图像中的图像检测蓝色BlueballParams..如果球没有显示为白色与有限的背景在这个二值图像,尝试调整BlueballParams.值。

[位置,〜,ballimage] = examplehelperturtlebotfindblueball(quoullimg,blueballparams);examplehelperturtlebotplotobject(liquimg,ballimage,位置);

使用速度命令跟随对象

在调整图像中对象的跟踪之后,可以设置一个基本的控制算法,用于向TurtleBot发送命令。这个例子使用了基本逻辑和奇异的线性和角速度命令来让机器人跟随球。有关更高级的控制方案,请参阅跟踪并遵循一个对象

获取一个新图像并存储图像大小。重新计算对象的位置和大小。

latestImg = getColorImage (tbot);尺寸(高度、宽度)= (latestImg);(位置,~)= exampleHelperTurtleBotFindBlueBall (latestImg blueBallParams);

根据球的位置和大小生成角速度和线速度。如果没有发现物体,旋转并寻找球(只有正角速度)。

  • 如果球在屏幕的最左边,机器人需要左转(正角速度)。右边也是一样(负角速度)。

  • 如果球在图像中太小,机器人必须移动得更近(正线速度)。如果球太大,机器人必须移动得更远(负线速度)。

最后,发送线性和角速度的使用setVelocity暂停等待命令发送。迭代100个周期以测试跟踪。

球位置和尺寸的%参数TriconalTolerance = 20;sizegoal = 70;sizeTolerance = 5;i = 1:10 0%得到最新的图像,球的位置,和球的大小。latestImg = getColorImage (tbot);尺寸(高度、宽度)= (latestImg);[位置,球化] = examplehelperturtlebotfindblueball(quoullimg,blueballparams);%初始化速度为零。linearVel = 0;angularVel = 0;%左右控制如果Isempty(位置)Angularvel = 0.5;linearvel = 0;elseif(位置(1)>(宽/ 2) -  horizo​​ntaltolerance)Angularvel = 0.2;elseifposition(1) < (width/2)+horizontalTolerance)结束%前进和后退控制如果Isempty(球化)Angularvel = 0.5;linearvel = 0;elseifballSize > sizeGoal + sizeTolerance linearVel = - 0.1;elseifballSize < sizeGoal - size公差线性= 0.1;结束%发送速度命令并等待发送命令。setVelocity (tbot linearVel angularVel)暂停(0.2)结束

为了验证算法是成功的,需要捕获图像并使用帮助函数再次跟踪和绘制位置。乌龟机器人专注于球,假设它在搜索过程中找到了球。基于本例中Gazebo模拟的世界,最终的图像捕捉显示球就在机器人的正前方。

latestImg = getColorImage (tbot);[C,球化,弹跳镜] = examplehelperturtlebotfindblueball(quoullimg,blueballparams);examplehelperturtlebotplotobject(liquimg,ballimage,c);

改进建议

这个例子使用简单的传感器反馈和控制参数来跟踪和跟踪一个对象。由于对硬件和真实环境的风险较低,它在模拟环境中工作得很好。然而,它没有考虑到碰撞或夹子传感器,这可以帮助碰撞或地形变化。动态地调整速度命令和分解之前的状态可以改善TurtleBot的运动。

为了改进现实世界应用的这个例子,考虑使用更高级的传感和控制方法,用于具有更强大的传感器数据的真实机器人。看跟踪并遵循一个对象对于使用PID控制器和其他机器人传感器的更高级示例。

另请参阅

||

相关话题