一种基于插件框架调用IROS服务的方法技术

技术编号:36228282 阅读:14 留言:0更新日期:2023-01-04 12:27
一种基于插件框架调用IROS服务的方法以IROS的服务功能和机器人开发组件为基础,可以自动的补全参数,方便开发人员查看服务参数的类型,名称以及返回值,方便开发人员撰写响应的接口,提升智能机器人的协作开发效率;同时本方案还可以用来作为服务的测试工具,测试服务的功能是否正常,节约开发时间,提升开发效率。此外,本框架还提出了一种将srv文件的参数和类型进行MD5加密,作为调用服务的依据,增强了调用服务的鲁棒性。了调用服务的鲁棒性。了调用服务的鲁棒性。

【技术实现步骤摘要】
一种基于插件框架调用IROS服务的方法


[0001]本专利技术涉及智能机器人开发
,具体涉及一种基于插件框架调用IROS服务的方法。

技术介绍

[0002]IROS(Intelligent Robot Operating System,简称“IROS”),具备ROS类似的功能,替代了开源ROS的内核,提供了兼容ROS的接口,解决了ROS可靠性、性能、安全等相关的问题,并增加了新的功能,支持云化机器人开发、支持云边端通信、支持多机器人协作等。
[0003]服务通信也是ROS中一种极其常用的通信模式,服务通信是基于请求响应模式的,是一种应答机制。在服务通信中,数据分成两部分,请求与响应,在 srv 文件中请求和响应使用
‑‑‑
分割。在开发调试阶段,节点服务的调用者往往不知道具体需要传入哪些参数,以及参数的类型,尤其是当参数发生了变化,或者其他程序提供了相同的服务,造成节点的调用程序有时正确有时错误,亦或者异常退出。此外,多人团队协作开发,程序服务的提供者与调用者开发进度不一致,这也就是无法进行联调。

技术实现思路

[0004]本专利技术为了克服以上技术的不足,提供了一种使得开发过程更加高效,便捷的基于插件框架调用IROS服务的方法。
[0005]本专利技术克服其技术问题所采用的技术方案是:一种基于插件框架调用IROS服务的方法,包括如下步骤:a)定义插件的接口信息;b)定义插件接口类;c)定义插件管理框架;d)获取默认参数;e)计算MD5值;f)生成初始化接口函数,默认为空;g)生成发送消息接口函数;h)生成插件请求处理函数,请求处理函数校验参数类型及名称是否匹配及是否缺少参数,如果参数名或类型错误则抛出异常,终止程序运行,如果缺少参数,则使用默认值处理;i)生成接收消息接口函数,解析并返回结果;j)生成插件响应处理函数,将返回结果打印出来。
[0006]步骤a)中定义的插件的接口信息为:a

1)初始化接口;a

2)插件的注册接口;a

3)插件的卸载接口;
a

4)获取默认参数接口;a

5)获取插件的MD5值;a

6)定义插件间的消息发送接口;a

7)定义插件间的消息接收接口;a

8)定义插件功能执行接口。
[0007]步骤b)中插件的接口类为定义了步骤a)中接口全部为纯虚函数,有子类继承并实现。
[0008]步骤c)包括如下步骤:c

1)解析参数,获取服务使用的srv文件;c

2)判断该srv文件的插件是否已注册,如果已注册则执行步骤c

6),如有没有注册,则获取srv文件所在的包的位置,找到对应的srv文件和库;c

3)使用dlopen()函数加载srv文件所对应的库;c

4)使用dlsym()函数解析库的接口,并创建srv文件对应的插件类;c

5)使用插件类注册服务;c

6)获取插件类的默认参数,进行参数比较;c

7)如果参数比较后不兼容,则抛出异常,关闭所有打开的动态库,如果参数比较后兼容,则缺少的参数使用默认值补全;c

8)获取服务提供者使用的srv文件的MD5码;c

9)比对MD5码是否相同,如果不相同,则提示错误并退出执行,如果相同,则执行步骤c

10);c

10)调用插件的服务接口,将请求参数发送给服务的提供者;c

11)等待服务的返回结果,解析并打印结果。
[0009]步骤d)包括如下步骤:d

1)读取srv文件内容;d

2)创建一个JSON对象root;d

3)判断srv文件是否已经读完,如果是,则执行步骤d

15),如果否则执行步骤d

4);d

4)获取一行数据;d

5)判断获取的数据是否为注释,如果是则返回执行步骤d

4),如果否则执行步骤d

6);d

