信息处理装置和信息处理方法、计算机程序以及程序制造方法与流程

文档序号:19158842发布日期:2019-11-16 01:07阅读:244来源:国知局
信息处理装置和信息处理方法、计算机程序以及程序制造方法与流程

本说明书中公开的技术涉及用于或支持具有可移动单元的控制设备的控制程序的开发的信息处理装置和信息处理方法、计算机程序以及程序制造方法。



背景技术:

近年来机器人技术的进步非常显著,并且已广泛应用于各种工业领域的工作场所。机器人包括例如多个连杆和连接这些连杆的关节,并且使用用于关节驱动的致动器(诸如,电机)通过驱动每个关节来进行操作。

例如,已知使用关键帧来编辑机器人的操作和动画的角色的方法(例如,参见专利文献1)。具体地,可以通过指定包括目标值的数据集来以直观且易于理解的方式编辑操作(诸如“在x秒内将关节从y度移动到z”),目标值诸如为在图形用户界面(gui)屏幕上的某个区段的操作的开始、结束等处的关键帧中的每个可移动单元(诸如,关节)的位置(关节角度)和速度。

然而,在创建各种多关节型机器人(articulatedrobot)的操作时需要考虑各种物理元素。例如,在创建诸如双足行走或四足行走的腿式移动机器人的操作时,应该考虑诸如机器本体下落或与移动路径上的物体(诸如,障碍物)的碰撞等物理元素。为了检查所创建的所定义操作(也称为运动),必须在真实机上进行所定义操作或使用能够进行高级物理运算的物理引擎。

现有技术文献

专利文献

专利文献1:日本专利申请公开第2002-74382号



技术实现要素:

本发明要解决的问题

本说明书中公开的技术的目的是提供用于或支持具有可移动单元的控制设备的控制程序的开发的信息处理装置及信息处理方法、计算机程序以及程序制造方法。

问题的解决方案

考虑到上述问题而做出了在本说明书中公开的技术,并且该技术的第一方面是一种信息处理装置,该信息处理装置处理包括针对控制目标设备的可移动单元的目标值的控制程序,该信息处理装置包括:

第一保持单元,保持可移动单元的特征值并且根据控制方法保持可移动单元的控制参数;

控制输出单元,使用由第一保持单元保持的控制参数和特征值,根据目标值来计算可移动单元的输出值;以及

物理运算单元,使控制目标设备根据计算出的可移动单元的输出值来执行物理动作。

控制输出单元使用由第一保持单元保持的控制参数来计算根据可移动单元的目标值与当前值的偏差的控制输入值,并且相对于该控制输入值来计算根据由第一保持单元保持的特征值的可移动单元的输出值。

此外,第一保持单元根据可移动单元的控制方法,保持比例增益、积分增益以及微分增益中的至少一个控制参数,并且保持以下各项中的至少一个特征值:驱动可移动单元的电机的制造商名称、型号、安装角度尺寸、类型、轴类型、是否存在电磁制动器、驱动器类型、额定输出、额定转速、最大转速、最大输入转速、额定转矩、瞬时最大转矩、激励最大静态转矩、速度范围、转子惯性力矩、惯性力矩、分辨率(电机轴)(p/r)、检测器(编码器)、间隙、减速比、电源输入电压、电源输入频率、电源输入额定电压、速度及位置控制命令、最大输入脉冲频率以及电机单元质量。

此外,信息处理装置还包括保持控制目标设备的特征值的第二保持单元。第二保持单元保持控制目标设备中包括的每个部件的重量、重心、惯性、关节的可移动范围、以及摩擦系数中的至少一项。然后,物理运算单元使控制目标设备使用由第二保持单元保持的特征值来执行物理动作。

此外,本说明书中公开的技术的第二方面是一种信息处理方法,该信息处理方法用于处理包括针对控制目标设备的可移动单元的目标值的控制程序,该信息处理方法包括:

第一保持步骤,保持可移动单元的特征值并且根据控制方法保持可移动单元的控制参数;

控制输出步骤,使用通过第一保持步骤保持的控制参数和特征值,根据目标值来计算可移动单元的输出值;以及

物理运算步骤,使控制目标设备根据计算出的可移动单元的输出值来执行物理动作。

此外,本说明书中公开的技术的第三方面是一种呈计算机可读格式描述的计算机程序,用于在计算机上执行对包括针对控制目标设备的可移动单元的目标值的控制程序的处理,该计算机程序使计算机起以下作用:

第一保持单元,保持可移动单元的特征值并且根据控制方法保持可移动单元的控制参数;

控制输出单元,使用由第一保持单元保持的控制参数和特征值,计算相对于目标值的可移动单元的输出值;以及

物理运算单元,使控制目标设备根据计算出的可移动单元的输出值来执行物理动作。

根据本文中公开的技术的第三方面的计算机程序限定了呈计算机可读格式描述的计算机程序,以便在计算机上实现预定处理。换句话说,通过将根据第三方面的计算机程序安装到计算机中,在计算机上展现协作动作,并且可以获得与根据第一方面的信息处理装置类似的效果。

此外,本说明书中公开的技术的第四方面是一种信息处理装置,该信息处理装置执行用于根据控制程序来控制具有可移动单元的控制目标设备的处理,该信息处理装置包括:

设置单元,将根据控制方法的可移动单元的控制参数设置到控制器,控制参数包括在控制程序中,控制器驱动控制目标设备中的可移动单元;以及

操作控制单元,根据由控制程序指定的可移动单元的目标值来控制由控制器对可移动单元的驱动。

此外,本说明书中公开的技术的第五方面是一种程序制造方法,该程序制造方法用于制造用于控制具有可移动单元的控制目标设备的控制程序,该程序制造方法包括:

控制参数设置步骤,向控制程序设置用于使控制目标设备的控制器控制可移动单元的控制参数;以及

目标值设置步骤,向控制程序设置要输入到控制目标设备的控制器以控制对可移动单元的驱动的目标值。

发明效果

根据本说明书中公开的技术,可以提供用于或支持具有可移动单元的控制设备的控制程序的开发的信息处理装置及信息处理方法、计算机程序以及程序制造方法。

应注意,本说明书中描述的效果仅是实施例,并且本发明的效果不限于此。此外,除了上述效果之外,本发明还可以发挥附加效果。

从基于稍后描述的实施方式和附图的详细描述中,本说明书中公开的技术的其他目的、特征和优点将变得明显。

附图说明

[图1]图1是示意性地示出控制程序的开发环境的实施例的图。

[图2]图2是示出经由网络的控制程序的分布式开发环境的图。

[图3]图3是示出用于开发机器人的控制程序的开发环境的图。

[图4]图4是示出用于开发自主车辆的控制程序的开发环境的图。

[图5]图5是示出用于开发无人驾驶飞行器(无人机)的控制程序的开发环境的图。

[图6]图6是示出安装在自主操作设备100的真实机上的硬件和软件架构的配置的实施例的图。

[图7]图7是示意性地示出应用程序的配置例的图。

[图8]图8是示出在真实机上安装用于控制真实机的应用程序的程序和数据时的处理过程的流程图。

[图9]图9是示意性地示出行为计划和所定义操作的每个数据文件的配置例的图。

[图10]图10是示出应用程序的真实机的操作的处理过程的流程图。

[图11]图11是示出用于执行所定义操作的详细处理过程的流程图。

[图12]图12是示意性地示出用于创建自主操作设备100的所定义操作的开发设备1200的功能配置的图。

[图13]图13是示出电机控制输出单元1220和物理运算单元1230中的每一者的内部操作的图。

[图14]图14是示出真实电机的控制框图的图。

[图15]图15是示出用于对应用程序的开发工具程序进行的处理过程的流程图。

[图16]图16是示出用于实现虚拟机的所定义操作的处理过程的流程图,以及用于在所定义操作的处理期间通过gui进行数据修正输入的处理过程。

[图17]图17是示出在所定义操作期间改变控制参数的情况的图。

[图18]图18是示出所定义操作的数据格式的修改的图。

具体实施方式

在下文中,将参考附图详细描述本说明书中公开的技术的实施方式。

图1示意性地示出了控制程序的开发环境的实施例。在开发环境下,设置了待开发的自主操作设备(真实机)100和在自主操作设备100中创建控制程序的开发设备200。

这里,自主操作设备100是通过自主或自适应控制来控制其自身行为的设备,并且包括诸如机器人、无人驾驶飞行器和自主驾驶汽车等各种形式。

自主操作设备100包括总体上控制整个系统100的操作的主体单元110,以及多个模块单元120-1、120-2......尽管为了简化在图1中仅示出了三个模块单元,但是还假设包括四个或更多个模块单元的自主操作设备,以及仅包括两个或更少的模块单元的自主操作设备。

一个模块单元120包括致动器121、传感器124、处理器122、存储器123和通信调制解调器125。应注意,尽管为简单起见未示出,但模块单元120中的单元121至125通过内部总线来互连。

