欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    机械狗应用开发指南.docx

    • 资源ID:1534097       资源大小:945.73KB        全文页数:47页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    机械狗应用开发指南.docx

    目录1样例先吕19卜.1X>2.3工3控制与运SjS分31.5-11-11-11-11-1-52牛羊102.2准备组件102.2组装步舞1131地图绘制1733配置ESP32开发醐录软件.1934配置STM32开发板烧录软件一2235获取代码.“一-2435iESP32代码243-5-2STM32代码26353小狗代码3。4快速体脆314.1 手动捌侧的姿态变换“-.-.-.-.-.-.-.-.-3,4.2 手雌mtt三S动344.3 自取亍走3444机晒锁定目355代码实现375-1主要代码文绍37521-37S3手动控制1.三狗行走405-W狗巡引¾6f4155机械狗锁定目标追踪421样例介绍基于At1.aS200DKA2开发者套件板(以下简称为开发板)的算力鄢屿接口丰富度,在实现Chatbot/智能小车用I械臂/语音台灯等样例之后,希里能够扩展兼容性和多领域适配度,实现另外一个豆杂样例并且能够兼顾更加繁琐的下位机操作,所以基于开发板开发了本机械狗样例,能够实现站立坐下以及左右的姿态变化,能够自动循迹行走,另外能够追踪目标追随遇佝,并且能够在多人的情境下,仍然稳定追踪锁定的目标.1.1 外观结构1.2 功能与原理介绍1.3 控制与运动部分1-4循迹行走部分1.5 锁定追踪部分1.1夕卜观结构机械佝运动部分是由以下部分组成:1 .四个具有2自由度的机械腿以及中间的主体部分实现的,机械腿的曲柄连杆结构保证了机械狗可以单独操作每一条腿的运动,每条腿上的两个关节由两个行星箱温速电机驱动,并放置在中间的主体部分.2 .下位机由带有串口扩展板的两个STM32单片机开发板构成,分为主控F4。5和从控Fio3,位于机械狗身体内部.3 .使用补充的3D连接固定件固定椒像头云台、开发板以及开发扳电源4 .摄像头云台连接一块ESP32下位机控制摄像头的移动,再通过USB犷展增将所有的线连接到开发板上,再使用Wif1.模块连接到开发板上.图1-1机械狗外观结构图1.2 功能与原理介绍图1-2功能原理图机械拘分为上位机即At1.as2OODKA2开发者套件板,下位机即STM32和ESP32单片机,通过命令行以及手给语音等方式输入到机械狗上的各类传感器以及上位机上,在场景切换后进入到主函数,初始化各类硬件底层设备完成之后,就可以进入到各个场景对应的模块中进行信息拉取和推理进程了.以摄像头的为例,利用撮像头拉流到视频信息之后,输入到场景循环函数中,经过CV模型得到推理结果,再将后处理的结果回传到场景循环模块中,针对控制模块做动作下发,传递到STM32下位机上控制四足的运动,即可完成一个简单的流程.1.3 控制与运动部分机械物的运动控制部分的实现原理图如图13所示:图1-3机械狗运动控制原理图在上位机(开发者套件)上部署离线推理模型后,在上位机上根据推理结果生成对应的运动控制指令.指令下发到STM32单片机上,由图口中断函数来进行串口数据传输的接收.在上位机端和STM32使用相同的校蛉码的生成和校鸵方式,如果串口处接收到是上位机发出的指令,则会进入到对应的中断函数中进行运动状态的改变,退作.在下位机(STM32)的初始化过程中:a.会开启多个任务序列,包括初始化电矶零点位置、陀螺仪初始化.显示屏显示、1.ED灯显示.蜂鸣§§初始化及串口发送数据初始化中断函数标记归位等操作。b.主赢在完整这些操作之后,进入获取控制端以及四足行动的部分,在收取到上位机发出的指令后,下位机进行解析,获取机器狗的姿态全局变量参数以及运动的两个方向的线速度和角速度.C.进入到机械佝的运动解析部分进行运算.解析接下来的运动需中每一个机械艇的运动位置,以及八个电机需要转到的目标位置,并下发指令到从控的STM32±,通过串口下发到电机处,其中的电机使用PID来编码,在整个姿态变化和运动的过程中,通过P1.D控制电机的目标位置和实际运动位翼误差以及自我U正误差.d.同时,为了&运动过程中机械狗摔倒,加入了陀蟠仪的运k,且可以在显示屏上显示实际数据.MPU605鸵券仪会计算平彷环的数值大小用来修正不同方向上的非水平位置变化,然后加入S1.J机械腿的运动控制中.得到了控制机蜘的目标位置后,可以通过机懒朋8包规划算法实现实时计笠机蜘机械能的运动位JS,使机檄)能够稳步前进以及完成其他动作.图1-4运动控制时序图1S1-5运动控制时序图21.4循迹行走部分机械物的循迹行走部分的原理图如图1-6所示:困16机械狗循迹行走原理图此部分功能的实现原理与智能车相1以均基于偏移纠正模型和转向辅助模型。偏移纠正模型:通过回归计算左右两条引导线,计箕出两条引导线的中线,并与摄像头的底部求交点以及偏转角.理论角度偏转角为90°时说明机械拘在引导线内直线行走,不会走出引导线.若偏转角是钝角或者锐角,贝蜕明机械狗需要依据实际的角度进行左转和右转的修正,如此循环就能终使机械狗在引导线内行走.转向辅助模型:识别转弯标识以及调头标识。为了避免摄像头抖动导致的问趣,判断的条件为:相邻的几帧均识别到相同的转弯标识才进行对应的动作.通过两个模型的交替进行,再针对转向角和机械狗的速度做映射和微调,即可实现机械狗的循遂行½功能.1.5锁定追踪部分机械狗的被定追踪部分的时序图如图1-7、图1-8和图19所示:图1-7机成狗锁定追踪时序图1图1-8机械狗锁定追鄢寸序图2图1-9机蝴锁定追踪时序图31-在启动主程序后,苜先进行嘏像头和共享内存的初始化,拉流后在运动控制器端初始化,获取STM32和ESP32的端口信息.2.其中,外设的连接端口号ttyUSB*中具体的号码是由拔插的先后J砺决定的,所以需要提前查询端口信息并返回到主程序中.而后在追踪任务的进程中初始化,再开启两个手势识别和人明颔I的模型进程,分别进行初始化,然后在控制端下位机设羽轮机的角度,调整到方便机蝴追踪的角度,将识别锁定追踪目标的状态初始化为解锁,锁定计数归零.3,在拉流分发的进程中开启循环获取fram济放入共享内存中,然后再启动循环并开始并行的手势识别和人体识别的推理进程.此处使用两个消息队列来防止手势识别和人体识别出现异帧不同步的情况,将两个过程同步之后返回两个bboxes,分别是手势和人体的识别地存储数据,再利用如下公式来判断锁定的目标框:a.在出现比值大于。9的帧时,计数器值加1.在连续五帧都超过这个比值后,将锁定目标的F1.AG议为True,然后设M舵机的信息,进行目标的若在施锁定目标的状态下就需要锁定到该椎并目使用卡尔受谑波的方式进行目标推的匹配,进而推算出要追第的目标,即使在有多人存在的场景仍然可以准确追踪到目标.b.在超过2。帧没有识别到目标之后以及出现解锁的手势超过5帧之后就会将机M狗的下位机中的运动F1.AG设定为停止,然后上位机上的解锁标志回归为解锁,并且下发动作,然后等待下一个锁定的手势出现,继续追除的目标.2样例组装2.1 准备组件2.2 组装步骤2.1 准备组件机械狗所SS配件如袤2所示:当前样例仅在UbUntUOS适配脸证过,未在OPenEU1.erOS适配贬证,推荐烧录镜像时,烧录UbUntUOS镜像.表2-1机械狗配件表名称散皿个是否需要单独购买规格开发者套件及电源三三1否Oft机械狗裸机1是裸机用像头两轴云台1是两轴云台精简版广角撮像头模组1是门8。广角无聆变模组ESP32机器人开发板1是主板+Type-C数掴线384。Omah移动电源1是12V9V5V三输出单头六角铜住4。是M2.5*7+单头六角铜住40是M4*7+6名称数量/个是否需要单独购买规格防松囊母4。是M4防松寿母40是Ma.5圆头螺母40是M*S圆头螺母4。是M2.5*53D打印支挣板(下载文件后通过3。打印)6是唯一规格USB扩展坞1是单USB转4口USB3.0MicroUSB数据传5三1是一定要有数据传场功能,不可仅为充电线USBWiR模块1是-2.2 组装步骤步骤1首先将机破拘裸机平放在地面上,然后将3D打印好的三个支撑板用单头六角铜住和防松爆母固定在机械狗的裸机上平面上,具体的位置如固1安装固定所示:图2-1安装固定从上到下依次为板像头承载板、开发板添栽板以及电池仓,按照图中的端丝与单头理柱位置固定即可.步骡2将电源放入到电池仓中,使用电池挡板固定,如图22所示:图2-2安装电源步骤3将开发者套件从底板上拆下并固定到3D打印出来的开发板承载板上,如图3图定开发麻标:图2-3固定开发板步骤4将两轴云台上原有的普通摄像头拆下,替换上无畸变的广角摄像头模组,再将云台安装摄像头承载板上,如图4安装广角摄像头模细标:图2-4安装广角板像头模组其中上半部分的舵机连接到ESP32上的26号接口,棕色线接地旅近5VT!,下半部分的陀机连接到ESP32上的25号接口,棕色线接地靠近5V一侧.步臊5总体的接线方式如图25所示:图2-5接线图步骤6将各个电源线连接好后,需要使用一根Mier。USB数据线连接到机蝴内部的主控F4。5一恻的Mi。USB端口,另一端连接到插到开发板上的USB扩展坞上,再将USBWifi模块播到开发板的USB接口上,将USB摄像头和ESP32接到USBr展坞上,即可完成接线.3运行环境准备3地IS绘制3-2配置无线WiE模块33配JEESP32开发板烧录软件34配mSTM32开发板烧录软件3.5获取代码3.1 地图绘制机械狗的自动行走依赖于模型的训练,因此需要设计一张地图,用于自动行走的模型训练过程和推理结果验证,此处提供地图设计方案,开发者可以亘接使用此地图,也可以自行设计其他版本的地图.曲3-1样例地图须知地图规格 道路宽度:60cm. 完缪蟠甑寸:约3m*4m. 停车位:30cm*40cm.制作建议 蛹Phot。ShOP等iiW:件华昨16®. 建议使用表面不太光滑的材质,如果地图表面过于光滑则容易使机械狗腿部打滑.另外光滑的表面会产生强烈的反光,影响机械佝通过摄像头采集的画面质,进而干扰图像识BIJ的任务.3.2 配置无线Wifi模块步骡1确保路由器和开发者套件已按步骡6中所述连接.步骤2参见登录开发者套件选择任意一种登录方式使用root用户(默认密码为Mind力3)远程登录开发者套件.步骡3参见通过USBWiFi网卡联网配置USBWiFi设置.结束3运行襁准备3.3配置ESP32开发板烧录软件步奥1Ardumo是一套便捷、灵活、容易上手的硬件开发平台,它包括多种型号的ArdUin滋制电路板和专用编程开发软件,能帮助用户快速的开发出智能硬件原里.进入ArdUinO官网下载程安装包arduino-ideversionWindows6bit.exe*,并按照默认配置安装.步骤2双击打开软件,修改语言为中文.1.单击,Fie>Preferences",如图3-2所示.因3-2软件菜单2.单击-1.anguage"下拉菜单,选择"中文(简体)",如圉33所示.单击OK保存后工具会自动击启,诙启后为中文界面.步骤3图3-3修改语言安装ESP32开发板.1.单击文件首选项",如图3-4所示。图3-4中文软件菜单0Q8<.mw22IA2CfZOJ在"其他开发板管理器地址"中均入"package_esp32_index.json"与"ardno-esp32gh-pages;package_esp32,index.json*或单本据中输入开发板管理器地址,单击确定保存,如图35所示.标在文S3-5添加开发板管理器地址(三)3.商线安装ESP32开发板,单击链接下载ArdUin。的ESP32开发板安装包,下载完成后双击安装文件进行默认安装,安装完成后重启ArdUin。IDE.三36通a福线包安装ESP32开发板口:9%esp32padoge2A6-httpsy/ardumojneXCwCT1.4.在“开发板"中选择ESP32开发板,如图37所示.图3-7选择开发板CQ说明Ii梦舞中安装ESPjz担件,推存使用麻线安装的方式,用户也可以自行搜索在线安装的方法,但由于国内网珞等I同题,在战安装过程很可能会非常慢甚至安装失也步骡4用USB数据线连接PC和ESP32开发板,单击"工具>端Cr,选择新增的CoM串行端口作为ArdUinO与ESP32开发板传输数据的通道,如图3-8所示.图3-8选择串口CQ说明若没有出现CoM串行豌口.可能是由于电f1.®没有安装US8串口驱动,需自行下或并安装CH34。空功工具.3.4配置STM32开发板烧录软件步骤1请用户进入官方网站完成信息注册,单击如图3-9所示图标,下载注册机软件.图3-9获取软件armKei1.步骡2按照默认配度通过注册机安装Kei1.UViSion5软件及工具包.步骤3打开Kei1.UViSion5软件,单击工具栏的按钮,进入包管理工具.图3-10包省理工具界面步骤4在搜索框中搜索STM32F1SerieS与STM32F4SerieS并安装所有包.图3-11搜索包4DtwesBoardsS«*»ch:STM32f1SerieiX&DeviceH¾A1.1.Devices-IQSTMrodectroncs七STM32F1Sen”STM32F107囹七CTM32F105S1.七STM32F103S七STM32F102jSTM32F101S七STM父F1.oo步骤5左键单击待下载的包,单击右例工具框中的-Insta1.1."按钮安装.3.5获取代码3.5.1 ESP32代码获取代码获服链接,单击他接下载样例代码压缩包*,ascend-devkrt-master.zipu到PC井解压,驶得ESP32开发板代玛目录"ascenddevkitmjstensrdE2ESampedogeedogee_contro1.espj2-code*配者功能库文件将dogee_COntrOIesp32_COde下的"ESP32_SerVo.cp"、"ESPjz.Servo.h",文件豆制到ArdUinO库文件路径下,例如:"C:UsersiO459AppData1.oca1.Arduinoi5packagesesp32hardwareesp321.0.6coresesp32".烧录代码到ESP32开发板步骤1在PC使用ArdUinO工具单击"文件打开"按钮,选择,dogee-contro1.esp32-codedogee_ctr1._esp32.ino"文件打开.图3-12打开脚本文件(F)r1项目工a翠助NewSketchCtri.NNeyy.R11*9MS1.CetChAJoCtrHN打开-CtrUO阚Ctdw朝CtrkSSff为-Ctri*ShiftS首即R-QrkiS号S1.RiSS退出Ctrf+Q步骤2在ArdUin。工具中单烧录控制代码至ESP32单片机,如B0313和固314所示.图3-13烧录代码图3-14烧录回显3.5.2 STM32代码获取代码获取优接,单击链接下载样例代码压缩包'SceMdevkbmasterzp"到PC并解压,获得STM32开发板代码目录"ascend-devkit-mastertsrcE2E-Samp1.edogeedogee_contro1.stm32_code"将Stm320de中的代码豆制到原始产品提供的代码中,选择替换对应文件.烧录代码到ESP32开发板步骤1在PC使用Kei1.Wisions选择工具栏"Fi1.e>Openu,打开替换文件后1,QuadrupedF405QuadruedF405USER,'目录下的“QUadrUPedF4。5wproj×"项目文件,即可进入到对应的界面,如S13-16所示。图3-15打开文件图3-16界面图CQ说明出S三少头文件提示时,选择工«栏,Project>OptionsforTarget.iSi三QC+,为PrOjeC傣CQ头文件的indudePath路径(路径不能出现中文字符)出现未识别ScIude提示需要修改IangUdgeC从C90改为C99.乃j二XXX一笛J步骤2当前Kei1.WiSion5软件已不提供Versions的编译器,需用户自行专找并安装.图3-17编洋器丢失步骤3由于STM犷展板的限制,SWD扩展板上期陪歌口未接芯片,需要将机蝴身体中的STM32F405主控板拆下,主控板位置如图3-18所示.曲3-184。S主礴1 .由于ST1.JNK的USB端串口位置固定,与STM32无法一对应,所以需要使用杜邦线连接STIJNK的USB端的串口,使其能够与开发板的串口对应,STM32串口位置如困3-19所示,ST1.JNK的USB端串口位Ss如图3-20所示.圉3-19STM32串口引脚图3-20STUNK的USB端串口位置2 .ST1.INK线的SWC1.K串口与STM32开发板的A14连接,ST1.INKi挑JSWD1.o串口与STM32开So)AI3连接,球息3.30寸应3.3V,GND串口对应GND.步赛4在kei1.客户端准备完成后,单击1编译按钮,等待代码编译无报错后,单击宣烧录按钮即可将控制代码烧录到STM32的主控中。图3-21界面图Fi1.eEditViewProjectF1.ashDebugPenphera1.sToo1.sSVCSWindowHe1.pn/0jjoo>>÷rft¾nz三zj>b,回Wgrt1K1等备百3.5.3机械狗代码步骤1远程登录开发者套件,进入7usr1.oca1."目录运彳询本拉取代码.cdusrk>ca1.步骤2运行脚本拉取代码.bashE2E.sampes.dovnoadJoo1.shddownd_desiabon_pathsSOVrCeBgSMfybaagtarge1.path物糊: -d:指定代码的下载路径. -S:指定开源仓库的doneur1. -b:指定开源仓库分支名称及待下载的项目目录. f:强制更新下载路径中的目录.当样例目录已删除,但由新下载时提示"A1.readyuptodate"时可使用此参数.命令示例:bashE2Esagsdown1.oadtoo1.,s-do11eHvHiAsefE2ESamJes-shttpsgiteezo11VHUAWE1.-ASCENDZascenddevkitgitbmastersrcE2Sampiedoge¢/回显如下:Down1.oadE2ESamPjeSsuccessfu1.1.y!执行完成后,会在7homeHwHiAiUserE2Esamp1.esn目录下生成"srcE2E-SampIeZdogee/"目录.例快速体验41手动姿态变换4.2手动控制机械为运动43机械物自动行走44机械狗锁定目标追踪4.1 手动控制机械狗姿态变换步骤1在机蝴上电启动之前,需要手动将机械狗的四个腿置于初始位置,便于机械狗的八个电机获取开机处的零点位置.1 .以单条腿为例,扶跑个腿部,使底部黑色支持脚立于地面,呈现"Y"字型。2 .沿金质施外则捏雌部,如困4-1所示。图4-1,腿部实物图3 .以摄像头方向为头部,将每条腿部的后侧金属腿与机械狗外壳突出部分的角对齐,如图4-2所示.图4-2对齐金属眼4按下银色圆形的金属电源键,等待蓝色灯圈出现,中间的STM32开发板显示屏蒂克起,等待左右听到蜂鸣器出现一次蛛鸣后,机械狗就会自动站起.步骤2执行以下命令,进入到开发板上机械佝的代码目录下.cdhome;HwHiAU5crE2Samp1.eMsce11d(kvk<tm5ter5fcE2ESmp1.edogeedemo步骤3执行以下命令,一犍安装所需要的依赖.P3insta1.1.rrequirements.txt步赛4执行以下命令,运行机械狗初始化脚本.python3dogec_pose.py出现回显如图4-3所示,即表示完成了机械狗的初始化,等待输入指令进行姿态控制.ES4-3命令回显STMUHefn.w*tvUrth(一键盘对应的控制表如三M1所示.表4-1键盘对应的控制表按键机械狗动作i前倾k后仰J左倾I右倾Space回正姿态位餐4.2 手动控制机械狗运动c说明在手动控制机城狗姿态变化之后.需要更新启动机斯的电源,再进行运动相关的掾作.步骡1执行以下命令,进入到开发板上机械狗的代码目录下。<domeHwH.AUsefE26SmpeMs<<n<J-(kvkit-m3stersr<E2E-5m1.e(jogeeMemo步嚎2执行以下命令启动脚本,即可手动控硼Jwg进行移动。PythOnJmanpy相对应的犍盘控制表如表4-2所示.表4-2处盘对应的控制表按键机械狗动作W前进SJsi1.A礴D右转Space停止-维4.3 机械狗自动行走将机械狗放M于地图上的车道引导线中,请参见3.1地图绘制制作地图.步骡1执行以下命令,进入到开发板上机械狗的代码目录下。cd/home/HWHiAJUSe"E2ES3mpgwndmtmaste""VE2E5amp1.efdoged¢mo步骤2执行以下命令启动脚本,等待机械物初始化完成pthonjmain.py11>de=easy初始化完成回显如下所示:S4-4命令回显完成后,机械狗就会自动在引导线内行走.例4.4 机械狗锁定目标追踪步骤1将机械向放置在距离追踪目标人23m距离。步骤2执行以下命令,进入到开发板上机械狗的代码目录下:cdjhome/HwHAjserE2GSmp1.easccnddcvktmaster/src/EaESamp1.c/dogee/demo步骤3执行以下命令启动脚本,等待机械佝初始化.Python3mai11.pymode三tfckir>g初始化完成回显如下所示:图4-5命令回显UJU7JJ三工m三W8r«(1.ACMW.M.t.UMtuta.rm1*4U.M1.RrQ、*ttMUMtftreM.<19MXUU9t>步骤4在机械狗面前摆出uOK"的手势,等待开发者套件远程登录界面回显中出现1.ocked.即表示已经锁定了追踪的目标,接下来就可以缓慢移动,机械狗就会跟随目标了.解除追踪锁定,可参见以下两种方式:面对机械狗,手掌对向摄像头,五指张开,4寺续3s左右,开发者套件远程登录界面回显中出现uni。Ck字样,即表示解除了锁定,机械唇会保持睁止状态.快速脱离机M向的视线超过IOS左右,机械狗会认为丢失目标,开发者套件远程登录界面回显中出现uni。Ck字样,即表示解除了锁定,机域狗会保持静止状态.桀S代招实现5代码实现5.1主要代码文件介绍52机械狗控制废相入口53手动控制机械拘行走54机械狗巡引导线行走55M½目硝踪5.1 主要代码文件介绍S5-1文件介绍文件(夹)名称说组demo/main.py机械狗dem。运行入口文件.demo/requirements.txt机械狗样例代码运行所需依赖.demo/src/actions机械向基创与复杂运动代码.demo/src/uti1.s工具类PythOrI文件包含OPenCV、ac1.工具等.demo/src/scenes机碇向预设场景相关代码.demo/src/mode1.s推理模型相关代码.5.2 机械狗控制逻辑入口man.py"是机械拘控制代码的主入口,定义了控制模式及对应模式的后续调用实队首先导入一系列与参数有关的模块.importosfromsrgparwimportArgumentParserFrommu1.tiprocessingimportProcessQueueGomSfC,<tiorimportStopGOmsrc.scenesimportM11uizKeneJnitidtorGomsrcUti1.sirnportgetke,1.og,CdmefdBroadoster.55teminfo,Contro1.1.er,get.ofSTM)j_NAME.ESPJ2.NAM定义出可选参数更改小车的控制模式,可选命令行Cm相制(预部接口),手动控制,筒易模式(自动巡线行走),声音控制(预留接口)、手动控制行走等.defpane.argtO:parserAr<um¢ntParwr<)parscr.dd.argumentCmode',typctrfrequred-Fa1.sezdefu1.t*manuAChoices-Ccmd',Vo¢'i,trckngz'eas/,Wnuarj)returnparserpars<rgs<)遵谓简单性的原则,在程序的主人口需判断模式的设定后,进入到对应模式的实现中.W_田啜_三三'_maic:6获取STZ32和E5P3?设各的逐口恭m3jp0n轮JpomSIM31NAME)esp32.port-get-port<ESP52.NA>E)A使用江海的端口创律5yeMM。实例sytem.i11fo三SyStem1.Mo<stE32_port二骁rn32_portespjportiespj2-port)tt初始化C8tHgrCtr1.-Controkrt)序解析命令行栩SrJ仔-par$e_arg$()k>.enfo('star11a创及一大大小为1的涓息队列G的ueue=QUeuHmdXSiZDcameraCameraBroddcdstertsystem.info)shared-memoqf_nam«=cmera.memory,name«在后台白飒像头进程Smer1.Proce”二Proce55(target三cmerd.run)<amera-pf<ess.st11()吩声诰客的横式并执行相应的操作fwgs.mo仇三三'manua1.':taskMNnUJH加r".mQmOry.mm«,$y$tem_1.nfo,m$g_qu«ue)process-Process(Urgettask1.oop)proces5.start()whi1.eTrue:ke-gQtK2Ifkey'esc'.PrOCQHJo1.noCdmeQ,$top_$1.gnva1.ueTrueca11wra-rocsJo1.(M)brc*e1.se;msg_queue.put<key)QXCeK(KeyboafdInterrMpt,SynemEXit*camera$topM$1.gn.vd1.uQTrueCdmera_proc¢$.joinO3ysHWywn«')k)9nfostoppng')ehf3r9.mo8,cmd':procw-1.tst-Urecord.mp-(3kg.nfo(f*startreadingcmd,)whi1.eTru«:commandinput().trp<)ifmr11311d-stop':。如果命令是大叩,烧止所有进程,包括摄俾头,并退出循珞forpinprceu.1.t:p.MK>1.oginfo(f*$urtputstopsign')<tr1.,e×e<ute<StoO)<mrstop-s9n.vk>e=TrueSmer1.PrOySjoinOteakefcommand三三'c1.ear':如果命令及,清交迸程列表,控制器,并继续forpinproceis.1.et:p.MK)XocessJH1.cIearOCtr1.三ControIkfOcv1.e×e<ute<5top0)giMWdearSUcscontinueefcommand=,Manua:09errof(f,DoesnotsupportswitchingfromCmdmodetomanua1.mode')continue"根纪命令构建场景,并在中拽的i理中招动它Io9.nfo<fbu1.dn9scenecommnd)ene=scenejnittor(commnd>og.info(f,(scene11W¼enenotNone:scene.obj三KenHSKare<1.memoryam%sstem.info,m.queu<)process三PcesSUWget=YdX.Obj100H<ocessswrt()prcess.1.ist.Append(proces)*处理tt!盘中断或系统退出,停止废降头进程和所有场H进程,并记录事件except(Keyboard1.nterrupt,SyitemExit):<arnerstop-sn.vue三TrUe<amera,<ess.joc(>for<essFptocessjist:processkiK)1.ogJnfbCstopping->>e1.ifargs.mode三三'vo<e':raM?Notmpeme11tedrror(*voecontro1.iinotcurrentsupported.')e1.ifargsmode三三(easy':process附三)Usk2-eneJittorC1.F,)(sdred-memory-rvame,system.info.msg_queue)procesjstappcdPrceu(targct-tsk2.1.00p1)forprocessinprocess演:process.stArtOtry:wi1.eTrue;My="ky卅key三三'e':forprocessinprocessJistpf<ess.ki1.(><mrstp-sn.Vke=TrueSmer1.peysjoinObreakQU:。将按软放入汽S1.队列蜗景处理mjg_queue.put(key)except(KeybOdrdInterrupt.Sy«emExit>:camera.top.s<gn.vAue三True<mer,<ess,o<(>os.system('sttysanee)1.oginfo(,stoppin.3fjrgs.mo&-'tracking、*对于鹤式.启动对应场景(TQCkmg)的单独返程proce»_1.iit=(tak三ene.initiatorCTrocking')(ihared.me11x>ry.nmefsystem.info,msg-qeue)proce$,h5tsp*n由Pekx>p)forprocs$inprocess.hw;process.StartORry:wi1.eTrue;key=getkeyOifkey三三,e':forprocessinprocessJist:<ess.ki1.1.(><mrstp-sn.Vke=Trued、_"oySjoinObreake1.sems9.queuc.putkey)“epi(K¢yboardinter

    注意事项

    本文(机械狗应用开发指南.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开