机器人运动规划的制作方法

文档序号:16205531发布日期:2018-12-08 07:03阅读:148来源:国知局
机器人运动规划的制作方法

本发明涉及一种方法和系统,用于规划一个或多个机器人的运动,特别是用于执行所述运动;本发明还涉及一种装置,包括一个或多个机器人和这样的系统;本发明还涉及执行这种方法的计算机程序产品。

背景技术

us8,700,307b1公开了一种方法,用于优化操纵器的运动的轨迹,以避开至少一个静态障碍物,该静态障碍物位置不随时间变化。

然而,机器人工作空间中的障碍可能是动态的,即它们的位置随着时间的推移可能会改变。这特别适用于在地板上移动的移动机器人,它可能穿越具有各种动态障碍物的路径,特别是其他移动机器人。



技术实现要素:

本发明的一个目的是提高机器人在具有动态障碍物的环境中的性能。

所述目的特别通过根据根据本公开实施例的运动规划方法来解决。本公开实施例还涉及一种用于基于如本文所述规划的运动来操作机器人的方法和系统,以及分别用于执行本文所述方法的计算机程序产品。本公开的其他实施例涉及有益的实施例。

根据本发明的一个实施例,规划一个机器人的运动或更多机器人的运动。根据本发明的一个实施例,通过相应地控制机器人,尤其是机器人的驱动器来执行所述(多个)运动。

