一种分布式集群扩展模块:Epuck2 测距板Range and bearing_kay880的博客-程序员宅基地_epuck2

技术标签: bearing  Range  移动机器人Epuck2  Epuck2  

引言

论文推荐

An Open Localization and Local Communication Embodied Sensor
Collective decision-making based on social odometry

测距板改进了现有的相对定位/通信软件库(libIrcom),该库是为e-Puck机器人开发的,基于其车载红外传感器。e-RandB是与Robolabo、Iridia和RBZ机器人设计公司合作开发的。
在这里插入图片描述

该板允许定位代理在本地通信,同时获得发射器的射程和方位,而无需任何集中控制或任何外部参考。因此,该板允许机器人拥有一个具体的、分散的和可扩展的通信系统。该系统依靠频率调制的红外通信,由两个相互连接的模块组成,用于数据和功率测量。
该板可通过Uart或I2C总线与e-puck通信。它允许用户根据其他扩展模块已经使用的总线,从两条总线中选择一条。然而,不同的帧速率取决于通信总线。对于实际的软件版本,我们使用Uart总线获得50 msg/秒,而I2C总线获得150 msg/秒,其中每条消息由6位报头、16位数据和4位crc组成。

1.引言

测距板是一个新的开放式硬件/软件板,可让小型机器人进行通信,同时获得排放源的范围和方位。 开放的E-Puck测距板改进了现有的红外相对定位/通信软件库(libIrcom),该库是为E-Puck机器人开发的,并基于其机载红外传感器。 该板允许机器人具有一个体现的,分散的和可扩展的通信系统。
使用E-Puck测距板,可以在机器人之间进行本地通信。 它基于红外通信,因此需要两个机器人之间的直接视觉通信。 该板具有许多不同的功能。 例如,发射机器人传输16位数据帧。 接收帧的机器人会提取16位数据,并计算到发射器机器人的距离(范围)和方向(轴承)。 此外,该板还允许您将透射范围从0 cm更改为80 cm。 因此,您可以根据实验需要调整通讯范围。 最后,由于e-puck机器人有许多不同的扩展模块,我们实现了两条不同的通信总线(I2C和UART),可以通过它们与开发板和机器人进行通信。

2.硬件

设计的E-Puck范围和轴承板(见图1)由其自己的处理器控制。 每块板包含12组IR发射/接收模块。 每个模块都配备一个红外发射二极管,一个红外调制接收器和一个红外光电二极管:如图2所示,这些模块几乎均匀地分布在电路板上。 因此,它们之间的距离约为30°。
在这里插入图片描述
图1:E-puck测距板(a)顶视图和(b)底视图
为了正确理解本地化和通信系统及其复制或修改的可能性,接下来的小节将详细介绍板上实现的各种硬件模块。
在这里插入图片描述
图2:(a)发射器和(b)接收器在电路板周边的分布

2.1电源模块

该板可用2.5 V至6 V的电源供电。板上电后,将创建三根隔离的电源线:一根用于数字系统,一根用于模拟,另一根用于发射模块。 这三个电源线是从两个不同的电源获得的。
第一个电源由发射模块负责。 该电源基于低压差线性稳压器,该稳压器允许在0.8 V至3.46 V之间的电压变化。这种功率变化使电路板可以更改其发射范围。 调节器连接至数字SPI电位计,该电位计可改变ADJ引脚的负载,从而修改电源的输出。 得益于此数字可变电阻器,可以通过软件控制发射范围和功耗。
第二电源负责其余的电子设备,包括微控制器。 3.3 V的模拟和数字线仅在一点处分开并短路,以减少噪声。
评估板的功耗取决于发射电源的设置。

2.2发射模块

发射模块由12个不同的发射器组成。 每个传感器组均由窄光束红外灯和逻辑门组成,以产生调制信号。
通信基于频率调制,并在455 KHz的载波上以10 KHz的数据传输(更多信息,请参见图3)。
在这里插入图片描述
图3:发射模块图
Vemis电源的修改会改变流经发射器的电流,从而改变发射范围。 对于最小值0.8 V,对于Vemis = 3.46 V,可实现0 cm范围,而最大范围约为80 cm。

2.3接收模块