致动器121例如是用于旋转地驱动关节的电机或用于扬声器的驱动器。传感器124是检测致动器的输出状态(诸如,关节旋转角度、角速度或扬声器的音量)的传感器、检测外力或其他外部环境的传感器等。

处理器122控制模块中的操作,包括致动器121的驱动控制(电机控制器)以及来自传感器124的检测信号的识别处理。处理器122使用存储器123来存储致动器121的控制信息、传感器的检测值等。

通信调制解调器125是用于进行模块单元120与主体单元110之间或模块单元120与另一模块单元之间的相互通信的硬件,并且可以是无线调制解调器或有线调制解调器。例如,经由通信调制解调器125,处理器122从主体单元110接收致动器121的驱动等的命令信号,并且将传感器124的检测数据发送到主体单元110。此外,模块单元120还可以经由通信调制解调器125来与诸如开发设备200的外部设备通信。

主体单元110包括处理器111、存储器112、通信调制解调器113、电池114、通用串行总线(usb)端口115和全球定位系统(gps)116。应注意,尽管为简单起见未示出,但主体单元110中的单元111至116通过内部总线来互连。

处理器111根据存储在存储器112中的程序集中控制整个自主操作设备100的操作。此外,电池114是自主操作设备100的驱动电源,并且向主体单元110和每个模块单元120供应电力。

通信调制解调器113是用于进行主体单元120与每个模块单元120之间的相互通信的硬件,并且可以是无线调制解调器或有线调制解调器。例如,经由通信调制解调器113,处理器111将致动器121的驱动等的命令信号发送到每个模块单元120,并且接收基于每个模块单元120中的传感器124的检测值的识别结果。此外,主体单元110还可以经由通信调制解调器113来与诸如开发设备200的外部设备通信。

usb端口115用于使用usb总线(缆线)来将外部设备连接到主体单元110。在本实施方式中,假设使用usb端口115将开发设备200连接到主体单元110。例如,在开发设备200上创建的控制程序可以经由usb端口115来安装在自主操作设备100上。应注意,usb是用于将外部设备连接到自主操作设备100的接口标准的实施例,并且可以被配置为根据另一接口标准来连接外部设备。

应注意,尽管未示出,但是存在连接主体单元110和诸如每个模块单元的硬件的数据总线和控制总线。

开发设备200由例如个人计算机配置而成,并且包括计算机主体单元210、诸如液晶面板的显示器220、以及包括鼠标、键盘等的用户界面(ui)单元230。此外,计算机主体单元210包括处理器211、图形处理单元(gpu)212、存储器213、usb端口214和通信调制解调器215。然而,还可以考虑将gpu212的功能包括在处理器211中的配置例。此外,计算机主体单元210包括除了所示的硬件部件之外的硬件部件,并且这些单元通过总线来互连。

操作系统(os)在开发设备200上运行。处理器211可以将期望的应用程序加载到存储器212中,并且在os提供的执行环境下执行应用程序。

在本实施方式中,用于创建用于自主操作设备100的控制程序的开发工具程序被假定为应用程序之一。开发工具程序与执行程序所需的数据一起在开发设备200的存储器213上开发。

开发工具程序在显示器220的屏幕上呈现用于程序开发的图形用户界面(gui)。程序开发者可以在检查gui屏幕的内容的同时经由用户界面230输入数据和程序。此外,开发工具程序包括与所创建的控制程序相关的编译器、调试器、模拟、用于使用3d图形动画来检查控制程序的操作的功能等,并且开发者可以在gui屏幕上发布执行这些功能的指令。

使用开发工具程序创建的控制程序包括:在自主操作设备100的真实机上的主体单元110的处理器111上执行的控制程序,和诸如由控制程序使用的参数的数据;以及用于控制每个模块单元120的处理器122中的致动器121的驱动的控制程序,以及数据,诸如由该控制程序使用的参数。由控制程序使用的参数包括诸如控制参数(诸如,作为致动器的电机的p(比例控制)、i(积分控制)和d(微分控制))的数据。在本说明书中,程序部分和数据可以统称为“控制程序”。

使用开发工具程序创建的控制程序被存储在存储器213中。此外,存储器213上的控制程序可以经由usb端口214传输到自主操作设备100。可替代地,存储器213上的控制程序可以经由通信调制解调器215传输到自主操作设备100中的模块单元120。

此外,对于使用开发工具程序在开发设备200上创建的控制程序,可以使用具有3d图形动画功能的开发工具程序或数据(在下文中用于开发工具的程序和数据也统称为“开发工具程序”)来进行对控制数据和程序的操作验证和修正。通常,这种类型的开发工具程序包括根据控制程序生成自主操作设备100的真实机操作的3d图形动画的功能,并且开发者可以对由开发者他/她自己开发的控制程序的操作进行验证并且使用显示器220上显示的3d图形动画对数据和程序并行地进行修正。

在本实施方式中,假设开发工具程序包括被称为物理引擎的功能。物理引擎是具有基于真实自主操作设备100的操作的物理定律来操作物理现象的功能的计算机程序,并且考虑自主操作设备100和进一步的现实外部环境的物理特征来生成类似于真实的操作并在显示器220上显示结果。相对于自主操作设备100的真实机,使用物理引擎而不是真实机的电机在3d图形动画空间中操作的虚拟自主操作设备100也被称为虚拟机(包括用于3d图形动画的数据的计算机程序和数据)。

例如,如果自主操作设备100是机器人,则物理引擎在考虑机器人手臂的每个连杆和关节的重量和力矩以及用于驱动关节等的致动器的特征的同时,基于在通过模仿机器人创建的虚拟机的控制程序的操作中的物理定律来计算虚拟物理环境与在开发工具程序上表示的虚拟机之间的物理动作(与地面的地面接触、与障碍物的碰撞等)以计算整个虚拟机的操作,就好像机器人的致动器实际上被驱动一样,并且通过虚拟机使显示器220显示再现机器人的真实操作的3d图形动画。

虚拟机是配置为在包括物理引擎和3d图形动画的开发工具程序上操作的控制程序和数据,并且被存储在存储器213中。优选地,在虚拟机的控制程序中,控制程序和数据被模块化为在真实机100的每个模块单元120的处理器122上操作的单元。为了使虚拟机就好像在3d图形空间上的真实机100一样操作,作为程序的一部,虚拟机的控制程序实现对应于真实机的处理器(例如,电机控制器)122的操作的功能。此外,对该虚拟机的控制程序进行编程,从而通过使用应用程序编程接口(api)或函数通过3d图形动画来调用再现对应于真实机的每个模块单元120的致动器121(例如,电机)的操作的物理引擎功能。此外,在物理引擎中的物理计算中使用的数据(用于致动器的控制参数集、连杆重量、惯性等)与控制程序一起存储在存储器213中,并且与控制程序的执行一起从存储器213中读取并用于控制程序。

此外,与由真实机中(即,自主操作设备100侧)操作的基本os提供的api或功能相同的api或功能被用作用于向程序模块发出指令以实现物理引擎功能的api或功能,使得由开发工具程序创建的程序可以如在真实机上的os上一样操作。此外,由于物理引擎功能可以再现实际的物理现象,因此使用开发工具程序开发的程序经由usb端口214等直接上传到自主操作设备100并执行,使得由开发工具程序检查的操作也可以在真实机上实现。

此外,自主操作设备100的控制程序也可以通过使用开发工具程序将其划分成模块单元来开发。同样在这种情况下,控制程序可以在模块单元中上传到自主操作设备100。例如,负责开发仅模块单元120-1的硬件和控制程序的开发者可以经由通信调制解调器215将他/她的开发设备200连接到自主操作设备100的对应模块单元120-1,从而将创建的程序或数据上传到模块单元120-1中的存储器123。

通过在多个开发者或多个开发供应商之间共享模块单元的硬件和程序的开发,可以在分布式开发环境中促进整个自主操作设备100的开发。

图2示出了经由网络的控制程序的分布式开发环境。在图2中所示的分布式开发环境中,开发被委托给每个模块的单独开发者或开发供应商。然而,图2中的模块还可以指代自主操作设备100的除模块单元120之外的控制软件的模块,该模块单元120是图1中所示的自主操作设备100的硬件部件。

负责在自主操作设备100的主体单元110或模块单元120中开发控制程序的每个程序开发者使用模块开发计算机来创建他/她负责的主体单元110或模块单元120的控制程序。例如,上述开发工具程序在模块开发计算机上运行。每个模块开发计算机连接到网络。然后,每个程序开发者可以在云服务器上的共享存储装置、自己专用的存储装置(换句话说,主体单元开发者存储装置、模块单元开发者存储装置)、或设置在专用服务器中的存储装置中提供自行开发的控制程序等。此外,控制程序等可以由在诸如服务器的存储装置中具有帐户的管理员、开发者、客户或用户共享。

