在本教程中, 我们旨在扩展 BubbleRob 的功能,使之沿着地上的一条线走。要保证您已经阅读并理解了第一个 BubbleRob 教程。本教程由 Eric Rohmer 提供。

在 tutorials/BubbleRob 中加载位于 V-REP 安装文件夹中的第一个 BubbleRob 教程的场景。与本教程相关的场景文件位于tutorials/LineFollowingBubbleRob 中。下图阐明了我们将要设计的模拟场景:

首先我们创建将要与泡泡机器人对象相连的 3 个视觉传感器中的第一个。点击 [Menu bar --> Add --> Vision sensor --> Orthographic type] 进行选择。双击场景层次结构中新创建的视觉传感器图标编辑其属性,并更改参数以显示以下对话框:

视觉传感器必须面朝地面,所以选择它,然后单击对象/项目旋转工具栏按钮,并将 Alpha-Beta-Gamma 项设置为 [180; 0; 0]

我们有几种方法来读取视觉传感器。由于我们的视觉传感器只有一个像素并且运行缓慢,因此我们只需要查询视觉传感器读取的图像的平均强度值。对于更复杂的情况,我们可以设置几个视觉传感器滤波器。现在将视觉传感器复制并粘贴两次,并将其名称调整为leftSensor, middleSensor 和 rightSensor。让 bubbleRob 成为他们的本体(即将它们附加到 bubbleRob 对象中)。现在传感器在场景层次结构中看起来应该是这样的:

正确定位传感器。可以使用位置或方向操纵对话框,并设置以下绝对坐标:

左传感器:[0.2; 0.042; 0.018]

中间传感器:[0.2; 0; 0.018]

右传感器:[0.2; -0.042; 0.018]

现在我们来更改环境。我们可以删除泡泡机器人前面的几个圆柱体。接下来,我们将构建机器人会遵循的路径。从现在开始,最好切换到俯视图:点击页面选择器工具栏按钮选择第 4 页。然后点击 [Menu bar --> Add --> Path --> Circle type]。切换到 object movement with the mouse。现在您有两种调整路径形状的方法:

选择路径(只有路径),按 ctrl 键点击其中的一个控制点。然后,可以将它们拖到正确的位置。

选择路径后,进入路径编辑模式。在那里,可以灵活调整各个路径控制点。

一旦你对路径的几何形状感到满意(你可以随时修改它),就选择它,并在路径属性中取消 Show orientation of pointsShow path line 和 Show current position on path。然后单击 Show path shaping dialog。这会打开路径成型对话框。单击 Path shaping enabled,将 type 设置为 horizontal segment,将 Scaling factor 设置为 4.0。最后将颜色调整为黑色。我们还必须对路径进行最后一个重要的调整:目前,路径的 z 位置与地板的 z 位置一致。结果是,有时我们看到路径,有时看到地板(这种结果在 openGl 术语中被称为 z 战斗)。这不仅影响了我们的视线,还影响了视觉传感器的视线。为了避免与之有关的问题,将路径对象的位置向上移动 0.5 mm。

最后一步是调整泡泡机器人的控制器,让它也遵循黑色路径。打开子脚本并连接到泡泡机器人,并用以下代码替换它:

function speedChange_callback(ui,id,newVal)speed=minMaxSpeed[1]+(minMaxSpeed[2]-minMaxSpeed[1])*newVal/100
endfunction sysCall_init()-- This is executed exactly once, the first time this script is executedbubbleRobBase=sim.getObjectAssociatedWithScript(sim.handle_self)leftMotor=sim.getObjectHandle("leftMotor")rightMotor=sim.getObjectHandle("rightMotor")noseSensor=sim.getObjectHandle("sensingNose")minMaxSpeed={50*math.pi/180,300*math.pi/180}backUntilTime=-1 -- Tells whether bubbleRob is in forward or backward modefloorSensorHandles={-1,-1,-1}floorSensorHandles[1]=sim.getObjectHandle("leftSensor")floorSensorHandles[2]=sim.getObjectHandle("middleSensor")floorSensorHandles[3]=sim.getObjectHandle("rightSensor")-- Create the custom UI:xml = '<ui title="'..sim.getObjectName(bubbleRobBase)..' speed" closeable="false" resizeable="false" activate="false">'..[[<hslider minimum="0" maximum="100" onchange="speedChange_callback" id="1"/><label text="" style="* {margin-left: 300px;}"/></ui>]]ui=simUI.reate(xml)speed=(minMaxSpeed[1]+minMaxSpeed[2])*0.5simUI.setSliderValue(ui,1,100*(speed-minMaxSpeed[1])/(minMaxSpeed[2]-minMaxSpeed[1]))
endfunction sysCall_actuation()result=sim.readProximitySensor(noseSensor)if (result>0) then backUntilTime=sim.getSimulationTime()+4 end-- read the line detection sensors:sensorReading={false,false,false}for i=1,3,1 doresult,data=sim.readVisionSensor(floorSensorHandles[i])if (result>=0) thensensorReading[i]=(data[11]<0.3) -- data[11] is the average of intensity of the imageendprint(sensorReading[i])end-- compute left and right velocities to follow the detected line:rightV=speedleftV=speedif sensorReading[1] thenleftV=0.03*speedendif sensorReading[3] thenrightV=0.03*speedendif sensorReading[1] and sensorReading[3] thenbackUntilTime=sim.getSimulationTime()+2endif (backUntilTime<sim.getSimulationTime()) then-- When in forward mode, we simply move forward at the desired speedsim.setJointTargetVelocity(leftMotor,leftV)sim.setJointTargetVelocity(rightMotor,rightV)else-- When in backward mode, we simply backup in a curve at reduced speedsim.setJointTargetVelocity(leftMotor,-speed/2)sim.setJointTargetVelocity(rightMotor,-speed/8)end
endfunction sysCall_cleanup()simUI.destroy(ui)
end

你可以轻易调试线状跟踪视觉传感器:选择一个视觉传感器,然后在场景视图中 [Right-click --> Add --> Floating view],然后在新添加的浮动视图中点击 [Right click --> View --> Associate view with selected vision sensor]

最后,删除在第一个泡泡机器人教程中添加的辅助项目:删除图像处理视觉传感器,及相应的浮动视图,浮动视图表示障碍物间隙。通过距离对话框删除距离计算对象。这就好了。

参考资料

1.V-REP官方文档:http://www.coppeliarobotics.com/helpFiles/

