机器人制作开源方案 | 清洁机器人

news2024/11/26 20:42:01

作者:胡志宇、白永康、颉志国、刘昭迅、王维浩

单位:北京石油化工学院

指导老师:陈亚、王殿军

1. 设计方案论证

1.1 清洁机器人方案选择

      目前,市场上清洁机器人比比皆是,各大品牌之间的竞争也相当激烈,每个厂商都想制作出更吸引人眼球、功能齐全、覆盖率广且价格实惠的机器人。随着科学技术的不断更进,能够自主吸尘和拖地的机器人已经出现,在全国机械及机器人设计大赛上也纷纷涌出很多兴趣爱好者们对清洁机器人研发及制作的作品。值得一提的是,这些大学生们所设计的作品,不仅有着高水平的创新意义,在技术方面也不亚于生产领域的工程师们,相信不少产品投放市场的机会指日可待。本次课题“清洁机器人设计”范围广泛,本着多个方案择优选择的原则对本次课题进行方案的选择。

      方案一:吸尘+净化空气

      当今市场的吸尘机器人技术和功能都相当成熟,要想在现有的基础上实现创新的价值,要么增加或改变功能,要么对该领域所存在的技术缺陷进行改善。对于后者来说,实现起来相当困难,不仅是因为自己的相关技术知识有限,更是对高科技的一种敬畏。于是,初步的设想是在原有吸尘器的基础上添加净化空气的装置,在机器人实现扫地功能的同时对室内空气质量也做了改善。

      方案二:外观似昆虫(有触角和尾巴),用触角吸尘,用尾巴拖地

      搜寻资料时,发现一款清洁机器人带有两个长长的触角,后边还有一个长尾巴,形状像极了昆虫。对于它的介绍很少,用两个长长的触角吸尘,后边的尾巴上携带了一个长方形的毛刷,用来拖地。于是,想仿照这个样子,做出一个雷同的可以吸尘和拖地的清洁机器人。

      方案三:吸尘+拖地(带水箱)

      此方案也是吸尘和拖地并用功能,带有水箱装置,可以自动给拖布供水。为了达到更好的拖地效果,需要增大拖布与地面之间的摩擦力,此方案将吸尘口设置在驱动轮和拖布之间,利用真空吸尘产生的负压使拖布对地面的摩擦力增大,拖地效果更好。

      综上所述,对于三种方案,肯定都存在着不足之处,但都是朝着创新方向进行设计。针对家庭清洁机器人来说,相比较之下,方案三更贴近主题,更能替辛勤的人们减轻家务负担。

1.2 清洁机器人方案分析

      由于本项目的范围定位在地面清洁,对于以上三种方案进行各方面的对比与性能分析。

     方案一:吸尘是地面清洁机器人所必备的功能,安装净化装置测量空气指数,来达到净化空气的目的,它在某种意义上实现了清洁机器人的创新,但是,从地面清洁的程度来说,它简化了清洁的力度,降低了清洁效果。一个全新的清洁机器人设计,只有吸尘是不够的,所以此方案不是很完善。

      方案二:在技术方面不知如何创新时,初步的设想是选择从外观方面入手,做一个外观漂亮,功能有吸尘,有拖地的机器人。如下图所示:两个长长的触角,一对眼睛用来探测障碍物,后面像个尾巴连着拖地刷。这种方案的优点是能够很好的清洁角落,可以吸尘和拖地。缺点是触角也能影响它的清洁域,此方案结构看似简单,实际做起来很难。若想实现吸尘、拖地功能,程序会很复杂。这是一个理想化的清洁机器人,不易于实现。