负责或控制自主操作设备100的整个真实机的控制程序开发的开发者经由网络来接收主体单元110和每个模块单元120的控制程序的提供。具体地,由整个真实机的开发者使用的真实机程序开发计算机通过与每个开发者的云服务器、专用服务器或模块开发计算机上的共享存储装置或开发者存储装置直接通信来接收每个控制程序。然而,接收控制程序的提供的网络可以被配置为是有线的或无线的。

由整个真实机的开发者使用的真实机程序开发计算机对应于图1中所示的开发设备200,并且包括能够使用开发工具程序上的物理引擎进行操作并且通过3d图形动画显示对应于真实机的虚拟机的操作的功能。因此,真实机程序开发计算机可以使用开发工具程序的物理引擎功能通过显示虚拟机的3d图形动画来检查和验证主体单元110和所有模块单元120的控制程序的操作。

此外,每个控制程序可以与所开发的控制程序在真实机程序开发计算机上的执行并行地修正。因此,整个真实机的开发者和负责每个模块单元的开发者也有效地共同开发整个真实机的控制程序。此外,可以再次向负责模块单元的开发者提供在真实机程序开发计算机上修正的控制程序,以完成最终程序产品。例如,通过管理模块单元中的控制程序(诸如,在云服务器上布置专用于主体单元和每个模块单元的存储装置),可以平稳地促进共同开发。

已经在整个真实机的开发者使用的真实机程序开发计算机上检查和验证(换句话说,完成)操作的控制程序可以经由usb端口214直接从开发设备200上传到真实机的自主操作设备100。可替代地,可以经由有线或无线网络将用于整个真实机或每个模块单元的控制程序上传到真实机。

此外,还假设了将控制程序从专用服务器上传到真实机的形式。例如,以下控制程序:其中真实机的用户可以经由他/她的用户终端的用户界面(键盘、鼠标、触摸面板等)使用他/她所有的账户来登录专用服务器,并且进一步选择要下载或上传到真实机的控制程序,以进行下载或上传。

图3示出了在开发腿式机器人作为自主操作设备100的具体实施例的情况下的控制程序的开发环境。尽管在图3中使用单个开发设备200来进行程序开发,但是当然可以使用如图2中所示的经由网络的分布式开发环境。

腿式机器人100具有主体单元110和对应于头部和左右腿的模块单元120。尽管未示出,但是存在连接主体单元110和诸如头部和左右腿的每个模块单元120的硬件的数据总线和控制总线。

应注意,腿式机器人100还可以具有诸如上肢的模块单元(未示出)。此外,可以考虑对真实机配置的修改,其中诸如至少一些模块单元中的处理器和存储器的功能与主体单元集成并由主体单元的处理器控制。

主体单元110包括处理器111、存储器112、无线或有线通信调制解调器113、电池114、usb端口115和gps116。

左腿模块单元120-3和右腿模块单元120-2包括作为致动器的用于驱动诸如髋关节、膝关节或脚踝的关节(或行走)的电机121,并且包括作为处理器的控制电机的驱动的电机控制器122。此外,左腿模块单元120-3和右腿模块单元120-2包括作为传感器124的检测在电机121的输出侧生成的外力的转矩传感器、检测电机121的输出侧的旋转角度的编码器、在脚底部分的地面传感器等。此外,头部的模块单元120-1包括作为致动器的用于头部旋转的电机121,以及作为传感器的用于将周围环境成像的图像传感器124。

与图1类似,可以使用在开发设备200上操作的开发工具程序来创建上述腿式机器人100的主体单元110和每个模块单元120的控制程序,并且进一步地,可以使用在开发工具程序上运行的物理引擎的操作通过显示虚拟机的3d图形动画来检查和验证操作。

此外,使用开发设备200创建的控制程序、或用于在如图2中所示的开发环境(或其他开发环境)中开发的整个真实机100的控制程序、或用于每个模块单元120的控制程序经由主体单元110的usb端口115或每个模块单元120的通信调制解调器125通过有线或无线通信来上传到主体单元110的存储器112或每个模块单元120的存储器123。然后,上传的程序在腿式机器人100激活时等适当地操作。

图4示出了在开发自主车辆作为自主操作设备100的另一具体实施例的情况下的控制程序的开发环境。自主车辆100是引入自主驾驶技术的汽车(或用于工作或运输的无人驾驶车辆等),但除了全自动驾驶车辆之外还包括在可以切换自动驾驶模式和手动驾驶模式的汽车中以自动驾驶模式行驶的车辆。尽管在图4中使用单个开发设备来进行程序开发,但是当然可以使用如图2中所示的经由网络的分布式开发环境。

图4中所示的自主车辆100具有主控制单元110、作为模块单元的变速器控制模块单元120-2和室内空调控制模块单元120-1。尽管未示出,但是存在连接主控制单元110和诸如每个模块单元120的硬件的数据总线和控制总线(can总线等)。此外,除了变速器控制模块单元120-2和室内空调控制模块单元120-1之外,自主车辆100还包括许多模块单元(未示出),为了简化描述而省略了这些模块单元。

主控制单元110包括作为处理器的电子控制单元(ecu)111、存储器112、通信调制解调器113、ecu接口115、gps116和电池114。假设通信调制解调器113是无线保真(wi-fi)、长期演进(lte)、近场通信等。此外,假设ecu接口115是到控制器局域网(can)总线(未示出)的接口,并且使用诸如以太网(注册商标)的通信标准来连接到开发设备200。

室内空调模块单元120-1包括作为致动器的空调121、作为处理器的空调控制ecu122、存储器123、作为传感器的室内温度传感器124、以及蓝牙(注册商标)通信等的通信调制解调器125。例如,假设空调121通过经由蓝牙(注册商标)通信连接到诸如乘客携带的智能电话的信息终端(未示出)来被控制。

变速器控制模块单元120-2包括作为致动器的驱动轮电机121、作为处理器的变速器控制ecu122、存储器123、作为传感器的速度加速度传感器124、转向角传感器等。

应注意,在图4中所示的配置例中,尽管在主控制单元110和每个模块单元120中布置了ecu,但是主控制单元110中的ecu111可以集中管理所有模块单元120。

与图1类似,可以使用在开发设备200上操作的开发工具程序来创建上述自主车辆100的主控制单元110、室内空调控制模块单元120-1和变速器控制模块单元120-2的控制程序,并且进一步地,可以使用在开发工具程序上运行的物理引擎的操作通过显示虚拟机的3d图形动画来检查和验证操作。

此外,使用开发设备200创建的控制程序、或用于在如图2中所示的开发环境(或其他开发环境)中开发的整个真实机100的控制程序、或用于每个模块单元120的控制程序经由主控制单元110的ecu接口115或每个模块单元120的通信调制解调器125通过有线或无线通信来上传到主控制单元110的存储器112或每个模块单元120的存储器123。然后,上传的程序在自主车辆100激活时等适当地操作。

图5示出了在开发无人驾驶飞行器(无人机)作为自主操作设备100的另一具体实施例的情况下的控制程序的开发环境。尽管在图5中使用单个开发设备200来进行程序开发,但是当然可以使用如图2中所示的经由网络的分布式开发环境。

图5中所示的无人驾驶飞行器100具有主控制单元110、作为模块单元的相机控制模块单元120-1、以及螺旋桨控制模块单元120-2。尽管未示出,但是存在连接主控制单元110和诸如每个模块单元120的硬件的数据总线和控制总线。此外,在无线飞行器100中,可以合并除相机控制模块单元120-1和螺旋桨控制模块单元120-2之外的模块单元。

主控制单元110包括处理器111、存储器112、通信调制解调器113、usb端口115、gps116和电池114。假设通信调制解调器113是wi-fi、lte、近场通信等的无线调制解调器,并且与由操作者操作的远程控制器(未示出)通信。此外,使用usb端口115与开发设备200建立连接,并且上传开发的控制程序。

相机控制模块单元120-1包括作为传感器的相机单元(包括图像传感器)124、作为致动器的相机单元旋转电机121、作为处理器的电机控制器122、存储器123和通信调制解调器125。相机单元旋转电机121可以在例如水平方向上360度的范围内旋转,并且还可以能够倾斜旋转。此外,假设通信调制解调器125是wi-fi、lte、近场通信等的无线调制解调器,并且根据来自由操作者操作的远程控制器或智能电话的命令来进行相机单元124的旋转或拍摄(未示出)。

螺旋桨控制模块120-2包括例如作为致动器的三个螺旋桨(包括旋转电机)121、对螺旋桨121的旋转电机等进行控制的处理器122、存储器123、以及作为传感器的螺旋桨旋转检测传感器124。

与图1类似,可以使用在开发设备200上操作的开发工具程序来创建上述无人驾驶飞行器100的主控制单元110、相机控制模块120-1和螺旋桨控制模块单元120-2的控制程序,并且进一步地,可以使用在开发工具程序上运行的物理引擎的操作通过显示虚拟机的3d图形动画来检查和验证操作。