接收模块分为两个不同的子模块。第一个子模块负责数据接收,而第二个子模块负责检测信号强度。分为两个子模块,使开发板可以独立于信号强度接收数据。在第一个模块中,该板能够作为简单的通信系统工作,在其中无需提取发射器位置即可对数据进行解调和接收。第二子模块在帧接收期间测量红外信号的强度。为了确保正确测量信号强度,强度传感器和解调传感器必须具有相同的方向,因此必须彼此叠置。
数据接收子模块基于用于远程控制的小型红外接收器。信号通过微控制器中的数字输入接收。
信号强度子模块基于PIN二极管和两个运算放大器。当光电二极管开始接收红外信号时,电路开始充电。峰值检测器的输出面向微控制器中的12个模数转换器。

2.4通讯模块

通信模块已被设计为主要处理器系统的从属。 集成了两条总线I2C和RS232,以方便使用该板。 在两种通讯类型中,主站均控制发射范围。 可以随时订购电源输出的修改,并且可以立即修改发射范围。

2.4.1 I2C总线

在I2C通信中,E-puck范围和轴承板充当主处理器系统的从属。 该板负责传输请求,并不断检查传入的帧。 主处理器系统不断轮询板,以检查是否已接收到任何通信。

2.4.2 UART

在UART通信中,双向允许中断。 主板能够发送传输命令或范围修改。 一旦通信板解调出一帧,它将中断主机,并将解调后的数据,估计的角度和到发射器的距离发送出去。

2.5板子配置

2.5.1TV Remote Receiver

因为开发E-puck Range&Bearing的目的是为那些不希望使用扬声器功能的用户卸下电子跳板,所以我们复制了IR TV Remote接收器(见图4)。 该信号进入机器人主连接器,并与电子跳线板连接到同一引脚。 因此,接收器以相同的方式工作,并且取代了电子跳板上的接收器。
在这里插入图片描述
图4:TV remote receiver

2.5.2 E-Puck范围和与E-Puck UART的通信关系

如前所述,有可能通过UART与E-Puck通信E-Puck范围和方位。 但是,由于其他扩展模块也使用UART,因此有一个4位微动开关,它允许UART线的连接/断开。 如果要禁用此连接,请在S1微动开关中将PIN2和PIN3置于OFF(见图5)。 默认情况下启用连接。
在这里插入图片描述
图5:E-Puck测距板UART通信开关配置。 (a)启用通讯 (b)通讯被禁用

2.5.3 E-Puck测距板与PC UART的通信

我们还启用了与计算机的通信。 机器人可以与PC通信的方式相同,开发板也可以进行通信。 但是,有一些限制。 由于板上空间不足,我们使用了机器人上已经提供的MAX232。 因此,我们无法同时与机器人和控制板通信计算机。 默认情况下,与板的通信处于启用状态,而与机器人的板则处于禁用状态。 如果要禁用此选项,则应将S1微动开关的PIN1和PIN4设置为OFF(见图6)。 默认情况下启用通讯。 (机器人已经具有与PC通信的蓝牙)。 您可以从X5 4针微型匹配红色连接器中的PIN1(TX),PIN2(RX)和PIN3(GND)提取信号(参见图7)。
在这里插入图片描述
图6:E-Puck测距板PC的UART通讯开关配置。 (a)启用通讯。 (b)通讯被禁用。
在这里插入图片描述
图7:UART连接器

2.6不同版本

实际上,该板有2个不同版本,即C版和D版。它们的性能大致相同,但是硬件上存在一些差异。
•版本C:
红外发射器的标称半强度角为±20°(很小,金黄色发射器位于电路板的顶部)。
•D版
红外发射器的标称半强度角为±60°(它们是板顶部的白色发射器)。
红外峰值接收器已拆分。每个峰值接收器模块由3个光电二极管组成,这些信息被合并并提取为一个单独的传感器。因此,有12组3个光电二极管。

3.安装E-Puck范围和轴承板

要安装E-puck范围和轴承板,只需拧下将e-jumper板和e-puck相连的3个螺钉。之后,您必须拔下电子跳线板的插头,然后插入E-puck范围和轴承。您可以再次将E-puck范围和轴承板顶部的电子跳线板插入。但是,请看第7节,了解两块板之间的不兼容性。

4.固件

