一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于仿真的程序和装置的制作方法

2022-11-12 23:46:02 来源:中国专利 TAG:
1.本公开大体涉及仿真程序,更特定而言,涉及在仿真的执行中动态地切换碰撞检测的设定的技术。
背景技术
::2.近年来,使用了计算机的仿真被应用于各种
技术领域
:。例如,仿真也用于通过cad(computeraideddesign:计算机辅助设计)软件设计的机械的动作确认、或者包含这些机械的fa(factoryautomation:工厂自动化)的生产线的验证作业等。3.关于仿真,例如,日本特开2016-042378号公报(专利文献1)公开了如下的仿真装置(参照[摘要]):“根据控制程序,基于在虚拟空间中被与机械对应的虚拟机械处理且与对象物对应的虚拟对象物的模型数据,计算用于使虚拟机械移动的指令值,计算根据计算出的指令值的虚拟机械的移动,计算根据计算出的虚拟机械的移动而移动的虚拟对象物的移动,生成在虚拟地拍摄计算出的虚拟机械的移动或虚拟对象物的移动的情况下得到的虚拟空间图像,进一步基于生成的虚拟空间图像,计算指令值”。[0004]现有技术文献[0005]专利文献[0006]专利文献1:日本特开2016-042378号公报技术实现要素:[0007]发明所要解决的课题[0008]根据专利文献1所公开的技术,无法动态地变更对象间的碰撞检测的设定。因此,需要动态地变更对象间的碰撞检测的设定的技术。[0009]本公开是鉴于上述那样的背景而完成的,某个方面的目的在于提供动态地变更对象间的碰撞检测的设定的技术。[0010]用于解决课题的手段[0011]在本公开的一例中,提供一种使1个以上的处理器执行命令的程序。命令包含以下步骤:确定第1对象和第2对象所属的组;执行包含第1对象和第2对象的仿真;在仿真的执行中,进行第1对象与第2对象的碰撞判定;以及基于满足预先确定的条件,变更第1对象所属的组。仅在第1对象所属的组与第2对象所属的组不同的情况下,执行碰撞判定。[0012]根据上述公开,程序能够抑制不必要的对象彼此的碰撞检测处理的执行,并抑制执行程序的装置的计算资源的消耗。[0013]在上述公开中,预先确定的条件由仿真中的第1对象从属的目标来定义。[0014]根据上述公开,能够基于第1对象所接触的目标,来变更第1对象的所属组。[0015]在上述公开中,命令还包含以下步骤:基于从第1对象不与第2对象接触的状态变化为第1对象与第2对象接触的状态,将第1对象的从属目标变更为第2对象。[0016]根据上述公开,程序能够基于第1对象和第2对象的接触状态,动态地切换第1对象的所属组。[0017]在上述公开中,命令还包含以下步骤:监视第1对象所接触的目标的变化;以及每当检测到第1对象所接触的目标的变化时,基于第1对象所接触的目标来变更第1对象所属的组。[0018]根据上述公开,程序能够基于与第1对象接触的任意对象,动态地切换第1对象的所属组。[0019]在上述公开中,命令还包含以下步骤:将仿真的执行状况显示于显示器。在第1对象和第2对象属于相同组的情况下,第1对象的颜色与第2对象的颜色相同,在第1对象和第2对象不属于相同组的情况下,第1对象的颜色与第2对象的颜色不同。[0020]根据上述公开,程序能够以在视觉上容易理解的方式对用户提示属于同一组的对象。[0021]在上述公开中,命令还包含以下步骤:基于检测到第1对象的碰撞,使第1对象或第1对象所接触的目标的颜色变化。[0022]根据上述公开,程序能够向用户以在视觉上容易理解的方式提示对象彼此的碰撞发生。[0023]在上述公开中,命令还包含以下步骤:生成过滤器,所述过滤器将属于与第1对象相同的组的对象从针对第1对象的碰撞判定的目标中排除;以及在碰撞判定中,将过滤器所包含的对象从针对第1对象的碰撞判定中排除。[0024]根据上述公开,程序通过参照过滤器,能够抑制不必要的对象彼此的碰撞检测处理的执行。[0025]在上述公开中,命令还包含以下步骤:在第1对象与第2对象之间设定从属关系;以及基于在第1对象与第2对象之间设定了从属关系,将第1对象和第2对象设定为属于同一组。[0026]根据上述公开,程序能够基于对象的从属关系,将对象分组。[0027]在上述公开中,命令还包含以下步骤:提供用于定义预先确定的条件的模板;以及按照每个模板,受理对与第1对象相关的处理进行追加的输入。[0028]根据上述公开,程序能够向用户提供容易地创建仿真脚本的单元。[0029]在上述公开中,与第1对象相关的处理包含第1对象的从属目标对象的变更处理。[0030]根据上述公开,程序能够向用户提供用于变更第1对象的所属组的设定的输入单元。[0031]在上述公开中,与第1对象相关的处理包含第1对象或第2对象的可视化的开/关的切换处理。[0032]根据上述公开,程序能够向用户提供对象的可视化的切换设定的输入单元。[0033]在上述公开中,命令还包含以下步骤:保存基于模板创建的多个脚本;以及受理对多个脚本各自的执行顺序进行确定的输入。[0034]根据上述公开,程序能够向用户提供确定多个脚本的执行顺序的单元。[0035]在上述公开中,命令还包含以下步骤:对仿真所包含的1个或多个对象的动作是通过仿真(simulation)来实现、还是通过使模拟器(emulator)动作来实现进行切换。[0036]根据上述公开,程序能够将模拟器的动作编入仿真中。[0037]在上述公开中,命令还包含以下步骤:基于检测到第1对象与第2对象的碰撞,输出日志信息,所述日志信息包含与第1对象相关的信息、与第2对象相关的信息以及碰撞时刻。[0038]根据上述公开,程序能够向用户提供日志信息。[0039]在本公开的另一例中,提供一种装置,该装置包含:存储器,其存储有上述任意一项所述的程序;以及处理器,其执行程序。[0040]根据上述公开,装置能够抑制不必要的对象彼此的碰撞检测处理的执行,并抑制处理器的计算资源的消耗。[0041]发明的效果[0042]根据某个实施方式,能够动态地变更对象间的碰撞检测的设定。[0043]本公开内容的上述以及其他目的、特征、方面以及优点根据与附图相关联地理解的和本公开相关的以下详细说明而变得明确。附图说明[0044]图1是表示某个实施方式的仿真程序100的动作概要的一例的图。[0045]图2是表示能够应用仿真程序100的生产线20的结构的一例的图。[0046]图3是表示用于执行仿真程序100的信息处理装置300的结构的一例的图。[0047]图4是表示仿真程序100的模拟功能的概要的一例的图。[0048]图5是表示作为仿真程序100的一个功能的可视化器530的显示例的图。[0049]图6是表示仿真程序100的第一ui(userinterface:用户界面)600的例子的图。[0050]图7是表示仿真程序100的第二ui700的一例的图。[0051]图8是表示仿真程序100的第三ui800的一例的图。[0052]图9是表示仿真程序100的第四ui900的一例的图。[0053]图10是表示仿真程序100的第五ui1000的一例的图。[0054]图11是表示仿真程序100的第1模块结构的一例的图。[0055]图12是表示基于第1模块结构的序列的一例的图。[0056]图13是表示仿真程序100的第2模块结构的一例的图。[0057]图14是表示基于第2模块结构的序列的前半部分的一例的图。[0058]图15是表示基于第2模块结构的序列的后半部分的一例的图。[0059]图16是表示仿真程序100的第3模块结构的一例的图。[0060]图17是表示基于第3模块结构的序列的前半部分的一例的图。[0061]图18是表示基于第3模块结构的序列的后半部分的一例的图。[0062]图19是表示仿真程序100的第4模块结构的一例的图。[0063]图20是表示基于第4模块结构的序列的前半部分的一例的图。[0064]图21是表示基于第4模块结构的序列的后半部分的一例的图。[0065]图22是仿真程序100的流程图的一例。具体实施方式[0066]以下,参照附图说明本公开的技术思想的实施方式。在以下的说明中,对相同的部件标注相同的标号。它们的名称和功能也相同。因此,不重复对它们的详细说明。[0067]《a.应用例》[0068](a-1.仿真的目标)[0069]图1是表示本实施方式的仿真程序100的动作概要的一例的图。参照图1,对仿真程序100的应用例进行说明。仿真程序100提供设置于工厂等的包含机器人或机械等的制造线或检查线等(在对它们进行统称时,有时也表示为“生产线”)的仿真功能。[0070]生产线包含机器人臂、工件、作业台以及托盘等多个对象。此外,这里的“工件”是指组装作业、检查作业等中的作业对象物。仿真程序100能够判定在使制造线运转时这些对象是否不发生干涉(对象彼此是否碰撞)。仿真程序100能够通过pc(personalcomputer:个人计算机)、工作站、服务器装置、云环境等信息处理装置来执行。在以后的说明中,假设仿真程序100执行的全部动作是由安装有仿真程序100的信息处理装置执行的。[0071]在图1所示的例子中,仿真程序100执行针对生产线的仿真。生产线包含机器人臂140和台座160。另外,托盘170设置在台座160上。机器人臂140将托盘170上的工件150搬运至台座160的规定位置。另外,图1所示的结构是一个例子,生产线的结构不限于此。在某个方面中,生产线也可以包含任意数量的机器人臂、其他机械、传感器等。另外,在其他方面中,也可以是,生产线被设计为机器人与人进行协调作业。[0072](a-2.每个场景的碰撞判定目标的切换)[0073]仿真程序100主要提供使用了3d(three-dimensional:三维)对象的仿真功能。使用了3d对象的仿真需要大量的计算资源和存储器。假设,在安装有仿真程序100的信息处理装置执行了包含在仿真中的全部对象的碰撞检测的情况下,其计算量变得庞大。[0074]因此,仿真程序100仅进行重要的特定对象的碰撞判定,由此高效地使用信息处理装置的计算资源。进而,仿真程序100提供按后述的每个场景切换进行碰撞判定的对象的功能。[0075]仿真程序100将生产线的运转状态分割为特定的场景。并且,仿真程序100仅对需要各场景下的碰撞判定的对象执行碰撞判定处理。这里的“场景”可以根据特定的对象彼此是否接触来定义。例如,图1的场景110、120、130根据工件150与其他哪个对象接触来定义。[0076]场景110是机器人臂140想要把持设置于托盘170的工件150的场景。在该场景110中,设想工件150与托盘170接触。另外,设想工件150不与机器人臂140以及台座160接触。[0077]在场景110中,仿真程序100不执行工件150与托盘170的接触判定。这是因为,工件150与托盘170接触是理所当然的,该接触不应包含在错误中。[0078]相反,仿真程序100执行工件150与机器人臂140以及台座160的接触判定。这是因为,这些对象彼此本来应该不接触。例如,在工件150与台座160接触的情况下,怀疑工件150或托盘170的配置错误。另外,在机器人臂140以本来未设想的角度或者朝向与工件150接触的情况下,机器人臂140的控制程序错误的可能性高。这样,仿真程序100能够仅检测在场景110中成为问题的对象彼此的碰撞。[0079]场景120是场景110的下一个场景,是机器人臂140把持工件150并将工件150从托盘170抬起的场景。在该场景120中,设想被机器人臂140把持的工件150与机器人臂140接触。另外,设想被机器人臂140把持的工件150与台座160以及托盘170中的任意一个都不接触。[0080]在场景120中,仿真程序100不执行机器人臂140所把持的工件150与机器人臂140的碰撞判定,这是因为机器人臂140所把持的工件150与机器人臂140接触是理所当然的,该接触不应包含在错误中。[0081]相反,仿真程序100执行由机器人臂140把持的工件150与台座160以及托盘170的接触判定。另外,仿真程序100还实施由机器人臂140把持的工件150与设置于台座160的其他工件150的碰撞判定。这是因为,这些对象彼此本来应该不接触。例如,在被机器人臂140把持的工件150与托盘170接触的情况下,机器人臂140有可能没有正常地抬起工件150,而在托盘170上拖动工件150。另外,在由机器人臂140把持的工件150与设置于托盘170的其他工件150接触的情况下,机器人臂140使工件150彼此碰撞。在检测到这些碰撞的情况下,机器人臂140的控制程序存在错误的可能性高。[0082]场景130是场景120的下一个场景,是机器人臂140将工件150设置于台座160的规定位置的场景。在该场景130中,设想设置于台座160的工件150与台座160接触。另外,设想设置于台座160的工件150与机器人臂140以及托盘170中的任意一个都不接触。[0083]在场景130中,仿真程序100不执行设置于台座160的工件150与台座160的接触判定。这是因为,设置于台座160的工件150与台座160接触是理所当然的,该接触不应包含在错误中。[0084]相反,仿真程序100执行设置于台座160的工件150与机器人臂140以及托盘170的接触判定。这是因为,这些对象彼此本来应该不接触。例如,在设置于台座160的工件150与托盘170接触的情况下,存在工件150未正常地设置在台座160上的可能性。另外,在设置于台座160的工件150与机器人臂140接触的情况下,机器人臂140的控制程序存在错误的可能性高。[0085](a-3.对象的分组)[0086]如上所述,仿真程序100为了按每个场景切换作为进行碰撞检测的目标的对象,将对象分组管理。[0087]仿真程序100在某个场景中,对设想为相互接触的对象彼此进行分组。例如,在场景110中,设想工件150与托盘170接触。因此,仿真程序100将工件150和托盘170作为属于同一组的对象进行管理。相反,预想工件150不与机器人臂140以及台座160接触。因此,仿真程序100将工件150作为属于与机器人臂140以及台座160不同的组的对象进行管理。在场景110的例子中,仿真程序100能够将各对象分组为组a(工件150、托盘170)、组b(机器人臂140)、组c(台座160)。[0088]仿真程序100不执行属于同一组的对象彼此的碰撞判定,而执行属于不同组的对象彼此的碰撞判定。例如,仿真程序100不执行场景110中属于同一组的工件150及托盘170的碰撞判定。相反,仿真程序100执行在场景110中属于互不相同的组的工件150、机器人臂140以及台座160的碰撞判定。[0089]仿真程序100向用户提供用于定义各对象所属的组的输入功能。此外,仿真程序100基于来自用户的输入等,即使是接触的对象也能够分类为不同的组。例如,仿真程序100能够将台座160和设置在台座160上的托盘170分类为不同的组。[0090]仿真程序100每当场景切换时(每当特定的对象彼此的接触关系改变时),更新分组。例如,在从场景110切换为场景120时(工件150被机器人臂140把持而抬起时),仿真程序100将工件150从组a移至机器人臂140所属的组b。通过该处理,在场景120中,不再执行关于工件150和机器人臂140的碰撞判定。[0091]进而,仿真程序100在属于同一组的各对象间定义从属关系(父子关系)。例如,实际上,机器人臂140可包含机器人主体、机器人工具(机器人臂的末端的工具)等多个对象。在该情况下,机器人主体是父级,机器人工具是子级。作为另一例,场景110中的工件150的父级是托盘170。仿真程序100通过定义这各个对象的从属关系,对多个对象进行分组。仿真程序100向用户定义对每个场景的对象彼此的从属关系进行定义的输入功能。仿真程序100能够基于每个场景的对象彼此的从属关系来更新分组。[0092]如上所述,仿真程序100分组管理对象,从而抑制属于相同组的对象彼此的碰撞检测处理的执行。由此,仿真程序100能够抑制仿真所需的计算资源。[0093]进而,仿真程序100在每次场景的切换时,执行更新分组的处理。由此,仿真程序100能够针对每个场景抑制不必要的对象彼此的碰撞检测处理的执行。[0094]《b.硬件结构》[0095]图2是表示能够应用仿真程序100的生产线20的结构的一例的图。生产线20包含上位传送路径220和下位传送路径230。在上位传送路径220连接有综合控制器200、ipc(industrialprocesscontrol:工业过程控制)装置201、操作面板202、管理装置203、搬运用机器人204、传感器205、lidar(lightdetectionandranging:光探测和测距)206、云环境207、数据库208、仿真器209。[0096]在下位传送路径230连接有综合控制器200和现场装置240a~240j(在统称的情况下,有时也表示为“现场装置240”)。[0097]综合控制器200对与生产线20连接的各种传感器、机器人以及电机等各种致动器进行控制。换言之,综合控制器200是具有plc(programmablelogiccontroller:可编程逻辑控制器)的功能以及机器人控制器的功能双方的装置。在某个方面中,生产线20也可以具有独立的plc和机器人控制器来代替综合控制器200。[0098]ipc装置201在fa(factoryautomation:工厂自动化)等中对系统整体的生产管理、过程进行管理。操作面板202由工厂的工作人员使用于生产线20的检查、操作。[0099]管理装置203例如对搬运用机器人204等进行管理以及控制。搬运用机器人204在工厂内搬运工件、托盘。传感器205可以用作安全机构。例如,传感器205能够用于检测机器人或机床等的附近是否有人等。lidar206是使用光传感器来检测周边障碍物的装置。lidar206例如能够搭载于搬运用机器人204等来使用。[0100]云环境207是由位于工厂的内部或外部的多个服务器构成的信息处理环境。数据库208存储从综合控制器200或ipc装置201等发送来的日志数据等。仿真器209是执行仿真程序100的信息处理装置。仿真器209能够执行包含生产线20的一部分或全部结构的仿真。管理者能够在使用仿真器209确认生产线20的设计没有问题之后,使生产线20实际运转。[0101]在某个方面中,云环境207、数据库208以及仿真器209的全部或一部分也可以设置于工厂的用地外。在该情况下,云环境207、数据库208以及仿真器209的全部或者一部分能够经由外部网络、网关装置等(未图示)与上位传送路径220连接。[0102]现场装置240是机器人臂、scara装置、平移机构或电机等控制装置。在某个方面中,现场装置240既可以内置于机器人臂等,也可以设置于机器人臂等的外部。在生产线20中,通过多个现场装置240进行协调作业,能够执行产品的制造或检查等。[0103]仿真程序100例如能够在仿真中进行构成生产线20的现场装置240与工件的碰撞检测、搬运用机器人204的碰撞检测等。仿真程序100也可以与现场装置240的程序的开发环境为一体型。在该情况下,仿真器209能够在程序的仿真完成后,将该程序安装于现场装置240。[0104]图3是表示用于执行仿真程序100的信息处理装置300的结构的一例的图。信息处理装置300包含cpu(centralprocessingunit:中央处理单元)301、1次存储装置302、2次存储装置303、外部设备接口304、输入接口305、输出接口306以及通信接口307。[0105]cpu301可执行用于实现信息处理装置300的各种功能的程序。cpu301例如由至少1个集成电路构成。集成电路例如也可以由至少1个cpu、至少1个fpga(field-programmablegatearray:现场可编程门阵列)、或者它们的组合等构成。cpu301通过从2次存储装置303读入到1次存储装置302的仿真程序100,能够执行参照图1说明的处理。[0106]1次存储装置302存储由cpu301执行的程序和由cpu301参照的数据。在某个方面中,1次存储装置302可以由dram(dynamicrandomaccessmemory:动态随机存取存储器)或sram(staticrandomaccessmemory:静态随机存取存储器)等实现。[0107]2次存储装置303是非易失性存储器,也可以存储由cpu301执行的程序以及由cpu301参照的数据。在该情况下,cpu301执行从2次存储装置303读出到1次存储装置302的程序,参照从2次存储装置303读出到1次存储装置302的数据。在某个方面中,2次存储装置303可以由hdd(harddiskdrive:硬盘驱动器)、ssd(solidstatedrive:固态驱动器)、eprom(erasableprogrammablereadonlymemory:可擦除可编程只读存储器)、eeprom(electricallyerasableprogrammablereadonlymemory:电可擦除可编程只读存储器)或者闪存等实现。[0108]外部设备接口304能够与打印机、扫描仪以及外置hdd等任意的外部设备连接。在某个方面中,外部设备接口304可以由usb(universalserialbus:通用串行总线)端子等实现。[0109]输入接口305能够与键盘、鼠标、触摸板或者游戏垫等任意的输入装置连接。在某个方面中,输入接口305可以由usb端子、ps/2端子以及bluetooth(注册商标)模块等实现。[0110]输出接口306能够与阴极射线管显示器、液晶显示器或有机el(electro-luminescence:电致发光)显示器等任意的输出装置连接。在某个方面中,输出接口306可以由usb端子、d-sub端子、dvi(digitalvisualinterface:数字视频接口)端子以及hdmi(注册商标)(high-definitionmultimediainterface:高清晰度多媒体接口)端子等实现。[0111]通信接口307与有线或无线的网络设备连接。在某个方面中,通信接口307可以由有线lan(localareanetwork:局域网)端口和wi-fi(注册商标)模块等实现。在其他方面中,通信接口307也可以使用tcp/ip(transmissioncontrolprotocol/internetrotocol:传输控制协议/互联网协议)、udp(userdatagramprotocol:用户数据报协议)及其他通信协议来收发数据。[0112]《c.仿真程序的详细内容》[0113](c-1.模拟功能)[0114]图4是表示仿真程序100的模拟功能的概要的一例的图。仿真程序100提供对仿真中的一部分或全部对象进行模拟的功能。600,例如能够创建定义了图1的场景110、120、130各自的仿真的内容的脚本。[0127]图7是表示仿真程序100的第二ui700的一例的图。第二ui700受理用于确定定义了处理内容的场景的执行的输入。[0128]脚本列表710是包含由第一ui600等创建的脚本等的列表。用户可以从脚本列表710中选择脚本,并且将该所选择的脚本追加到脚本的执行设定720。[0129]用户通过使用上述的第一ui600以及第二ui700,将仿真中的每个场景的处理内容定义为脚本,进而能够容易地定义这些脚本(场景)的执行顺序。[0130]图8是表示仿真程序100的第三ui800的一例的图。第三ui800受理用于设定各场景中的、对象的分组的操作。用户能够使用第三ui800进行各场景的组的设定。[0131]在图8所示的例子中,设定了某场景(a)中的组810、820以及830。组810包含托盘170。组820包含机器人(机器人臂140的主体)和机器人工具(机器人臂140的末端的工具)。组830包含台座160。[0132]仿真程序100将用户使用第三ui800对各对象设定的组的信息用作用于创建碰撞过滤器的“碰撞过滤器组”。即,仿真程序100在执行场景(a)中的碰撞检测时,参照组810、820以及830,不执行属于同一组的对象彼此(不需要考虑碰撞的对象彼此)的碰撞检测。例如,仿真程序100在场景(a)中不执行属于组820的机器人与机器人工具的碰撞检测。[0133]如上所述,仿真程序100通过参照组的设定,抑制不需要考虑碰撞的对象彼此的碰撞检测的执行。由此,仿真程序100能够抑制信息处理装置300的计算资源的消耗,从而更高速地执行仿真。[0134]图9是表示仿真程序100的第四ui900的一例的图。第四ui900受理对各场景中的对象的碰撞检测的自动切换目标进行选择的用户操作。[0135]在图9的例子中,选择虚拟工件(工件150)作为碰撞检测的自动切换目标。被选择为碰撞检测的自动切换目标的对象在场景的每次切换时(例如,在每次与其他对象碰撞时)切换所属的组。这里的虚拟工件是指仿真内的虚拟的工件。在执行生产线的仿真时,用户能够以工件的动作为中心创建仿真的设定。[0136]以下,参照图1的场景110~130、图8的组、以及图9的设定,对场景的切换进行说明。首先,在场景110中,工件150设置于托盘170。在该情况下,工件150作为托盘170的子级而属于组810。[0137]接着,在场景120中,机器人臂140(机器人工具)把持工件150并从托盘170抬起。在该情况下,工件150作为机器人工具的子级而属于组820。[0138]最后,在场景130中,机器人臂140将工件150设置于台座160,且机器人臂140放开工件150。在该情况下,工件150作为台座160的子级而属于组830。[0139]这样,被选择为碰撞检测的自动切换目标的对象在图6以及图7中设定的场景中成为动态地接触的对象的子级,属于与该接触的对象相同的组。[0140]图10是表示仿真程序100的第五ui1000的一例的图。第五ui1000受理场景切换条件和要在各场景中执行的处理的输入。[0141]在图10的例子中,作为第1场景的条件,设定了开始时(isstart)。另外,作为在第1场景中应执行的处理,定义了将工件150的父级设定为托盘170的处理(workpiece.parent=tray)。[0142]接着,作为第2场景的条件,设定了工件150的父级是托盘170、且机器人工具的卡盘正常把持工件150(workpiece.parent==tray&&chuckclose)。另外,作为在第2场景中应执行的处理,定义了将工件的父级设定为机器人工具(卡盘)的处理(workpiece.parent=chuck)。[0143]接着,作为第3场景的条件,设定了工件150的父级是机器人工具(卡盘)、且机器人工具的卡盘放开了工件150(workpiece.parent==chuck&&chuckopen)。另外,作为在第3场景中应执行的处理,定义了将工件的父级设定为台座160(xytable:xy工作台)的处理(workpiece.parent=xytable)。[0144]仿真程序100在仿真中判定是否满足表示各场景的条件。然后,仿真程序100在判定为满足条件的情况下,判定为成为了由该条件定义的场景。然后,仿真程序100执行在满足该条件的情况下应执行的处理。例如,作为典型的处理,也可以在各场景中设定对象的从属关系的变更处理(父级对象的变更处理)。[0145]仿真程序100能够基于第三ui800中的组的设定和在第五ui1000中创建的脚本来执行对象的组的变更处理。仿真程序100能够通过第三ui800临时受理全部对象所属的组的设定的输入。接下来,仿真程序100能够通过第五ui1000受理场景的切换条件、和各场景中的对象的从属关系的变更处理的输入。[0146]仿真程序100在仿真中,在对象a成为对象b的子级的情况下,使对象a移动到父级对象b所属的组。即,在第三ui800中设定的组是每个对象的初始组,且各对象基于在第五ui1000中定义的每个场景的从属关系的变更处理在组之间移动。[0147]在某个方面中,仿真程序100可以在第五ui1000中受理各对象的初始从属关系的输入。另外,在其他方面中,仿真程序100也可以向用户另外提供用于设定每个对象的从属关系、父对象和子对象间的偏移的ui。[0148]通过如上述那样使用第四ui900以及第五ui1000,用户能够向仿真程序100输入用于动态地切换针对特定对象的碰撞检测目标的设定。[0149]在某个方面中,仿真程序100还能够提供对每个场景设定是否使各对象可视化的ui。通过该ui,用户能够在仿真程序100中输入用于仅将需要在视觉上提示给用户的对象显示于显示器的设定。[0150]接着,参照图11~图21,对仿真程序100的模块结构及模块间的通信进行说明。各模块是构成仿真程序100的程序部件或数据。在某个方面中,这些模块的一部分或全部也可以由硬件实现。[0151](c-3.第1模块结构)[0152]图11是表示仿真程序100的第1模块结构的一例的图。仿真程序100包含综合仿真执行部1101、虚拟工件动作序列设定部1103、仿真设定1106、cad数据库1107、3d处理部1108、碰撞过滤器组设定部1112、碰撞过滤器组数据库1115、3d形状碰撞检测部1116以及碰撞检测结果数据库1117。[0153]综合仿真执行部1101包含虚拟时刻生成部1102。虚拟工件动作序列设定部1103包含虚拟工件动作脚本创建部1104和虚拟工件动作脚本执行部1105。3d处理部1108包含3d形状显示部1109、3d形状分析部1110和3d形状读取部1111。碰撞过滤器组设定部1112包含碰撞过滤器组设定画面1113和碰撞过滤器组设定自动变更部1114。[0154]综合仿真执行部1101执行基于各种脚本的仿真,并且管理仿真整体。虚拟时刻生成部1102生成仿真内的虚拟时刻。[0155]虚拟工件动作序列设定部1103受理来自用户的仿真执行步骤的设定(脚本)的输入。进而,虚拟工件动作序列设定部1103解释并执行仿真的执行步骤的设定。虚拟工件动作脚本1140受理来自用户的与虚拟工件相关的动作脚本的输入。在某个方面中,用户例如能够使用第一ui600、第二ui700以及第五ui1000等,创建与虚拟工件相关的动作脚本。虚拟工件动作脚本执行部1105解释并执行由用户创建的与虚拟工件相关的动作脚本。[0156]仿真设定1106存储各场景中的对象之间的从属关系、显示数据等。在某个方面中,仿真设定1106可以表现为关系数据库的表,也可以以json(javascript(注册商标)objectnotation:js对象简谱)等其他的任意的数据形式表现。在其他方面中,存储于仿真设定1106的数据例如能够使用第三ui800以及第四ui900等来创建。[0157]3d处理部1108将仿真的执行中的情形显示于显示器。在某个方面中,3d处理部1108提供cad数据的读入以及可视化器530的功能。另外,在其他方面中,3d处理部1108也可以将属于相同组的多个对象设为同色(组颜色)来显示。另外,3d处理部1108也可以在场景的切换中,在对象(虚拟工件等)移动了组的情况下,将该对象变更为移动目标的组颜色来进行显示。3d形状显示部1109随时将仿真的执行内容显示于显示器。3d形状分析部1110分析包含在cad数据库1107中的cad文件的形状。3d形状读取部1111读取cad数据库1107中所包含的cad文件。[0158]碰撞过滤器组设定部1112受理碰撞过滤器组的设定的输入,并且在仿真的执行中自动更新碰撞过滤器组。各个碰撞过滤器组是指在图8等中说明的对象所属的组。这些组被用作用于抑制属于同一组的对象彼此的碰撞检测执行的过滤器。[0159]碰撞过滤器组设定画面1113受理对象的组的设定的输入。例如,碰撞过滤器组设定画面1113包含第三ui800。碰撞过滤器组设定自动变更部1114受理碰撞过滤器组的自动更新的设定的输入。例如,碰撞过滤器组设定自动变更部1114包含第四ui900和第五ui1000等。[0160]碰撞过滤器组数据库1115存储由碰撞过滤器组设定部1112创建的碰撞过滤器组的数据。在某个方面中,碰撞过滤器组数据库1115可以表现为关系数据库的表,也可以以json等其他任意的数据形式表现。[0161]3d形状碰撞检测部1116在仿真的执行中,检测对象彼此的碰撞。3d形状碰撞检测部1116通过参照碰撞过滤器组的数据,抑制属于同一组的对象彼此的碰撞检测的执行。3d形状碰撞检测部1116在检测到碰撞时,将包含碰撞的各对象的识别信息和碰撞检测时刻的碰撞检测结果1118(日志信息)保存于碰撞检测结果数据库1117。碰撞检测时刻基于由虚拟时刻生成部1102生成的虚拟时刻。在某个方面中,碰撞检测结果数据库1117可以表现为关系数据库的表,也可以以json等其他任意的数据形式表现。[0162]另外,由第一ui600~第五ui1000各自创建的数据不需要是在任何模块中明确使用的数据。在某个方面中,由第一ui600~第五ui1000各自创建的数据的一部分或全部能够适当地分解或组合而在各模块中使用。[0163]图12是表示基于第1模块结构的序列的一例的图。图12的序列由cpu301执行。在某个方面中,cpu301通过执行从2次存储装置303读入到1次存储装置302的仿真程序100,能够实现基于第1模块结构的序列。[0164]在步骤s1205中,虚拟时刻生成部1102受理来自用户的仿真的开始命令,生成虚拟时刻。在步骤s1210中,虚拟时刻生成部1102将启动请求与虚拟时刻一起发送到虚拟工件动作脚本执行部1105。[0165]在步骤s1215中,虚拟时刻生成部1102向虚拟工件动作脚本执行部1105发送运算命令。在某个方面中,综合仿真运行部1101也可以执行步骤s1205~s1215的处理。[0166]在步骤s1220中,虚拟工件动作脚本执行部1105执行虚拟工件自动执行脚本。虚拟工件自动执行脚本例如包含在第五ui1000中创建的脚本。[0167]在步骤s1225中,虚拟动作动作脚本执行部1105向碰撞过滤器组设定部1112发送运算执行通知。在某个方面中,运算执行通知可包含对象的当前位置等。在其他方面中,运算执行通知也可以包含表示当前场景的信息。[0168]在步骤s1230中,碰撞过滤器组设定部1112基于接收到运算执行通知的情况,更新碰撞过滤器组。例如,碰撞过滤器组设定部1112基于场景的切换,变更虚拟工件所属的组。更具体而言,碰撞过滤器组设定部1112基于在第五ui1000中设定的脚本,在每次场景的切换时,变更各对象所属的组。[0169]在步骤s1235中,虚拟工件动作脚本执行部1105向3d形状碰撞检测部1116发送碰撞检测委托。在步骤s1240中,3d形状碰撞检测部1116基于接收到碰撞检测委托的情况,向虚拟工件动作脚本执行部1105发送虚拟工件的位置的取得请求。[0170]在步骤s1245中,3d形状碰撞检测部1116向碰撞过滤器组设定部1112发送碰撞过滤器组的取得请求。在步骤s1250中,碰撞过滤器组设定部1112向3d形状碰撞检测部1116发送碰撞过滤器组。[0171]在步骤s1255中,虚拟工件动作脚本执行部1105向3d形状碰撞检测部1116发送虚拟工件的位置。在某个方面中,步骤s1240以及s1255的通信可以与步骤s1245以及s1250的通信独立地同时并行执行。在步骤s1260中,3d形状碰撞检测部1116基于接收到碰撞过滤器组和虚拟工件的位置来执行碰撞检测处理。[0172]在步骤s1265中,3d形状显示部1109向虚拟工件动作脚本执行部1105发送虚拟工件的位置取得请求。在步骤s1270中,虚拟工件动作脚本执行部1105向3d形状显示部1109发送虚拟工件的位置。[0173]在步骤s1275中,3d形状显示部1109向3d形状碰撞检测部1116发送碰撞状态信息的取得请求。在步骤s1280中,3d形状碰撞检测部1116向3d形状显示部1109发送碰撞状态信息。作为一例,碰撞状态信息包含发生了对象彼此的碰撞的情况下的各对象的识别信息、碰撞的发生时刻等。在步骤s1285中,3d形状碰撞检测部1116更新画面的显示。例如,每当发生步骤s1285的处理时,可视化器530的显示被更新。[0174](c-4.第2模块结构)[0175]图13是表示仿真程序100的第2模块结构的一例的图。第2模块结构在具有plc的模拟功能和机器人控制器的模拟功能这一点上与第1模块结构不同。在某个方面中,仿真程序100可以基于用户的设定,切换是通过仿真(simulation)再现各功能,还是通过模拟(emulation)再现各功能。[0176]第2模块结构除了第1模块结构所包含的结构以外,还包含plc模拟部1320、机器人控制器模拟部1330、plc用变量的数据库1340以及机器人控制器用变量的数据库1350。[0177]plc模拟部1320包含plc程序创建部1321和plc程序执行部1322。机器人控制器模拟部1330包含机器人程序创建部1331和机器人程序执行部1332。[0178]plc模拟部1320对plc的功能进行模拟,并将其执行结果存储在plc用变量的数据库1340中。plc模拟部1320解释并执行能够安装在实际设备的plc中的程序。[0179]plc程序创建部1321提供能够安装到实际设备的plc的程序的创建功能。在某个方面中,plc程序创建部1321可以包含梯形图软件510。在该情况下,用户能够经由梯形图软件510等创建使plc程序执行部1322执行的程序。[0180]plc程序执行部1322解释并执行由plc程序创建部1321创建的程序。换言之,plc程序执行部1322是虚拟的plc。plc程序执行部1322的动作结果(输出数据等)存储在plc用变量的数据库1340中。[0181]机器人控制器模拟部1330对机器人控制器或机器人主体的功能进行模拟,并将其执行结果存储在机器人控制器用变量的数据库1350中。机器人控制器模拟部1330解释并执行能够安装于实际设备的机器人控制器的程序。[0182]机器人程序创建部1331提供能够安装于实际设备的机器人控制器的程序的创建功能。在某个方面中,机器人程序创建部1331也可以包含机器人程序软件520。在该情况下,用户能够经由机器人程序软件520等创建使机器人程序执行部1332执行的程序。[0183]机器人程序执行部1332解释并执行由机器人程序创建部1331创建的程序。换言之,机器人程序执行部1332是虚拟的机器人控制器。机器人程序执行部1332的动作结果(输出数据等)存储于机器人控制器用变量的数据库1350。[0184]plc用变量的数据库1340存储plc程序执行部1322的动作结果的变量。该变量在将plc的模拟结果取入到仿真中时,能够由3d处理部1108以及3d形状碰撞检测部1116使用。[0185]机器人控制器用变量的数据库1350存储机器人程序执行部1332的动作结果的变量。该变量在将机器人控制器的模拟结果取入到仿真中时,能够由3d处理部1108以及3d形状碰撞检测部1116使用。[0186]在某个方面中,plc用变量的数据库1340以及机器人控制器用变量的数据库1350可以表现为关系数据库的表,也可以以json等其他任意的数据形式表现。[0187]图14是表示基于第2模块结构的序列的前半部分的一例的图。图15是表示基于第2模块结构的序列的后半部分的一例的图。图14和图15的序列由cpu301执行。在某个方面中,cpu301通过执行从2次存储装置303读入到1次存储装置302的仿真程序100,能够实现基于第2模块结构的序列。[0188]在步骤s1402中,综合仿真执行部1101受理来自用户的仿真的开始命令。在步骤s1405中,综合仿真执行部1101向虚拟时刻生成部1102发送虚拟时刻的生成请求。在步骤s1407中,虚拟时刻生成部1102向虚拟工件动作脚本执行部1105发送启动请求。虚拟工件动作脚本执行部1105基于接收到启动请求而启动。[0189]在步骤s1410中,虚拟时刻生成部1102向plc程序执行部1322发送启动请求。在步骤s1412中,虚拟时刻生成部1102向机器人程序执行部1332发送启动请求。机器人程序执行部1332基于接收到该启动请求的情况而启动。在某个方面中,步骤s1407~s1412的启动请求可以包含虚拟时刻。[0190]在步骤s1415中,虚拟时刻生成部1102向plc程序执行部1322发送运算指令。plc程序执行部1322基于接收到该运算指令来执行预先确定的运算。在步骤s1417中,plc程序执行部1322向虚拟时刻生成部1102通知运算结果。作为一例,该运算结果可包含plc用变量。[0191]在步骤s1420中,虚拟时刻生成部1102向机器人程序执行部1332发送运算指令。plc程序执行部1322基于接收到该运算指令来执行预先确定的运算。在步骤s1422中,机器人程序执行部1332向虚拟时刻生成部1102通知运算结果。作为一例,该运算结果可以包含机器人控制器用变量。[0192]在步骤s1425中,虚拟时刻生成部1102将运算指令发送到虚拟工件动作脚本执行部1105。在某个方面中,该运算指令可以包含步骤s1417的运算结果和步骤s1422的运算结果。在步骤s1427中,虚拟工件动作脚本执行部1105基于接收到该运算指令的情况,执行虚拟工件自动执行脚本。虚拟工件自动执行脚本例如包含在第五ui1000中创建的脚本。另外,与图12的序列不同,虚拟工件自动执行脚本使用plc的模拟结果和机器人控制器的模拟结果。[0193]在步骤s1430中,虚拟工件动作脚本执行部1105向碰撞过滤器组设定部1112发送运算执行通知。在某个方面中,运算执行通知可包含对象的当前位置等。在其他方面中,运算执行通知也可以包含表示当前场景的信息。[0194]在步骤s1432中,碰撞过滤器组设定部1112基于接收到运算执行通知的情况,更新碰撞过滤器组。例如,碰撞过滤器组设定部1112基于场景的切换,变更虚拟工件所属的组。在步骤s1435中,虚拟工件动作脚本执行部1105向3d形状碰撞检测部1116发送碰撞检测委托。[0195]在步骤s1437中,3d形状碰撞检测部1116向plc程序执行部1322发送plc控制的各致动器(伺服电机等)的指令值的取得请求。此处的plc所控制的各致动器的指令值是模拟后的plc对各致动器输出的指令值。在步骤s1440中,plc程序执行部1322向3d形状碰撞检测部1116发送plc控制的各致动器的指令值。[0196]在步骤s1442中,3d形状碰撞检测部1116向机器人程序执行部1332发送机器人的各轴的指令值的取得请求。这里的机器人的各轴的指令值是模拟后的机器人控制器对构成机器人的各电机(各轴)输出的指令值。在步骤s1445中,机器人程序执行部1332基于接收到该取得请求的情况,向3d形状碰撞检测部1116发送机器人的各轴的指令值。[0197]在步骤s1447中,3d形状碰撞检测部1116基于接收到碰撞检测委托,向虚拟工件动作脚本执行部1105发送虚拟工件的位置的取得请求。[0198]在步骤s1450中,3d形状碰撞检测部1116向碰撞过滤器组设定部1112发送碰撞过滤器组的取得请求。在步骤s1452中,碰撞过滤器组设定部1112基于接收到该取得请求的情况,向3d形状碰撞检测部1116发送碰撞过滤器组。[0199]在步骤s1455中,虚拟工件动作脚本执行部1105基于接收到该取得请求(步骤s1447)的情况,向3d形状碰撞检测部1116发送虚拟工件的位置。在某个方面中,步骤s1437~s1455的通信可以各自独立地同时并行执行。[0200]在步骤s1457中,3d形状碰撞检测部1116基于plc控制的各致动器的指令值、机器人的各轴的指令值、以及接收到碰撞过滤器组和虚拟工件的位置的情况,执行碰撞检测处理。[0201]在步骤s1460中,3d形状显示部1109向plc程序执行部1322发送plc控制的各致动器的指令值的取得请求。在步骤s1462中,plc程序执行部1322基于接收到该取得请求的情况,向3d形状显示部1109发送plc控制的各致动器的指令值。[0202]在步骤s1465中,3d形状显示部1109向机器人程序执行部1332发送机器人的各轴的指令值的取得请求。在步骤s1467中,机器人程序执行部1332基于接收到该取得请求的情况,向3d形状显示部1109发送机器人的各轴的指令值。[0203]在步骤s1470中,3d形状显示部1109向虚拟工件动作脚本执行部1105发送虚拟工件的位置取得请求。在步骤s1472中,虚拟工件动作脚本执行部1105基于接收到该取得请求的情况,向3d形状显示部1109发送虚拟工件的位置。[0204]在步骤s1475中,3d形状显示部1109向3d形状碰撞检测部1116发送碰撞状态信息的取得请求。在步骤s1477中,3d形状碰撞检测部1116基于接收到该取得请求的情况,向3d形状显示部1109发送碰撞状态信息。作为一例,碰撞状态信息包含发生了对象彼此的碰撞的情况下的各对象的识别信息、碰撞的发生时刻等。在步骤s1480中,3d形状碰撞检测部1116更新画面的显示。例如,每当发生步骤s1480的处理时,可视化器530的显示被更新。[0205](c-5.第3模块结构)[0206]图16是表示仿真程序100的第3模块结构的一例的图。第3模块结构在仅具有机器人控制器的模拟功能作为模拟功能这一点上与上述的各模块结构不同。[0207]在第3模块结构中,仿真程序100仅对机器人控制器的动作进行模拟。仿真程序100将机器人控制器的动作的模拟结果反映到仿真中。[0208]图17是表示基于第3模块结构的序列的前半部分的一例的图。图18是表示基于第3模块结构的序列的后半部分的一例的图。图17和图18的序列由cpu301执行。在某个方面中,cpu301通过执行从2次存储装置303读入到1次存储装置302的仿真程序100,能够实现基于第3模块结构的序列。基于第3模块结构的序列是从第2模块结构的序列中去除与plc程序执行部1322相关的通信处理后的序列。另外,基于第3模块结构的序列所包含的全部处理包含在基于第2模块结构的序列中。因此,不重复这些处理的说明。[0209](c-6.第4模块结构)[0210]图19是表示仿真程序100的第4模块结构的一例的图。第4模块结构在仅具有plc的模拟功能作为模拟功能这一点上与上述的各模块结构不同。[0211]在第4模块结构中,仿真程序100仅对plc的动作进行模拟。仿真程序100将plc的动作的模拟结果反映到仿真中。[0212]图20是表示基于第4模块结构的序列的前半部分的一例的图。图21是表示基于第4模块结构的序列的后半部分的一例的图。图20和图21的序列由cpu301执行。在某个方面中,cpu301通过执行从2次存储装置303读入到1次存储装置302的仿真程序100,能够实现基于第4模块结构的序列。第4模块结构的序列是从第2模块结构的序列中去除与机器人程序执行部1332相关的通信处理后的序列。另外,基于第4模块结构的序列所包含的全部处理包含在基于第2模块结构的序列中。因此,不重复这些处理的说明。[0213](c-7.流程图)[0214]图22是仿真程序100的流程图的一例。在某个方面中,cpu301可以从2次存储装置303向1次存储装置302读入用于进行图22的处理的程序(仿真程序100),并执行该程序。在另一方面中,该处理的一部分或全部也可以作为构成为执行该处理的电路元件的组合来实现。[0215]在步骤s2205中,cpu301启动仿真程序100。在步骤s2210中,cpu301读入碰撞过滤器组。在步骤s2215中,cpu301反复进行步骤s2220以后的处理。在步骤s2220中,cpu301开始仿真器的循环执行。在该步骤中,cpu301依次执行虚拟工件动作脚本。[0216]在步骤s2225中,cpu301更新3d形状的显示状态。在步骤s2230中,cpu301更新虚拟工件的显示坐标。在步骤s2225和s2230中,更新可视化器530的显示。在步骤s2235中,cpu301执行虚拟工件的从属关系的更新处理。例如,在场景切换时,cpu301更新虚拟工件的从属关系和所属组。另外,cpu301能够参照更新后的碰撞过滤器组,将属于同一组的对象的颜色变更为相同颜色。[0217]在步骤s2240中,cpu301在步骤s2235中判定虚拟工件的从属关系是否有变更。cpu301在步骤s2235中判定为虚拟工件的从属关系有变更的情况下(在步骤s2240中为“是”),将控制移至步骤s2245。否则(在步骤s2240中为“否”),cpu301将控制转移到步骤s2250。[0218]在步骤s2245中,cpu301更新碰撞过滤器组。例如,cpu301更新虚拟工件的从属关系和虚拟工件所属的组。在步骤s2250中,cpu301参照更新后的碰撞过滤器组,进行各对象的碰撞判定。[0219]在步骤s2255中,cpu301判定是否检测到对象彼此的碰撞。cpu301在判定为检测到对象彼此的碰撞的情况下(在步骤s2255中为“是”),将控制转移到步骤s2060。否则(在步骤s2255中为“否”),cpu301将控制转移到步骤s2015的循环执行的开头。[0220]在步骤s2260中,cpu301将碰撞检测的结果作为日志输出。用户通过参照该日志,能够知道碰撞的详细情况。在步骤s2265中,cpu301变更碰撞的3d形状(对象)的颜色。通过该处理,例如,显示在可视化器530上的碰撞对象的颜色改变,用户可以容易地注意到碰撞的发生。[0221]如以上说明的那样,本实施方式的仿真程序100以及安装有仿真程序100的信息处理装置300分组管理对象,从而抑制属于相同组的对象彼此的碰撞检测处理的执行。由此,仿真程序100和信息处理装置300能够抑制仿真所需的计算资源。[0222]进而,仿真程序100和信息处理装置300在场景的每次切换时,执行对对象彼此的从属关系及分组进行更新的处理。由此,仿真程序100和信息处理装置300能够按照每个场景,动态地抑制不必要的对象彼此的碰撞检测处理的执行。[0223]《d.附记》[0224]如上所述的本实施方式包含以下这样的技术思想。[0225][结构1][0226]一种程序(100),其使1个以上的处理器(301)执行命令,其中,[0227]所述命令包含以下步骤:[0228]确定第1对象(150)和第2对象(140)所属的组;[0229]执行包含所述第1对象和所述第2对象的仿真;[0230]在所述仿真的执行中,进行所述第1对象与所述第2对象的碰撞判定;以及[0231]基于满足预先确定的条件,变更所述第1对象所属的组,[0232]仅在所述第1对象所属的组与所述第2对象所属的组不同的情况下,执行所述碰撞判定。[0233][结构2][0234]在结构1所记载的程序中,[0235]所述预先确定的条件由所述仿真中的所述第1对象从属的目标来定义。[0236][结构3][0237]在结构2所记载的程序中,[0238]所述命令还包含以下步骤:基于从所述第1对象不与所述第2对象接触的状态变化为所述第1对象与所述第2对象接触的状态,将所述第1对象的从属目标变更为所述第2对象。[0239][结构4][0240]在结构2所记载的程序中,[0241]所述命令还包含以下步骤:[0242]监视所述第1对象所接触的目标的变化;以及[0243]每当检测到所述第1对象所接触的目标的变化时,基于所述第1对象所接触的目标来变更所述第1对象所属的组。[0244][结构5][0245]在结构1~4中的任意一项所记载的程序中,[0246]所述命令还包含以下步骤:将所述仿真的执行状况显示于显示器,[0247]在所述第1对象和所述第2对象属于相同组的情况下,所述第1对象的颜色与所述第2对象的颜色相同,[0248]在所述第1对象和所述第2对象不属于相同组的情况下,所述第1对象的颜色与所述第2对象的颜色不同。[0249][结构6][0250]在结构1~5中的任意一项所记载的程序中,[0251]所述命令还包含以下步骤:基于检测到所述第1对象的碰撞,使所述第1对象或所述第1对象所接触的目标的颜色变化。[0252][结构7][0253]在结构1~6中的任意一项所记载的程序中,[0254]所述命令还包含以下步骤:[0255]生成过滤器,所述过滤器将属于与所述第1对象相同的组的对象从针对所述第1对象的碰撞判定的目标中排除;以及[0256]在所述碰撞判定中,将所述过滤器所包含的对象从针对所述第1对象的所述碰撞判定中排除。[0257][结构8][0258]在结构1~7中的任意一项所记载的程序中,[0259]所述命令还包含以下步骤:[0260]在所述第1对象与所述第2对象之间设定从属关系;以及[0261]基于在所述第1对象与所述第2对象之间设定了从属关系,将所述第1对象和所述第2对象设定为属于同一组。[0262][结构9][0263]在结构8所记载的程序中,[0264]所述命令还包含以下步骤:[0265]提供用于定义所述预先确定的条件的模板;以及[0266]按照每个所述模板,受理对与所述第1对象相关的处理进行追加的输入。[0267][结构10][0268]在结构9所记载的程序中,[0269]与所述第1对象相关的处理包含所述第1对象的从属目标对象的变更处理。[0270][结构11][0271]在结构9或10所记载的程序中,[0272]与所述第1对象相关的处理包含所述第1对象或所述第2对象的可视化的开/关的切换处理。[0273][结构12][0274]在结构9~11中的任意一项所记载的程序中,[0275]所述命令还包含以下步骤:[0276]保存基于所述模板创建的多个脚本;以及[0277]受理对所述多个脚本各自的执行顺序进行确定的输入。[0278][结构13][0279]在结构1~12中的任意一项所记载的程序中,[0280]所述命令还包含以下步骤:对所述仿真所包含的1个或多个对象的动作是通过仿真来实现、还是通过使模拟器动作来实现进行切换。[0281][结构14][0282]在结构1~13中的任意一项所记载的程序中,[0283]所述命令还包含以下步骤:基于检测到所述第1对象与所述第2对象的碰撞,输出日志信息,所述日志信息包含与所述第1对象相关的信息、与所述第2对象相关的信息以及碰撞时刻。[0284][结构15][0285]一种装置,其中,该装置包含:[0286]存储器(303),其存储有结构1~14中的任意一项所述的程序;以及[0287]处理器(301),其执行所述程序。[0288]应该认为本次公开的实施方式在所有方面都是例示而不是限制性的。本公开的范围不是由上述说明表示,而是由权利要求书表示,意在包含与权利要求书等同的意思以及范围内的全部变更。另外,在实施方式以及各变形例中说明的公开内容只要可能,可以单独也可以组合实施。[0289]标号说明[0290]20:生产线;100:仿真程序;110、120、130:场景;140:机器人臂;150:工件;160:台座;170:托盘;200:综合控制器;201:ipc装置;202:操作面板;203:管理装置;204:搬运用机器人;205:传感器;206:lidar;207:云环境;208:数据库;209:仿真器;220:上位传送路径;230:下位传送路径;240:现场装置;300:信息处理装置;301:cpu;302:1次存储装置;303:2次存储装置;304:外部设备接口;305:输入接口;306:输出接口;307:通信接口;410:虚拟plc;411:plc主体;412:伺服电机;420:虚拟机器人;421:机器人控制器;422:机器人主体;430:ethercat共享存储器;431:输入数据;432:输出数据;500:ide;510:梯形图软件;520:机器人程序软件;530:可视化器;610:编辑器;620:工具箱;630:模板;640:条件;710:脚本列表;720:脚本的执行设定;1101:综合仿真执行部;1102:虚拟时刻生成部;1103:虚拟工件动作序列设定部;1104:虚拟工件动作脚本创建部;1105:虚拟工件动作脚本执行部;1106:仿真设定;1107:cad数据库;1108:3d处理部;1109:3d形状显示部;1110:3d形状分析部;1111:3d形状读取部;1112:碰撞过滤器组设定部;1113:碰撞过滤器组设定画面;1114:碰撞过滤器组设定自动变更部;1115:碰撞过滤器组数据库;1116:3d形状碰撞检测部;1117:碰撞检测结果数据库;1118:碰撞检测结果;1140:虚拟工件动作脚本;1320:plc模拟部;1321:plc程序创建部;1322:plc程序执行部;1330:机器人控制器模拟部;1331:机器人程序创建部;1332:机器人程序执行部;1340:plc用变量的数据库;1350:机器人控制器用变量的数据库。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献