此外,使用开发设备200创建的控制程序、或用于在如图2中所示的开发环境(或其他开发环境)中开发的整个真实机100的控制程序、或用于每个模块单元120的控制程序经由主控制单元110或每个模块单元120的通信调制解调器通过有线或无线通信来上传到主控制单元110的存储器112或每个模块单元120的存储器123。然后,上传的程序在无人驾驶飞行器100激活时等适当地操作。

图6示出了安装在自主操作设备100的真实机上的硬件和软件架构的配置的实施例。

如图1等中所示,在真实机中,主体单元(或主控制单元)的多个硬件模块(hw1、hw2......)、多个模块单元等合并在一个壳体中。此外,可以存在通过在两个或更多个壳体中分配和布置硬件模块而配置的真实机。

os直接控制这些硬件模块(hw1、hw2......)。此外,存在上传到模块单元120中的存储器123的控制程序代替os来直接控制硬件模块的情况(具体地,处理器122执行控制程序并且控制致动器121的驱动)。

如图1等中所示,在由主体单元110和多个模块单元120配置硬件架构的自主操作设备100中,控制整个系统100的主os在主体单元110(的处理器111)中操作,从而直接或间接地控制在每个模块单元120中执行的控制程序。

图6示出了除了主os之外还有多个os(例如,os1、os2......)运行的实施例,并且每个os提供应用程序的执行环境的。在图6中,例如,在期望在主os的管理下通过os1驱动硬件模块的情况下,期望的模块单元120的控制程序可以由与主os通信的os1间接控制。此外,在os1与主os之间的通信可以使用诸如远程过程调用(rpc)的技术来实现。

图6还示出了使用虚拟化技术构建的架构。换句话说,在虚拟化os上运行了多个不同的操作系统(例如,os1、os2......)。在假设不同os的情况下开发的应用程序(例如,针对os1开发的ap1和针对os2开发的ap2)可以在同一真实机100上混合。

例如,当在自主车辆中开发的应用程序被粗略地分类为两种类型的应用程序:诸如驾驶系统控制(dsu等)的需要高可靠性的应用程序,以及诸如与用于用户的服务(音频设备、空调等)有关的娱乐信息节目的具有高通用性的应用程序,前一种ap1是采用更可靠的os1来开发的,而后一种ap2是采用具有高通用性的os2来开发的并且可由许多开发者开发。由于如上所述在采用不同os的情况下开发的驾驶系统控制应用程序ap1和娱乐信息节目应用程序ap2可以通过虚拟化os的干预容易地控制与它们中的每一者相对应的硬件,因此应用程序可以混合在同一自主车辆中。

应用程序开发者可以使用由系统(例如,中间件)提供的api来开发应用程序。例如,作为api,可以考虑使用诸如“地图显示”、“切换到语音对话模式”、“周围人的识别”的功能。

此外,应用程序开发者可以开发包括使用系统调用指示os的程序的应用程序。这里提到的系统调用是用于利用与系统控制相关的功能的接口。系统调用的实施例可以包括改变模块单元120中的处理器122(例如,电机控制器)的参数,以及在通信调制解调器125中设置网络地址。

图7示意性地示出了应用程序的配置例。例如,应用程序是在图1中的开发设备200上(换句话说,使用开发工具程序)开发的。

应用程序包括一个或多个所定义操作以及一个或多个行为计划。所定义操作和行为计划都是自主操作设备100的控制程序。

所定义操作包括对硬件中由电机等表示的致动器的控制器的指令中发布的目标值,并且也被称为“运动”。存在这样的情况:一个所定义操作仅包括在某个时间点在对控制器的指令中发布的目标值,或者在某个区段中以时间序列在对控制器的指令中发布的一系列目标值。如稍后所述,在本实施方式中,假设使用关键帧(如稍后所述)来创建所定义操作。

此外,所定义操作也是用于指示控制器设置基本参数的程序和数据。参数的实施例包括p(比例控制)、i(积分控制)和d(微分控制)。此外,可以在控制器(处理器)中根据要控制的致动器(诸如,电机)的特征来设置的参数,可以被设置为所定义操作中的基本参数。

行为计划包括调用一个或多个所定义操作的功能的程序和数据。诸如机器人的自主操作设备100通过进行根据行为计划所调用的一个或多个所定义操作来实现一个“行为”。

此外,行为计划是通过确定针对每种情况激活的所定义操作来描述自主操作设备100的一系列操作的程序和数据。例如,可以提及行为计划,其描述用于以树结构的形式选择所定义操作的条件分支。由于行为计划根据识别结果控制自主操作设备100,因此可以基于环境(情况)识别将行为计划定位在行为控制程序中。从这个意义上说,行为计划也对应于广义上的人工智能(ai)的一部分功能。

应用程序还可以包括用于利用os或中间件的功能的程序和数据。

应用程序还限定用于外部地使用自主操作设备100的真实机的应用功能的api。因此,用于创建应用程序的开发设备200和诸如用户终端或服务器的外部设备可以在真实机正在运行或测试时通过经由通信调用api来使用应用程序的功能。

此外,应用程序还可以包括用于在真实机操作期间通过学习而使行为计划或所定义操作的程序和数据改变的程序和数据。

应注意,如图7中所示,尽管应用程序由多个部件配置而成,但是所有部件可以被集成并配置为一个文件,但是每个部件可以被配置为单独的文件。此外,这些文件存储在图2中的云服务器上的共享存储装置、专用于每个用户的存储装置(换句话说,主体单元开发者存储装置、模块单元开发者存储装置)、专用服务器中提供的存储装置等中,并且能够由对诸如服务器地存储装置具有访问权限的管理员、开发者、客户或用户共享。

应用程序可以由开发设备200上的应用程序的开发者使用开发工具程序来创建。开发工具程序具有诸如编译器、调试器和与物理引擎链接的3d图形动画的功能,并且应用程序的开发者可以在gui屏幕上发布执行这些功能的指令。

此外,在本实施方式中,假设开发工具程序包括被称为物理引擎的功能。物理引擎是在计算机上基于真实自主操作设备100的操作的物理定律来再现现象的功能,并且考虑自主操作设备100和进一步的现实外部环境的物理特征来生成表示类似于真实的真实机的操作的3d图形动画并显示结果。应用程序的开发者可以在观看3d图形动画的同时验证真实机的操作,并且进一步适当地修正应用程序。

最近,物理引擎的精度得到了提高,并且用于控制自主操作设备100的真实机操作的应用程序在具有物理引擎和3d图形动画功能的开发工具程序上运行,使得已经可以更准确地用虚拟机再现真实机操作。具体地,由于执行高性能物理运算的物理引擎起到与真实机(例如电机控制器)的硬件相对应的作用,因此可以在不使用真实机的情况下验证控制程序,从而提高开发效率,降低开发成本。此外,当在真实机上运行包括以这种方式创建的控制程序的应用程序时,可以在真实机上再现预期操作。

如上所述,在可以再现接近真实环境的物理现象的开发工具程序可用的情况下,在待开发的应用程序中反映安装在真实机上的硬件的机械和电气特征变得更加比以前更有意义。例如,pid控制用于电机控制。在pid控制中,比例增益kp、积分增益ki和微分增益kd是确定控制时的特征的参数,并且在确定硬件的操作中是重要的。传统上,必须通过例如直接重写真实机的程序来调整真实机的电机控制器的参数。另一方面,如果使得能够在配备有物理引擎和3d图形动画功能的开发工具程序中输入或改变诸如kp、ki和kd的控制参数,则控制参数等在开发工具程序上改变,使得物理引擎读取这些控制参数以进行计算,并使用3d图形动画在显示器上显示它们,以便可以轻松检查真实机中的预期操作。因此,可以大大提高真实机的应用程序开发效率。

作为真实机的实施例,将描述用于机器人的应用程序(下文中,主要称为“控制程序”)的开发。在传统的机器人开发环境中,已经在gui屏幕等上使用了使用关键帧来创建所定义操作的方法。关键帧的实施例是“在x秒内将关节从y度移动到z”的所定义操作。然而,机器人的实际物理动作受到电机的控制参数(诸如,比例增益kp、积分增益ki和微分增益kd)以及电机的硬件特征的影响。因此,在开发工具程序中,为了使用虚拟机更准确地再现真实机的操作,必须通过及时连续地进行物理运算来考虑物理现象来修改关键帧的操作,考虑到例如电机控制参数和硬件特征值,以及在离散时间内指定可移动单元(诸如构成机器人的一个关节)的移动的关键帧信息。然而,由于电机的控制参数和硬件特征值对每个机器人是不同的信息,因此在传统的开发环境中不可能容易地检查这些信息。

