FreeRTOS中文入门手册
FreeRTOS中文入门手册方便初学者入门学习,讲的很好,很值得学习第一章任务管理Designed For Micr。 contr。11exs;概览附录中提供了使用源代码的实用信息小型多任务嵌入式系统简介不同的多任务系统有不同的侧重点。以工作站和桌面电脑为例:·早期的处理器非常昂贵,所以那时的多仟务用于实现在单处理器上支持多用户。这类系统中的调度算法侧重于让每个用户公平共享处理器时间。随着处理器功能越来越强大,价格却更偏宜,所以每个用户都可以独占一个或多个处理器。这类系统的调度算法则设计为计用户可以同时运行多个应用程序,而计算机也不会显得反应迟钝。例如某个用户可能同时运行了一个字处理程序,一个电子表格,一个邮件客户端和一个浏览器,并且期望每个应用程序任何时候都能对输入有足够快的响应时间。桌面电脑的输入处珒可以归类为软实时。为了保证用户的最佳体验,计算机对每个输入的响应应当限定在一个恰当的时间范围——但是如果响应时间超出了限定范闱,并不会让人觉得这合电脑无法使用。比如说,键盘操作必须在键按下后的某个时间内作出明显的提示。但如果按键提示超出了这个时间,会使得这个系统看起来响应人慢,而不致于说这台电脑不能使用。仅仅从单处理器运行多线程这一点来说,实时嵌入式系统中的多任务与桌面电脑的多任务从概念上来讲是相似的。但实时嵌入式系统的侧重点却不同于桌面电脑特别是当嵌入式系统期望提供硬实时行为的时候。硬实时功能必须在给定的时间限制之内完成——如果无法做到即意味着整个系统的绝对失败。汽车的安全气囊触发机制就是一个硬实吋功能的例子。安全气囊在撞击发生后给定时间限制内必须弹出。如果响应时间超出了这个时间限制,会使得驾驶员受到伤害,而这原本是可以避免的大多数嵌入式系统不仅能满足硬实时要求,也能满足软实时要求。Designed For Micr。 contr。11exs;术语说明在屮,每个执行线程都被称为任务。在嵌入式社区屮,对此并没有个公允的术语,但我更喜欢用任务而不是线程,因为从以前的经验米看,线程具有更多的特定含义本章的目的是让读者充分了解:在应用程序中,如何为各仟务分配处理时间。●在任意给定时刻,如何选择任务投入运行。●任务优先级如何影响系统行为。●任务存在哪些状态。此外,还期望能够让读者解:●如何实现一个任务。●如何创建一个或多个任务的实例●如何使用任务参数。如何改变一个已创建任务的优先级●如何删除任务。●如何实现周期性处理。空闲任务何时运行,可以用来干什么本章所介绍的概念是理解如何使用的基础,也是理解基于的应用程序行为方式的基础——因此,本章也是这本书中最为详尽的一章Designed For Micr。 contr。11exs;任务函数任务是由语言数实现的。唯一特别的只是任务的函数原犁,其必须返回而且带有一个指针参数。其数原型参见程序清单。void ATaskFunction( void *pvParameters )程序清单任务函数原型每个任务都是在自己权限氾围内的一个小程序。其具有程序入口,通常会运行在一个死循环中,也不会退出。一个典型的任务结构如程序清单所示。仟务不允许以任何方式从实现函数中返回一一它们绝不能有条语句,也不能执行到函数末尾。如果一个任务不再需要,可以显式地将其删除。这也在程序清单展现个任务函数可以用来创建若干个任务—创建出的任务均是独立的执行实例,拥有属于自己的栈空间,以及属于自己的自动变量栈变量,即任务函数本身定义的变量v。 d ATaskFunction(v。1d* pArameters)/*可以像普通函数一样定义变量。用这个函数创延的每个任务实例都有一个属于自己的 vAria1b1 eExamp1e变量。但如果 varial1e3 xample被定义为 static,这一点则不成立-这种情况下只存在一个变量,所有的任务实例将会共享这个变量。int ivariableExample =0;/*仨务通常实现在一个死循环中。*/for(ii)/*完成任务功能的代码将放在这里。*//*如果任务的具体实现会跳出上面的死循环,则此任务必须在函数运行完之前朋除。传入NUL参数表示删除的是当前任务*vTaskDelete( NULL程序清单典型的任务函数结构Designed For Micr。 contr。11exs;顶层任务状态应用程序可以包含多个任务。如果运行应用程序的微控制器只有一个核那么在任意给定时间,实际上只会有一个仼务被执行。这就意味着一个任务可以有一个或两个状态,即运行状态和非运行状态。我们先考虑这种最简单的模型——但请牢记这其实是过于简单,我们硝后将会看到非运行状态实际上又可划分为若千个子状态。当某个任务处于运行态时,处理器就正在执行它的代码。当一个任务处于非运行态时,该任务进行休眠,它的所有状态都被妥善保存,以便在下一次调试器决定让它进入运行态时可以恢复执行。当任务恢复执行时,其将精确地从离开运行态时正准备执行的那一条指令开始执行。A tasks that areOnly one tasknot currentcan be in theRunning are in theRunning state atNot Running Stateany one timeNot RunningRunning图顶层任务状态及状态转移任务从非运行态转移到运行态被称为切换入或切入或交换入相反,任务从运行态转移到非运行态被称为切换出或切出或交换出的调度器是能让任务切入切出的唯一实体。Designed For Micr。 contr。11exs;创建任务函数创建仟务使用的函数这可能是所有数中最复杂的函数,但不幸的是这也是我们第一个遇到的函数。但我们必须首先掌控任务因为它们是多任务系统中最基本的组件。本书中的所有示例程序都会用到,所以会有人量的例子可以参考。附录:描述川到的数据类型和命名约定。portBASE TYPE xTaskCreate( paTASK CODE pvTaskCodeconst signed port CHAR conist pcNameunsigned portSHORT usstackDepthunsigned portEASE TYPE uxPriorityxTaskHandle *pxCreatedTask程序清单函数原型表参数与返回值参数名描述任务只是永不退出的函数,实现常通常是个死循环。参数只一个指向任务的实现函数的指针效果上仅仅是函数名具有描述性的任务名。这个参数不会被使用。其只是单纯地用于辅助调试。识别一个具有可读性的名字总是比通过句柄来识别容易得多。应用程序可以通讨定义常量来定义任务名的最大长度—一包括结朿符。如果传入的字符串长度超过了这个最大值,字符串将会自动被截断。Designed For Micr。 contr。11exs;当任务创建时,内核会分为每个任务分配属于任务自己的唯一状态。值用于告诉内核为它分配多人的栈空间。这个值指定的是栈空间可以保存多少个字,而不是多少个字节比如说,如果是位宽的栈空间,传入的值为则将会分配字节的栈空间。栈深度乘以栈宽度的绩果万不能超过~个类型变量所能表达的最人值。应川程序通过定义常量来决定空闲任条任用的栈空间大小。在为微控制器架构提供的应用程序中,赋予此常量的值是对所有任务的最小建议值如果你的任务会使用大量栈空间,那么你应当赋予一个更大的值。没有任何简单的方法可以决定一个任务到底需要多大的栈空间。计算出来虽然是可能的,但人多数用户会先简单地赋予一个自认为合理的值,然后利用提供的特性来确证分配的空间既不欠缺也不浪费。第六章包括了一些信息,可以知道如何去查询任务使用了多少栈空问。仟务函数接受一个指向的指钅的值即是传递到任务中的值。这篇文档中的一些范例程序将会示范这个参数可以如何使用指定任务执行的优先级。优先级的取值范围可以从最低优先级到最高优先级是一个由用户定义的常量。优生级号并没有上限除了受限于采用的数据类型和系统的有效内存空间,但最妊使用实际需要的最小数值以避免内在浪费。如果的值超过了,将会导致实际赋给任务的优先级被自动封顶到最大合法值。Designed For Micr。 contr。11exs;用于传出任务的句柄。这个句枢将在调川中对该创建出来的任务进行引用,比如改变任务优先级,或者删除仟务。如果应用程序中不会用到这个任务的包柄,则川以被设为返回值有两个可能的返回值:表明任务创建成功。由于内存堆空间不足,无法分配足够的空间来保存任务结构数据和任务栈,因此无法创建任务。第五章将提供更多有关内存管理方面的信息。例创建任务附录:包含一些关于示例程序生成工具的信息。本例演示了创建并启动两个任务的必要步骤。这两个任务只是周期性地打印输出守符串,采用原始的空循环方式来产生周期延迟。两者在创建时指定了相同的优先级,并且在实现上除输出的字符串外完全一样—程序清单4和程序清单5是这两个仟务对应的实现代码。Designed For Micr。 contr。11ers;
- 2020-12-09下载
- 积分:1
基于视频的三维重建研究
这是一篇华中科技大学的硕士毕业论文,里面对三维重建技术的讲解很详细,适合作为综述来看独创性声明本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集休已经发表或撰写过的研究成果。对木文的研究做出贡献的个人和集休,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。学位论文作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关侏留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权华屮科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以釆用影印、缩印或扫描等复制手段保存和汇编本学位论文。保密口,在年解密后适用本授权书本论文属于不保密口。(请在以上方框内打“√”)学位论文作者签名指导教师签名:日期:年月日日期:年月日万方数据华中科技大学硕士学位论文摘要基于视频的重建技术在计算杋视觉领域中扮演着非常重要的角色,而如何恢复场景的三维模型是目前研究的热点与难点问题。本文围绕基于视频的场景重建技术展开讨论,包括棊于单目视频的三维场景重建和于双目视频的视差图和场景流获取。由于单目包含的深度信息比较少,如何基于单目视频恢复相机的运动参数以及目标的深度信息是研究的重与难点。双目视频虽然包含了非常显著的深度信息,但是考虑到视频中场景的迕续性问题,如何使得恢复岀的深度图保持前后帧的连续性以及场景中运动日标的一致性,也是比较困难的问题。因此,针对上述所提到的问题进行了深入的研究,具体的研究工作如下第一,对三维重建研究进行了详细的介绍,介绍了对于特征点匹配的理解以及我们提出的基于特征引导偏向性高斯混合模型( Feature Guided Biased GaussianMixture model,FGBG);详细介绍立体视觉中立体匹配算法的原理、分类及评测标准,并在4个典型的数据集上对有代表性的局部、全局、半全局算法进行对比实验。此外,详细介绍运动恢复结构(SFM)的基本原理,并进行了实验分析。第二,提岀一种基于双目视频的视差图和场景流获取技术。基于双目视频,首先获得初始的视差图和2D特征点轨迹;在此基础上获得初始的3D稀疏运动轨迹,利用本文提出的 Object Motion Hypothesis(OMH)算法获得运动物体的致性假设采用 slanted-plane model以及参考图像与前后时间点图像对的约束关系,构建超像素和运动物体之间的能量模型,通过优化获得视差和场景流的估计结果。第三,提出一种棊于单目视频的动态场景重建系统。在获取特征点轨迹的基础上,基于运动信息获得特征点轨迹的聚类结果;提出一种基于超像素的多标记Graph-cut算法,得到每一个日标的精确边界;为每一个运动日标分配一个虚拟相机通过标准的SFM方法分别单独估计每个运动目标对应的虚拟相机的参数和稀疏三维点云,通过PMVS和泊松表面重建获得目标的稠密重建结果。关键词:三维重建、单∏视频、双目视频、视差、场景流万方数据华中科技大学硕士学位论文Abstract3D reconstruction based on video has play an important role in computer vision, andhow to recover 3D scene model has been paid much attention and is a difficult problemBased on the importance of 3D reconstruction, in this paper, the 3D reconstruction basedon video has been studied, including 3D scene reconstruction based on monocular videoand depth map and scene flow estimating based on binocular video. Since the monocularcontains much less depth information, how to recover the camera motion and depth maphas been a difficult problem. Besides, although binocular view contains significant depthinformation, it is difficult to keep the consistency of depth map and moving objectsTherefore, in view of the problems mentioned above the specific research works are asFirst. we introduce two directions of 3D reconstruction in computer vision: based onstereo vision method and based on structure from motion. The stereo matching method hasbcen introduced in detail, including algorithm principle, classification, and evaluationmethod. And, we compare the global, local and semi-global algorithm on four typicaldataset. In addition, we have made a detail introduction of structure from motion(SFM)and the experiment has been carried out to get 3D point cloudSecond, a method for depth map and scene flow estimation is proposed. First, inputbinocular video, initial disparity map is got by SGM, 2 point trajectories are got byoptical flow. Then the 3D tracks are got by disparity map and 2D point trajectories, get theobject motion hypothesis. Considering constraint between the reference image and theforward-backward images, the energy model based on super-pixel and object isconstructed using slanted plane model. Finally, the depth map and scene flow will be gotThird, a method for reconstructing monocular dynamic scene with multiple movingrigid objects captured by a single moving camera is proposed. First of all, feature pointsare matched through the video sequence via the optical flow method and the tracks "aregot based on these matches. Then the tracks are divided into several groups according totheir motion differences. An improved graph cuts based multi-label auto imagesegmentation method is used to acquire the accurate boundary of each moving object and万方数据华中科技大学硕士学位论文the static background. Then we assume a virtual camera for each moving object and thestatic background. The pose of these virtual cameras are estimated via the standardStructure from Motion(SFM) pipeline. Finally a dense point set and textured model isreturned for each virtual camera. We evaluate our approach on real-world video sequenceand demonstrate its robustness and effectivenessKey words: 3D reconstruction, monocular video, binocular video, disparity, scenefleOw万方数据华中科技大学硕士学位论文目录摘要Abstract绪论1研究的背景及意义2国内外研究现状1.3论文的主要工作及结构···································:··········.················4·2三维重建基本方法研究2.1引言.………8)2.,2线性摄像机模型(8)23基于特征点的图像匹配24运动恢复结构方法(12)2.5立体匹配与三维重建···.·.·······.·················:····.····················(15)26本章小结(22)基于双目视频的视差图与场景流估计3.1引言(23)3.2运动目标的提取(25)3.3双向约束场景流模型..31)34实验分析.333.5本章小结(444基于单目视频的三维重建研究(45)4.2目标分割(464.3三维场景估计(51)万方数据华中科技大学硕士学位论文4.4实验分析(52)4.5本章小结(55)5全文总结与展望5.1木文的主要页献与创新点(56)5.2工作展望…7)致谢S8)参考文献非D·非非··非。非(59)附录万方数据华中科技大学硕士学位论文绪论11研究的背景及意义视觉是人类的基本功能。通过视觉,人们能够感知外部世界中物体的大小,以及辨别物体之间的相对位置,并且了解它们之间的相互关系。人类把这种功能称为视觉功能。随着科学技术的不断创新,新兴的电子产品不断涌现,数码设备的成熟和计算机理论的涌现让人们越来越关注计算机视觉。人们开始利用摄像机采集视频或者图像,并将其转化为人类可理解的信号。即利用计算机实现模仿人类视觉的功能,计算机视觉也就随之六生。计算机视觉是个涵盖多种学科知识的新兴学科。其理论研究的最终目的是通过对采集到的视频或者图像进行处理,将二维图像或视频转化为三维信息,从而感知场景或物体的形状及运动。因此,计算机视觉吸引了越来越多的研究人员参与其中,包括图像处理与模式识别,应用数学,计算札科学与技术等等。三维场景重建作为计算札视觉中一个重要的研究方向,受到许多研究者的青睐。最近,获取三维场景信息的方式主要有以下三种:第一种,利川常见的建模软件3DMax、CAD等进行重建;第二种,利用深度扫描仪、红外或者激光测距仪器等设备进行三维重建;第三种,利用计算机视觉原理,基于视频或者图像获取场景的三位模型。在上述方法中,第一种是最为成熟的,但是第一种方法的操作步骤十分复杂,并且建模周期长。第二种方式能够获得物伓的髙精度几何模型,但是这些仪器价格昂贵,费时费力,并且对于重建大型场景非常局限。因此,第三种方式受到了普遍的关注,它可以重建复杂的室外大型场景,真实感强,价格低廉且方便携带。利用图像或者视频对场景进行重建,即从图像或视频中恢复场景或者物体的三维几何信息,构建三维模型,给人以视觉亨受。三维重建的用途十分广泛,它可以用于机器人导航,无人驾驶,医学图像分析,游戏等众多方向在众多的三维场景重建方法中,于视频的重建方法一直是一个研究热点。其中,从单目视觉的角度出发,基于单目视频的三维重建技术就是利用单个摄像札对万方数据华中科技大学硕士学位论文场景进行拍摄,研宄如何利用图像序列光流估计运动物体或场景的三维运动来重建三维模型。从双日视觉的角度出发,基于双∏视频的三维重建技术就是利用两个摄像机,从两个不同的角度对同一个场景进行拍摄,研究如何利用左右两个图像序列各自的运动信息,以及左右视图之间的视差信息,完成场景的三维重建。本文的基于视频的三维重建技术具有十分重要的研究价值。针对双目视频,提出了一种基于双目视频的视差图和场景流获取技术,目的是同时获得视差图和场景流信息、。针对单目视频,提出个完整的基于包含多个刚体运动目标的单目动态场景视频的重建系统。12国内外研究现状121基于单目视觉的三维重建研究现状近年来,3D静态场景的重建己经取得了显著性的突破。其中,大多数的研究都是遵循一个特定的步骤:首先从一组多视角的图像中提取特征点,然后对多视图中的特征点进行匹配,构建基础矩阵,恢复相机参数,从而得到玚景的三维结构凹。其中, Snavely N主要通过SFM( (structure from motion)从无序图像序列中恢复相机的位置以及获得场景的三维稀疏点云倒。除∫稀疏点云的重建之外,很多学者也集中研究场景的三维稠密重建四。其中, Seitz s m对多种立体匹配算法进行比较,并且是第一个提供已标定的多视图数据集。 Kolev K在前者的基础之上提出了一个全局能量模型,融合了轮廪信息和立体信息。值得一提的是,深度信息也是一种非常有前景的3D重建方法,主要思想是通过恢复图像的深度信息,融合多幅深度图逃行稠密重建η。此外,很多研究集屮于基于单个视频的稠密表面重建,主要包括基于场景流( scene flow)s, mesh- based稠密表面重建例, patch-base稠密表面重。但是,大多数捕获的视频中,动态场景视频比铰常见。而上述的研究只能用于处理静态场景,它们在应对多目标运动场景方面是十分有限的。最近, Tron r提出了一个包含动态运动目标的场景分割标准山,它是·个重要的3D运动估计和重建的预处埋过程视频重建主要有于两个视图12和基于多个视图314其中,HanM和万方数据
- 2020-12-11下载
- 积分:1