带触角清洁机器人

      方案三:考虑到本项目着重突出地面清洁,能将地面清洁的越干净越好。所以设想能够吸尘和拖地,拖地更需要智能化。市场上的清洁机器人有带水箱的,由于拖布与地面的摩擦力小,但是拖地效果都一般。为了解决此方案的问题,将吸尘口布置在驱动轮与拖布之间,利用吸尘产生的真空负压增大拖布与地面的摩擦力,从而增强了拖地效果。

      水箱模块最初的设想为开放式塑料水箱,水箱需要密封,应该增加箱盖,水箱需要加水,箱盖是可开启式的。水箱需要向拖布注水,增加导管和阀门,阀门自动开启关闭,应该用电磁阀或电机驱动开闭。这种传统的思维最终结果是导致水箱结构非常复杂,难以加工且成本很高。体积较大的水箱也增加了清洁机器人的高度。

      用注射器代替水箱的方案。注射器容量大,自带密封胶圈,加水也容易,不出水时不会渗漏。但是其原本长度就比较长,当活塞拉出后长度会更长,难以安装在清洁机器人上,最终这一方案也被舍弃。

1.3 清洁机器人方案确定

      根据以上对三种方案的分析,最终选择第三种方案。由两个驱动轮组成移动机构,便于机器人更灵活的行走;机体前端和两侧安装三个红外传感器,控制机器人对障碍物、楼梯或者墙壁的检测,防止碰撞;清扫机构的旋转刷安装在驱动轮前方,由旋转刷清扫灰尘,进入吸尘口吸入垃圾箱;拖布设计在吸尘口的下端部位,且自带水箱给拖布供水,水箱设计为可以按压的微型水箱,利用四杆机构原理按压出水。此设计将吸尘口放置在驱动轮和拖布之间,利用真空吸尘产生的负压使拖布对地面的摩擦力增大,拖地效果更好。

      本次设计的清洁机器人能够实现以下几种功能:

      清扫功能:在行走过程中,由旋转刷将灰尘扫起,后置的吸尘器吸走灰尘,将灰尘放于垃圾盒中。

      拖地功能:由水箱持续往拖布上供水,依靠清洁布与地面的摩擦达到彻底清洁灰尘的效果。

      红外避障功能:在一定范围内,如果没有障碍物,发射出去的红外线,因为传播距离越远而逐渐减弱,最后消失。如果有障碍物,红外线遇到障碍物,被反射到达传感器接收头。

2. 清洁机器人机械结构

      本项目根据“探索者”机器人模块化平台,对清洁机器人进行机械结构的设计和搭建提出如下要求:

      ① 基于“探索者”套件制作,不允许损坏套件设备。具体包括不允许对零件进行胶粘、焊接、铆接、切割、打磨、钻孔、折弯等加工,只允许使用套件提供的螺丝螺母作为紧固件和受力部件,并且不允许使用螺丝胶。

      ② 能够实现扫地、吸尘、拖地功能。

      ③ 为拖布设计合适的润湿机构,能够储水且不能出现渗漏。设计一种控制机构将水均匀地润湿拖布,并且易于控制出水量。

      ④ 通过分析传统清洁机器人结构,针对拖地不干净的现象,提出解决方案并验证理论可行性。

2.1 清洁机器人移动机构

2.1.1 移动机构的设计

      地面移动机器人可采用的移动机构主要有三种形式:车轮式移动机构,履带式移动机构和腿足步行机构。清洁机器人工作环境是室内,采用轮式移动机构非常适合室内地面环境的特点,而且轮式移动机构和其它移动机构相比较,在平坦地面上移动快速灵活,控制相对简单容易。两个驱动轮是由电机驱动,可以整周旋转。

2.1.2 移动机构的电机选型

      初步估计机器人的总重量m=1kg,取g=9.8N/kg

则分配到每个轮子上的载荷为:

由电子称测出机器人吸尘时的重力约为340g,即0.34kg。机器人拖地时拖布对地面的压力为F1:

清洁机器人在优质路面上行走,取

滚动摩擦阻力:

滑动摩擦阻力:

取轮子直径为:D=65mm   d=32.5mm

则轮子在行走过程中所受的阻力矩(扭矩)为(取滑动摩擦阻力):

初步预算清洁机器人的行驶速度V=100mm/s

则车轮每转360°清洁机器人行驶的距离为:

由此可得车轮转360°的时间为:

那么车轮的转速为2s/r,即2s/360°=0.33s/60°

经过计算驱动轮的电机选择圆周舵机,它的参数如下表所示:

选此型号舵机合适。圆周舵机如下图所示:

圆周舵机

