基于视觉控制的足轮两式机器人设计与研究硬件电路与控制系统设计_第1页
基于视觉控制的足轮两式机器人设计与研究硬件电路与控制系统设计_第2页
基于视觉控制的足轮两式机器人设计与研究硬件电路与控制系统设计_第3页
基于视觉控制的足轮两式机器人设计与研究硬件电路与控制系统设计_第4页
基于视觉控制的足轮两式机器人设计与研究硬件电路与控制系统设计_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京理工大学珠海学院2020届本科毕业设计基于视觉控制的足轮两式机器人硬件电路与控制系统设计基于视觉控制的足轮两式机器人硬件电路与控制系统设计 摘 要随着人类社会的进步,人类对自然界的探索范围的不断扩大,人们发明了各种各样的机器人来替代人类去完成一些相对危险的工作或难以解决的问题。其中机器人常用的远距离移动方式有三种,分别是轮式、履带式、足式,并且各有其优缺点。(1)轮式机器人在平坦的道路上可以快速行走,但在相对泥泞与崎岖的复杂地形却难以行进,且其转弯半径大,转弯效率差,灵活性较差。(2)履带式机器人相比于传统轮式机器人,能够在泥泞与崎岖的复杂地形行进,还可以原地转弯,但当其遇到落差较大的障碍

2、时却难以越过。(3)足式机器人可以适应多种复杂地形,尤其是在其跨越障碍方面相对于轮式机器人和履带式机器人有很大的优势。但足式机器人行进速度相对较低,步态行进的稳定性与环境有很大的关系,控制难度大,比较容易侧翻,稳定性能相对较差。本设计一方面根据各种类型机器人的优缺点取长补短,将轮式机器人与足式机器人结合起来制造出能够适应多种地形并且可灵活变换的机器人。这种机器人可根据不同地形灵活变换成不同的形态,取长补短将不同种类的机器人优势发挥出来。例如:在平坦的地形使用轮式形态行进,行进速度快,能源消耗相比较足式机器人要少。但在复杂地形可以使用足式形态行进,灵活性高且越野能力强。另一方面除了配置基础的上位

3、机控制方式之外还搭配了手部识别的视觉控制模式,实现了通过手部的动作变化从而控制机器人的运动方式,提高了本设计的操作多样性。关键词:足轮结合; 数据传输; 上位机; 人机交互Foot wheel two type robot based on vision controlHardware circuit and control system designAbstractWith the progress of human society and the expansion of humans exploration of the natural world, people have invent

4、ed all kinds of robots to replace human beings to complete some relatively dangerous work or difficult problems.Among them, there are three kinds of long-distance moving methods commonly used in robots, which are wheel type, tracked type and foot type, and each has its advantages and disadvantages.1

5、. The wheeled robot can walk quickly on a flat road, but it is difficult to travel in other muddy and rugged complex terrain, with a large turning radius, poor turning efficiency and poor flexibility.2. Compared with traditional wheeled robots, tracked robots can travel in muddy, rough and complex t

6、errain and turn on the spot, but it is difficult to cross when it encounters obstacles with a large drop.3. Foot-type robot can adapt to a variety of complex terrain, especially it has great advantages over wheeled robot and tracked robot in crossing obstacles. However,the walking speed is relativel

7、y low, and the stability of walking has a great relationship with the environment. It is difficult to control, easy to roll over, and the stability is relatively poor.On the one hand, according to the advantages and disadvantages of various types of robots, this design will combine the wheeled robot

8、 and foot robot to produce a robot that can adapt to a variety of terrains and flexibly transform. This kind of robot can be flexibly transformed into different forms according to different terrains to learn from each other and give play to the advantages of different kinds of robots. For example, w

9、hen traveling on flat terrain in the form of wheel, the traveling speed is fast and the energy consumption is less than that of the foot robot. But in the complex terrain can use the foot form to travel, the flexibility is high and the off-road ability is strong. On the other hand, in addition to th

10、e basic control mode of the upper computer, the visual control mode of hand recognition is also used to control the movement mode of the robot through the change of hand movements, which improves the operational diversity of this design.Keywords: Combination of foot wheel; Data transmission; Upper c

