一种ROS2调度器的实现方法、装置、设备及存储介质制造方法及图纸

技术编号:38675659 阅读:12 留言:0更新日期:2023-09-02 22:51
本公开涉及一种ROS2调度器的实现方法、装置、设备及存储介质,其中,方法包括:加载用户任务配置文件,得到任务动态库的位置信息,根据位置信息对任务动态库进行读取,得到待处理任务;根据待处理任务创建若干线程实例,并将线程实例传输至调度器,将线程实例创建为可调度的任务实体;读入调度配置文件,得到线程实例的优先级配置;根据优先级配置赋予线程实例对应的优先级,并基于优先级将任务实体添加至调度队列,生成任务线程;检测到待处理任务的运行条件具备时,根据优先级等级在调度队列中提取出对应的任务线程作为目标线程,赋予目标线程对应的权限并执行。本公开实现了优先级的灵活配置,适配不同的应用场景,合理利用了计算资源。算资源。算资源。

【技术实现步骤摘要】
一种ROS2调度器的实现方法、装置、设备及存储介质


[0001]本公开涉及车载系统
,尤其涉及一种ROS2调度器的实现方法、装置、电子设备及计算机可读存储介质。

技术介绍

[0002]相关技术中,ROS2起初是应用在机器人领域,原生ROS2执行器具有单线程和多线程两种执行器,ROS2内置的执行器用于协调和调度进程中回调。一个ROS2应用有一个或多个回调,执行器把每个回调封装为一个用户任务。单线程映射为操作系统中的一个进程,多线程执行器映射为操作系统的多个进程。单线程执行器在单线程中执行回调;多线程执行器跨多个线程执行回调。
[0003]由于在机器人的使用场景中,实时性和确定性的要求不太严格,ROS2的执行器不能够设置用户任务的优先级,导致执行器不能够协调用户任务的调度优先级,即用户的所有任务对于执行器的调度器来说都是同样的优先级,采用的公平调度的策略,没有对回调任务执行顺序的显式控制。但是,想要将ROS2应用在实时性和确定性要求较高的汽车领域,以满足车载应用在多种场景下用户任务需要多种优先级的需求,原生ROS2执行器的调度方式显然不能满足对实时性和确定性高的车载应用,需要解决车载应用调度的关键问题。
[0004]因此,亟需一种能够实现多级别调度,便于修改,灵活适配多种应用场景的ROS2调度器的实现方法。

技术实现思路