2.2 清洁机器人清扫机构

2.2.1 清扫刷的设计

      本项目所制作的清洁机器人带有清扫机构,传统机器人通常采用水平旋转刷清洁地面。考虑到制作成本、工具方面的限制,本文采用圆柱刷代替圆刷。圆柱刷使用金属主轴,刚性好,不易变形。两端采用尼龙架支承,高度可调,并且可以大大缩短制作时间。这种刷子清扫的力度大,效果佳。

      该机构利用电机直接驱动旋转刷的钢丝,在机器人运动的过程中,使旋转刷将垃圾灰尘扫入机器人机体下面,由吸尘系统收集。利用附壁效应形成低压涡流气体,将灰尘截留在吸尘盒中。

2.2.2 清扫机构的电机选型

      刷子的旋转速度只要达到3r/s就可以实现清扫目的,并把垃圾扫到吸尘口处。采用电机直接驱动旋转刷工作,选用直流电机(仅A3003)。直流电机的参数如表2即可满足要求。

电机如下图所示:

直流电机

2.3 清洁机器人的吸尘机构

2.3.1 吸尘盒的设计

      吸尘盒不但要求能够吸入灰尘,而且在断电后不能使灰尘漏出。本文采用薄壁聚乙烯方盒作为吸尘盒,内部使用挡板分隔灰尘,保证断电后不造成二次污染。如下图所示,它的优点是造价便宜,盒子透明,容易看出吸进的灰尘量。缺点是吸尘盒固定于机架,灰尘不易取出,必须通过拆卸吸尘盒来去除。

吸尘盒

2.3.2 吸尘电机的选型

      吸尘器的工作原理,是利用电动机的高速旋转带动叶轮旋转,形成真空空吸,将地面上的灰尘和杂质吸进垃圾储存箱。基本要求是转速高,工作电压低,转矩一般大小就行,噪音小,尺寸小,便于安装,适应长时间工作。叶轮采用7叶叶轮,与传统的轴流风机叶轮相比,奇数片叶轮可以有效减少共振,每只叶轮均经过动平衡处理,震动更小,吸力和转速也因此得到提升。叶轮材质为高强度铝合金,可以承受极高的转速而不发生解体。叶轮如下图所示:

综上选择SP-MD370电机,测试电压为8V,负载转速为19300rpm,最大功率为64W。符合要求,电机如下图所示:

2.4 清洁机器人的拖地机构

2.4.1 水箱的设计

      利用现有的工业成品来制作。虽然购买成品比使用原材料自己搭建更昂贵,但实际上由于工业生产的批量化,很多产品买一个新的比自己做更便宜,而且可以节省时间。这里采用微型喷水瓶作为水箱的替代部件,如下图所示:

微型水箱

      微型喷水瓶使用活塞原理,当活塞被按下时,气压将内部的液体喷出,喷雾均匀,体积小,易操作,不喷水时活塞和气压共同密封内部液体,不会渗漏。

2.4.2 水箱喷水设计

      为了实现软件控制喷水器,需要制作一套四杆机构按压喷水器。采用电机作为喷水器的控制部件,通过水箱自动喷水给拖布供水进行拖地。

      四杆机构设计:

      首先对微型水箱进行分析,从水箱的按压口开始计算,到挤压出水的距离为6mm。所以,需要设计四杆机构装置来完成喷水过程。

      根据微型水箱的高度定义,四杆机构的机架长度为40mm;曲柄的长度为12mm;另一曲柄的长度也为12mm;连杆的长度为40mm;机构的最长杆与最短杆的长度之和为40+12=52mm,其余两杆的长度之和为40+12=52mm,根据四杆机构的基本性质,最短杆和最长杆之和等于其余两杆之和,且是平行四边形为双曲柄机构。

四杆机构原理图

       此机构的旋转角度为60°就可以达到挤压水箱的有效行程,当b、d两杆旋转60°时,b、e、f为等边三角形,f为此机构的有效行程,长度为12mm,而按压的杆到水箱的挤压端的距离为4-6mm,所以此机构的有效行程完全可以达到挤压出水的目的。水箱装置实体建模如下图所示:

水箱结构