V-REP 线条追踪泡泡机器人教程相关推荐

  1. V-REP 泡泡机器人教程

    本教程将试着在设计简单的移动机器人BubbleRob 时介绍很多V-REP 功能.与本教程相关的 V-REP 场景文件位于V-REP 的安装文件夹的 tutorials/BubbleRob 文件夹中. ...

  2. 【泡泡机器人转载】SLAM: 现在,未来和鲁棒年代

    摘要 SLAM是由同步环境地图构建和运行于其中的机器人状态估计组成.SLAM领域过去30年取得了令人瞩目的成就,其在大场景应用成为了可能,这一技术被见证了成功地被应用于工业领域.本文中,我们研究了SL ...

  3. 泡泡机器人,ORB_SLAM2介绍

    ORB-SLAM2:一种开源的VSLAM方案 泡泡机器人 泡泡机器人SLAM 2017-07-03 泡泡机器人翻译作品 原文:ORB-SLAM2: an Open-Source SLAM System ...

  4. pushplus推送到企业微信机器人教程

    pushplus推送到企业微信机器人教程 pushplus官网:http://www.pushplus.plus 引言   pushplus目前已经实现了将消息推送到企业微信.钉钉.飞书机器人等渠道. ...

  5. Mirai框架qq机器人教程

    Mirai框架qq机器人教程 0.前言 1. 安装Java 2.安装Mirai启动器 3.下载IDEA或其他编译器 4.创建mirai-console插件项目 4.1 通过git创建 4.2 通过插件 ...

  6. HTC One V卡刷RUU准备工作 图文教程详解

    为什么80%的码农都做不了架构师?>>>    HTC One V卡刷RUU准备工作 图文教程详解 相对于线刷,HTC One V卡刷RUU更为方便快捷,不会和普通RUU那样这么容易 ...

  7. 京东xdd-puls保姆级教程整合(附加QQ机器人教程)【2022.1.24更新补充】

    青龙面板技术交流群:817954605 下载go安装包 ,这里我们安装到usr/local目录 cd /usr/local && wget https://dl.google.com/ ...

  8. 泡泡机器人视频连接讲解-很好

    https://blog.csdn.net/qq_34622997/article/details/88085884 哔哩哔哩: https://space.bilibili.com/38737757 ...

  9. 泡泡机器人SLAM公开课链接(实时更新中)

    1.工业相机选型及介绍-刘富强 链接: https://pan.baidu.com/s/15lo_H68E08tEp72ko5cR5g 密码: jmhc 2.深度学习及应用-颜沁睿 链接: https ...

  10. 随身Wifi搭建Pupbot机器人教程(刷Debian系统)

    为什么选择随身Wifi? 价格便宜-本地服务器-安全可靠 目录 准备工作 一.刷Debian系统 二.部署Pupbot 机器人 1.修改国内源 2.安装Node.js 3.安装机器人框架 4.实现开机 ...

最新文章

  1. dht11温湿度传感器c语言程序_手把手教你DIY一款性价比爆棚的温湿度计!
  2. 快手刘霁:AI基础能力决定每个公司AI的迭代和落地效率丨MEET2020
  3. 使用 Nexus3镜像搭设私有仓库(Bower 、Docker、Maven、npm、NuGet、Yum、PyPI)
  4. linux mongo 服务器,如何用MongoDB在Linux服务器上创建大量连接和线程的记忆
  5. 【操作系统】进程的状态与转换
  6. OC基础--成员变量的封装
  7. 2017-10-22—发光二极管
  8. jq监听页面的滚动事件,
  9. Centos7下,LVM根分区扩容
  10. 关于超过255台电脑的内网IP规划问题
  11. java 鼠标拖拽_JavaScript DOM 鼠标拖拽
  12. mysql查询时去除重复数据以及 FOUND_ROWS 统计记录函数
  13. matlab 离散数据 拐点,MATLAB 寻找离散点拐点
  14. couchbase导出mysql
  15. 一阶低通滤波器方程_一阶有源低通滤波电路与最经典一阶低通滤波器电路图
  16. java html转pdf 无法支持中文_java转pdf(html转为pdf),解决中文乱码,标签不规范等问题...
  17. CountDownLatch并发编程
  18. 那年我们也曾高三——纪录片《高三》真实记录高三生活
  19. 翡翠玉石微观世界,太美了!
  20. 高德地图标记文字修改样式_地图标注有哪些优势?如何进行地图标注?

热门文章

  1. linux rpm的全称,Linux初学者需要知道的RPM
  2. html表单判分,HTML表单对象
  3. Linux安装Nginx+PHP+Mysql
  4. 新思科技应用安全测试解决方案助力越南FPT Software公司提升代码质量和安全
  5. 计算机中ar的作用,什么是AR技术?
  6. 在IT行业工作如何获得高薪?选择前沿的技术,把准方向,有技术有人缘
  7. Centos中shell语言的转义字符举例--运维之linux基础课
  8. 我国自制研究的什么超级计算机,世界最快超级计算机 探秘天河一号
  9. 二十年遇到八句话(转)
  10. 平陆中学计算机,浅谈对高中美术鉴赏课的几点认识