因此,在本说明书中,以下提出了一种技术,该技术提供了一种装置,利用该装置,开发者在使用具有物理引擎和3d图形动画功能的开发工具程序开发了控制程序时,可以容易地输入或改变要控制的自主操作设备100(诸如,机器人)的真实机上的硬件特征和控制参数。在提供这种装置的开发环境中,可以考虑到真实机的硬件特征和控制参数来开发控制程序,并且可以在具有物理引擎和3d图形动画功能的开发工具程序上再现物理现象,从而可以更准确地掌握真实机操作。

开发者可以通过在开发工具程序和3d图形动画上运行的物理引擎来检查在开发环境中输入或改变的控制参数对于实现预定操作是否有用。因此,在本说明书中,以下进一步提出了一种技术,该技术提供了一种用于在开发环境中记录被开发者判断为在实现预定操作时有用的控制参数的装置,以便可以在真实机操作中选择它们。因此,所记录的控制参数可以与通过开发工具程序开发的控制程序一起安装在真实机上,并且可以用于选择真实机的操作。

此外,在本说明书中,以下还提出了一种用于在所定义操作的开发环境中结合物理引擎提供的物理运算来进行关键帧的电机控制的方法,该所定义操作包括指定诸如每个可移动单元的角度的目标值的关键帧的数据集。根据使用这种物理引擎和3d图形动画来开发控制程序的方法,可以通过使用关键帧创建的所定义操作来检查现实世界中的动作,而无需使用真实机。因此,在单个开发环境中,开发者可以容易地创建所定义操作(或所定义操作中包括的关键帧),并且可以在现实世界中进行动作检查。

在本文中提出的开发环境下开发的控制程序(应用程序)可以包括用于每个硬件部件的控制器特征数据集,诸如,电机控制参数(硬件部件对应于图1中的每个模块单元120)。开发者可以在创建和编辑控制程序的过程中输入每个硬件部件的控制器特征数据(诸如,电机控制参数),并且可以查看和改变由在开发工具程序上操作的控制程序显示的3d图形动画。

图8以流程图的形式示出了用于在真实机中根据本说明书中提出的方法来安装包括在开发工具程序上开发的控制程序的应用程序的程序和数据的处理过程。这里,假设包括由图1中的开发设备200开发的控制程序的应用程序被安装在自主操作设备(真实机)100中的情况。开发工具程序配备有库,该库提供与在真实机上运行的os(包括中间件)相同的api,因此可以在真实机上安装包括与开发工具程序开发的控制程序相同的控制程序的应用程序。

经由usb端口214等将应用程序从开发设备200的存储器213上传到真实机100(步骤s801)。应用程序包括诸如行为计划集和所定义操作集的程序(参见图7),以及用于每个硬件部件(模块单元)的处理器111的控制参数的数据集(例如,用于电机控制器的pid数据)。

在真实机100侧,将从开发设备200上传的应用程序存储在主体单元110中的存储器112中(步骤s802)。然后,在控制致动器121(电机等)的处理器122(电机控制器等)中设置在应用程序中描述的每个模块单元120的控制参数的初始值(步骤s803),并且结束处理程序。

图9示意性地示出了应用程序中包括的行为计划和所定义操作的每个数据文件的配置例。在附图中,为了便于说明,以不依赖于特定程序语言的自然语言的形式来描述文件中的数据。然而,本领域技术人员可以容易地理解,可以使用任何编程语言对所示的数据文件进行编码。

行为计划数据文件901是数据集,其中以树结构的形式描述用于选择所定义操作的条件分支。在图9中所示的实施例中,用于选择所定义操作的条件以if语句的形式描述(if状态=“检测到人”则“躺下”,if状态=“无人”则“走动”)。应注意,尽管为了便于解释,图9示出了包括简单if语句的行为计划901的数据,但是该语句可以是包括嵌套结构等的复杂条件语句。

所定义操作数据文件902包括在行为计划901中使用的多个所定义操作的数据集,以及每个硬件部件的控制参数的初始值。在图9中所示的实施例中,所定义操作数据文件902包括用于电机1的pid参数值(p=x1,i=y1,d=z1)和用于电机2的pid参数值(p=x2,i=y2,d=z2)作为控制参数的初始值。

此外,在图9中所示的实施例中,所定义操作数据文件902包括“走动”、“躺下”和“停止”的所定义操作的数据。每个所定义操作的数据包括针对每个硬件部件的关键帧和控制参数(例如,要设置到电机控制器的pid参数)的数据集。

关键帧包括设置在每个模块单元120中的目标值的数据(例如,诸如关于作为致动器121的电机的旋转位置和旋转角度的目标值)。一个所定义操作包括一个或多个关键帧的数据集。

此外,在所定义操作中指定的控制参数是在所定义操作中要设置的控制参数。如稍后所述,在本实施方式中,在开发诸如所定义操作的控制程序的过程中,可以基于物理引擎的操作结果和3d图形动画的显示结果导出最佳控制参数,并且程序的开发者可以为所定义操作中的每个所定义操作描述最佳控制参数。应注意,所定义操作“停止”的关键帧数据和控制器特征数据都是空(null)。空可以是初始值。

图10以流程图的形式示出了应用程序在自主操作设备(真实机)100上运行(换句话说,真实机操作)时的处理过程。假设包括如图9中所示的行为计划集和所定义操作集的应用程序被上传到真实机100的主体单元110的存储器112中。

当接通真实机100的电源(步骤s1001)时,处理器111从存储器112读取行为计划的数据文件(步骤s1002)。

行为计划描述了用于根据环境信息选择所定义操作的条件分支。处理器111根据基于每个模块单元120等的传感器123的检测结果识别的环境信息,根据行为计划来选择所定义操作。然后,处理器111从存储器112读取数据,诸如进行所选择的所定义操作所需的关键帧和控制参数(步骤s1003)。

这里,处理器111检查为了进行所定义操作而读取的控制参数是否为空(步骤s1004)。如果控制参数不是空(步骤s1004中的“否”),则处理器111在对应模块单元120的处理器122中设置读取的控制参数(步骤s1005)。此外,当控制参数为空时(步骤s1004中的“是”),则不需要设置处理(换句话说,控制参数的优化),从而跳过步骤s1005。

然后,在真实机100上,进行所定义操作(步骤s1006)。在每个模块单元120中,在设置适合于所定义操作的控制参数(诸如,电机的控制参数)之后,可以对在所定义操作的指令中发布的目标值进行驱动控制。

图11以流程图的形式示出了在图10中所示的流程图中的步骤s1006中进行的用于进行所定义操作的详细处理过程。

首先,处理器111从存储器112读取所定义操作的数据,并且获取由下一关键帧指定的每个模块单元120的目标值(例如,电机的旋转角度)(步骤s1101)。

接下来,处理器111将获取的目标值传输到每个模块单元120,并且将目标值输入到每个模块单元120的处理器122(步骤s1102)。例如,电机的旋转角度的目标值被输入到电机控制器。

接下来,在每个模块单元120中,处理器122根据输入目标值来驱动致动器121(步骤s1103)。例如,电机控制器根据旋转角度的目标值来驱动电机。

然后,重复地进行上述处理,直到已经进行了所定义操作中包括的所有关键帧为止(步骤s1104中的“否”)。

图12示意性地示出了用于创建和验证在本说明书中提出的要控制的自主操作设备100的所定义操作的开发设备1200的功能配置。这里,假设自主操作设备100是配备有由诸如关节的电机驱动的可移动单元(诸如,机器人)的真实机。此外,开发设备1200对应于例如执行图1中的开发工具程序的开发设备200,并且图12中所示的每个功能块被实现为例如包括在开发工具程序中的软件模块。

所示的开发设备1200包括:运动编辑单元1210,开发者利用该运动编辑单元以关键帧的形式编辑要控制的所定义操作;电机控制输出单元1220,基于输入或设置控制参数根据要输入的关键帧来计算电机控制器的控制输出;以及物理运算单元1230,通过计算在电机被驱动时的物理动作的物理引擎的程序执行调用api来进行物理运算。

运动编辑单元1210创建要控制的关键帧。运动编辑单元1210向开发者呈现用于指定目标值的gui,诸如,要控制的每个可移动单元(诸如,机器人)的关节角度,并且开发者经由gui通过指令来创建关键帧,并且以预定格式(例如,在图18中(稍后描述)所示的所定义操作中的“关键帧数据”的格式)将关键帧存储在预定存储器(未示出)中。

用于创建关键帧的gui的屏幕配置是任意的。关键帧是指定目标值的数据集,诸如,在某个区段的操作的开始和结束时可移动单元的位置和速度。例如,可以使用输入了每个关键帧的每个可移动单元的目标值的gui。此外,可以应用使用3d模型进行控制、指定诸如头部和左右肢的特定部位的位置和取向、以及使用逆运动学(ik)操作创建关键帧的方法。