2.4.3 增大拖布对地面摩擦力的设计

      由于室内地面并不是理想的平面,车身难免会产生颠簸。而如果将拖布刚性固定在车身下部则会造成拖布前后边缘受力不均,只有一边紧贴地面,大部分面积压力不足,难以充分发挥其清洁作用。本文采用活动式压力板固定拖布,左右各一组。这种结构可以保证拖布前后左右时刻紧贴地面,发挥最佳清洁效果。

      此设计将吸尘口放置在驱动轮和拖布之间,利用真空吸尘产生的负压使拖布对地面的摩擦力增大,拖地效果更好。利用电子称来分别测出风机在旋转和静止时的重力,由此对比可得出对地面摩擦力的增大。参照图如下所示:

2.4.4 拖地机构的电机选型

      由以上介绍可知,此电机需要转动角度为±60°。在“探索者”模块化平台中,有两种标准舵机的转动角度为±90°,可供选型。

      微型水箱下压出水的力,用电子称测出重量转化而成,约为4kg=40N,由四杆机构的曲柄长度12mm可知,扭力为40×1.2=48N.cm=4.8kg.cm。标准舵机的扭力为2.4kg.cm<4.8kg.cm。不能达到要求。

      因此,拖地机构选用“探索者”大标准伺服电机驱动四杆机构挤压水箱给拖布供水,它的参数如表3所示。扭力12.2kg.cm>4.8kg.cm,符合要求。

2.5 机构三维建模

      本设计应用目前比较广泛且好用的Solidworks软件对清洁机器人的模型进行建模。对于Solidworks软件,它有很强大的功能,比如:曲面的结构,异型向导孔的生成,标准件的导出,工程图的生成,还有模拟仿真等等。它可以通过草图完成大部分设计,建模是也相对简单,对于模型的修改也较方便,只要进草图修改尺寸,模型就会随着尺寸的改变而改变,装配体也会随着单个模型的改变跟着改变。清洁机器人的三维建模图形如下所示:

清洁机器人装配体

3. 清洁机器人控制系统设计

     本项目的控制系统平台采用STC系列单片机,它拥有15个输出口,256个字节内存。STC系列单片机自带复位,不需要外部复位电路,兼容5V电源,可以通过USB或移动电源供电,不需要外部供电模块。只需四根线,两个电容,一个12MHz晶振即可工作。

3.1 控制系统硬件设计

     清洁机器人硬件结构主要由以下几部分组成:控制器(单片机)、电机驱动器、环境监测装置与电源模块等,这几个模块在单片机的控制下,相互协调工作,保证了清洁机器人各种功能的实现,模块间关系具体如下图所示:

清洁机器人硬件系统结构框图

   各模块主要组成与功能叙述如下:

      ① 控制器(单片机):主要由单片机STC12C4052AD组成,它的主要功能是完成主控程序与其他各模块的接口,是程序运行的载体并实现对整个机器人的控制。

      ② 电机驱动器:主要由驱动电机驱动器、旋转刷电机驱动器、水箱喷水电机驱动器和吸尘电机驱动器组成,其中驱动电机驱动左右行走轮从而带动清洁机器人运动,旋转刷电机和吸尘电机负责清扫吸尘工作,水箱喷水驱动电机负责拖地工作。

      ③ 环境检测装置:由传感器组成,表示机器人对外界环境的判断。

3.1.1 移动装置

      行驶模块由2个圆周舵机组成,圆周舵机采用PWM信号驱动。通过高电平时长表示输出信号。这种方式可以保证输出信号不受电压波动的干扰。在程序中,只要设置单片机I/O口的电平状态与对应的延时时间即可使用单片机控制舵机。

      如下图所示,当高电平时长为1.5ms时,标准舵机处于中立位置,圆周舵机停止转动,当高电平时长为1ms时,标准舵机正转45度,圆周舵机正转。当高电平时长为2ms时,标准舵机反转45度,圆周舵机反转。