电路板初始化后,将以1.09 µs的周期初始化一个脉宽调制(PWM)计时器。此计时器创建发射的载体
该模块只有在板上电后才能停止。实施Manch-ester码以允许接收器以相同的强度接收在一定距离下发送的任何数据。负责调制信号的计时器每100 µs中断一次。实施
曼彻斯特代码允许的最大数据速率为5 kbps。定时器的每次中断都会获取所存储的数据,并将其发送到硬件门进行传输。用于传输的数据存储在根据硬件引脚排列正确构造的缓冲区中。可以向通讯板询问三种不同类型的传输:
•所有传感器都传输相同的数据:一条指令连同要传输的数据一起发送到板。
•仅某些传感器发送数据:每个传感器必须向板发送一条指令。数据和传感器编号也必须提供给开发板。加载所有传感器后,必须将发送指令发送到板。
•不同的传感器传输不同的数据:每个传感器必须向板发送一条指令。数据和传感器编号也必须提供给开发板。加载所有传感器后,必须将发送指令发送到板。
一旦主机将传输命令发送到板,通信模块将负责用前导码(6位),数据(16位)和CRC(4位)分解不同传感器的数据)。如果主机需要发送数据流,则通信模块以透明方式将所有消息依次传输给传输计时器。
接收软件正在不断检查消息是否到达。 红外调制接收器检测到帧的前同步码后,该板将继续通过红外光电二极管为峰值检测器充电时接收数据和CRC。 如果帧已正确到达(由CRC检查),则将读取峰值检测器电平并将其存储在缓冲区中。 由于接收传感器的孔径较大,因此可能有多个传感器同时接收相同的数据。 不同峰值检测器提供的信息用于计算方向和到发射器的距离。 然后,将这两个值存储在缓冲区中,以发送到主板。 图8显示了发射和接收软件模块的框图。
在这里插入图片描述
图8:(a)软件发射模块和(b)软件接收模块的框图。
红外噪声主要来自环境中的光照条件。 为了解决这个问题,开发板在开始时就测量环境中的红外信号。 正确接收到帧后,开发板将从峰值接收器中减去环境测量值,并将其作为帧信号强度返回。

5.e-RandB库

待更新

6.e-Puck示例

待更新

7.问题报告

E-puck测距板在使用过程中会遇到不同问题。

7.1红外线接近干扰

因为E-puck范围和轴承板通过IR通信,所以当接近传感器激活时会产生干扰。如果您测试示例,您将看到帧的数据完美到达,因为信息是经过调制的。但是,范围和方位计算将受到干扰。某些人正在解决不使用红外接近传感器时停止它们的问题。

7.2电子跳线与UART通信

一些发烧友正在使用E-Puck范围和轴承板并且已插入E-Jumper板时检测到问题。问题是因为电子跳线板在UART模式下使E-puck测距和轴承板使用的某些线路短路。如果在插入电子跳线板的同时打开四个位置开关(S1)的PIN1和PIN4,则将无法与E-puck范围和轴承板通信。如果您将其关闭,则一切正常。一些发烧友说,即使更改了S1,有些板也无法通过UART进行通信,而其他板则可以。尚未解决此问题。

8.epuck2

e-puck2标准固件包含范围和轴承扩展的示例用法。当选择器处于位置4时,机器人设置为接收器,当处于位置5时,机器人同时为发射器和接收器。在两个演示中,接收到的信息(接收到的数据、方位、距离和传感器id)将通过蓝牙打印。
请注意,机器人与测距和方位扩展之间唯一可用的通信通道是I2C总线,UART通道不适用于e-puck 2。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ben_xiao_hai_123/article/details/103868300

智能推荐

C#.Net 垃圾回收机制GC详解_方砖的方的博客-程序员宅基地

网上一大堆互相抄的关于C#GC的文章,但是都很浅,这篇转载的文章讲解的相对比较透彻转载!【优点】1.提高软件系统的内聚。2.降低编程复杂度,使程序员不必分散精力去处理析构。3.不妨碍设计师进行系统抽象。4.减少由于内存运用不当产生的Bug。5.成功的将内存管理工作从程序的编写时,脱离至运行时,使不可预估的管理漏洞变为可预估的。【算法工作原理】垃圾收集器的本质,就是跟踪所有被引用到...

信维服务器防氧化解决方案 从容应对金手指氧化难题_weixin_34232617的博客-程序员宅基地