11、omputer; The human-computer interaction目录1绪论11.1课题研究背景及意义11.2国外研究情况11.3国内研究现状31.4本设计应解决的主要问题42 数据传输的搭建62.1 WIFI模块选择62.2上位机与ATK-ESP8266连接82.3足式运动方式程序实现92.4底层应用程序设计103 上位机的编写143.1安装PyQt5工具包143.2上位机主循环程序143.3上位机菜单创建153.4上位机滑块条控件配置173.5 上位机按钮与多线程配置193.6图像识别204 硬件系统的搭建234.1主控芯片的选择234.2硬件电源配置244.3驱动方式选择26

12、4.4光耦隔离电路设计274.5晶振电路284.6复位电路与启动模式294.7 JTAG调试接口配置304.8硬件电路确定305总结与展望33谢辞34参考文献35附录36 1绪论随着人类社会的进步,人类对自然界的探索范围的不断扩大,人们发明各种各样的机器人替代人类去完成一些相对危险的工作或难以解决的问题。其中在机器人常用的远距离移动的方式有三种,分别是轮式、履带式、足式,并且各有其优缺点。(1)轮式机器人在平坦的道路上可以快速行走,但是在相对泥泞,崎岖的复杂地形却难以行进,且其转弯半径大,转弯效率差,灵活性较差。(2)履带式机器人相比于传统轮式机器人,能够在泥泞,崎岖的复杂地形行进,还可原地转

13、弯,但当履带式机器人遇到落差较大的障碍时却难以越过。(3) 足式机器人可以在各种复杂地形上行走,尤其是在其跨越障碍方面相对于轮式机器人和履带式机器人有着很大的优势。但足式机器人行进速度相对较低,步态行进的稳定性与环境有很大的关系,控制难度大,比较容易侧翻,稳定性能相对较差。1.1课题研究背景及意义相比于足式结构,轮式和履带式机器的技术更成熟。履带式机器在大型机器上比较常用比如坦克、挖掘机等等。轮式机器则更常见如汽车就是典型的轮式结构的机器。在人类历史发展的进程中,单纯的轮式或履带式机器的技术已经是非常成熟了。足式机器相对于轮式和履带式的结构则是更加复杂,控制也相对困难。但随着如今控制系统的成熟

14、与芯片运算速度的提升,足式机器人在现代的研究中已取得的巨大的发展。特别是以美国波士顿公司为代表的四足机器人研究在国内外取得了重大突破,进一步掀起了人类对足式机器的研究热潮。本设计一方面根据各种类型机器人的优缺点取长补短,将轮式机器人与足式机器人结合起来制造出能够适应多种地形并且可灵活变换的机器人。这种机器人可根据不同地形灵活变换成不同的形态,取长补短将不同种类的机器人优势发挥出来。例如:在平坦的地形使用轮式形态行进,行进速度快,能源消耗相比较足式机器人要少。但在复杂地形可以使用足式形态行进,灵活性高且越野能力强。另一方面除了配置基础的上位机控制方式之外还搭配了手部识别的视觉控制模式,实现了通过

15、手部的动作变化从而控制机器人的运动方式,提高了本设计的操作多样性。1.2国外研究情况足式机器人机构设计和控制算法研究在国外一直都受到了广泛的关注,特别是在发达的国家中机器人已经有数十年的发展,技术已经逐渐成熟成为一种标准设备被工业界广泛应用 孙英飞,罗爱华,我国工业机器人发展研究.科学技术与工程.2012.12。其中以1992年成立的波士顿公司最具代表。2005年由波士顿公司设计的第一台名为BigDog的机器人问世(如图1-1所示)。机器人BigDog是为了满足美国军方士兵在作战时减少体力消耗和单兵作战时提高运送物资能力而设计的一款复杂地形机器人,以液压为驱动系统跟随士兵行军,最高行进速度可达

16、6.4公里每小时。BigDog机器人最令人惊叹的是其控制算法的的研究,波士顿公司为机器人BigDog所设计的控制的系统可以实现对周围环境的感知,行走时可自主进行规划路径。波士顿公司在2005年所设计的BigDog机器人控制算法在当前机器人领域上也是较难实现的。虽然由于BigDog噪音太大会影响军队行动隐秘性所被军方抛弃,但是BigDog机器人的成功研发却带动了多个国家对足式结构机器人的研究。2017年波士顿公司又推出了轮腿结合机构的机器人Hendle (如图1-2),该足轮结合方式可以使机器人的行进速度达到9英里/小时并可垂直跳跃高达122厘米。机器人足轮结合方式非常完美地解决了单纯的足式结构