此外,运动编辑单元1210经由gui接受用于驱动每个待控制的可移动单元的电机的控制参数的输入和电机的硬件特征值,并且将控制参数和硬件特征值以预定格式(例如,图18中(稍后描述)所示的所定义操作中的诸如“控制参数数据集1”的格式)保持在预定存储器(未示出)中。此外,运动编辑单元1210还接受描述要控制的真实机的硬件特征值的3d模型数据的输入,并且将3d模型数据保持在预定存储器(未示出)中。用于输入电机控制参数和电机硬件特征值的gui屏幕配置是任意的。

电机控制输出单元1220从预定存储器(如上所述)中读取包括诸如要控制的每个可移动单元中的关节角度、电机控制参数、电机硬件特征值等目标值的关键帧,从而计算由通过操作来驱动每个可移动单元的电机输出的力或转矩。接下来,物理运算单元1230基于通过物理运算获得的电机的力或转矩来计算诸如每个可移动单元的关节角度的当前值。

然后,基于由物理运算单元1230计算的每个可移动单元的当前值,可以通过3d图形绘制并在显示器上显示控制目标的当前姿势。例如,以预定的帧速率计算控制目标的当前姿势并且进行绘制处理,从而可以显示基于呈关键帧的形式而编辑的所定义操作控制目标在被驱动时的动作的动画。因此,开发者可以查看动画并检查由他/她自己编辑的所定义操作。

作为根据本实施方式的开发设备1200的特征,在电机控制输出单元1220中,预先输入或设置驱动每个可移动单元的电机本身的特征值和根据电机的控制方法的控制参数(例如,由运动编辑单元1210输入)。此外,在物理运算单元1230中,预先输入或设置要由所定义操作控制的真实机的硬件上的特征值。此外,电机控制输出单元1220的操作与物理运算单元1230的操作一起进行。

电机控制输出单元1220和物理运算单元1230被配置为单个应用程序中的相应软件模块(软件模块不包括诸如物理引擎的开发工具程序中包括的软件模块,并且通过api来调用诸如物理引擎的功能)。“配置为单个应用程序中的相应软件模块”意味着电机控制输出单元1220根据开发工具程序上的一个应用程序的操作使用基于关键帧、硬件特征值和控制参数计算的电机的控制输出来进行由物理运算单元1230中的api调用的操作。此外,可以使用同一开发工具程序中的gui来设置电机本身的特征值、电机的控制参数和要控制的真实机的硬件特征值。

这里,对应于电机的控制方法的控制参数例如是比例增益kp、积分增益ki和微分增益kd。当然,取决于真实机中采用的电机的控制方法,使用除pid之外的控制参数。此外,电机的硬件特征值例如是电机的制造商名称、型号、安装角度尺寸、类型、轴类型、是否存在电磁制动器、驱动器类型、额定输出、额定转速、最大转速、最大输入转速、额定转矩、瞬时最大转矩、激励最大静态转矩、速度范围、转子惯性力矩、惯性力矩、分辨率(电机轴)(p/r)、检测器(编码器)、间隙、减速比、电源输入电压、电源输入频率、电源输入额定电压、速度及位置控制命令、最大输入脉冲频率、电机单元质量等。电机的这些控制参数和特征值可以以设置文件等的形式被带入工具(开发设备1200)中。此外,可以为开发者提供gui,以在所定义操作等的编辑过程中设置或改变电机的控制参数。