驱动信号时序图

      然而,普通单片机I/O口的输出电流强度并不高,即使作为控制信号,也很难被舵机识别。传统方法是使用三极管对信号进行放大,但在面包板上这将会大大增加连线复杂程度。推挽输出是用两个晶体管或者场效应管构成的推挽电路,这个电路的特点就是输出电阻小,能够驱动大的负载,从而能够使得单片机管脚直接输出舵机驱动信号,无需使用三极管进行放大。如下图所示:

推挽输出对比图

      单片机同一时间只能运行一个程序,利用分时驱动方式同时驱动两个舵机并调节转速,即先给左轮发出信号,再给右轮发出信号,同一时间只驱动一只舵机。由于舵机齿轮具有惯性且信号周期只有20ms,这种驱动方式并不影响正常行驶,是完全可行的。

3.1.2 清洁装置

      清洁部分分为清扫、吸尘和拖地。清扫和吸尘时使用的是直流电机驱动,拖地时给拖布供水的喷水系统使用的是大标准舵机驱动。

      直流电机通过接直流电工作,如果需要调速,可以利用单片机产生高频PWM信号,改变占空比进行调速。该单片机支持2路PWM输出,只需要外接2个三极管即可。喷水系统使用的是大标准舵机。大标准舵机可以调节角度。由于喷水器需要反复按压,因此可以用一个简单的循环程序进行驱动,程序每执行一次,舵机正转60°再反转60°,完成一次按压。

3.1.3 环境检测装置

      清洁机器人在工作时,需要对外界环境进行检测,当遇到墙壁或障碍物时,能够及时避开并进入正常工作状态[17,18],因此本课题选用“探索者”模块化平台中的近红外线传感器。近红外接收端前方5cm以内有障碍物时触发,可用于避障、跟随等。近红外传感器可以发射并接收反射的红外信号,有效检测范围在20cm以内。工作电压:4.7~5.5V,工作电流:1.2mA,频率38KHZ。

      ① 固定孔,便于用螺丝将模块固定于机器人上。

      ② 四芯输入线接口,连接四芯输入线。

      ③ 近红外信号发射头,用于发射红外信号。

      ④ 近红外信号接收头,用于接收反射的红外信号。

近红外传感器

      清洁机器人需要三个近红外传感器,三个红外传感器分别分布在旋转刷的前方,用来检测前方的障碍物;左右驱动轮旁边各一个,用来检测左右两侧的障碍物,分布图如下图所示,在安装近红外传感器时,不能遮挡发射和接收头,以免传感器检测发生偏差。红外线传感器自身有四个接口,其中两个为电源接口,另外两个接口是识别有无障碍的情况。经过测试,连接电源后,当遇到障碍物时输出低电平的那个接口,便是能够检测到障碍物的接口。

3.1.4清洁机器人总电路图

3.2 控制系统程序设计

      清扫机器人作为一种家庭服务机器人,关键的问题在于机器人本身是否实用,也就是说是否能有效清扫房间,清洁机器人在工作时,不是杂乱无章的行走,它需要有计划有规律的进行清洁。因此,需要从机器人的实用性强、可靠性高,成本低等角度,设计一种机器人路径规划算法。

3.2.1 路径规划概述

      路径规划技术是智能机器人领域中的核心问题之一,移动机器人的路径规划就是要给定机器人及其工作环境信息,按照某种优化指标,在起始点和目标点之间规划出一条与环境障碍物无碰撞的路径。对移动机器人的路径规划系统主要要求是:

      ① 在环境地图中寻找移动路径,保证机器人沿该路径移动时不与外界发生碰撞。

      ② 能够处理用传感器感知的环境模型环境中的不确定因素和路径规划执行中出现的误差。

      ③ 通过使机器人避开外界物体而使其对机器人传感器感知范围的影响降到最小。

      ④ 能够按照需要找到最优路径。

3.2.2 路径规划的几种方式

      对于使用单片机控制的清洁机器人来说,很多算法需要占用较大的内存空间,这些要求都过于苛刻。对应清洁机器人自身与工作环境的特点,有四种比较实用的路径规划算法:内螺旋式、往复式、椭圆式、随机式等,如下所示:

内螺旋算法

      内螺旋算法,是让移动机器人沿着墙边移动,然后进行内收缩式的清扫。在移动过程中,可以不断根据与墙边的距离调整所走的方向,这样对于在移动中自身坐标不是很确定的机器人来说,可以辅助周边的事物对其当前的位置进行调整。

往复式算法

      往复式算法或称犁田式算法,可以说是让机器人按“弓”字形方式行走。机器人选择房间的一角,开始来回往返的“犁田式”清扫。往复式清扫有两个基本行为组成,直线行走和转弯。往复式清扫在矩形无障碍物的房间内能很好的工作,通过往复式覆盖,清洁机器人基本能覆盖整个房间,当出现障碍物时,障碍物的另一侧将无法覆盖,就必须有进一步的行为来弥补。

椭圆式覆盖算法

      椭圆式覆盖,机器人由某一点开始沿着椭圆渐开线式轨迹由内向外逐渐扩大。遇到障碍物后,进行避障处理,然后重新选择一点开始椭圆式行走。由于是曲线运动,控制上较难,只能进行初步原理性的探索,进行开环控制。

随机式覆盖算法

      随机式覆盖,就是机器人在工作范围内随机选择方向运动,这就是最简便的一种方法,机器人一直前行,遇到障碍物后就随机改变一个方向继续前行,随机式运动的缺点是覆盖率太低。传统扫地机器人采用避障式算法,通过遇到障碍后随机改变路线实现对室内面积的覆盖。这种方法控制原理简单,但覆盖率差,消耗时间长;少数清洁机器人会采用激光雷达扫描室内障碍物的距离,并使用栅格法自动生成地图,在理论上如果地图分辨率越高,即网格数越多,清洁覆盖率越趋近于100%。然而由于激光雷达传感器十分昂贵,这种清洁机器人的性价比和销售量远不如普通清洁机器人。实际使用中,由于机器人的外形尺寸是固定的,平均尺寸为25cm×30cm即使栅格精度达到1cm每格,由于外形不能缩小,所以仍然难以清洁彻底。

3.2.3 往复式路径规划算法

      由于单片机内部只有256字节RAM空间,无法存储庞大的数组组成栅格并随时对地图中的栅格进行修改,难以进行栅格法路径规划,因此也无法实现以上介绍的内螺旋式路径规划算法。即使通过优化程序勉强存储较小的栅格,由于栅格尺寸大,分辨率差,实际清洁效率反而不如传统方法。因此适用于单片机的路径规划方法既要比传统的避障式算法效率更高,又要能够在单片机中顺利运行。本课题使用往复式路径规划算法。

      由于充电点的位置通常位于房间的角落,这给往复式路径规划算法带来了很大的便利,不但可以使坐标系相对固定,还可以校准起始方向,保证路径的直线度。这种算法的优势在于只需要执行固定的循环程序,就可以对复杂的区域循环清扫。行间距很小,分辨率高。即使房间不是标准的矩形也可以顺利清扫。循环清扫在第一次碰到障碍时需要向右掉头,第二次碰到障碍时需要向左掉头。正是这种特性可以使机器人对地面逐行清扫。

      可是如何执行固定的程序使掉头方向则成了编程的主要难点。另外,由于单片机同一时间只能执行一条程序,不能同时做两件事。如何一边给舵机发送驱动信号让机器人前进,一边检测传感器状态也成了问题。由于控制方式为开环控制,如何确保机器人转动角度刚好为90°也是问题。由于实现这一功能的方法不唯一。本文使用了比较简单的一种,即程序嵌套。也就是将一次右转和一次左转作为一个大循环。当右转结束后,程序循环并未结束,而是进入下一个判断循环,边行驶边检测障碍,当第二次检测到障碍后,机器人向左掉头,才完成一次大循环。

      为了实现边行驶边判断传感器状态,本文采用分时处理的方法实现该功能。分时处理可以让舵机驱动程序与传感器判断程序交替执行。由于舵机驱动程序周期为20毫秒,判断指令耗时小于2微秒,交替执行造成的轻微时间误差完全可以被忽略,不会对行驶造成影响。

往复式路径规划的程序流程图如下所示:

往复式路径规划程序流程图

      为了实现一边行驶一边检测,使用while循环而非if判断进行检测,这样才能不断循环检测。在每一个循环中,舵机信号占用40ms,判断语句占用时间小于2ms。虽然先前进再判断会对控制信号有影响,但由于影响非常小,可以忽略不计。当信号消失后,再发出固定的脉冲个数使机器人转动到90度。例如用Keil编译软件编译的如下程序:

While (DT == 0) {

  RIGHT (1);   //一边右转 一边判断左红外

  if(IR1 == 1){   //无障碍灭灯

       RIGHT (15);      //灭灯后第二次右转 调整数据使之为90度

PENSHUI ();

PENSHUI ();

DT = 1;

}

  }

3.3 本章小结

      在本章中,主要有控制系统硬件设计和程序设计两个部分,硬件设计主要是电机驱动、环境检测等装置设计,程序部分则是对清洁机器人路径规划的研究,利用Keil编译软件编程来实现路径规划的算法,如下图所示:

清洁机器人控制系统搭建

更多详情请见:【S046】清洁机器人

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

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

相关文章

docker kafka go demo

配置 创建网桥 docker network create app-tier --driver bridge拉取并启动镜像 docker run -d --name kafka-server --hostname kafka-server \--network app-tier \-p 9092:9092 \-e ALLOW_PLAINTEXT_LISTENERyes \-e KAFKA_CFG_ADVERTISED_LISTENERSPLAINTEXT://192.168.…

链表--206. 反转链表/easy

206. 反转链表 1、题目2、题目分析3、解题步骤4、复杂度最优解代码示例5、抽象与扩展 1、题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2…

【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行环境搭建

【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 概述-CSDN博客 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行环境搭建-CSDN博客 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行模式-CSDN博客 1、模板虚拟机环境准备 1.1、 hadoop100 虚拟机配置要求如下 &…

如何通过Python将各种数据写入到Excel工作表

在数据处理和报告生成等工作中&#xff0c;Excel表格是一种常见且广泛使用的工具。然而&#xff0c;手动将大量数据输入到Excel表格中既费时又容易出错。为了提高效率并减少错误&#xff0c;使用Python编程语言来自动化数据写入Excel表格是一个明智的选择。Python作为一种简单易…

【Spring进阶系列丨第六篇】Spring的Bean管理(基于注解)

文章目录 一、说明二、用于创建对象的2.1、Component注解2.1.1、定义Bean2.1.2、主配置文件配置扫描注解2.1.3、测试2.1.4、Component注解总结 2.2、Controller注解2.3、Service注解2.4、Repository注解 三、用于注入数据的3.1、Autowired注解3.1.1、定义Bean3.1.2、主配置文件…

《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(6)

接前一篇文章&#xff1a;《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置&#xff08;5&#xff09; 2.2 HOST主桥 本节以MPC8548处理器为例&#xff0c;说明HOST主桥在PowerPC处理器中的实现机制&#xff0c;并简要介绍x86处理器系统使用的HOST主桥。 …

【springboot+vue项目(零)】开发项目经验积累(处理问题)

一、VUEElement UI &#xff08;一&#xff09;elementui下拉框默认值不是对应中文问题 v-model绑定的值必须是字符串&#xff0c;才会显示默认选中对应中文&#xff0c;如果是数字&#xff0c;则显示数字&#xff0c;修改为&#xff1a; handleOpenAddDialog() {this.dialogT…

【Emgu.CV教程】第24篇 、色彩处理之LUT()查找表转换颜色

LUT (Look-Up Table)查找表转换&#xff0c;是对原始图像的像素数值进行快速转换&#xff0c;以实现图像的像素压缩目的。LUT()函数的官方定义如下&#xff1a; public static void LUT(IInputArray src, // 输入图像IInputArray lut, // 查找表IOutputArray dst, // 输出图像…

2023春季李宏毅机器学习笔记 05 :机器如何生成图像

资料 课程主页&#xff1a;https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.phpGithub&#xff1a;https://github.com/Fafa-DL/Lhy_Machine_LearningB站课程&#xff1a;https://space.bilibili.com/253734135/channel/collectiondetail?sid2014800 一、图像生成常见模型…