17、在平坦的道路上运动时的能耗大、动力效用低等问题。Hendle机器人通过强大的平衡算法实现了快速加速和制动、运动过程中转弯和原地的高速转弯;单轮过斜坡,姿态保持稳定;搬运货物;快速下台阶;室外雪地滑行;弹跳等各种功能。 图1-1 机器人BigDog 图1-2 机器人Hendle日本对于机器人研究起步较早,如今日本对于机器人技术方面的研究在世界范围内也是处于领先地位。早在1985年日本研究所MAKOTO就设计出了名为MELWALK的机器人(如图1-3)。MELWALK的足式结构模拟昆虫关节的腿部机构一共有8个自由度,其中的6个自由度用于适应地形,一个自由度用于转弯,一个自由度用于驱动机器人向前运动

18、。1996年日本的HONDA公司推出了第一台可自主控制行走的双足机器人P2(如图1-4)。P2机器人足部装配了压力传感器采用连杆结构,可以实现推车,上下台阶等基本功能。在实验里的机器人尺寸普遍较大,不利于商用。在实验室机器人研究取得进展后各个研究机构开始研究小型机器人,小型机器人相比于大型机器人具有成本小、重量低、便于生产与商业等优势。小型机器人以2000年索尼推出的智能机器狗Aibo(如图1-5)最具代表。Aibo机器人拥有20个关节和20个自由度,全身搭载多个彩色LED灯光和触觉传感器可用于反映情感和与人类交互反馈。索尼公司专门为机器人Aibo开发了一个名为“Aibo生活”的应用软件,“A

19、ibo生活”可以使机器人Aibo拥有自主学习能力,可以自主决定自己的动作与行为,还可以让Aibo机器人与主人交互中学习主人的行为特征与动作。 图1-3 机器人MELWALK 图1-4 机器人P2 图1-5 机器人Aibo1.3国内研究现状我国国内对于足式机器人的记载可以追溯到三国时期的运载粮食的“木牛流马”,但由于历史久远,我们无法得知“木牛流马”的具体结构 宋康康 可实现跳跃功能的四足机器人单腿结构设计与运动建模分析 郑州轻工业学院 2018.06。但是由于当时年代技术的限制,“木牛流马”只是纯机械结构并没有由控制系统控制。近代以来,我国对于足式机器逐渐展开了研究,1997年由上海交通大学研

20、究院设计了JTUWM2型全方位四足机器人(如图1-6所示),该机器人采用缩放式腿部机构,每条腿都由伺服电机控制,分别有3 个自由度,每个自由度都由电位器检测。JTUWM2型机器人每条腿足底都装有开关型触觉传感器用来检测腿的着地状况。机体上还装有姿态传感器用来检测机体的倾斜角度 马培荪,马烈全方位四足步行机器人JTUWM转弯步态控制的研究 上海交通大学学报1995,(05):87-92,JTUWM2型机器人运动时极限步速可达1.7km/h,该机器人是目前足式机器人的经典结构。2011年山东大学开启了属于中国的“BigDog”863项目,开发了一种由液压驱动的高性能四足仿生机器人 方珂汇 四足机器

21、人机构设计杭州电子科技大学 2015.10(图1-7)。2013年上海交通大学机械与动力工程学院高峰教授带领团队研制六足仿生机器人“六爪章鱼”救援机器人进行了载人试验(图1-8) 张世锦 基于ARM的六足机器人控制系统设计 江苏科技大学 2015.10。台湾大学林沛群教授参考动物在自然世界行走方式设计出了miniRHex机器人(图1-9)。miniRHex机器人采用足轮结合的方式行走,该独特的运动方式可以适应大多数的自然环境地形 张婷婷 基于ARM和CPLD的四足机器人嵌入式控制器硬件平台设计 武汉科技大学 2009.5。 图1-6 JTUWM2机器人 图1-7山东大学 四足机器人 图1-8

22、“六爪章鱼”机器人 图1-9 miniRHex机器人1.4本设计应解决的主要问题我们分析的国内外各个研究所对于足式机器人的研究的成果与问题,其当中主要存在4个问题需要解决:(1)足式机器虽然在可以在各种复杂的环境中运动,但是在相对平坦的平面内,足式机器的转弯灵活度或者运动速度都比不上轮式机器。(2)足式机器的结构相对于轮式机器更加复杂,体型也大较。足式机器在能量消耗上要更多但负载能力明显低于轮式机器。(3)足式机器想要实现稳定的运动,需要采集和处理的数据要更多其中包括对机器姿态与各个腿之间自由度的控制,所以足式机器对控制系统及芯片对数据处理要求更高。(4)由于目前足式机器人结构复杂,对数据处理