所述机器人或一个或多个所述机器人分别可以(均)是包括平台或基座以及用于移动(具体地,在水平方向上,特别是在地面上)所述平台/基座的驱动装置的移动机器人。根据一个实施例,驱动装置可以包括一个或多个从动轮和/或导向轮(特别是全向轮或履带传动装置等。在这样的平台/基座上,可以布置(移动)机器人的至少一个机器臂,其分别包括一个或多个(具体地,至少为四个,至少为六个,至少为七个)(致动)关节或轴。

因此,运动规划尤其可以包括这类平台/基座的规划运动,即(多个)水平运动。

根据本发明的一个实施例,一种用于机器人或一个或多个所述机器人的运动规划的方法包括以下步骤:

-针对所述机器人或每个所述机器人分别提供如下配置,具体为选择和/

或(预先)定义如下配置,具体为接收、输入和/或参数化如下配置:

-起始配置,包括一个(单个)或多个起始位置,以及

-目标配置,包括一个(单个)或多个目标位置;

-提供机器人工作空间中的一个(单个)或多个(动态或移动的)障碍物的运动,所述提供步骤具体为选择和/或(预先)定义所述障碍物的运动,具体为接收、输入和/或参数化所述障碍物的运动,特别是水平运动,所述障碍物运动分别(均)定义了随时间变化的所述障碍物的位置,特别是所述障碍物的水平位置;以及

-确定机器人或每个所述机器人分别从其起始配置到其目标配置的运动,所述机器人运动分别(均)定义了机器人在从(特别是(机器人)个体或共同的)起始时间到(特别是(机器人)个体或共同的)目标时间的时间段中的位置,特别是水平位置,

其中,所述机器人或每个机器人的运动由附加条件来确定或确定成在机器人的起始时间与目标时间之间的每个时间点,或者根据一个实施例,所述机器人与障碍物之间的每个距离,特别是(甚至)最短距离,分别不低于预定阈值,该预定阈值具体为一可选或固定的阈值,所述阈值可以(至少)为零或为正值,具体地,可以对应于离散化的分辨率。

(水平)位置可以分别是(由以下限定)或包括障碍物或机器人(特别是其(移动的)平台或基座)的一维、二维或三维位置,特别是水平位置,该位置具体为其参考值,例如,中心(点)等。

机器人与障碍物之间的距离可以具体是(可以被确定为)机器人与障碍物之间的最短和/或笛卡尔距离,具体是它们(水平的)距离,具体是固定到机器人或障碍物的实际或最大轮廓或者(虚拟的)壳体的距离,具体是在它们的水平投影之间的距离。因此(不低于)为零的预定阈值可以特别对应于分别不相互交叉或重叠的所述轮廓或壳体或投影,(不低于)正的预定阈值具体对应于它们甚至不接触。

确定机器人的运动使得它们的位置与(动态)障碍物的位置之间的距离不会低于预定阈值,可有利地降低机器人与运动障碍物之间的碰撞风险,从而增强机器人的适用性。

根据一个实施例,提供目标配置包括提供目标位置的目标时间或分别用于机器人或每个所述机器人的目标配置的一个或多个目标位置,所述提供步骤具体为选择和/或(预先)定义所述目标时间或所述目标位置,具体为接收、输入和/或参数化所述目标时间或所述目标位置。

通过及时(特别是同步地)提供了(特定的)目标时间,因此可以根据一个实施例改善到达进而改善逻辑斯蒂(logistic)。

根据一个实施例,采用(特别是共同或统一的)状态空间(具体为在该状态空间内)来确定机器人的(一个或多个)运动,该状态空间包括(特别是唯一的)时间维度t和一个或多个位置维度(特别是分别用于一个或多个机器人(每个机器人)的两个位置坐标(x,y))。

因此,根据一个实施例,(一个或多个)机器人和障碍物(或它们的运动)的时间维度t(特别是唯一的时间维度)被提供或添加到机器人的(一个或多个)位置的空间。

通过分别采用这种状态空间或时间维度,可以有利地执行降低机器人与移动障碍物之间碰撞风险的运动规划,特别是在(更)快速、(更)可靠和/或(更)小的计算能力的情况下。

另外或可选地,可以采用包括所述状态空间的状态(xi,yj,tk)、(xm,yn,tk)之间的转换(xi,yj,tk)→(xm,yn,tn)(“所述状态空间的状态转换”)。特别地,运动可以分别在这样的超空间内和/或对于作为(高或超)状态本身的状态空间的(或之内的)状态转换来确定。

所述超空间(尤其是其(高或超)状态之间的转换)可以基于或通过具体为选择和/或(预先)定义的(特别是输入和/或参数化的)运动学和/或动态约束(具体为,分别根据一个实施例的机器人的预定最大(可容许的和/或可执行的)速度、加速度和/或冲击等来进行限制。

根据一个实施例,通过采用这种超空间,根据一个实施例可以分别有利地考虑或观察运动学和/或动态限制。此外或相应地,采用包括机器人的状态之间的转换的超空间可以改善其运动的计算,特别是对于代价函数(costfunction)。

根据一个实施例,具体为根据预定的(特别是选择的和/或(预先)定义(特别是参数化)的分辨率来离散化所述状态空间和或超空间(具体为,其时间维度和/或其位置维度和/或其转换维度),该分辨率具体为在(时间和/或位置和或/转换)网格(具体为离散的(位置/转换-时间)单元)中的分辨率。

通过采用离散状态的空间和/或超空间,可以以特别是(更)快速、(更)可靠和/或(更)小的计算能力来有利地执行运动规划。

根据一个实施例,该方法包括以下步骤(特别是重复的步骤):

-采用以第一分辨率离散化的状态空间和/或超空间(具体为在该离散的状态空间和/或超空间内)确定的机器人的第一运动;以及

-分别利用在所述第一运动附近和/或以比所述第一分辨率更精细的后续分辨率离散化的所述状态空间和/或超空间的子空间(具体为,在所述状态空间和/或超空间的子空间内)确定机器人的后续运动。

具体地,根据一个实施例,这样确定的后续运动本身可以再次用作所述步骤的(进一步)后续序列的第一运动。根据一个实施例,(状态或超)空间的子空间可以是所述空间的(真实)子集,具体为扇区。

换言之,当(迭代地)优化所述运动时,状态空间和/或超空间可以被缩窄到所确定运动的附近,和/或状态空间和/或超空间可以特别是在所确定运动附近被更精细地(即,用更高的分辨率)离散化。

由此可以有利地执行运动规划,特别是在(更)快速、(更)可靠的计算能力的情况下和/或(更)小的计算能力的情况下。

根据一个实施例,确定机器人的运动特别包括在所述(特别是共同的)状态空间和/或超空间内找到用于避开由障碍物占据的单元的轨迹。

由此可以有利地执行运动规划,特别在是(更)快速、(更)可靠的计算能力的情况下和/或在(更)小的计算能力的情况下。

根据一个实施例,机器人的(尤其是所述第一和/或后续)运动通过附加条件来确定,或者确定机器人的(尤其是所述第一和/或后续)运动使得优化定义的一个或多个维度代价函数,或者通过优化(特别是最小化)所述代价函数来确定机器人的(尤其是所述第一和/或后续)运动,和/或确定机器人的(尤其是所述第一和/或后续)运动,直到一个或多个维度的预定标准被满足(具体为达到预定的分辨率和/或迭代和/或计算时间阈值)为止,和/或采用a*算法(特别是在以下文献中描述的动态a*(d*)、d*精简版(d*lite)、限制d*、dd*精简版、字段d*(特别是多分辨率字段d*)算法,特别是采用以下文献中描述的算法)来确定机器人的(尤其是所述第一和/或后续)运动:hart,p.e.,nilsson,n.j.,raphael,b.著(1968):启发式地确定最小代价路径的形式基础(aformalbasisfortheheuristicdeterminationofminimumcostpaths),系统科学和控制论(in.systemsscienceandcybernetics),ssc4的ieee汇报(ieeetransactionsonssc4),卷4第2期,第100–107页;stentz,a.等著(1994):用于局部已知环境的优化与有效路径规划(optimalandefficientpathplanningforpartially–knownenvironments),有关机器人技术与自动化的ieee国际会议的会议记录(proceedingsoftheieeeinternationalconferenceonroboticsandautomation)(icra‘94),第3310–3317页;koenig,s.,和likhachev,m.d*精简版.aaai/iaai(2002),第476–483页;a.stentz,用于无人地面车辆约束动态路径规划(constraineddynamicrouteplanningforunmannedgroundvehicles),第23届陆军科学会议的会议记录,2002;g.ayorkorkorsah,anthony(tony)stentz,以及mbernardinedias,"dd*精简版:使用状态支配的有效增量搜索(efficientincrementalsearchwithstatedominance)",人工智能的第二十一届国际会议(twenty-firstnationalconferenceonartificialintelligence(aaai-06)),2006年7月,第1032-1038页;davidferguson和anthony(tony)stentz,“字段d*:基于插值的路径规划器和再规划器(aninterpolation-basedpathplannerandreplanner)”;机器人技术国际讨论会的会议记录(proceedingsoftheinternationalsymposiumonroboticsresearch(isrr)),2005年10月;或者,davidferguson和anthony(tony)stentz,“多分辨率字段d*(multi-resolutionfieldd*)”,智能自治系统国际会议的会议记录(proceedingsoftheinternationalconferenceonintelligentautonomoussystems(ias)),2006年3月。这些文献的内容通过引用的方式并入本文。

根据一个实施例,代价函数可以取决于(具体为包括或者是)机器人的能量(消耗)、运动的平滑度等。

通过这些特征中的每一个,特别是它们的组合,可以有利地执行运动规划,特别是在(更)快速、(更)可靠的计算能力的情况下和/或(更)小的计算能力的情况下。具体而言,a*算法(a*algorithm)尤其可以改善关于改变障碍物移动的再规划能力。

根据一个实施例,所确定的机器人的运动(具体为所述第一和/或随后的运动)被平滑化,具体为通过滤波进行平滑。

这可以提供有利的运动,特别是在采用离散的状态空间和/或超空间的时候(特别是在低分辨率情况下)。

根据一个实施例,改变障碍物或者一个或多个障碍物的运动(具体为提供改变的运动,重新定义、重新参数化初始提供的障碍物移动),并且如本文相对于所述已改变障碍物运动描述的那样,重新确定机器人的运动。

因此,运动计划可适应于运动已经改变的障碍物,尤其是在线(即在机器人运动被规划或(已经)执行时)情况下。

如之前已经强调的那样,根据一个实施例,单个机器人的运动或者一个机器人以及一个或多个另外的机器人的运动可以如本文所述进行规划,后者具有额外的约束,即这些机器人的运动至少最终被确定为使得在机器人的起始时间和目标时间之间的每个时间点上,还有一个或每个距离(特别是(甚至)机器人之间的最短距离)不低于预定阈值(特别是与预定阈值相同),该预定阈值具体为可选的或固定的阈值,该阈值可以是(至少为)零或正值,具体地,可以对应于离散化的分辨率。机器人与其他机器人之间的距离可以如本文关于机器人与障碍物之间的距离所描述的那样来定义。

在这种多机器人运动规划的情况下,可以采用包括每个机器人的(唯一)时间维度和位置维度的(共同)状态空间和/或包括所述(共同)状态空间的状态转换的(共同)超空间。

根据一个实施例,确定机器人的运动尤其包括在所述共同状态空间和/或超空间内找到轨迹,以避开由障碍物占据的单元以及与两个或更多个机器人的同步位置对应的单元。

通常让(xr1(t),yr1(t))表示一个(第一)机器人r1在时间t处的位置,并且让(xr2(t),yr2(t))表明另一个(第二)机器人r2在时间t处的位置。然后,在t0和tn之间确定机器人r1、r2的运动可以包括:在共同状态空间{xr1×yr1×xr2×yr2×t}内找到在每个t∈[t0,tn]以及障碍物占据的每个状态避开(xr1,yr1)=(xr2,yr2)的轨迹,和/或采用相应的超空间。如果所述共同状态空间和/或超空间被离散化,则在寻找轨迹或为了寻找轨迹以确定协同运动的时候,可以避开由障碍物占据的每个离散化单元以及表示或对应于两个或更多个机器人的同步位置的每个离散化单元。

由于这种(共同)状态空间和/或超空间的总体维度可能相当大,因此最好首先单独地(特别是如所之前描述的,彼此独立地)确定机器人从其起始配置到其目标配置的初始运动,特别是(正好)使得对于每个机器人,在机器人的起始和目标时间之间的每个时间点,机器人和障碍物之间的距离(特别是(甚至)最短距离)不会低于预定阈值,并且随后确定两个或更多个(特别是所有的)所述机器人从其起始配置到其目标配置的运动,使得在机器人的起始时间和目标时间之间的每个时间点处,一个或每个机器人之间的距离(尤其是机器人之间的最短距离)(也)不低于基于所述初始运动(“协调(机器人)运动”)的预定阈值(特别是与预定阈值相同),该阈值具体为基于从所述初始运动开始或者在所述初始运动附近的预定阈值。

事实证明,这种两阶段方法可以显著改善多机器人运动规划,特别是在计算速度和/或能力方面。

本发明意义上的装置(means)可以通过硬件和/或软件来实现。它们尤其可以具体包括一个或多个(特别是数字、计算)微处理单元(cpu)(优选地,包括数据和/或被信号连接到存储器和/或总线系统),和/或一个或多个程序或程序模块。一个或多个cpu可以适于执行由存储在特别是共同或分布式存储系统或介质中的程序来实现的指令或者执行作为该程序的指令,一个或多个cpu可以用于从一个或多个数据总线接收输入信号和/或发送输出信号到这样的数据总线。存储系统可以包括一个或多个(特别是不同的)存储介质,具体为光学、磁性、固态和/或其他非易失性介质。程序可以是这样的,即它/它们实现或可以分别执行本文所述的方法,使得cpu可以执行方法步骤,并且因此(具体为通过相应地控制机器人来)规划(具体为执行)运动。

根据一个实施例,如本文所述的方法的一个或多个(特别是所有)步骤被完全或部分自动执行,具体地,通过系统或其装置分别执行。

根据本发明的一个实施例,特别是针对硬件和/或软件来适配系统以执行本文所述的方法和/或该系统包括:

-用于为机器人提供包括至少一个起始位置的起始配置和包括至少一个目标位置的目标配置的装置;

-用于在机器人的工作空间中提供至少一个障碍物的运动的装置,所述障碍物运动定义了障碍物随时间变化的位置;以及

-用于确定机器人从其起始配置到其目标配置的运动的装置,所述机器人的运动定义了机器人在一时间段中从起始时间到目标时间的位置,使得在起始时间和目标时间之间的每个时间点处,机器人和障碍物之间的距离不低于预定阈值。

根据一个实施例,该系统或其装置分别包括:

-用于为目标配置的至少一个目标位置提供目标时间的装置;和/或

-用于利用包括时间维度和至少一个位置维度的状态空间和/或包括所述状态空间的状态转换的超空间来确定机器人运动的装置;和/或

-用于离散化所述状态空间和/或超空间的装置;和/或

-用于(特别是反复地)采用以第一分辨率离散化的状态空间和/或超空间来确定机器人的第一运动并且利用以比所述第一分辨率更精细的后续分辨率离散化的所述状态空间和/或超空间的子空间和/或在所述第一运动附近的状态空间和/或超空间的子空间来确定机器人的后续运动的装置;

和/或

-用于在所述状态空间和/或超空间内找到用于避开由障碍物占据的单元的轨迹的装置;和/或

-用于确定机器人运动使得定义的代价函数被优化直至满足预先定义的标准为止,和/或使得采用a*算法来优化定义的代价函数的装置;和/或

-用于对确定的机器人的运动进行平滑化的装置,具体为过滤;和/或

-用于改变机器人工作空间中的障碍物的运动并且如本文所述重新确定机器人的运动的特别是在其先前确定的运动附近的运动的装置;和/或

-用于为至少一个另外的机器人提供包括至少一个起始位置的起始配置和包括至少一个目标位置的目标配置,并且如本文所述确定所述另外的机器人从其起始配置到其目标配置的运动的装置,其中,确定机器人的运动使得在机器人的起始时间和目标时间之间的每个时间点处,机器人之间的距离不低于预定阈值;和/或

-用于确定机器人从其起始配置到其目标配置的初始运动的装置,使得对于在机器人的起始时间和目标时间之间的每个时间点处的每个机器人,机器人与障碍物之间的距离不低于预定阈值;以及该装置还用于确定机器人从其起始配置到其目标配置的协调运动,使得在机器人的起始时间和目标时间之间的每个时间点处,机器人之间的距离不低于基于所述初始运动的预定阈值,特别是基于在所述初始运动附近的预定阈值;和/或

-用于操作至少一个机器人的装置,所述装置包括用于如本文所述确定至少一个机器人的运动并控制所述至少一个机器人执行所述运动的装置。

附图说明

在以下对优选实施例的描述中公开了本发明的其它特征。此外,局部示意性地示出:

图1:根据本发明实施例的用于至少一个机器人的运动规划的方法的步骤;

图2:运动规划的方法;

图3:包括至少一个机器人和(用于)执行该方法的系统的装置;以及

图4:运动规划中采用的状态空间。

具体实施方式

图1、图2示出了根据本发明实施例通过装置的系统s(参见图3)对该装置的一个或两个移动机器人r1、r2进行运动规划的方法中的步骤。

在第一步骤s10中,移动机器人r1的起始和目标配置由用户提供,例如,通过在系统s中输入相应的值来提供。分别在图1中的a)、c)和图4中用粗体框表示在起始时间t0处地面上的水平起始位置(x1,y1)和在预定目标时间t2处的水平目标位置(x3,y1)。

如果还要规划移动机器人r2的协调运动,则在步骤s10中也提供起始时间t0处的起始位置(x3,y2)和目标时间t2处的目标位置(x1,y2),如图1的a)和c)中的虚线所示。