此外,除了上述电机的硬件特征值之外,真实机的硬件特征值例如是诸如关节电机的每个手臂或每个部分的重量、重心、惯性、关节的可移动范围、摩擦系数等。可以以预定文件的形式将真实机(诸如电机)的硬件上的这些特征值导入到工具(开发设备1200)中,其中数据与模拟真实机的虚拟机的3d模型一起被描述。此外,可以使用在开发工具程序上提供的预定gui来进行3d模型的建模(数据创建),并且可以输入或编辑硬件上的特征值。此外,可以单独地管理3d模型和硬件特征值。以预定格式提供的真实机的硬件特征值和3d模型可以存储在文件中,并且例如可以作为可以在数据库上共享的信息来与诸如文件名的文件的标识信息(id)一起在图2中所示的云服务器上的共享存储装置中进行管理。在另一个实施方式中,可以在单独的文件中存储和管理硬件特征值和3d模型。此外,每个开发制造商或商业的信息提供者可以通过管理这些信息以及制造商名称、型号或硬件类型(电机类型(步进电机、直流电机、超声波电机等)、传感器类型(cmos图像传感器、ccd图像传感器、测距图像传感器、ingaas图像传感器、具有放大器的光电二极管阵列、x射线图像传感器等)等,并且使用这些信息作为诸如用户和开发者的信息获取者和购买者的浏览信息,从而在每个所拥有的交易数据库中提供这些可共享信息(换句话说,作为在开发工具程序上可用的电子文件管理的信息,诸如,3d模型和硬件特征值)作为在线交易目标。

图13详细地示出了电机控制输出单元1220和物理运算单元1230中的每一者的内部操作。

电机控制输出单元1220将电机的目标值(关节角度)输入到物理运算单元1230,作为由运动编辑单元1210编辑的关键帧的数据。电机控制输出单元1220被配置为从物理运算单元1230接收作为操作结果而改变的电机的当前值,并且确定目标值与当前值的偏差。然后,电机控制输出单元1220分别基于比例增益kp、积分增益ki和微分增益kd将p控制输入、i控制输入和d控制输入相加,从而获得对电机的控制输入值,并且相对于该控制输入值,计算力或转矩,作为电机的输出值。然而,根据真实机中采用的电机的控制方法,可以将逻辑改变为除pid计算以外的逻辑。然后,在电机的机械或电气硬件特征值(如上所述)中存在重要值的情况下,电机控制输出单元1220进行诸如对输出值的修正的处理。

物理运算单元1230考虑到硬件上的特征值(诸如,如手臂或关节电机的每个部分的重量、重心、惯性、关节的可移动范围和摩擦系数),基于由电机控制输出单元1220计算的输出值(力或转矩),经由api来指示物理引擎,以在驱动电机时进行对应于真实机的物理动作的计算。对于物理运算,可以使用合并在开发工具程序中的库,或者可以合并和使用经由互联网等而可用的外部库。此外,由物理运算单元1230计算的电机的当前值被反馈到电机控制输出单元1220。

然后,基于由物理运算单元1230计算的每个可移动单元的当前值,控制目标的当前姿势可以经受绘制处理并显示在显示器上。例如,以预定的帧速率计算控制目标的当前姿势并且进行绘制处理,从而可以显示基于编辑的所定义操作控制目标在被驱动时的动作的3d图形动画。

开发者在开发工具程序上可以查看通过执行应用程序而再现的虚拟机的3d图形动画,并且检查由他自己编辑的所定义操作。例如,在所定义操作编辑时在控制目标的动作与由开发者绘制的图像不同的情况下,或者在控制目标下落或与障碍物碰撞的情况下,关键帧在运动编辑单元1210中改变,从而可以创建允许控制目标用作图像的所定义操作,或者防止下落或碰撞。

此外,开发者可以在观察作为进行物理运算的结果而获得的控制目标的动画的同时动态地更新电机的目标值,从而改变、再现和检查控制目标的动作。

此外,当根据物理运算结果等修正关键帧时,开发者不仅可以修正电机的目标值,还可以改变电机的控制参数值,诸如,比例增益kp、积分增益ki和导数增益kd,从而设置适当的控制参数。如已经参考图9所述,可以为每个所定义操作指定控制参数。此外,在所定义操作由多个关键帧限定的情况下,开发者可以为每个关键帧指定适当的控制参数(稍后描述)。

当完成所定义操作的编辑时,可以将执行所定义操作时的电机的最佳控制参数值合并到所定义操作中并提取。在图9中所示的应用程序的配置例中,在所定义操作的数据文件中描述了控制参数的初始值和用于每个所定义操作的控制参数。当然,可以将控制参数提取为链接到所定义操作数据的另一文件(诸如,属性文件)。

然后,如图8中所示的应用程序的安装过程中所述,当应用程序安装在真实机100中时,将执行行为计划时的控制参数的初始值设置到每个模块单元120。此外,如图10中所示的应用程序的真实机操作的处理过程中所述,每次根据行为计划选择所定义操作时,在每个模块单元120中设置在所定义操作中指定的控制参数。因此,在真实机100上,电机控制器122可以使用已经结合开发工具程序中的所定义操作检查了其操作的控制参数,根据在所定义操作中指定的目标值来控制电机121。作为结果,可以再现与在真实机上用物理开发工具程序检查操作的结果类似的预期动作。

图14示出了真实电机的控制框图,作为与图12和图13中所示的电机控制输出单元1220和物理运算单元1230中的处理的比较。

当输入由关键帧指定的电机的目标值(关节角度)时,以及例如当输入由安装在电机的输出轴侧的编码器测量的电机的当前值时,电机控制器确定目标值与当前值的偏差。然后,电机控制器分别基于比例增益kp、积分增益ki和微分增益kd将p控制、i控制和d控制相加,从而计算作为对电机的控制输入的电压值或电流值。当通过提供由电机控制器计算的电压值或电流值来驱动电机时,电机根据电机本身的机械和电气特征来输出力或转矩。在现实世界中,电机的输出与周围环境相互作用,并且电机的当前值由诸如编码器的传感器测量。

图15以流程图的形式示出了在开发设备200中用于在包括物理引擎和3d图形动画功能的开发工具程序上执行开发应用程序的处理过程。根据所开发的应用程序的虚拟机的动作由诸如图12中所示的电机控制输出单元1220和物理运算单元1230的软件模块再现。

这里,尽管应用程序包括如图9中所示的行为计划数据文件和所定义操作数据文件,但是假设应用程序已经存储在开发设备200的存储器213中。开发设备200在开发工具程序中使用在3d图形空间中使用物理引擎的虚拟机,代替自主操作设备100的真实机的电机121等。虚拟机包括包括用于3d图形动画的数据的计算机程序和数据(如上所述)。虚拟机包括在应用程序中与真实机(自主操作设备100)的每个模块单元120相对应的软件部件(在被下载到真实机的情况下,对应于每个硬件部件的在处理器(在由真实机中的一个处理器处理的情况下为一个处理器)上操作的控制程序或其一部分在处理器上操作的控制程序或其一部分)。

首先,处理器211从存储器213读取在所定义操作数据文件中指定的每个硬件部件的控制参数的初始值,并且将初始值设置到驱动和控制构成虚拟机的每个电机的电机控制器(软件部件中的存储区域)驱动的电机控制器(步骤s1501)。

然后,处理器211从存储器213中读取行为计划的数据文件。行为计划描述了用于根据环境信息选择所定义操作的条件分支。处理器211根据假设的虚拟环境等根据行为计划选择所定义操作。然后,处理器211从存储器213中读取诸如进行所选择的所定义操作所需的关键帧和控制参数的数据(步骤s1503)。

这里,处理器211检查为进行所定义操作而读取的控制参数是否为空(步骤s1504)。在控制参数不是空的情况下(步骤s1504中的“否”),则处理器211将读取的控制参数设置在对应软件部件的控制器中(步骤s1505)。此外,当控制参数为空时(步骤s1504中的“是”),则不需要设置处理(换句话说,控制参数的优化),从而跳过步骤s1505。

然后,使用具有物理引擎和3d图形动画功能的开发工具程序,进行虚拟机的所定义操作(步骤s1506)。在每个软件部件中,在设置所定义操作指定的控制参数(诸如,电机的控制参数)之后,可以对所定义操作中的指令中发布的目标值进行驱动控制。

图16以流程图的形式示出了使用具有物理引擎和3d图形动画功能的开发工具程序实现虚拟机的所定义操作的详细处理过程,该过程在图15中所示的流程图中的步骤s1506中实现。

应注意,假设在所定义操作的处理期间,呈现gui以供开发者随时修正和输入每个模块单元的致动器(电机等)的目标值或在控制致动器驱动的处理器(电机控制器等)中设置的控制参数(pid参数等)。此外,假设经由这样的gui输入的目标值和控制参数被适当地重写在存储器213上,并且在开发工具程序上操作的应用程序可以通过由开发工具程序提供的api从预定存储器(以上描述)中读取修正后的最新目标值和控制参数,并且使用更新的数据来执行所定义操作的处理。

首先,处理器211从存储器213中读取所定义操作的数据,并且获取由下一关键帧指定的每个软件部件的目标值(例如,电机的旋转角度)(步骤s1601)。

此外,处理器211从存储器213中读取在每个软件部件中指定的控制参数(步骤s1602)。

然后,处理器211确定每个软件部件中电机的目标值与当前值的偏差作为与上述电机控制输出单元1220相对应的处理,基于诸如比例增益kp、积分增益ki和微分增益kd的控制参数获得对电机的控制输入值,然后计算力或转矩作为电机的输出值,并将计算结果输出到物理运算单元1230(步骤s1603)。

应注意,在电机控制输出计算中,还考虑了电机的硬件特征值。电机的硬件特征值例如是电机的制造商名称、型号、安装角度尺寸、类型、轴类型、是否存在电磁制动器、驱动器类型、额定输出、额定转速、最大转速、最大输入转速、额定转矩、瞬时最大转矩、激励最大静态转矩、速度范围、转子惯性力矩、惯性力矩、分辨率(电机轴)(p/r)、检测器(编码器)、间隙、减速比、电源输入电压、电源输入频率、电源输入额定电压、速度及位置控制命令、最大输入脉冲频率、电机单元质量等。

接下来,当从电机控制输出单元1220输入电机的输出值时,作为上述物理运算单元1230的处理,处理器211使物理引擎考虑到真实机的硬件上的特征值(诸如,诸如手臂和关节电机的每个部分的重量、重心、惯性、关节的可移动范围、以及摩擦系数)来进行操作(步骤s1604),从而计算真实机的物理动作。

对于步骤s1604的物理运算,可以使用合并在开发工具程序中的库,或者可以合并和使用经由互联网等而可用的外部库。此外,由物理运算单元1230计算的电机的当前值被反馈到电机控制输出单元1220。

然后,基于由物理运算单元1230计算的每个可移动单元的当前值,控制目标的当前姿势可以经受绘制处理并输出要显示在显示器上的真实机的3d图形动画(步骤s1605)。由物理引擎对操作结果的绘制可以在每个关键帧进行,但是可以以几个关键帧的间隔来进行。开发者可以查看通过物理引擎的操作再现的虚拟机的3d图形动画,并检查由他/她自己编辑的所定义操作是否如预期的那样。

在所定义操作的处理期间,呈现gui以用于随时修正和输入每个软件模块单元的致动器(电机等)的目标值或在控制致动器(以上描述)驱动的处理器(电机控制器等)中设置的控制参数(pid参数等)。开发者可以经由这样的gui适当地修正目标值和控制参数输入。此外,在开发工具程序上操作的应用程序的处理中实时反映重写电机控制参数和目标值的内容。

直到开发者发出停止指令为止,或者直到已经执行了所定义操作中包括的所有关键帧为止(步骤s1606中的“否”),由电机控制输出单元1220和物理运算单元1230对所定义操作的处理是连续进行的。

当开发者通过在开发工具程序上操作的应用程序检查虚拟机的处理结果,并且完成并满足所定义操作的编辑时,开发者发出应用程序的停止指令(步骤s1606中的“是”)。作为结果,停止包括电机控制输出单元1220和物理运算单元1230的应用程序,并且处理结束。当完成所定义操作的编辑时,诸如电机的致动器的控制参数值被合并到所定义操作的数据文件中并被提取。当然,可以将致动器的控制参数提取为链接到所定义操作的数据文件的另一文件。

在如上所述在开发工具程序上操作的应用程序的所定义操作的处理期间,呈现gui以用于随时修正和输入每个模块单元额致动器的目标值和在控制致动器(以上描述)的驱动的处理器中设置的控制参数。开发者可以适当地经由这样的gui来修正目标值和控制参数输入,并且在开发工具程序上操作的应用程序的处理中实时反映修正的内容。

图16还示出了在所定义操作的处理期间通过gui向开发工具程序输入和输出控制参数的修正结果和所定义操作的目标值的处理过程的流程图。

当在所定义操作的处理期间经由gui进行了控制参数的修正输入时(步骤s1611中的“是”),将修正输入控制参数写入存储器213上的对应地址(步骤s1612)。

此外,当在所定义操作的处理期间经由gui进行了所定义操作的目标值的修正输入时(步骤s1613中的“是”),将修正输入控制参数写入存储器213上的对应地址(步骤s1614)。

因此,应该充分理解,在当前的开发环境中,在开发工具程序上操作的应用程序的处理中实时反映重写电机控制参数和目标值的内容,以便开发者在修正控制参数和所定义操作目标值后,可以立即检查真实机的操作。

在图9中所示的所定义操作的数据文件具有这样的数据格式,其中仅为每个所定义操作指定控制参数集。此外,在图10中所示的应用程序的真实机操作处理中,当根据行为计划选择所定义操作时,处理过程要在开始时仅一次地在每个模块单元中设置控制参数。换句话说,仅在一个所定义操作中指定了控制参数集,并且不应该在中间改变控制参数。

作为上述的修改,如图17中所示,可以在执行所定义操作期间改变控制参数。具体地,在包括多个关键帧的所定义操作中,可以使用其中可以为每个关键帧指定控制参数的数据格式。以这种方式,即使在一个所定义操作中,也可以对于每个关键帧指定使关节轻柔地移动的控制参数和使关节猛烈移动的控制参数。此外,当真实机执行这样的所定义操作时,可以根据经过的时间实现关节从轻柔运动转换到猛烈运动的操作。

图18示出了能够为每个关键帧指定控制参数的所定义操作的示例数据格式1800。每个关键帧包括指定关节目标值的数据集和指定控制参数的数据集。

此外,即使在一个所定义操作中,也可以为每个硬件部件单独指定用于设置控制参数的定时。在图18中所示的实施例中,例如,在所定义操作“走动”中,设置电机1的控制参数的时间被指定为t1,并且设置电机2的控制参数的时间被指定为t2。应注意,在图中的所定义操作“躺下”中,在期望在真实机的控制器中设置控制参数的初始值的情况下,仅需要将空指定为控制参数。在所定义操作数据文件1800的开头处描述控制参数的初始值。

如上所述,根据本说明书中公开的技术,在用于诸如机器人的自主操作设备的控制程序的开发环境中,通过提供输入和改变电机的控制参数、电机的特征值和真实机的硬件特征值的装置,可以使用反映真实机的硬件特征的高精度物理引擎来修正和改变所定义操作。

此外,根据本说明书中公开的技术,当使用具有物理引擎和能够再现接近真实环境的物理现象的3d图形动画的功能的开发工具程序开发控制程序(应用程序)时,可以记录硬件特征信息(诸如,电机输入的控制参数或用于在开发工具程序上操作控制程序并使用的集),并且将记录的硬件特征信息与控制程序一起安装在真实机上。因此,在真实机上,电机控制器可以根据控制程序使用已经检查了其操作的控制参数结合开发工具程序上的控制程序来控制电机。作为结果,可以再现与在真实机上的开发工具程序的结果类似的预期动作。此外,在真实机上,可以适当地选择和使用已经检查了其操作的多个控制程序结合开发工具程序上的控制参数。因此,根据本说明书中公开的技术,可以在行为计划程序的开发的同时实现符合在行为计划中调用的所定义操作的硬件特征的开发。

此外,根据本说明书中公开的技术,通过提供其中诸如使用关键帧创建的每个可移动单元的角度的目标值和诸如电机的控制参数的硬件特征可以一起输入的开发环境,可以一起进行电机控制、物理运算和通过3d图形动画的操作检查的程序开发。因此,存在这样的效果:可以在不使用真实机的情况下检查由创建的所定义操作引起的现实世界的动作。因此,根据本说明书中公开的技术,存在这样的效果:通过在实时修正控制参数等的同时在单个开发环境中创建诸如所定义操作的简单控制程序,并且通过在包括物理引擎和能够再现接近真实环境的现象的3d图形动画的开发工具程序上开发应用程序,可以在不使用真实机的情况下进行接近真实机的操作的操作检查。

工业实用性

已经参考具体实施方式详细描述了本说明书中公开的技术。然而,显而易见的是,本领域技术人员可以在不背离本说明书中公开的技术的要旨的情况下对实施方式进行修改和替换。

本说明书中公开的技术可以用于评估和验证实现自主操作设备(诸如,机器人、自主车辆或无人驾驶飞行器(无人机))的自主或自适应行为的应用程序的操作。此外,本文中公开的技术还可以应用于使用行为计划控制操作的视频游戏角色的ai开发。

简而言之,已经以示例的形式描述了本说明书中公开的技术,并且不应该限制性地解释本说明书的描述的内容。为了确定本说明书中公开的技术的要旨,应该考虑权利要求的范围。

应注意,本说明书中公开的技术可以具有以下配置。

(1)一种信息处理装置,处理包括针对控制目标设备的可移动单元的目标值的控制程序,该信息处理装置包括:

第一保持单元,保持可移动单元的特征值并且根据控制方法保持可移动单元的控制参数;

控制输出单元,使用由第一保持单元保持的控制参数和特征值,根据目标值来计算可移动单元的输出值;以及

物理运算单元,使控制目标设备根据计算出的可移动单元的输出值来执行物理动作。

(2)根据上述(1)所述的信息处理装置,

其中,控制输出单元使用由第一保持单元保持的控制参数来计算根据可移动单元的目标值与当前值的偏差的控制输入值,并且相对于该控制输入值计算根据由第一保持单元保持的特征值的可移动单元的输出值。

(3)根据上述(1)或(2)中任一项所述的信息处理装置,

其中,第一保持单元根据可移动单元的控制方法,保持比例增益、积分增益以及微分增益中的至少一个控制参数。

(4)根据上述(1)至(3)中任一项所述的信息处理装置,

其中,第一保持单元保持以下各项中的至少一个特征值:驱动可移动单元的电机的制造商名称、型号、安装角度尺寸、类型、轴类型、是否存在电磁制动器、驱动器类型、额定输出、额定转速、最大转速、最大输入转速、额定转矩、瞬时最大转矩、激励最大静态转矩、速度范围、转子惯性力矩、惯性力矩、分辨率(电机轴)(p/r)、检测器(编码器)、间隙、减速比、电源输入电压、电源输入频率、电源输入额定电压、速度及位置控制命令、最大输入脉冲频率以及电机单元质量。

(5)根据上述(1)至(4)中任一项所述的信息处理装置,还包括

第二保持单元,保持控制目标设备的特征值,

其中,物理运算单元使控制目标设备使用由第二保持单元保持的特征值来执行物理动作。

(6)根据上述(5)所述的信息处理装置,

其中,第二保持单元保持控制目标设备中包括的每个部件的重量、重心、惯性、关节的可移动范围、以及摩擦系数中的至少一项。

(7)根据上述(1)至(6)中任一项所述的信息处理装置,还包括

第一获取单元,获取由第一保持单元保持的可移动单元的控制参数或可移动单元的特征值。

(8)根据上述(7)所述的信息处理装置,

其中,第一获取单元从控制程序的设置文件中获取可移动单元的控制参数或可移动单元的特征值。

(9)根据上述(7)或(8)中任一项所述的信息处理装置,

其中,第一获取单元根据用户的输入操作来获取可移动单元的控制参数。

(10)根据上述(5)至(9)中任一项所述的信息处理装置,还包括

第二获取单元,获取由第二保持单元保持的控制目标设备的特征值。

(11)根据上述(10)所述的信息处理装置,

其中,第二获取单元从描述控制目标设备的三维模型的文件中获取控制目标设备的特征值。

(12)根据上述(1)至(11)中任一项所述的信息处理装置,还包括

编辑单元,根据用户的输入操作来修正或改变控制程序。

(13)根据上述(1)至(12)中任一项所述的信息处理装置,还包括

输出单元,输出已经经历由物理运算单元对物理动作的计算的控制程序。

(14)根据上述(13)所述的信息处理装置,

其中,输出单元输出合并了保持在第一保持单元中的至少一部分信息的控制程序。

(15)根据上述(13)所述的信息处理装置,

其中,输出单元输出在第一保持单元中以不同于控制程序的文件保持的至少一部分信息。

(16)一种信息处理方法,用于处理包括针对控制目标设备的可移动单元的目标值的控制程序,该信息处理方法包括:

第一保持步骤,保持可移动单元的特征值并且根据控制方法保持可移动单元的控制参数;

控制输出步骤,使用通过第一保持步骤保持的控制参数和特征值,根据目标值来计算可移动单元的输出值;以及

物理运算步骤,使控制目标设备根据计算出的可移动单元的输出值来执行物理动作。

(17)一种呈计算机可读格式描述的计算机程序,用于在计算机上执行对包括针对控制目标设备的可移动单元的目标值的控制程序的处理,该计算机程序使计算机起以下作用:

第一保持单元,保持可移动单元的特征值并且根据控制方法保持可移动单元的控制参数;

控制输出单元,使用由第一保持单元保持的控制参数和特征值,计算相对于目标值的可移动单元的输出值;以及

物理运算单元,使控制目标设备根据计算出的可移动单元的输出值来执行物理动作。

(18)一种信息处理装置,执行用于根据控制程序来控制具有可移动单元的控制目标设备的处理,信息处理装置包括:

设置单元,将根据控制方法的可移动单元的控制参数设置到控制器,控制参数包括在控制程序中,控制器驱动控制目标设备中的可移动单元;以及

操作控制单元,根据由控制程序指定的可移动单元的目标值来控制由控制器对可移动单元的驱动。

(19)一种程序制造方法,用于制造用于控制具有可移动单元的控制目标设备的控制程序,程序制造方法包括:

控制参数设置步骤,向控制程序设置用于使控制目标设备的控制器控制可移动单元的控制参数;以及

目标值设置步骤,向控制程序设置要输入到控制目标设备的控制器以控制对可移动单元的驱动的目标值。

参考符号列表

100自主操作设备(真实机)

110主体单元

111处理器

112存储器

113通信调制解调器

114电池

115usb端口

116gps

120模块单元

121致动器

122处理器

123存储器

124传感器

125通信调制解调器

200开发设备

210计算机主体单元

211处理器

212gpu

213存储器

214usb端口

215通信调制解调器

220显示器

230用户界面

1200开发设备

1210运动编辑单元

1220电机控制输出单元

1230物理运算单元。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1