23、芯片要求要高,所以导致了足式机器的成本较高,很多在实验室的足式机器都无常实现商用。所以对于以上问题,我们小组对机器人进行了以下方面的改进:(1)采用足轮结合结构,在相对平坦的地面我们使用轮式结构,在崎岖不平和地形不规则的环境中改变机器运动方式使用足式结构运动。(2)为了降低成本,提高商用价值,我们通过数据传输方式使机器人的数据处理在有高性能的终端上完成,底层机器人端我们采用处理能力相对低的芯片,通过数据传输使底层芯片完成对机器人的舵机控制。(3)为了有更好的用户体验,我们通过基于PyQt5设计了上位机实现人机交互。(4)为增加可操作性,采用上位机与图像识别结合方式,用户可根据需求选择两种不同控

24、制机器人的方式。(5)为了使用机器更简洁,基于Altium Designer设计集成电路。本机器人总设计方案如图1-10。图1-10 总设计方案2 数据传输的搭建我们小组选择的数据传输方式是WIFI。WIFI无线通讯技术就是利用电磁波在空中传播面进行数据交互的通讯方式 汪体成 基于WiFi技术的多功能智能家居设备研究与实现 武汉大学2018.5。由于无线通讯不需要电线连接且连接速度快,使用方便,受到人们的重视。无线技术一直在飞速发展,如今无线通讯技术已经非常成熟了。无线通讯技术种类繁多,常见的无线通讯有WIFI、RFID、蓝牙等。这个三种无线通讯技术性能对比如表2-1。WIFI基于IEEE80

25、2.11b协议的一种无线传输的技术,信号有稳定,传输速度快,覆盖范围广,组网方便等特点,相对于4G通讯或以太网通讯更方便,成本较低。更主要是由于无线网络技术发展成熟如今的手提电脑,手机,平板电脑都配置了WIFI。所以本设计选择WIFI作为机器人数据传输方式。 表2-1 无线通讯技术性能对比 2.1 WIFI模块选择WIFI芯片根据驱动方式的不同可分为两大类,其中一类是需要主控单元直接驱动控制,这种集成MAC层与物理层,并内嵌CPU和内存,这种方式对主控单元有着较高要求,开发难度高。另一类是将芯片模块化 邢孝龙 基于网络监控的大功率直流电源研究 辽宁工业大学 2018.12,通过处理器使用常用的

26、数据接口与WIFI模块进入通讯,这种开发模式效率更高,开发成本低。第二种开发模式是市场上最常用的开发方式。本设计选用的WIFI模块型号的为ATK-ESP8266,其原理图为(图2-1)。该WIFI模块通过串口与微控制单元MCU通信。由于ATK-ESP8266WIFI模块的TCP协议栈使其可以使WIFI与串口两者之间的进行数据的传输。该WIFI模块可以设置两种不同的工作模式:(1)无线访问接入点(AP)模式,该模式的工作方式是将该模块设置为WIFI热点然后通过手机或电脑连接上对应的WIFI热点,无线接入点AP模式是实现局域网无线控制典型的应用方式。AP模式不需要访问互联网就可以实现数据发送和接收

27、。不足点是该模式有距离的限制,在空旷的空间里该模式的连接距离最远为200米,当距离大于200米时数据传输会不稳定甚至无法连接上设备。(2)STA站点模式,由WIFI模块通过路由器连接到互联网,然后再来通过移动互联网端如手机,平板电脑访问通过访问互联网进而连接到WIFI模块,最终实现对设备发送和接收数据。STA模式的优势是通过互联网实现对设备的控制,控制距离远。不足点是一定需要联网,有一些比较落后的地区,或者网络站点还无法覆盖的地区则无法进行数据传输。因为数据通讯经过了互联网会产生数据接收的延时,所以如果对数据接收时效性要求比较高的设计不太适合使用该模式。ATK-ESP8266模块的核心处理器为