随后(参考步骤s20),并行地或在此以前,在t0处的(x3,y1)与t2处的(x1,y1)之间提供动态障碍物o的线性运动,如图1的a)至c)以及图4中的阴影单元所示。

在步骤s30中,如图1的a)至c)以及图4中离散时间t0、t1和t2处的水平地面的相应离散单元所示,以第一分辨率对状态空间(x,y,t)进行离散化。

接下来,通过d*lite算法来确定移动机器人r1的运动,使得机器人r1和障碍物o所占据的单元在步骤s30中不是相同的,而是在最小化作为代价函数的能量消耗的同时至少是邻近的。

另外,所述离散状态空间的状态之间的转换被用来满足预定的运动学和动力学限制,如图1的a)至c)中的箭头所示。正如在图1的b)中更好理解的一个简单示例一样,由于所需的反向运动将超过移动机器人r1的驱动能力,因此不可能或不考虑立即从(x2,y2)返回到(x1,y1)。

由于能量消耗被用作代价函数,能量消耗的一定贡献可以被分配给每个这样的状态转移,这样的状态转移对应于超空间的(高或超)状态,该超空间包括所述状态空间(x,y,t)的状态转移。因此,能量消耗的贡献可以分别被分配给所述超空间的相应高或超状态,这允许改进运动的计算。