提示循环引用 一个循环引用但无法列出导致循环的引用且文件打不开无法修改

目录 设备环境&#xff1a; 提示内容&#xff1a; 具体错误问题描述&#xff1a; 图示&#xff1a; Office 报错 WPS 报错 问题分析&#xff1a; 问题解决&#xff1a; 关注我的 GitHub&#xff08;魔法网络访问&#xff09;&#xff1a; 设备环境&#xff1a; Window…

(湖科大教书匠)计算机网络微课堂(下)

第四章、网络层 网络层概述 网络层主要任务是实习网络互连&#xff0c;进而实现数据包在各网络之间的传输 因特网使用TCP/IP协议栈 由于TCP/IP协议栈的网络层使用网际协议IP&#xff0c;是整个协议栈的核心协议&#xff0c;因此TCP/IP协议栈的网络层常称为网际层 网络层提供…

1.1 理解大数据(2)

小肥柴的Hadoop之旅 1.1 理解大数据&#xff08;2&#xff09; 目录1.1 理解大数据1.1.3 大数据概述1.1.4 更多思考 参考文献和资料 目录 1.1 理解大数据 1.1.3 大数据概述 step_0 大数据定义 【《大数据算法设计分析》】&#xff1a; 通常来讲大数据&#xff08;Big Data&am…

【Linux操作系统】探秘Linux奥秘:Linux 操作系统的解密与实战

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《操作系统实验室》&#x1f516;诗赋清音&#xff1a;柳垂轻絮拂人衣&#xff0c;心随风舞梦飞。 山川湖海皆可涉&#xff0c;勇者征途逐星辉。 目录 &#x1fa90;1 初识Linux OS …

目标跟踪算法中的卡尔曼滤波学习

在使用多目标跟踪算法时&#xff0c;接触到卡尔曼滤波&#xff0c;一直没时间总结下&#xff0c;现在来填坑。 1. 背景知识 在理解卡尔曼滤波前&#xff0c;有几个概念值得考虑下&#xff1a;时序序列模型&#xff0c;滤波&#xff0c;线性动态系统 1. 时间序列模型 时间序…

Elasticsearch:Serarch tutorial - 使用 Python 进行搜索 (一)

本实践教程将教你如何使用 Elasticsearch 构建完整的搜索解决方案。 在本教程中你将学习&#xff1a; 如何对数据集执行全文关键字搜索&#xff08;可选使用过滤器&#xff09;如何使用机器学习模型生成、存储和搜索密集向量嵌入如何使用 ELSER 模型生成和搜索稀疏向量如何使用…

【KingbaseES】实现MySql函数Field

CREATE OR REPLACE FUNCTION field(value TEXT, VARIADIC arr TEXT[]) RETURNS INT AS $$ DECLAREi INT; BEGINFOR i IN 1 .. array_length(arr, 1) LOOPIF arr[i] value THENRETURN i;END IF;END LOOP;RETURN 0; END; $$ LANGUAGE plpgsql IMMUTABLE;

【Mac】Mac新机配置前端环境教程

1、先安装谷歌浏览器&#xff0c;稳定版 作为一名前端程序员&#xff0c;和浏览器打交道肯定是必不可少的。Chrome&#xff0c;Edge 都有着丰富的扩展资源。你可以下载插件帮助你更好的在工作中调试代码。 React Developer Tools Vue.js devtools GraphQL developer tools 如…

信号量原理及其应用

一、信号量定义 信号量是一种用于保护临界资源的同步机制。它可以用来控制对共享资源的访问&#xff0c;以避免并发访问导致的数据不一致或竞争条件。信号量的PV操作是原子操作&#xff0c;即不可被中断的操作。 在信号量的操作中&#xff0c;P操作&#xff08;也称为wait操作…

imgaug库指南(四):从入门到精通的【图像增强】之旅

引言 在深度学习和计算机视觉的世界里&#xff0c;数据是模型训练的基石&#xff0c;其质量与数量直接影响着模型的性能。然而&#xff0c;获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此&#xff0c;数据增强技术应运而生&#xff0c;成为了解决这一问题的…