28、ESP8266 EX,ESP8266EX结构如图2-1所示其主频支持 80 MHz和160 MHz,集成了32 位微型 MCU。 图2-1 ATK-ESP8266 原理图 图2-2 ESP8266EX 结构如图本设计选用的是串口无线 WIFI AP 模式。其具体操作步骤为将模块的工作模式设置为无线 WIFI 热点,然后通过电脑或者手机等设备连接到该模块设置的WIFI 热点,最后实现设备之间的无线数据转换互传功能。这其中ATK_ESP8266 模块还可以设置3个子模块,1、UDP数据报协议,使用UDP模式则不需要建立连接便可发送数据。 2、TCP客户端模式。3、TCP用户端模式。配置TCP客户端

29、模式核心指令如表2-2所示。TCP中文名为传输控制协议(英语:Transmission Control Protocol),TCP协议的运行可划分为三个阶段:连接创建(connection establishment)、数据传送(data transfer)和连接终止(connection termination)。在TCP的数据传送状态,很多重要的机制保证了TCP的可靠性。它们包括:使用序号,对收到的TCP报文段进行排序以及检测重复的数据;使用校验和检测报文段的错误,即无错传输,使用确认和计时器来检测和纠正丢包或延时 华镕 透明就绪的功能实现 一自动化博览2006,(02):27-29。本设

30、计通过使用ATK_ESP8266 模块设置为AP模式,机器人端配置TCP服务端模式,设置连接端口为8086。然后通过电脑连接到ATK_ESP8266 模块设置的WiFi热点。然后在基于PyQt5编写的上位机上设置连接对应模块的IP地址为192.168.1.125,设置连接端口为8086,作为TCP客户端连接由ATK_ESP8266 模块设置的服务端。表2-2 TCP客户端模式核心指令2.2上位机与ATK-ESP8266连接为了使上位机可以顺利访问TCP/IP程序中调用了Socket通信。TCP/IP协议实际上就是在物理网上的一组完整的网络协议 周培 基于Socket 的即时通信系统的研究与实现

31、 湖南大学 2010.10。Socket又称套接字,是一种应用程序访问通信协议。应用程序通常通过套接字向网络发出请求或者应答网络请求使主机间或者一台计算机上的进程间可以通讯。要完成socket通信的搭建一般由于5个部分组成:分别为:协议、本地地址、本地端口号、远地地址、远地端口号 徐朋 基于SOCKET的跨平台通讯系统的研究与设计 大连理工大学 2015。Socket 基本通信工作流程如图2-3所示。其中作为客户端连接方式,首先用建立一个套接字socket(),然后调用方法connect()打开传输控制协议,然后连接上服务端的提供的IP地址与端口port就可以发送到数据服务端。最后完成数据传输

32、后调用socket内的close()关闭套接字。图2-3 Socke通信工作流程Socket 通信重要的一个语句是socket.socket(family, type, proto),这个函数是用来创建套接字。主动初始化TCP服务器连接:socket.socket.connect (host,port),其中host是连接的地址为192.168.1.125,port是要连接的端口为8086。通过socket.socket.send()将字符串上的数据发送到已连接上的服务端,socket.socket.s.recv()用来接收TCP返回数据,返回的数据类型也是字符类型。Socoket客户端测试程