该第一运动由图1的a)至c)进行示意性地表示。确定所述运动可以被理解为找到连接(x1,y1,t0)和(x3,y1,t2)的同时避开单元(x3,y1,t0)、(x2,y1,t1)和(x1,y1,t0)的具有最小能量消耗的轨迹。

这由图4示出,其示出了具有由移动的障碍物o占据的具有所述单元(x3,y1,t0)、(x2,y1,t1)和(x1,y1,t2)(在图4中被阴影化)以及r1的起始配置和目标配置(图4中的粗体)的所述离散状态空间。

在随后的步骤s40中,状态空间离散化的分辨率在步骤s30中确定的运动附近增加,如图1的d)所示。

只要尚未分别达到状态空间分辨率或其离散化的预定阈值(s40:“n”),则方法或系统s分别返回到步骤s30,以在被(进一步)限定在前述(第一)运动的附近并且以(进一步)增加的分辨率进行离散化的状态空间内确定r1的(进一步)后续运动(参见图1的d))。

如果满足所述标准(s40:“是”),则方法或系统s分别继续到步骤s50,其中,检查是否已经确定了所有机器人的运动。

如果(根据一个实施例)仅要规划机器人r1的运动,则方法或系统s分别进行到步骤s60。

如果(根据另一个实施例)还要规划移动机器人r2的运动,则该方法或系统s分别返回到步骤s30,并且如上所述确定这种运动,再次以第一分辨率开始。

