嵌入式基于linux电机控制器,基于嵌入式Linux的移动机器人控制系统

使用select机制监控是否语音识别结果,在超出等待时间后,会退出等待并重新初始化语音模块LD3320,释放公共资源,这样也使得系统能够及时响应LD3320的MP3播放功能,避免了在长时间没有语音识别结果时,系统进入卡死状态。本文引用地址:http://www.eepw.com.cn/article/201609/304733.htm

2.5 航向测量

为了使移动机器人能够沿指定的方向行驶并能修正由外界干扰因素产生的航向偏差,系统采用陀螺仪航向测量模块MPU-6050,该模块将其测量的模拟量转换为可输出的数字量,并通过串口发送到S3C2440。系统通过read(fd_uartl,buf,10)函数读取相应串口,得到航向数据

并写入到共享内存区S中。

2.6 超声波测距

本系统采用渡越时间法,超声波测距模块在收到发射控制信号时,换能器将发出40 kHz的连续脉冲信号。接收器的输出高电平时间和距离成正比,同时触发处理器的中断,上升沿中断开启定时器,下降沿关闭定时器,利用处理器内部的定时器1测量出输出信号的高电平的持续时间△T,经过式(1)的计算,可得到检测距离S:

S=V×△T/2 (1)

式中,V为超声波的传播速度,常温下超声波在空气中的传播速度是340 m/s。程序中根据所编写的驱动程序,使用ioctl(fd_chao,SEN D_BEGIN)、ioctl(fd_chao,SEND_STOP)控制GPIO以实现超声波的发射和停止。系统中对某个方向连续测量5次,进行中值滤波并将滤波后数据传递到信息处理进程。

2.7 电机控制

移动平台中采用L298驱动直流减速电机,平台尚未安装速度反馈单元,简化了控制模式。程序通过ioctl()控制L298以实现电机的正反转以及停止操作。

在电机驱动程序中定义了相应GPIO的输入/输出方式:ioctl(fd,TURN_LEFT)中,fd为驱动程序的文件描述符;TURN_LEFT是命令掩码CMD,驱动程序根据命令掩码CMD对相应的GPIO赋值以控制L298的状态。

3 路径规划和避障算法

根据模糊逻辑法,移动平台能够在不确定环境中实现局部路径规划和避障。

3.1 输入输出变量的模糊化

在路径规划过程中,信息分析模块的输入量为移动平台的行驶方向信息、与障碍物之间的相对位移信息;输出量为移动平台的旋转角度和平动位移信息。

①定义移动平台与左侧障碍物的距离为DL、与右侧障碍物的距离为DR、前方障碍物的距离为DF。模糊子集定义为{S,M,B},分别表示小、中、大,相应的距离隶属度函数如图7所示。5f0f0fe0c473683e8e54a7f955eeb14d.png

②定义移动平台和目标点之间夹角为γ,模糊子集定义为{LB,LS,Z,RS,RB},分别表示左大、左小、零、右小和右大。相应的角度隶属度函数如图8所示。aa65cb727acd03d017f7607207e1fafb.png

③移动平台的旋转角度中的模糊子集定义为{TLB,TLS,TZ,TRS,TRB}。分别表示左转大、左转小、不旋转、右转小、右转大,相应的输出隶属度函数如图9所示。

3.2 建立模糊控制规则

在移动机器人远离障碍物或不存在障碍物的情况下,依据移动平台的行驶轨迹,可以先对行驶方向进行调整。当检测到障碍物接近移动平台时,移动平台应改变行驶轨迹,避免发生碰撞。移动平台的部分模糊控制规则如表1所列。

3.3 模糊推理和解模糊化

根据距离隶属度函数,将超声波测量得到的不同方位的距离数据转换为模糊逻辑状态,再查找模糊控制规则,查表得到相应的输出模糊量。

解模糊化是输出模糊量映射到动作行为的过程。模糊控制器对移动平台的动作进行了分解并编码,将复杂的动作分解为一系列简单动作的叠加,使得每一个输出模糊量对应一套动作。