6)获取参数名和类型名;d

7)判断类型名是否为基本类型,如果是则执行步骤d

8),如果否则执行步骤d

9);d

8)将参数名和基本类型插入到JSON对象中后返回执行步骤d

4);d

9)判断类型名是否为msg类型,如果是,则执行步骤d

10),如果否则退出;d

10)获取msg文件所在的路径并打开,打开后执行步骤d

11);d

11)创建一个JSON对象msg;d

12)判断msg文件是否已读完,如果是则执行步骤d

13),如果否则返回执行步骤d

4);
d

13)将参数名和JSON对象msg插入到JSON对象中,返回执行步骤d

4);d

14)根据JSON对象value的类型设置默认值;d

15)将默认值写入到获取默认值接口中。
[0010]步骤e)包括如下步骤:e

1)根据JSON对象的key的参数名进行排序;e

2)将JSON对象序列化为字符串;e

3)使用MD5解密算法对序列化的字符串进行加密;e

4)将srv文件参数对应的MD5写入到接口函数中。
[0011]本专利技术的有益效果是:以IROS的服务功能和机器人开发组件为基础,可以自动的补全参数,方便开发人员查看服务参数的类型,名称以及返回值,方便开发人员撰写响应的接口,提升智能机器人的协作开发效率;同时本方案还可以用来作为服务的测试工具,测试服务的功能是否正常,节约开发时间,提升开发效率。此外,本框架还提出了一种将srv文件的参数和类型进行MD5加密,作为调用服务的依据,增强了调用服务的鲁棒性。
附图说明
[0012]图1为本专利技术的获取默认参数的方法流程图。
具体实施方式
[0013]下面对本专利技术做进一步说明。
[0014]本专利技术的方法为:首先通过解析srv文件,按照规约生成对应的请求参数类和响应参数类;其次,递归的获取srv参数的名称和类型,然后使用MD5加密算法加密。第三,通过调用系统接口获取服务的类型,然后通过包管理工具查找srv文件的路径,进而确定so的位置,第四,通过dlopen加载服务对应的so文件,使用dlsym获取动态库的接口等信息,并创建本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于插件框架调用IROS服务的方法,其特征在于,包括如下步骤:a)定义插件的接口信息;b)定义插件接口类;c)定义插件管理框架;d)获取默认参数;e)计算MD5值;f)生成初始化接口函数,默认为空;g)生成发送消息接口函数;h)生成插件请求处理函数,请求处理函数校验参数类型及名称是否匹配及是否缺少参数,如果参数名或类型错误则抛出异常,终止程序运行,如果缺少参数,则使用默认值处理;i)生成接收消息接口函数,解析并返回结果;j)生成插件响应处理函数,将返回结果打印出来。2.根据权利要求1所述的基于插件框架调用IROS服务的方法,其特征在于,步骤a)中定义的插件的接口信息为:a

1)初始化接口;a

2)插件的注册接口;a

3)插件的卸载接口;a

4)获取默认参数接口;a

5)获取插件的MD5值;a

6)定义插件间的消息发送接口;a

7)定义插件间的消息接收接口;a

8)定义插件功能执行接口。3.根据权利要求1所述的基于插件框架调用IROS服务的方法,其特征在于:步骤b)中插件的接口类为定义了步骤a)中接口全部为纯虚函数,有子类继承并实现。4.根据权利要求1所述的基于插件框架调用IROS服务的方法,其特征在于,步骤c)包括如下步骤:c

1)解析参数,获取服务使用的srv文件;c

2)判断该srv文件的插件是否已注册,如果已注册则执行步骤c

6),如有没有注册,则获取srv文件所在的包的位置,找到对应的srv文件和库;c

3)使用dlopen()函数加载srv文件所对应的库;c

4)使用dlsym()函数解析库的接口,并创建srv文件对应的插件类;c

5)使用插件类注册服务;c

6)获取插件类的默认参数,进行参数比较;c

7)如果参数比较后不兼容,则抛出异常,关闭所有打开的动态库,如果参数比较后兼容,则缺少的参数使用默认值补全;c

8)获取服务提供者使用的srv文件的MD5码;c

9)比对MD5码是否相同,如果不相同,则提示错误并退出执行,如果相同,则执行步骤c

10);c

10)调用插件的服务接口,将...

【专利技术属性】
技术研发人员:蔡萌萌李朝铭刘鹏王召东赵洪宇
申请(专利权)人:山东新一代信息产业技术研究院有限公司
类型:发明
国别省市:

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

1