可以从中理解的是,在步骤s30至s50中,机器人r1、r2的那些初始运动最初被单独确定,特别是彼此独立地确定。

这导致r2的初始运动(x3,y2,t0)→(x2,y2,t1)→(x1,y2,t2)因此将与r1在r1的初始运动(x1,y1,t0)→(x2,y2,t1)→(x3,y1,t2)处发生碰撞。

因此,在步骤s60中确定从步骤s60中的这些r1、r2的初始运动开始协调运动。

这可以如之前关于单独运动所述那样来实施,但是在包括机器人r1的(离散化)唯一时间维度t和位置维度(xr1,yr1)和机器人r2的位置维度(xr2,yr2)的共同状态空间({xr1×yr1×xr2×yr2×t})内。因此,协调运动被确定为具有较高维度的所述共同状态空间中的轨迹,其中状态或离散单元(xr1=a,yr1=b,xr2=a,yr2=b,t=c)分别被避开或禁止,如由障碍物占据的状态或离散单元那样。

此外,这类协调运动可以被迭代地优化,直到满足预定的标准(s70:“y”),例如,最大计算时间已经过去等等。

在步骤s80中,通过如图1的d)所示的过滤来平滑所述协调运动。

在步骤s90中,方法或系统s分别检查障碍物o的运动是否已经改变。如果是的话(s90:“是”),则如上关于步骤s20至s80所述,重新规划r1(和r2,视情况而定)的运动,从已经确定的运动为基础开始。