随着学校云计算市场蓬勃发展,VDI,HPC,HCI等应用使得服务器在学校场景使用的越来越多。而随着使用的数量的增加,众多校园云解决方案提供商发现在某些省市,或者暑假结束后服务器出现巨大比例不能正常开机现象。为此,信维做了大量调研发现大量二线城市以下学校,教室环境不好(如图1),粉尘,风沙很快积累在服务器内部。(如图2图3)图1图2图3对这些服务器在...

Unity3DGUI:常用控件_weixin_30657999的博客-程序员宅基地

转载于:https://www.cnblogs.com/blog-wzz/p/6283008.html

关于EL表达式中requestScope和param区别,el表达式与jstl标签_盖天力的博客-程序员宅基地

关于EL表达式中requestScope和param区别今天演示EL表达式的时候发现自己jsp的基础实在是薄弱,在这个很简单的问题上迷惑了很久。首先在看遇到的问题:在浏览器地址输入,表示传入一个参数test,值为123http://localhost:8888/Test/index.jsp?test=123在index.jsp中尝试使用EL表达式取出,代码如下:

codeforces 754D. Fedor and coupons(思路)_Gijkstra的博客-程序员宅基地

D. Fedor and couponstime limit per test4 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAll our characters have hobbies. The same is true for Fedor. He enjoys shoppin...

生成随机颜色_iOS开发疯狂者的博客-程序员宅基地_ios 随机颜色

生成随机颜色随机生成RGB,之后利用随机生成的RGB来组成颜色,就可以达到随机颜色的目的-(UIColor *)randomColor{CGFloat R = arc4random_uniform(256) / 255;CGFloat G = arc4random_uniform(256) / 255;CGFloat B = arc4random_uniform(256) / 255;...

随便推点

用python编21点游戏_Python实现21点小游戏_weixin_39928099的博客-程序员宅基地

# 开发者: "Wang"# 开发时间:2019/8/1520:39# 文件名称:twentyonegame.py# 开发工具:PyCharm"""程序功能模块设计:洗牌:将牌进行随机排列发牌:1,初始化发牌,一次发两张2,要牌,一次一张计分:2到10就是正常点数,JQK 都是10, 要考虑A的特殊性胜负判断:比较电脑和玩家手中的分数,并记录是否要牌:继续还是退出:"""# 洗牌函数,shuffl...

Angular2 constructor VS ngOnInit_weixin_30319097的博客-程序员宅基地

constructor和ngOnInit钩子有什么不同?constructorconstructor(构造函数)是ES6类或TypeScript类中的特殊方法,而不是Angular的方法,主要用来做初始化操作,在进行类实例化操作是,会被自动调用。通过constructor方法并不能使我们知道Angular何时完成了组件的初始化工作。仅显示constructor方法:import...

Cookie,会话,令牌_weixin_26722031的博客-程序员宅基地

会话cookieAre you new to web-development, feeling confused with different Web Storage elements? 您是Web开发的新手,对不同的Web存储元素感到困惑吗? If yes, then you are at the right place This article will give you a brief e...

十、shell printf命令:(格式化输出语句)_play_chess_ITmanito的博客-程序员宅基地

printf 命令模仿 C 程序库(library)里的 printf() 程序。 标准所定义,因此使用printf的脚本比使用echo移植性好。 printf 使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。 默认printf不会像 echo 自动添加换行符,我们可以手动添加 \n。和 echo 命令一样,printf 命令也可

《穷爸爸富爸爸》读书笔记_zhaot1993的博客-程序员宅基地

本书总结为一句话: 增加资产,减少负债,不断学习财商知识、商务运作,开公司。(快速学习、判断当下的事是否有效)一富人得到资产,而穷人和中产阶级得到负债。资产就是能把钱放进你口袋里的东西。负债是把钱从你口袋里取走的东西。富人买入资产;穷人只有支出;中产阶级买他们以为是资产的负债。要做个努力工作的雇员,确保你的工作,但要不断构筑你的资产项。一直上班是没有前途,关注自己的事业,而...

XMIND_weixin_30500289的博客-程序员宅基地

引用:http://baike.baidu.com/view/1309078.htmXMIND 是一款非常实用的商业思维导图(Mindmap)软件,应用全球最先进的Eclipse RCP软件架构,全力打造易用、高效的可视化思维软件,强调软件的可扩展、跨平台、稳定性和性能,致力于使用先进的软件技术帮助用户真正意义上提高生产率。查看精彩图册...