例如在检测到前方有障碍物并确定左转时,可以将机器人动作分解为:后退(左转,即先后退,再左转。这样可以减小机器人触碰到前方障碍物的概率。

4 实验测试

使用menuconfig命令为嵌入式Linux系统内核配置添加相应驱动程序后,进行make编译生产zImage文件。启动移动机器人系统并进入BIOS模式,将配置好的内核通过Supervivi工具烧写到NAND Flash。在系统启动后,配置Linux目录中的/etc/init.d文件,使系统启动后,自动运行所设计的程序。

如果系统初始化正常,将听到由语音模块发出的提示声:“校准完成”。此时,操作人员可以下达“前进”、“后退”或“测距”等设计好的语音指令,机器人将按照操作人员的指令完成相应的动作,还可以通过语音模块播放出测量到的距离。

结语

系统利用了Linux系统支持多任务和可裁剪的特点,结合处理器丰富的接口资源,实现了多方位超声波测距、电机控制等功能,通过对多传感器信息的融合和分析,为模糊逻辑法进行路径规划提供了判断依据。

语音识别功能使得机器人和操作人员之间的人机交互变得更灵活方便。在此基础上,可以利用Linux操作系统强大的网络功能,为进一步研究服务机器人、机器人联网、机器人与机器人通信等提供了一种方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows server 驱动精灵_还在用Windows文件共享?我来教你一键摆脱Windows海量小文件使用和备份的噩梦...

每当我问到客户,“你用什么存储产品作为文件共享?”经常听到的一个答案(自豪滴)是,“文件共享需要存储么?我们用Windows就可以做到。”Windows就是个百宝箱,什么都能往里装,就像你家冰箱一样。众所周知&…

pb 应用 迁移 linux_功能化生物炭应用研究取得系列进展

土壤营养元素流失、重金属污染是当前全球面临的突出环境问题。生物炭因其具有比表面积较大、吸附性能高和成本低等优点而在环境修复领域日益受到广泛关注,被作为水处理吸附剂、土壤修复改良剂广泛应用于农业土壤改良和环境中重金属的修复和钝化。但通常情况下&#…

Java命令行界面(第26部分):CmdOption

由于Tweet,我了解了本系列中第26个基于Java的功能强大的库,该库用于解析命令行参数 。 CmdOption在其GitHub主页上被描述为“一个通过注释配置的,用于Java 5应用程序的简单注释驱动的命令行解析器工具包。” 该项目的副标题是“命令行解析从未…

vector c++ 赋值_面对拷贝赋值时发生的自我赋值的正确态度时接受而不是防止

C.62: Make copy assignment safe for self-assignmentC.62:保证拷贝赋值对自我赋值安全Reason(原因)If x x changes the value of x, people will be surprised and bad errors will occur (often including leaks).如果xx改变了x的值,人们会觉得很奇怪&#xff0…

华为编程规范_华为 Java 编程规范出炉,究竟和官方文档有何不同?

来源:blog.csdn.net/chenleixing/article/details/441739851、引言这个标准是衡量代码本身的缺陷,也是衡量一个研发人员本身的价值。华为作为一家全球化的 IT 公司,十几万员工,无论是人事管理,还是代码管理&#xff0c…

Java命令行界面(第19部分):jClap

本系列中第19篇文章的重点是从Java代码解析命令行参数是jClap ( Java命令行参数解析器 ),不应将它与称为JCLAP的库相混淆,而JCLAP库是我本系列先前文章的重点。 在以前的帖子覆盖JCLAP 1.4加尔斯吉尔温斯坦利( snaq.ne…

Java命令行界面(第22部分):argparser

John Lloyd的argparser是本系列的第二十二篇有关基于Java的命令行参数解析的文章中介绍的库。 该库的主页除了提供单个源代码示例外,还提供了指向基于Javadoc的API文档 ,JAR文件,ZIP文件和TAR文件的链接。 本帖子中使用的示例与本系列的前二十…

如何粗暴地下载huggingface_hub指定数据文件

参考这里: https://huggingface.co/docs/huggingface_hub/guides/download 可见下载单个文件,下载整个仓库文件都是可行的。 这是使用snapshot_download下载的一个例子: https://qq742971636.blog.csdn.net/article/details/135150482 sn…

顺序表输入栈元素c语言,C语言数据结构之栈简单操作

C语言数据结构之栈简单操作实验:编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:(1)初始化顺序栈(2)插入元素(3)删除栈顶元素(4)取栈顶元素(5)遍历顺序栈(6)置空顺序栈分析:栈的顺序存储结构简称…

25q64存储多个数据_一篇文章看懂,存储虚拟化在不同用例中的实践与优势

存储虚拟化是一种对物理存储资源进行抽象的技术,使其看起来像是一个集中的资源。虚拟化掩盖了管理内存、网络、服务器和存储中资源的复杂性。存储虚拟化运行在多个存储设备上,使它们看起来就像一个单一的存储池。这些池化的存储设备可以来自不同的供应商…

android代码画出波浪球,Android绘制波浪曲线,效果很赞的。

github地址:https://github.com/sddyljsx/Android-SurfView-WaveViewpackage neal.canvas;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import and…

Java命令行界面(第14部分):google-options

google-options的GitHub页面指出google-options是“来自Google(java)的人们的命令行参数解析库。” 该页面继续说:“这是Bazel Project中的命令行参数解析器。 com.google.devtools.common.options程序包已拆分为一个单独的jar,用…

android 输入法文本选择功能,Android的文本和输入---创建输入法(一)

输入法编辑器(IME)是让用户输入文本的控件。Android提供了一个可扩展的的输入法的框架,它允许应用程序给用户提供另外的输入法,如软键盘或语音输入。这些输入法一旦安装,用户就可以从系统的设置中选择他们想要使用的IME,并且这个设…

华为mate40RS能升级鸿蒙,mate40Pro和40RS能用上鸿蒙系统吗

[分享交流]mate40Pro和40RS能用上鸿蒙系统吗8886电梯直达huafen210861086新学乍练发表于 2020-12-18 12:30:08来自:HUAWEI Mate 40 Pro最新回复 2020-12-19 09:50:21如题好多人都说不能用上鸿蒙系统林泽徐独步江湖发表于 2020-12-18 12:30:52来自:HUAWEI…

android记事本添加图片功能,安卓手机上有什么便签app既可以写日记又可以添加照片?...

原标题:安卓手机上有什么便签app既可以写日记又可以添加照片?当前,有很多人一直保持着写日记的习惯,因为这样可以及时记录自己的成长轨迹,使得自己可以追寻到时光的记忆,但是我们记录日记的工具&#xff0c…

Java命令行界面(第20部分):JSAP

JSAP ( Java Simple Argument Parser )2.1是本系列文章的第二十篇,重点是处理Java的命令行参数。 JSAP页面描述了该库存在的原因:“我在Internet上找到了几个解析器,所有解析器都处理了开关,但是在解析返回…

小米平板4android软件兼容吗,小米平板4有NFC功能吗 小米平板4支持NFC吗

小米平板4有NFC吗?小米平板4终于在诸多期待之下发布了,总的来说,小米平板4是一款性价比非常高的产品。所以没有带来太多惊喜的地方,但整体表现还是不错的。可以说是目前最便宜的骁龙660智能产品,性能中端。加上小米MIU…

监视器java_Java监视器绑定的超人

监视器java这是超人生活中的黑暗时期。 乔尔艾尔(Jor-El)希望他继续航行,为他的最终命运做好准备。 然而,地球面临着世界末日,正义联盟需要他们的钢铁侠行动来拯救世界。 但是,由于我们只有一个超人&#x…

Java命令行界面(第25部分):JCommando

JCommando 网站 上将JCommando描述为“命令行参数的Java参数解析器”。 JCommando读取XML配置以生成一个Java类,该类处理Java应用程序中的解析。 在提供XML配置的 Java命令行解析库的本系列文章中,以前涵盖的唯一基于Java的库是JSAP ,但这是该…

鸿蒙系统6月可升级,华为鸿蒙2.0系统大规模升级从6月开始?

你现在使用的智能手机是什么,苹果的iPhone手机,华为智能手机,小米手机还是其他智能手机。从操作系统来看目前的智能手机基本上可以分成iPhone手机跟安卓智能手机,其中iPhone手机使用的是iOS系统,而其他智能手机操作系统…