否则(s90:“n”)通过相应地控制机器人r1、r2来执行所规划的动作(参见步骤s100和图3)。

虽然在前面的概述和详细描述中已经呈现了至少一个示例性实施例,但是应该理解的是,存在大量的变型。还应该理解的是,一个或多个示例性实施例仅是示例,并不意图以任何方式限制范围、适用性或配置。相反,前面的概述和详细描述将为本领域技术人员提供用于实现至少一个示例性实施例的方便路线图,它应当理解为,可以在示例性实施例中描述的元件的功能和布置方面做出各种改变,而不会脱离所附权利要求书及其合法等同物所阐述的范围。

具体地,为了更容易地进行理解,已经特别地针对状态空间本身对确定运动进行了说明。然而,如之前已经解释的那样,可以另外或替代地使用包括状态转换的其超空间。

例如,作为起始位置(x1,y1,t0)的代替,可以采用可能的状态转换{(x1,y1,t0)→(x2,y1,t1),(x1,y1,t0)→(x1,y2,t1)(x1,y1,t0)→(x2,y2,t1)}。

然后,例如,对应于超过驱动能力的反向运动的状态转换(x2,y2,t1)→(x1,y1,t2)对应于具有这类超空间的(高或超)状态。通过避开或禁止所述(高或超)状态,可以容易地观察到相应的动态约束。

另外,可以将例如状态转换(x1,y1,t0)→(x2,y2,t1)所需的能量消耗分配给相应的(高或超)状态,从而便于计算代价函数。

附图标记

o障碍物

r1移动机器人

r2另外的移动机器人

s系统

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