33、序如下:import socketimport syss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)host=%s.%s.%s.%s%(192,168,4,1)port =8086s.connect(host,port)msg=测试sockets.send(msg.encode(ascii)s.close()2.3足式运动方式程序实现足式运动方式相对于轮式运动更复杂。本设计足式运动一共使用了12个舵机,如何使12个舵机之间合理配合是实现足式运动最关键步骤之一。本设计选择解决方法为:先通过算法计算本机器人运动时每个舵机之间角度的配合,在

34、完成每个运动周期记录12个舵机每个节点角度的变化(表2-3),记录在excel表格内。通过上位机访问excel表格数据,通过Socket发送给ARM芯片。ARM芯片通过每次接收到的舵机角度数据,通过调节引脚输出的PWM来控制舵机。这种设计方式可以减少ARM对于舵机运动算法的计算量。上位机程序实现如下:data=xlrd.open_workbook(D:/picture/excel2.xlsx)table = data.sheets()0b1=1while runing=1and mode=2: a1 = str(int(table.cell(b1,1).value) a2 = str(int(

35、table.cell(b1,2).value) a3 = str(int(table.cell(b1,3).value) a4 = str(int(table.cell(b1,4).value) a5 = str(int(table.cell(b1,5).value) a6 = str(int(table.cell(b1,6).value) a7 = str(int(table.cell(b1,7).value) a8 = str(int(table.cell(b1,8).value) a9 = str(int(table.cell(b1,9).value) a10 = str(int(tab

36、le.cell(b1,10).value) a11 = str(int(table.cell(b1,11).value) a12 = str(int(table.cell(b1,12).value) a13=str(4) msg=aa%sk%sk%sk%sk%sk%sk%sk%sk%sk%sk%sk%sk%skk%(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) if connection=True: s.send(msg.encode(ascii) time.sleep(0.5) if b1=142: b1=1 print(a2)b1=b1+1表2-3

37、 足式运动舵机角度变化表2.4底层应用程序设计在配置ATK_ESP8266时,ATK-ESP8266 模块采用串口通信,本设计采用的是STM32f103ZET6的3号串口与ATK-ESP8266 模块进行数据互传。STM32的3号串口初始化程序如下:void usart3_init(u32 bound) NVIC_InitTypeDef NVIC_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph

38、_GPIOB, ENABLE);/ GPIOB时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); /串口3时钟使能 USART_DeInit(USART3); /复位串口3 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; /PB10 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/复用推挽输出 GPIO_Init(GPIOB, &GPIO_InitSt

39、ructure); /初始化PB10GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;/浮空输入 GPIO_Init(GPIOB, &GPIO_InitStructure); /初始化PB11USART_InitStructure.USART_BaudRate = bound;/波特率一般设置为9600;USART_InitStructure.USART_WordLength = USART_WordLength_8b;/字长为8位数据格式USART_In

40、itStructure.USART_StopBits = USART_StopBits_1;/一个停止位USART_InitStructure.USART_Parity = USART_Parity_No;/无奇偶校验位USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;/无硬件数据流控制USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;/收发模式USART_Init(USART3, &USART_InitStru

41、cture); /初始化串口3USART_Cmd(USART3, ENABLE); /使能串口 /使能接收中断 USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);/开启中断 /设置中断优先级NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;/抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;/子优先级3NVIC_InitStructu

42、re.NVIC_IRQChannelCmd = ENABLE;/IRQ通道使能NVIC_Init(&NVIC_InitStructure);/根据指定的参数初始化VIC寄存器TIM7_Int_Init(1000-1,7200-1);/10ms中断USART3_RX_STA=0;/清零TIM_Cmd(TIM7,DISABLE);/关闭定时器7当ATK_ESP8266接收到数据时,会把数据发送到单片机串口3上。串口3接收数据进行分析处理,当判断连续存在两个字符a时开始采集数据。a1为1号舵机需要旋转的角度。if(USART3_RX_STA&0X8000)/接收到一次数据了 rlen=USART3_

43、RX_STA&0X7FFF;/得到本次接收到的数据长度USART3_RX_BUFrlen=0;/添加结束符 printf(%s,USART3_RX_BUF);/发送到串口 sprintf(char*)p,收到%d字节,内容如下,rlen);/接收到的字节数 LCD_Fill(30+54,115,239,130,WHITE);POINT_COLOR=BRED;Show_Str(30+54,115,156,12,p,12,0); /显示接收到的数据长度POINT_COLOR=BLUE;LCD_Fill(30,130,239,319,WHITE);Show_Str(30,130,180,190,US

44、ART3_RX_BUF,12,0);/显示接收到的数据 aa=0;for(bit=5;bit=10;bit+)Int a1=0; if(USART3_RX_BUFbit-1=a&USART3_RX_BUFbit-2=a)for(;USART3_RX_BUFbit!=k;bit+)a1=a1*10+(USART3_RX_BUFbit-0); /将字符转换为数字break;最后计算旋转角度a1,引脚输出PWM 高电频时间与舵机旋转角度关系如图2-4。机器人选用可以旋转270度角度的舵机,当输入PWM高电频时间为0.5ms时舵机的角度为0度,当输入PWM高电频时间为2ms时舵机的角度达到最大为270

45、度。编写函数程序,最后测试舵机可以准确旋转到上位机所发送角度的位置如图2-5、2-6。 图2-4 输入PWM与舵机角度关系 图2-5 舵机旋转79度 图2-6 舵机旋转163度3 上位机的编写上位机是为提供人机交互而且创建的一个GUI应用程序,本设计可以在PC端通过上位机发送数据给底层ARM芯片。创建GUI应用程序,PyQt5是个非常不错的选择。PyQt是QT为Python专门提供的GUI扩展,Python作为脚本语言起初并不具备GUI工具,但由于Python语法简单且上手容易,由于面向对象特性可以轻松制作各种工具模块。经过近30年的发展,Python已然发展成为现代最受欢迎的编程语言之一。Q

46、t是由挪威公司于1995年推出C+图形用户界面应用程序开发框架。QT具有非常丰富的c+类库,是如今开发用户界面最主流的工具。PyQt5是拥有近620个类和6000个方法及函数的python模块集。而且PyQt5应用在windows 、Mac OS、linux这三个常见操作系统上。3.1安装PyQt5工具包最简单的安装PyQt5工具包是使用Python自带的(Python-pip)进行安装。Python-pip提供了对Python内各种类型包的下载、安装与卸载的功能。在Python官方网站下载的Python版本都会自带安装包管理工具(Python-pip)。Python-pip也可以使用Pyth

47、on脚本语言进行安装(输入$ sudo python3 get-pip.py)。所以在确定安装了Python pip 工具后,在Windows系统中通过快捷键(Win+R)运行对话框,输入 pip install pyqt5(图3-1)就可以完成安装。 图3-1 通过window对话框安装python包管理工具3.2上位机主循环程序在使用PyQt5程序之前需要先导入要使用到的PyQt5模块,方法如下:from PyQt5.QtWidgets import*from PyQt5.QtGui import*from PytCore import*主循环部分采用面向对象的编程方式。首先创建一个继承于

48、QMainWindow类的调用,再使用initUI()方法创建一个上位机交互界面,开启主循环。程序如下:class Example(QMainWindow): def _init_(self): super()._init_() #使用_init_()方法是构造器的一个方法 self.initUI() def initUI(self):self.setGeometry(400,300,900,600) #设置界面位置和大小, 从屏幕上(400,300)位置开始显示一个900*600(宽900,高600)的界面self.setWindowTitle(足轮两式机器人上位机) #给窗口添加了一个标题

49、标题栏展示self.show() #让控件在桌面上显示出来。在内存里创建,之后才能在显示器上显示出来。if _name_ = _main_: app = QApplication(sys.argv) app.setWindowIcon(QIcon(D:/data/python/images/a1.ico) ex = Example() sys.exit(app.exec_()3.3上位机菜单创建本设计菜单栏是用来选择配置Socket通信中的IP地址与端口,PyQt5 中有的一个QAction类是专门用来设置用户界面的菜单工具栏。QAction类可以用来配置菜单栏中的图标、文本、状态文本、快捷键

50、等等。对Action(IP)关联的内容进行设计,IP = QAction(192.148.4.1, self, checkable=True)其效果为当鼠标点击IP地址菜单时,其菜单下会显示连接的IP地址为192.148.4.1,通过triggered.connect(self.toggleMenu)方法进行事件连接,当点击IP按钮是会触发函数toggleMenu()。(效果如图3-2所示)菜单栏程序设计如下: 函数toggleMenu()为配置连接IP地址host=192,168,4,1函数toggleMenu2()为配置连接端口 port=8086函数toggleMenu3()为进入TCP

51、 客户端连接IP = QAction(192.148.4.1, self, checkable=True) # checkable=True会因为鼠标点击是保持状态。IP.setStatusTip(选择的IP地址)IP.setChecked(False)IP.triggered.connect(self.toggleMenu) #传递按钮参数方式port = QAction(8086, self, checkable=True)port.setStatusTip(选择的端口)port.setChecked(False)port.triggered.connect(self.toggleMenu

52、2)mode = QAction(开始连接, self, checkable=True)mode.setChecked(False)mode.triggered.connect(self.toggleMenu3)def toggleMenu(self, state): #配置连接IP地址host=192,168,4,1 global host if state: self.statusbar.show() self.statusbar.showMessage(连接的IP地址为192.148.4.1) host=%s.%s.%s.%s%(192,168,4,1)else: self.status

53、bar.hide()def toggleMenu2(self, state): #配置连接端口 port=8086 global port if state: self.statusbar.show() self.statusbar.showMessage(连接端口为8086) port =8086 print(port) else: self.statusbar.hide()def toggleMenu3(self, state): #进入TCP 客户端连接 global s,connection s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) if state: self.statusbar.show() print(port) print(host) s.connect(host,port) msg=测试通讯 s.send(msg.encode(ascii) self.statusbar.showMessage(连接成功) connection=True print(connection) else: self.statusbar.h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论