[0005]为克服相关技术中存在的问题,本公开提供一种ROS2调度器的实现方法、装置、电子设备及计算机可读存储介质。
[0006]根据本公开实施例的第一方面,提供一种ROS2调度器的实现方法,包括:加载用户任务配置文件,获取任务动态库的位置信息,并根据所述位置信息对所述任务动态库进行读取,得到待处理任务;根据所述待处理任务创建若干线程实例,并将所述线程实例传输至调度器,所述调度器将所述线程实例创建为可调度的任务实体;读入调度配置文件,得到所述线程实例的优先级配置;根据所述优先级配置赋予所述线程实例对应的优先级,并基于所述优先级将所述任务实体添加至调度队列,生成任务线程;检测到所述待处理任务的运行条件具备时,根据优先级等级在所述调度队列中提取出对应的任务线程作为目标线程,赋予所述目标线程对应的权限并执行。
[0007]在一些实施例中,所述根据所述待处理任务创建若干线程实例,并将所述线程实例传输至调度器,所述调度器将所述线程实例创建为调度的任务实体,包括:将所述待处理任务封装为匿名执行函数,所述匿名执行函数能够在被调度器选中后执行;根据所述匿名执行函数创建得到若干线程实例,并对所述线程实例打上与所述待处理任务匹配的任务标识;通过调度器接口将所述线程实例传输至调度器,所述调度器将所述线程实例创建为可调度的任务实体。
[0008]在一些实施例中,在所述读入调度配置文件之前,还包括:根据所述待处理任务中的先后顺序,设定对应的优先级;根据所述优先级对所有待处理任务进行优先级调度配置,所述待处理任务对应唯一的优先级,得到调度配置文件。
[0009]在一些实施例中,所述读入调度配置文件,得到所述线程实例的优先级配置,包括:读取预先设定的调度配置文件并解析,得到配置参数,所述配置参数包括调度策略类型、CPU亲和性、调度组分类、任务名和优先级,所述任务名与所述任务标识一一对应;根据所述配置参数对调度器进行初始化,并基于所述任务标识确定所述线程实例对应的任务名;根据所述任务名,在所述调度配置文件中查找得到所述线程实例对应的优先级配置。
[0010]在一些实施例中,所述根据所述优先级配置赋予所述线程实例对应的优先级,并基于所述优先级将所述任务实体添加至调度队列,生成任务线程,包括:根据所述优先级配置,得到并赋予所述线程实例对应的优先级;获取预设的最大优先级,调整所述线程实例中超过所述预设的最大优先级的优先级;根据调整后的优先级,将所述线程实例对应的任务实体添加至调度器的调度队列,生成对应的任务线程。
[0011]在一些实施例中,所述检测到所述待处理任务的运行条件具备时,根据优先级等级在所述调度队列中提取出对应的任务线程作为目标线程,赋予所述目标线程对应的权限并执行,包括:检测所述待处理任务的运行条件是否具备;在所述待处理任务的运行条件具备时,根据优先级等级在所述调度队列中对符合运行条件的任务线程进行优先级遍历,得到当前优先级最高的任务线程,作为目标线程;调整所述目标线程的状态,赋予所述目标线程对应的权限,并根据获取的权限执行所述目标线程。
[0012]在一些实施例中,还包括:在调度器中,根据待处理任务和优先级形成调度器任务优先级结构,所述调度器任务优先级结构包括数组和数组内每个值对应的优先级矩阵;其中,所述数组以组名为关键字,所述优先级矩阵内设置有多个级别的优先级队列,所述优先级队列包括多个优先级,且每个优先级对应有若干待执行的任务线程;在调度器查找下一个待执行的任务线程时,在所述多个数组中选取任意一个组,遍历所述数组对应的优先级矩阵,并根据优先级的高低查找得到组内优先级最高的任务线程,作为组内最高任务线程;遍历所有数组,得到每个数组中的组内最高任务线程,比较所述组内最高任务线程,得到所有数组中优先级最高的任务线程,作为目标线程。
[0013]根据本公开实施例的第二方面,提供一种ROS2调度器的实现装置,包括:待处理任务获取模块,用于加载用户任务配置文件,获取任务动态库的位置信息,并根据所述位置信息对所述任务动态库进行读取,得到待处理任务;任务线程创建模块,用于根据所述待处理任务创建若干线程实例,并将所述线程实例传输至调度器,所述调度器将所述线程实例创建为可调度的任务实体;优先级配置获取模块,用于读入调度配置文件,得到所述线程实例的优先级配置;优先级赋予模块,用于根据所述优先级配置赋予所述线程实例对应的优先级,并基于所述优先级将所述任务实体添加至调度队列,生成任务线程;目标线程执行模块,用于检测到所述待处理任务的运行条件具备时,根据优先级等级在所述调度队列中提取出对应的任务线程作为目标线程,赋予所述目标线程对应的权限并执行。
[0014]根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现本公开第一方面所提供的ROS2调度器的实现方法。
[0015]根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面所提供的ROS2调度器的实现方法的步骤。
[0016]本公开的实施例提供的技术方案可以包括以下有益效果:通过加载用户任务配置文件,得到任务动态库的位置信息,并根据位置信息对任务动态库进行读取,得到待处理任务;根据待处理任务创建若干线程实例,并将线程实例传输至调度器,调度器将线程实例创建为可调度的任务实体;读入调度配置文件,得到线程实例的优先级配置,通过调度配置文件对任务处理的先后顺序进行设置,能够实现不同优先级线程的按序处理,且便于优先级的修改,通过动态本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种ROS2调度器的实现方法,其特征在于,包括:加载用户任务配置文件,获取任务动态库的位置信息,并根据所述位置信息对所述任务动态库进行读取,得到待处理任务;根据所述待处理任务创建若干线程实例,并将所述线程实例传输至调度器,所述调度器将所述线程实例创建为可调度的任务实体;读入调度配置文件,得到所述线程实例的优先级配置;根据所述优先级配置赋予所述线程实例对应的优先级,并基于所述优先级将所述任务实体添加至调度队列,生成任务线程;检测到所述待处理任务的运行条件具备时,根据优先级等级在所述调度队列中提取出对应的任务线程作为目标线程,赋予所述目标线程对应的权限并执行。2.根据权利要求1所述的ROS2调度器的实现方法,其特征在于,所述根据所述待处理任务创建若干线程实例,并将所述线程实例传输至调度器,所述调度器将所述线程实例创建为调度的任务实体,包括:将所述待处理任务封装为匿名执行函数,所述匿名执行函数能够在被调度器选中后执行;根据所述匿名执行函数创建得到若干线程实例,并对所述线程实例打上与所述待处理任务匹配的任务标识;通过调度器接口将所述线程实例传输至调度器,所述调度器将所述线程实例创建为可调度的任务实体。3.根据权利要求2所述的ROS2调度器的实现方法,其特征在于,在所述读入调度配置文件之前,还包括:根据所述待处理任务中的先后顺序,设定对应的优先级;根据所述优先级对所有待处理任务进行优先级调度配置,所述待处理任务对应唯一的优先级,得到调度配置文件。4.根据权利要求3所述的ROS2调度器的实现方法,其特征在于,所述读入调度配置文件,得到所述线程实例的优先级配置,包括:读取预先设定的调度配置文件并解析,得到配置参数,所述配置参数包括调度策略类型、CPU亲和性、调度组分类、任务名和优先级,所述任务名与所述任务标识一一对应;根据所述配置参数对调度器进行初始化,并基于所述任务标识确定所述线程实例对应的任务名;根据所述任务名,在所述调度配置文件中查找得到所述线程实例对应的优先级配置。5.根据权利要求4所述的ROS2调度器的实现方法,其特征在于,所述根据所述优先级配置赋予所述线程实例对应的优先级,并基于所述优先级将所述任务实体添加至调度队列,生成任务线程,包括:根据所述优先级配置,得到并赋予所述线程实例对应的优先级;获取预设的最大优先级,调整所述线程实例中超过所述预设的最大优先级的优先级;根据调整后的优先级,将所述线程实例对应的任务实体添加至调度器的调度队列,生成对应的任务线程。6.根据权利要求2所述的ROS2调度器的实现方法,其特征在于,所述检测到所述待处理
...

【专利技术属性】
技术研发人员:张连祥肖杰许倜陈永波
申请(专利权)人:国科础石重庆软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1