冗余双臂机器人示教方法、装置、电子设备及系统转让专利

申请号 : CN202210452683.9

文献号 : CN114536351B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王豪杨鹏刘振

申请人 : 季华实验室

摘要 :

本申请属于机器人控制技术领域,公开了一种冗余双臂机器人示教方法、装置、电子设备及系统,通过获取示范人员的腕关节的第一轨迹数据和腰关节的第一转动角度数据、冗余双臂机器人的运动约束参数和动力约束参数以及待处理工件的位姿数据;把第一轨迹数据分切为多个轨迹子片段数据,并提取各轨迹子片段数据对应的腰关节角度数据;把运动约束参数、动力约束参数、待处理工件的位姿数据、多个轨迹子片段数据和对应的腰关节角度数据输入分层学习神经网络模型以得到运动策略数据集;根据运动策略数据集获取各关节的动作数据序列;根据冗余双臂机器人各关节的动作数据序列控制各关节运动;从而,可方便快捷地实现对冗余双臂机器人的示教。

权利要求 :

1.一种冗余双臂机器人示教方法,用于对冗余双臂机器人进行示教,所述冗余双臂机器人包括基座、通过腰部关节转动设置在所述基座顶部的转台以及两个对称地设置在所述转台两侧的机械臂,所述机械臂为七轴机械臂,其特征在于,包括步骤:A1.获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据、所述冗余双臂机器人的运动约束参数和动力约束参数、以及待处理工件的位姿数据;

A2.把所述第一轨迹数据分切为多个轨迹子片段数据,并根据所述第一转动角度数据提取各所述轨迹子片段数据对应的腰关节角度数据;

A3.把所述运动约束参数、所述动力约束参数、所述待处理工件的位姿数据、所述多个轨迹子片段数据和对应的所述腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;

A4.根据所述运动策略数据集获取所述冗余双臂机器人各关节的动作数据序列;所述动作数据序列包括多个动作数据,所述动作数据包括对应关节的转动角度和转动角速度;

A5.根据所述冗余双臂机器人各关节的动作数据序列控制各所述关节运动。

2.根据权利要求1所述的冗余双臂机器人示教方法,其特征在于,步骤A4之后和步骤A5之前,还包括步骤:A6.根据各关节的所述动作数据序列对所述冗余双臂机器人进行仿真碰撞检测;

A7.根据仿真碰撞检测结果,对存在碰撞情况的关节的局部运动进行重规划,以调整对应的动作数据序列。

3.根据权利要求1所述的冗余双臂机器人示教方法,其特征在于,步骤A1包括:通过图像识别方法获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据。

4.根据权利要求1所述的冗余双臂机器人示教方法,其特征在于,步骤A2包括:根据示范人员的腕关节的运动时间把所述第一轨迹数据分切为多个轨迹子片段数据。

5.根据权利要求1所述的冗余双臂机器人示教方法,其特征在于,步骤A2包括:根据示范人员的腕关节的轨迹长度把所述第一轨迹数据分切为多个轨迹子片段数据。

6.根据权利要求1所述的冗余双臂机器人示教方法,其特征在于,骤A2包括:根据示范人员的腕关节的速度变化情况把所述第一轨迹数据分切为多个轨迹子片段数据。

7.根据权利要求1所述的冗余双臂机器人示教方法,其特征在于,所述运动策略数据集包括与每个所述轨迹子片段数据对应的动作向量序列;所述动作向量序列包括多个动作向量,每个所述动作向量包含所述冗余双臂机器人各关节的动作数据;

步骤A4包括:

从所述运动策略数据集中,提取各关节的动作数据,分别形成各关节的初始的动作数据序列;

采用三次多项式插值方法对各关节的所述初始的动作数据序列进行插值,得到各关节的最终的动作数据序列。

8.一种冗余双臂机器人示教装置,用于对冗余双臂机器人进行示教,所述冗余双臂机器人包括基座、通过腰部关节转动设置在所述基座顶部的转台以及两个对称地设置在所述转台两侧的机械臂,所述机械臂为七轴机械臂,其特征在于,包括:第一获取模块,用于获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据、所述冗余双臂机器人的运动约束参数和动力约束参数、以及待处理工件的位姿数据;

数据预处理模块,用于把所述第一轨迹数据分切为多个轨迹子片段数据,并根据所述第一转动角度数据提取各所述轨迹子片段数据对应的腰关节角度数据;

运动策略生成模块,用于把所述运动约束参数、所述动力约束参数、所述待处理工件的位姿数据、所述多个轨迹子片段数据和对应的所述腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;

关节数据获取模块,用于根据所述运动策略数据集获取所述冗余双臂机器人各关节的动作数据序列;所述动作数据序列包括多个动作数据,所述动作数据包括对应关节的转动角度和转动角速度;

控制模块,用于根据所述冗余双臂机器人各关节的动作数据序列控制各所述关节运动。

9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有所述处理器可执行的计算机程序,所述处理器执行所述计算机程序时,运行如权利要求1‑7任一项所述冗余双臂机器人示教方法中的步骤。

10.一种冗余双臂机器人示教系统,其特征在于,包括冗余双臂机器人、运动数据采集装置和上位机;

所述冗余双臂机器人包括基座、通过腰部关节转动设置在所述基座顶部的转台以及两个对称地设置在所述转台两侧的机械臂,所述机械臂为七轴机械臂;

所述运动数据采集装置包括多个围绕示范工位设置的立体相机;所述运动数据采集装置用于获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据,以及待处理工件的位姿数据,并上传至所述上位机;

所述上位机用于获取所述冗余双臂机器人的运动约束参数和动力约束参数;把所述第一轨迹数据分切为多个轨迹子片段数据,并根据所述第一转动角度数据提取各所述轨迹子片段数据对应的腰关节角度数据;把所述运动约束参数、所述动力约束参数、所述待处理工件的位姿数据、所述多个轨迹子片段数据和对应的所述腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;根据所述运动策略数据集获取所述冗余双臂机器人各关节的动作数据序列;所述动作数据序列包括多个动作数据,所述动作数据包括对应关节的转动角度和转动角速度;根据所述冗余双臂机器人各关节的动作数据序列控制各所述关节运动。

说明书 :

冗余双臂机器人示教方法、装置、电子设备及系统

技术领域

[0001] 本申请涉及机器人控制技术领域,具体而言,涉及一种冗余双臂机器人示教方法、装置、电子设备及系统。

背景技术

[0002] 冗余双臂机器人具有两个冗余自由度的机械臂(例如七轴机械臂),通常需要通过两个机械臂协同作业,由于冗余双臂机器人的结构复杂,传统的示教器编程、离线编程、虚拟示教编程等示教方法耗时长,示教效率低且对示教人员的专业技术能力要求较高,难以实现对冗余双臂机器人的方便快捷的示教,使冗余双臂机器难以快速适应各种复杂的新任务要求。

发明内容

[0003] 本申请的目的在于提供一种冗余双臂机器人示教方法、装置、电子设备及系统,可方便快捷地实现对冗余双臂机器人的示教。
[0004] 第一方面,本申请提供了一种冗余双臂机器人示教方法,用于对冗余双臂机器人进行示教,所述冗余双臂机器人包括基座、通过腰部关节转动设置在所述基座顶部的转台以及两个对称地设置在所述转台两侧的机械臂,所述机械臂为七轴机械臂,包括步骤:
[0005] A1.获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据、所述冗余双臂机器人的运动约束参数和动力约束参数、以及待处理工件的位姿数据;
[0006] A2.把所述第一轨迹数据分切为多个轨迹子片段数据,并根据所述第一转动角度数据提取各所述轨迹子片段数据对应的腰关节角度数据;
[0007] A3.把所述运动约束参数、所述动力约束参数、所述待处理工件的位姿数据、所述多个轨迹子片段数据和对应的所述腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;
[0008] A4.根据所述运动策略数据集获取所述冗余双臂机器人各关节的动作数据序列;所述动作数据序列包括多个动作数据,所述动作数据包括对应关节的转动角度和转动角速度;
[0009] A5.根据所述冗余双臂机器人各关节的动作数据序列控制各所述关节运动。
[0010] 该冗余双臂机器人示教方法,通过获取示范人员的示范动作的腕关节的第一轨迹数据和腰关节的第一转动角度数据,并对该第一轨迹数据进行片段分切,结合冗余双臂机器人的运动约束参数和动力约束参数和待处理工件的位姿数据,用分层学习神经网络模型得到运动策略数据集,进而从中提取出各关节的动作数据序列,并用以控制冗余双臂机器人运动,实现了在运动约束和动力约束条件下对示范人员作业过程的模仿,可方便快捷地实现对冗余双臂机器人的示教,使冗余双臂机器人能够快速适应各种复杂的新任务要求。
[0011] 优选地,步骤A4之后和步骤A5之前,还包括步骤:
[0012] A6.根据各关节的所述动作数据序列对所述冗余双臂机器人进行仿真碰撞检测;
[0013] A7.根据仿真碰撞检测结果,对存在碰撞情况的关节的局部运动进行重规划,以调整对应的动作数据序列。
[0014] 在对冗余双臂机器人运动进行控制前,先通过仿真检测碰撞情况,并在检测到存在碰撞情况时对相关关节的局部运动进行重规划,防止由于分层学习神经网络模型输出的运动策略数据不合理而使得机器人受损。
[0015] 优选地,步骤A1包括:
[0016] 通过图像识别方法获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据。
[0017] 通过图像识别方法得到第一轨迹数据和第一转动角度数据,方便快捷,实时性好。
[0018] 可选地,步骤A2包括:
[0019] 根据示范人员的腕关节的运动时间把所述第一轨迹数据分切为多个轨迹子片段数据。
[0020] 可选地,步骤A2包括:
[0021] 根据示范人员的腕关节的轨迹长度把所述第一轨迹数据分切为多个轨迹子片段数据。
[0022] 可选地,骤A2包括:
[0023] 根据示范人员的腕关节的速度变化情况把所述第一轨迹数据分切为多个轨迹子片段数据。
[0024] 优选地,所述运动策略数据集包括与每个所述轨迹子片段数据对应的动作向量序列;所述动作向量序列包括多个动作向量,每个所述动作向量包含所述冗余双臂机器人各关节的动作数据;
[0025] 步骤A4包括:
[0026] 从所述运动策略数据集中,提取各关节的动作数据,分别形成各关节的初始的动作数据序列;
[0027] 采用三次多项式插值方法对各关节的所述初始的动作数据序列进行插值,得到各关节的最终的动作数据序列。
[0028] 第二方面,本申请提供了一种冗余双臂机器人示教装置,用于对冗余双臂机器人进行示教,所述冗余双臂机器人包括基座、通过腰部关节转动设置在所述基座顶部的转台以及两个对称地设置在所述转台两侧的机械臂,所述机械臂为七轴机械臂,包括:
[0029] 第一获取模块,用于获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据、所述冗余双臂机器人的运动约束参数和动力约束参数、以及待处理工件的位姿数据;
[0030] 数据预处理模块,用于把所述第一轨迹数据分切为多个轨迹子片段数据,并根据所述第一转动角度数据提取各所述轨迹子片段数据对应的腰关节角度数据;
[0031] 运动策略生成模块,用于把所述运动约束参数、所述动力约束参数、所述待处理工件的位姿数据、所述多个轨迹子片段数据和对应的所述腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;
[0032] 关节数据获取模块,用于根据所述运动策略数据集获取所述冗余双臂机器人各关节的动作数据序列;所述动作数据序列包括多个动作数据,所述动作数据包括对应关节的转动角度和转动角速度;
[0033] 控制模块,用于根据所述冗余双臂机器人各关节的动作数据序列控制各所述关节运动。
[0034] 该冗余双臂机器人示教装置,通过获取示范人员的示范动作的腕关节的第一轨迹数据和腰关节的第一转动角度数据,并对该第一轨迹数据进行片段分切,结合冗余双臂机器人的运动约束参数和动力约束参数和待处理工件的位姿数据,用分层学习神经网络模型得到运动策略数据集,进而从中提取出各关节的动作数据序列,并用以控制冗余双臂机器人运动,实现了在运动约束和动力约束条件下对示范人员作业过程的模仿,可方便快捷地实现对冗余双臂机器人的示教,使冗余双臂机器人能够快速适应各种复杂的新任务要求。
[0035] 第三方面,本申请提供了一种电子设备,包括处理器和存储器,所述存储器存储有所述处理器可执行的计算机程序,所述处理器执行所述计算机程序时,运行如前文所述冗余双臂机器人示教方法中的步骤。
[0036] 第四方面,本申请提供了一种冗余双臂机器人示教系统,包括冗余双臂机器人、运动数据采集装置和上位机;
[0037] 所述冗余双臂机器人包括基座、通过腰部关节转动设置在所述基座顶部的转台以及两个对称地设置在所述转台两侧的机械臂,所述机械臂为七轴机械臂;
[0038] 所述运动数据采集装置包括多个围绕示范工位设置的立体相机;所述运动数据采集装置用于获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据,以及待处理工件的位姿数据,并上传至所述上位机;
[0039] 所述上位机用于获取所述冗余双臂机器人的运动约束参数和动力约束参数;把所述第一轨迹数据分切为多个轨迹子片段数据,并根据所述第一转动角度数据提取各所述轨迹子片段数据对应的腰关节角度数据;把所述运动约束参数、所述动力约束参数、所述待处理工件的位姿数据、所述多个轨迹子片段数据和对应的所述腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;根据所述运动策略数据集获取所述冗余双臂机器人各关节的动作数据序列;所述动作数据序列包括多个动作数据,所述动作数据包括对应关节的转动角度和转动角速度;根据所述冗余双臂机器人各关节的动作数据序列控制各所述关节运动。
[0040] 该冗余双臂机器人示教系统,通过获取示范人员的示范动作的腕关节的第一轨迹数据和腰关节的第一转动角度数据,并对该第一轨迹数据进行片段分切,结合冗余双臂机器人的运动约束参数和动力约束参数和待处理工件的位姿数据,用分层学习神经网络模型得到运动策略数据集,进而从中提取出各关节的动作数据序列,并用以控制冗余双臂机器人运动,实现了在运动约束和动力约束条件下对示范人员作业过程的模仿,可方便快捷地实现对冗余双臂机器人的示教,使冗余双臂机器人能够快速适应各种复杂的新任务要求。
[0041] 有益效果:
[0042] 本申请提供的冗余双臂机器人示教方法、装置、电子设备及系统,通过获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据、所述冗余双臂机器人的运动约束参数和动力约束参数、以及待处理工件的位姿数据;把所述第一轨迹数据分切为多个轨迹子片段数据,并根据所述第一转动角度数据提取各所述轨迹子片段数据对应的腰关节角度数据;把所述运动约束参数、所述动力约束参数、所述待处理工件的位姿数据、所述多个轨迹子片段数据和对应的所述腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;根据所述运动策略数据集获取所述冗余双臂机器人各关节的动作数据序列;所述动作数据序列包括多个动作数据,所述动作数据包括对应关节的转动角度和转动角速度;根据所述冗余双臂机器人各关节的动作数据序列控制各所述关节运动;从而,可方便快捷地实现对冗余双臂机器人的示教。
[0043] 本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请了解。

附图说明

[0044] 图1为本申请实施例提供的冗余双臂机器人示教方法的流程图。
[0045] 图2为本申请实施例提供的冗余双臂机器人示教装置的结构示意图。
[0046] 图3为本申请实施例提供的电子设备的结构示意图。
[0047] 图4为本申请实施例提供的冗余双臂机器人示教系统的结构示意图。
[0048] 图5为本申请实施例提供的冗余双臂机器人示教系统的俯视状态的半剖视图。
[0049] 图6为本申请实施例提供的冗余双臂机器人的结构示意图。
[0050] 标号说明:1、第一获取模块;2、数据预处理模块;3、运动策略生成模块;4、关节数据获取模块;5、控制模块;301、处理器;302、存储器;303、通信总线;400、冗余双臂机器人;401、基座;402、腰部关节;403、转台;404、立体视觉装置;405、机械臂;406、电动夹爪;407、肩关节;408、肘关节;409、腕关节;410、后臂杆;411、前臂杆;500、运动数据采集装置;501、立体相机;502、遮光板;503、铝合金骨架;600、示范工位。

具体实施方式

[0051] 下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0052] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0053] 请参照图1,图1是本申请一些实施例中的一种冗余双臂机器人示教方法,用于对冗余双臂机器人进行示教,冗余双臂机器人包括基座、通过腰部关节转动设置在基座顶部的转台以及两个对称地设置在转台两侧的机械臂,该机械臂为七轴机械臂,包括步骤:
[0054] A1.获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据、冗余双臂机器人的运动约束参数和动力约束参数、以及待处理工件的位姿数据;
[0055] A2.把第一轨迹数据分切为多个轨迹子片段数据,并根据第一转动角度数据提取各轨迹子片段数据对应的腰关节角度数据;
[0056] A3.把运动约束参数、动力约束参数、待处理工件的位姿数据、多个轨迹子片段数据和对应的腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;
[0057] A4.根据运动策略数据集获取冗余双臂机器人各关节的动作数据序列;动作数据序列包括多个动作数据,动作数据包括对应关节的转动角度和转动角速度;
[0058] A5.根据冗余双臂机器人各关节的动作数据序列控制各关节运动。
[0059] 该冗余双臂机器人示教方法,通过获取示范人员的示范动作的腕关节的第一轨迹数据和腰关节的第一转动角度数据,并对该第一轨迹数据进行片段分切,结合冗余双臂机器人的运动约束参数和动力约束参数和待处理工件的位姿数据,用分层学习神经网络模型得到运动策略数据集,进而从中提取出各关节的动作数据序列,并用以控制冗余双臂机器人运动,实现了在运动约束和动力约束条件下对示范人员作业过程的模仿,可方便快捷地实现对冗余双臂机器人的示教,使冗余双臂机器人能够快速适应各种复杂的新任务要求。
[0060] 其中,该冗余双臂机器人示教方法可用于对图6所示的冗余双臂机器人400进行示教,该冗余双臂机器人400包括基座401、通过腰部关节402转动设置在基座401顶部的转台403、设置在转台403顶部的立体视觉装置404、两个对称地设置在转台403两侧的机械臂
405、以及两个分别设置在两个机械臂405末端的电动夹爪406;机械臂405为七轴机械臂,包括七个关节,其中三个关节组成具有三个自由度的肩关节407,另外的一个关节组成具有一个自由度的肘关节408,剩余的三个关节组成具有三个自由度的腕关节409;其中,肩关节
407与肘关节408之间连接有后臂杆410,肘关节408与腕关节409连接有前臂杆411。该冗余双臂机器人400的腰部关节402可模拟人体的腰部转动,其机械臂405的结构与人体的手臂结构类似,因此能够较好地模仿人的动作,降低无法复现示范人员的动作的几率。
[0061] 优选地,步骤A4之后和步骤A5之前,还包括步骤:
[0062] A6.根据各关节的动作数据序列对冗余双臂机器人进行仿真碰撞检测;
[0063] A7.根据仿真碰撞检测结果,对存在碰撞情况的关节的局部运动进行重规划,以调整对应的动作数据序列。
[0064] 在对冗余双臂机器人运动进行控制前,先通过仿真检测碰撞情况,并在检测到存在碰撞情况时对相关关节的局部运动进行重规划,防止由于分层学习神经网络模型输出的运动策略数据不合理而使得机器人受损。
[0065] 其中,可采用现有的仿真程序进行仿真碰撞检测。其中,仿真碰撞检测的过程包括:
[0066] 加载冗余双臂机器人和冗余双臂机器人周围的障碍物的三维模型;
[0067] 根据冗余双臂机器人各关节和连杆(臂杆)的外形,定义各关节和两杆的包围盒形状(可选用球形、圆柱、正六面体、斜方六面体等形状包围盒)和尺寸;
[0068] 按时序依次根据各关节的动作数据改变冗余双臂机器人的三维模型的位姿,并检测任意两个包围盒分别在三维方向上的投影是否均存在重叠部分,若是,则判定存在碰撞情况,否则,判定不存在碰撞情况。
[0069] 其中,投影存在重叠部分的两个包围盒中,若包括关节的包围盒,则该包围盒所属的关节为存在碰撞情况的关节,若包括连杆的包围盒,则该包围盒所属的连杆的驱动关节为存在碰撞情况的关节。
[0070] 其中,可采用现有的局部避障路径规划方法对关节的局部运动进行重规划,此处不对具体的规划方法进行限定。若不存在碰撞情况,则无需进行重规划。
[0071] 在一些实施方式中,步骤A1包括:
[0072] 通过图像识别方法获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据。
[0073] 通过图像识别方法得到第一轨迹数据和第一转动角度数据,方便快捷,实时性好。
[0074] 其中腕关节的第一轨迹数据,包括腕关节的在多个采集时刻的位置和速度。腰关节的第一转动角度数据,包括腰关节在多个采集时刻的转动角度数据。
[0075] 例如,可通过kinect SDK算法提取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据。通过kinect SDK算法提取示范人员在进行动作示范时的腕关节的第一轨迹数据腰关节的第一转动角度数据的过程为现有技术,此处不对其进行详述。
[0076] 由于直接提取得到的第一轨迹数据和第一转动角度数据一般包含噪声和抖动,因此,步骤A1还可包括:
[0077] 对获取的第一轨迹数据和第一转动角度数据进行滤波处理(如卡尔曼滤波处理,但不限于此),以消除噪声和抖动。
[0078] 通过滤波处理,可提高第一轨迹数据的可靠性。
[0079] 在一些优选实施方式中,可采用图4中的运动数据采集装置500进行第一轨迹数据和第一转动角度数据的采集,该运动数据采集装置500包括多个围绕示范工位600(即示范人员在进行示范操作时所处的工位)设置的立体相机501。这些立体相机501预先进行了同步处理和外参标定,工作时,同时拍摄示范人员的视频数据,最后综合各立体相机501的视频数据获取第一轨迹数据和第一转动角度数据。从而,通过图像识别方法获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据的步骤包括:
[0080] 通过图像识别方法,分别从各立体相机采集的视频数据中提取对应的初始第一轨迹数据(即腕关节的初始轨迹数据)和初始第一转动角度数据(即腰关节的初始转动角度数据);
[0081] 根据各立体相机之间的外参标定矩阵对各初始第一轨迹数据和各初始第一转动角度数据进行融合,得到最终的第一轨迹数据和最终的第一转动角度数据。
[0082] 其中,在进行融合时,先根据各立体相机之间的外参标定矩阵把各初始第一轨迹数据和初始第一转动角度数据转换为参考相机坐标系(参考相机坐标系为其中一个立体相机501的相机坐标系,一般地,由于位于示范工位正上方的立体相机501具有良好的视野,因此会把该立体相机501选为参考相机,其相机坐标系为参考相机坐标系,但不限于此)下的数据,然后,针对同一腕关节点(示范人员的腕关节有两个,对应的第一轨迹数据有两个),计算该腕关节点在同一时刻的所有初始第一轨迹数据(指包含该腕关节点的位置数据信息的初始第一轨迹数据)中的位置数据的平均值或加权平均值,作为该关节点在该时刻的位置数据;计算腰关节在同一时刻的所有初始第一转动角度数据的平均值或加权平均值,作为腰关节在该时刻的转动角度数据。
[0083] 其中,运动约束参数主要包括冗余双臂机器人各关节的转动角度范围和最大转动角速度,还包括冗余双臂机器人的机械臂的可达空间;动力约束参数主要包括冗余双臂机器人各关节的最大输出力矩;但不限于此。这些运动约束参数和动力约束参数与冗余双臂机器人的结构和性能有关,可实事先测得。
[0084] 在一些优选实施方式中,在获取冗余双臂机器人的运动约束参数和动力约束参数后,可先对这些约束参数进行归一化处理,例如通过以下公式进行归一化处理:
[0085] ;
[0086] 其中, 为归一化处理后的约束参数矢量, 为归一化处理前的约束参数矢量,为各关节约束参数最小值组成的矢量, 为各关节约束参数最大值组成的矢量。
[0087] 数据归一化处理是将约束参数矢量数据按比例缩放,使其元素均落入一个小的特定区间。一般地,可将数据统一映射到[0,1]区间上,去除了不同类型参数的数据单位量纲限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。系统的输入特征矢量元素被映射到[0,1]区间上,缩小相同类别特征值域范围,便于样本比较和加权计算,有利于提高训练收敛速度。
[0088] 其中,待处理工件是指示范人员进行动作示范时进行处理的工件。在一些实施方式中,可通过图4中的运动数据采集装置500获取待处理工件的位姿数据。
[0089] 由于直接获取得到的位姿数据一般包含噪声和抖动,因此,步骤A1之后还可包括:
[0090] 对获取的待处理工件的位姿数据进行滤波处理(如卡尔曼滤波处理,但不限于此),以消除噪声和抖动。
[0091] 其中,把第一轨迹数据分切为多个轨迹子片段数据,是为了使各轨迹子片段足够短,从而每个轨迹子片段的运动状态可用一个或有限的几个状态特征来表征,以便于分层学习神经网络模型进行处理。轨迹子片段数据的具体分切方式可根据实际需要设置。
[0092] 例如,在一些实施方式中,步骤A2包括:
[0093] 根据示范人员的腕关节的运动时间把第一轨迹数据分切为多个轨迹子片段数据。
[0094] 具体地,可把第一轨迹数据按对应关节点的运动总时间平分为P(P为预设的正整数,可根据实际需要设置)个轨迹子片段数据,使每个轨迹子片段数据的时间长度相等。
[0095] 或者,先通过以下公式计算第一分切份数,然后根据该第一分切份数,按对应关节点的运动总时间把第一轨迹数据进行平分;
[0096] , 为第一分切份数, 为关节点的运动总时间,为预设的时长阈值(可根据实际需要设置), 为向下取整函数;
[0097] 平分后每个轨迹子片段数据的时间长度为 ,从而可使每个轨迹子片段数据的时间长度不超过 ,以保证在各个轨迹子片段中,关节的运动状态变化较小,从而保证每个轨迹子片段的运动状态可用一个或有限的几个状态特征来表征。
[0098] 又例如,在一些实施方式中,步骤A2包括:
[0099] 根据示范人员的腕关节的轨迹长度把第一轨迹数据分切为多个轨迹子片段数据。
[0100] 具体地,可把第一轨迹数据按对应关节点的运动轨迹总长度平分为Q(Q为预设的正整数,可根据实际需要设置)个轨迹子片段数据,使每个轨迹子片段数据的轨迹长度相等。
[0101] 或者,先通过以下公式计算第二分切份数,然后根据该第二分切份数,按对应关节点的运动轨迹总长度把第一轨迹数据进行平分;
[0102] , 为第二分切份数, 为关节点的运动轨迹总长度, 为预设的长度阈值(可根据实际需要设置), 为向下取整函数;
[0103] 平分后每个轨迹子片段数据的轨迹长度为 ,从而可使每个轨迹子片段数据的轨迹长度不超过 ,以保证在各个轨迹子片段中,关节的运动状态变化较小,从而保证每个轨迹子片段的运动状态可用一个或有限的几个状态特征来表征。
[0104] 或例如,在一些实施方式中,步骤A2包括:
[0105] 根据示范人员的腕关节的速度变化情况把第一轨迹数据分切为多个轨迹子片段数据。
[0106] 具体地,以第一轨迹数据对应的轨迹的起始点作为第一个轨迹子片段的起始点,搜索离该起始点最接近且与该起始点的速度偏差(为绝对值)等于预设偏差阈值(可根据实际需要设置)的轨迹点为第一个轨迹子片段的终点,以该起始点和该终点之间的第一轨迹数据段为第一个轨迹子片段数据;然后依次以上一个轨迹子片段的终点为下一个轨迹子片段的起始点,搜索离该起始点最接近且与该起始点的速度偏差(为绝对值)等于预设偏差阈值的轨迹点为该下一个轨迹子片段的终点,若搜索不到该终点,则以第一轨迹数据对应的轨迹的终点为该下一个轨迹子片段的终点(并结束搜索),以该起始点和该终点之间的第一轨迹数据段为下一个轨迹子片段数据。其中,若某一个轨迹子片段数据的轨迹长度或时间长度过大(即大于预设的轨迹长度阈值或时间长度阈值),则按轨迹长度或时间长度把该轨迹子片段数据平分。
[0107] 在一些优选实施方式中,为了简化轨迹子片段数据,以便于分层学习神经网络模型进行处理,步骤A2还包括:
[0108] 保留各个轨迹子片段数据中的状态特征点的运动状态数据,并删除其它轨迹点的运动状态数据。
[0109] 例如,状态特征点包括对应的轨迹子片段的起始点、中间点(时间中点或轨迹中点)和终点,运动状态数据包括位置数据、速度数据和加速度数据。实际上,状态特征点不限于此,例如也可以仅包括起始点、中间点、终点中的一部分,或者包括更多轨迹点。
[0110] 在本实施例中,根据第一转动角度数据提取各轨迹子片段数据对应的腰关节角度数据的步骤包括:
[0111] 在第一转动角度数据中提取与轨迹子片段数据的状态特征点在时间上对应的腰关节的转动角度数据,得到与该轨迹子片段数据对应的腰关节角度数据。
[0112] 例如,某个轨迹子片段数据的状态特征点包括对应的轨迹子片段的起始点、中间点(时间中点或轨迹中点)和终点,起始点的时间为Time1,中间点的时间为Time2,终点的时间为Time3,则从第一转动角度数据中提取腰关节在Time1、Time2和Time3时刻的腰关节的转动角度数据,得到与该轨迹子片段数据对应的腰关节角度数据。
[0113] 在本实施例中,运动策略数据集包括与每个轨迹子片段数据对应的动作向量序列;动作向量序列包括多个动作向量,每个动作向量包含冗余双臂机器人各关节的动作数据;
[0114] 步骤A4包括:
[0115] 从运动策略数据集中,提取各关节的动作数据,分别形成各关节的初始的动作数据序列;
[0116] 采用三次多项式插值方法对各关节的初始的动作数据序列进行插值,得到各关节的最终的动作数据序列。
[0117] 其中,采用三次多项式插值方法对各关节的初始的动作数据序列进行插值,得到各关节的最终的动作数据序列的步骤包括:
[0118] 分别以初始的动作数据序列中相邻的两个动作数据为插值起始动作数据和插值终点动作数据;
[0119] 根据该插值起始动作数据和插值终点动作数据之间的时间间隔确定插入该插值起始动作数据和插值终点动作数据之间的新增动作数据的数量,和各新增动作数据与插值起始动作数据之间的时间间隔(例如把插值起始动作数据和插值终点动作数据之间的时间间隔均分为多段,划分的段数可根据实际需要设置,并在每个分段的时间节点处插入一个新增动作数据,从而确定新增动作数据的数量和各新增动作数据与插值起始动作数据之间的时间间隔);
[0120] 采用以下公式计算各新增动作数据:
[0121] ;
[0122] ;
[0123] ;
[0124] 其中, 为第 个新增动作数据, 为插值起始动作数据对应的时间, 为插值终点动作数据对应的时间, 为第 个新增动作数据与插值起始动作数据之间的时间间隔, 、 分别为第 个新增动作数据的转动角度和
转动角速度, 、 、 、 为插值系数, 、 分别为插值终点动作数据的转
动角度和转动角速度, 、 分别为插值起点动作数据的转动角度和转动角速度。
其中,对于任一关节均可采用以上公式进行新增动作数据的计算,从而 为
对应关节的新增动作数据;
[0125] 在该插值起始动作数据和插值终点动作数据之间插入计算得到的新增动作数据。
[0126] 对于一个初始的动作数据序列,根据上述步骤遍历各相邻的两个动作数据,从而得到最终的动作数据序列。
[0127] 通过插值处理,可使各关节在转动时不产生速度和加速度的突变,使运动过程更加平滑,降低工作过程中产生的振动。
[0128] 在本实施例中,根据输入的轨迹子片段数据,该分层学习神经网络模型通过以下模型对机械臂末端的运动轨迹进行编码和离散:
[0129]    (1);
[0130] (2);
[0131] ,     (3);
[0132] 其中, 为大于0的预设常数, 为输入的轨迹子片段数据的轨迹子片段时长(等于轨迹子片段数据的最后一个数据和第一个数据之间的时间间隔), 为相位变量,公式(1)用于把时间信号转换成相位信号;
[0133] 其中, 、 、 分别为机械臂(左机械臂或右机械臂,对于两个机械臂均适用上述模型)末端在t时刻的位置、速度和加速度, 为腰关节在t时刻的转动角度, 为预设的机器人刚度矩阵, 为预设的机器人阻尼矩阵, 为关节转动
调整项, 为机械臂末端的目标状态(目标状态包括目标位置和目标速度,为了保证机械臂末端运动的连续性,该目标状态取相邻的下一个轨迹子片段数据的起始点的状态,即目标位置和目标速度分别为相邻的下一个轨迹子片段数据的起始点的位置和速度), 为腰关节的期望姿态(期望姿态包括目标转动角度数据,为保证机器人腰关节转动的连续性,该期望姿态取相邻的下一个轨迹子片段数据的起始点对应的腰关节角度数据);
[0134] 其中, , 为 的第 个关节转动分量,  为 的分量的个数(等于两个机械臂的关节以及腰关节的关节数量总
和,对于机械臂为七轴机械臂的情况, 等于15;第 个关节转动分量对应的是这些关节中的第 个关节的关节转动分量), 为第 个基函数, 、 均为 对应的预设
常数,且 , , 为 的第 个基函数的权重系数, 为拟合
所需的基函数的个数, 为 的第 个分量, 为 的第
个分量, 为 的第 个分量, 为 的第 个分量。
[0135] 该分层学习神经网络模型针对输入的每个轨迹子片段数据,会输出对应的运动策略数据,多个运动策略数据的集合即为运动策略数据集。其中,每个运动策略数据包括多个策略元组 , 为机器人在t时刻的状态量向量, 为机器人在t时刻的动作向量(对应同一个轨迹子片段数据的各动作向量组成的序列即为动作向量序列), 为第 个轨迹子片段数据对应的策略参数矩阵。
[0136] 其中,
[0137] ;
[0138] ;
[0139] ;
[0140] 为 的第一分量, 为 的第二分量, 、 、 分别为与 个轨迹子片段数据对应的第机器人左机械臂末端在t时刻的位置、速度和加速度, 、 、分别为与 个轨迹子片段数据对应的第机器人右机械臂末端在t时刻的位置、速度和加速度, 为与 个轨迹子片段数据对应的机器人腰关节在t时刻的动作数据,
为与 个轨迹子片段数据对应的机器人左机械臂各关节在t时刻的动
作数据, 为与 个轨迹子片段数据对应的机器人右机械臂各关节在t
时刻的动作数据。
[0141] 其中,
[0142] 。
[0143] 其中,
[0144] ;
[0145] 为 的分量的个数。
[0146] 该分层学习神经网络模型包括策略记忆库,该策略记忆库用于存储训练过程中产生的策略元组。
[0147] 该分层学习神经网络模型通过以下步骤训练得到:
[0148] S1. 网络参数及训练样本初始化。
[0149] 获取示范人员在进行动作示范时的腕关节的第二轨迹数据(为了与实际使用时采集的第一轨迹数据做区分,把此时的腕关节的轨迹数据称为第二轨迹数据)和腰关节的第二转动角度数据(为了与实际使用时采集的第一转动角度数据做区分,把此时的腰关节的转动角度数据称为第二转动角度数据),并把第二轨迹数据分切为多个轨迹子片段样本数据,并根据第二转动角度数据提取各轨迹子片段样本数据对应的腰关节角度样本数据(具体过程参考前文的步骤A2)。
[0150] 初始化策略记忆库。
[0151] 使用随机策略参数矩阵 ,初始化回报值函数 ,其中,回报值函数由关节转动调整项的各个转动关节分量定义,即 ,
为机器人的状态量向量, 为 的第 个分量, 为机器人的动作向量, 为 的第 个分量, 为高维的策略参数矩阵, 为 的第 个列向量(即 中对应第 个关节运动的
列数据组成的向量); 为 的第 个分量(即第 个关节运动的
回报值函数分量),其中,
[0152] ,即
[0153] (后续通过训练使回报值函数最大化,实际是使每个关节对应的 最小化,使得 最大化)。
[0154] 初始化冗余双臂机器人的运动约束参数和动力约束参数。
[0155] S2. 迭代训练神经网络参数。
[0156] 根据各轨迹子片段样本数据的时间顺序,依次针对各个轨迹子片段样本数据,执行以下操作:
[0157] 1)初始化机器人的状态量向量;如果当前的轨迹子片段样本数据是首个轨迹子片段样本数据,则把机器人的状态量向量初始化为该轨迹子片段样本数据的起始点的示范人员腕关节的状态量向量(即,初始化后的机器人的左机械臂末端的位置、速度和加速度等于该轨迹子片段样本数据的起始点处的示范人员左腕关节的位置、速度和加速度,初始化后的机器人的右机械臂末端的位置、速度和加速度等于该轨迹子片段样本数据的起始点处的示范人员右腕关节的位置、速度和加速度,其中,示范人员腕关节的加速度可以通过对速度进行求导得到);如果当前的轨迹子片段样本数据不是首个轨迹子片段样本数据,则把机器人的状态量向量初始化为上一个轨迹子片段样本数据训练结束时的机器人的实际状态量向量。
[0158] 2)设定学习步长 ,该学习步长 为从轨迹子片段样本数据的起始点到终点,机械臂单次学习运动步长的最大值。该学习步长 可根据实际需要设置,或者通过以下公式计算得到:
[0159] ;
[0160] 为第 个轨迹子片段样本数据(即当前的轨迹子片段样本数据)对应的轨迹片段的长度, 为预设的比例系数(可根据实际需要设置)。
[0161] 3)由迭代数iteration=1时刻开始训练,通过对当前状态前馈,预测当前时刻的动作向量 对应的回报值函数。
[0162] 根据步骤S1中初始化得到的冗余双臂机器人的运动约束参数和动力约束参数,对每个关节的转角区间进行均分得到16个角度值,用各关节的这些角度值随机组合出x(x可根据实际需要设置)个动作向量输入至神经网络,分别计算得到对应的回报值函数,选取这些回报值函数的最大值对应的动作向量输入值为相应时刻的动作向量 。通过该方式选取得到各时刻的动作向量 和对应的回报值函数,可大大提升训练稳定性和训练效率。
[0163] 4)计算动作向量 对应的奖励值 。奖励值 可定义为离散化的机器人当前位姿与示教轨迹片段点重合程度的度量,即由机器人的动作向量 和运动学正解算法计算得到的机器人的机械臂末端位姿与示教轨迹片段点的平均偏差回报。
[0164] 5)由当前时刻的动作向量 和当前时刻的策略参数矩阵 所对应的机器人的状态量向量 ,生成策略元组 。
[0165] 6)在该策略元组 满足预设条件时,把该策略元组加入至策略记忆库。其中,预设条件可根据实际需要设置,例如,预设条件为该策略元组与策略记忆库中的至少一个已有的策略元组的相关性(如欧式距离或皮尔逊系数等)达到预设阈值,但不限于此。反之,如果该策略元组 不满足预设条件,则不加入存储
策略记忆库。
[0166] 以当前进行状态前馈,对下一时刻的状态量向量 进行赋值,其中下一时刻的策略参数矩阵由当前 赋初始值,即下一时刻的参数初始值 ,下一时刻的状态量向量 。
[0167] 从步骤3)中组合得到的x个动作向量中随机抽取一个运动矢量作为下一时刻的动作向量 接续训练;当记忆库存储的策略元组数量达到预设数量阈值时,可从策略记忆库中随机抽取一小批batch样本动作向量用于新的策略元组的训练,历史经验都可以被多次用到,用以更新权重,数据利用效率更高。
[0168] 7)根据步骤6)计算得到的下一时刻的动作向量 和下一时刻的状态量向量 ,计算最大化的回报值函数,即 ;计算损失函数, 为损失函数,
为探索系数;使用 探索机制,用系数 来选择是继续探索,还是直接根据经验做出决策,一般地,系统里 是从1逐渐减少到0.1 ,使得训练初期,尽可能多的对下一时刻的状态量向量 探索更大的区域,随后再逐渐偏向于上一时刻的状态量向量 的经验。训练初期通过广泛试错找准一个方向,然后沿着该方向一路试探下去直到达到奖励值最大和运动策略最优。
[0169] 8)通过神经网络反向传播使用梯度下降的方法来更新策略参数矩阵 。
[0170] S3.针对多个不同的动作示范过程重复上述步骤S1和S2。
[0171] 步骤A3之后,还包括步骤:在得到的运动策略数据集的策略元组满足预设条件时,把对应的策略元组加入至策略记忆库。
[0172] 需要说明的是,策略记忆库中还记录有各策略元组对应的输入数据(轨迹子片段数据或轨迹子片段样本数据、对应的腰关节角度数据或腰关节角度样本数据、运动约束参数和动力约束参数、以及待处理工件的位姿数据)。
[0173] 该冗余双臂机器人示教方法还包括步骤:对分层学习神经网络模型进行强化训练。具体地,从策略记忆库中随机抽取若干样本(输入数据)进行训练,训练过程参考前文,而且在训练时用样本对应的策略元组进行初始化。由于从策略记忆库中随机抽取样本进行强化学习,打乱数据相关性,避免受样本分布的影响,且用样本对应的策略元组进行初始化,可提高训练效率。
[0174] 由上可知,该冗余双臂机器人示教方法,通过获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据、冗余双臂机器人的运动约束参数和动力约束参数、以及待处理工件的位姿数据;把第一轨迹数据分切为多个轨迹子片段数据,并根据第一转动角度数据提取各轨迹子片段数据对应的腰关节角度数据;把运动约束参数、动力约束参数、待处理工件的位姿数据、多个轨迹子片段数据和对应的腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;根据运动策略数据集获取冗余双臂机器人各关节的动作数据序列;动作数据序列包括多个动作数据,动作数据包括对应关节的转动角度和转动角速度;根据冗余双臂机器人各关节的动作数据序列控制各关节运动;从而,可方便快捷地实现对冗余双臂机器人的示教。而且在模型在计算时不仅考虑了示范人员腕关节轨迹的位姿信息,还综合考虑了手臂各关节和部的转动姿态信息,并将机器人的运动学和动力学参数当做约束条件,作为输入参数,使机械臂的运动满足关节转角范围、机械臂可达空间、关节最大转动角速度和关节最大输出力矩等约束条件,使得机械臂动作和轨迹在原有示范者的演示基础上,泛化为机器人所能适用的双臂协同运动,在提高机器人作业的环境适应能力同时,避免了机械臂在运动时的奇异构型和相互碰撞。
[0175] 请参考图2,本申请提供了一种冗余双臂机器人示教装置,用于对冗余双臂机器人进行示教,冗余双臂机器人包括基座、通过腰部关节转动设置在基座顶部的转台以及两个对称地设置在转台两侧的机械臂,该机械臂为七轴机械臂,包括:
[0176] 第一获取模块1,用于获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据、冗余双臂机器人的运动约束参数和动力约束参数、以及待处理工件的位姿数据;
[0177] 数据预处理模块2,用于把第一轨迹数据分切为多个轨迹子片段数据,并根据第一转动角度数据提取各轨迹子片段数据对应的腰关节角度数据;
[0178] 运动策略生成模块3,用于把运动约束参数、动力约束参数、待处理工件的位姿数据、多个轨迹子片段数据和对应的腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;
[0179] 关节数据获取模块4,用于根据运动策略数据集获取冗余双臂机器人各关节的动作数据序列;动作数据序列包括多个动作数据,动作数据包括对应关节的转动角度和转动角速度;
[0180] 控制模块5,用于根据冗余双臂机器人各关节的动作数据序列控制各关节运动。
[0181] 该冗余双臂机器人示教装置,通过获取示范人员的示范动作的腕关节的第一轨迹数据和腰关节的第一转动角度数据,并对该第一轨迹数据进行片段分切,结合冗余双臂机器人的运动约束参数和动力约束参数和待处理工件的位姿数据,用分层学习神经网络模型得到运动策略数据集,进而从中提取出各关节的动作数据序列,并用以控制冗余双臂机器人运动,实现了在运动约束和动力约束条件下对示范人员作业过程的模仿,可方便快捷地实现对冗余双臂机器人的示教,使冗余双臂机器人能够快速适应各种复杂的新任务要求。
[0182] 其中,该冗余双臂机器人示教装置可用于对图6所示的冗余双臂机器人400进行示教,该冗余双臂机器人400包括基座401、通过腰部关节402转动设置在基座401顶部的转台403、设置在转台403顶部的立体视觉装置404、两个对称地设置在转台403两侧的机械臂
405、以及两个分别设置在两个机械臂405末端的电动夹爪406;机械臂405为七轴机械臂,包括七个关节,其中三个关节组成具有三个自由度的肩关节407,另外的一个关节组成具有一个自由度的肘关节408,剩余的三个关节组成具有三个自由度的腕关节409;其中,肩关节
407与肘关节408之间连接有后臂杆410,肘关节408与腕关节409连接有前臂杆411。该冗余双臂机器人400的腰部关节402可模拟人体的腰部转动,其机械臂405的结构与人体的手臂结构类似,因此能够较好地模仿人的动作,降低无法复现示范人员的动作的几率。
[0183] 优选地,该冗余双臂机器人示教装置还包括:
[0184] 碰撞检测模块,用于根据各关节的动作数据序列对冗余双臂机器人进行仿真碰撞检测;
[0185] 运动调整模块,用于根据仿真碰撞检测结果,对存在碰撞情况的关节的局部运动进行重规划,以调整对应的动作数据序列。
[0186] 在对冗余双臂机器人运动进行控制前,先通过仿真检测碰撞情况,并在检测到存在碰撞情况时对相关关节的局部运动进行重规划,防止由于分层学习神经网络模型输出的运动策略数据不合理而使得机器人受损。
[0187] 其中,可采用现有的仿真程序进行仿真碰撞检测。其中,仿真碰撞检测的过程包括:
[0188] 加载冗余双臂机器人和冗余双臂机器人周围的障碍物的三维模型;
[0189] 根据冗余双臂机器人各关节和连杆(臂杆)的外形,定义各关节和两杆的包围盒形状(可选用球形、圆柱、正六面体、斜方六面体等形状包围盒)和尺寸;
[0190] 按时序依次根据各关节的动作数据改变冗余双臂机器人的三维模型的位姿,并检测任意两个包围盒分别在三维方向上的投影是否均存在重叠部分,若是,则判定存在碰撞情况,否则,判定不存在碰撞情况。
[0191] 其中,投影存在重叠部分的两个包围盒中,若包括关节的包围盒,则该包围盒所属的关节为存在碰撞情况的关节,若包括连杆的包围盒,则该包围盒所属的连杆的驱动关节为存在碰撞情况的关节。
[0192] 其中,可采用现有的局部避障路径规划方法对关节的局部运动进行重规划,此处不对具体的规划方法进行限定。若不存在碰撞情况,则无需进行重规划。
[0193] 在一些实施方式中,第一获取模块1用于在获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据的时候,执行:
[0194] 通过图像识别方法获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据。
[0195] 通过图像识别方法得到第一轨迹数据和第一转动角度数据,方便快捷,实时性好。
[0196] 其中腕关节的第一轨迹数据,包括腕关节的在多个采集时刻的位置和速度。腰关节的第一转动角度数据,包括腰关节在多个采集时刻的转动角度数据。
[0197] 例如,可通过kinect SDK算法提取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据。通过kinect SDK算法提取示范人员在进行动作示范时的腕关节的第一轨迹数据腰关节的第一转动角度数据的过程为现有技术,此处不对其进行详述。
[0198] 由于直接提取得到的第一轨迹数据和第一转动角度数据一般包含噪声和抖动,因此,第一获取模块1用于在获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据的时候,还执行:
[0199] 对获取的第一轨迹数据和第一转动角度数据进行滤波处理(如卡尔曼滤波处理,但不限于此),以消除噪声和抖动。
[0200] 通过滤波处理,可提高第一轨迹数据的可靠性。
[0201] 在一些优选实施方式中,可采用图4中的运动数据采集装置500进行第一轨迹数据和第一转动角度数据的采集,该运动数据采集装置500包括多个围绕示范工位600(即示范人员在进行示范操作时所处的工位)设置的立体相机501。这些立体相机501预先进行了同步处理和外参标定,工作时,同时拍摄示范人员的视频数据,最后综合各立体相机501的视频数据获取第一轨迹数据和第一转动角度数据。从而,通过图像识别方法获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据,具体包括:
[0202] 通过图像识别方法,分别从各立体相机采集的视频数据中提取对应的初始第一轨迹数据(即腕关节的初始轨迹数据)和初始第一转动角度数据(即腰关节的初始转动角度数据);
[0203] 根据各立体相机之间的外参标定矩阵对各初始第一轨迹数据和各初始第一转动角度数据进行融合,得到最终的第一轨迹数据和最终的第一转动角度数据。
[0204] 其中,在进行融合时,先根据各立体相机之间的外参标定矩阵把各初始第一轨迹数据和初始第一转动角度数据转换为参考相机坐标系(参考相机坐标系为其中一个立体相机501的相机坐标系,一般地,由于位于示范工位正上方的立体相机501具有良好的视野,因此会把该立体相机501选为参考相机,其相机坐标系为参考相机坐标系,但不限于此)下的数据,然后,针对同一腕关节点(示范人员的腕关节有两个,对应的第一轨迹数据有两个),计算该腕关节点在同一时刻的所有初始第一轨迹数据(指包含该腕关节点的位置数据信息的初始第一轨迹数据)中的位置数据的平均值或加权平均值,作为该关节点在该时刻的位置数据;计算腰关节在同一时刻的所有初始第一转动角度数据的平均值或加权平均值,作为腰关节在该时刻的转动角度数据。
[0205] 其中,运动约束参数主要包括冗余双臂机器人各关节的转动角度范围和最大转动角速度,还包括冗余双臂机器人的机械臂的可达空间;动力约束参数主要包括冗余双臂机器人各关节的最大输出力矩;但不限于此。这些运动约束参数和动力约束参数与冗余双臂机器人的结构和性能有关,可实事先测得。
[0206] 在一些优选实施方式中,在获取冗余双臂机器人的运动约束参数和动力约束参数后,可先对这些约束参数进行归一化处理,例如通过以下公式进行归一化处理:
[0207] ;
[0208] 其中, 为归一化处理后的约束参数矢量, 为归一化处理前的约束参数矢量,为各关节约束参数最小值组成的矢量, 为各关节约束参数最大值组成的矢量。
[0209] 数据归一化处理是将约束参数矢量数据按比例缩放,使其元素均落入一个小的特定区间。一般地,可将数据统一映射到[0,1]区间上,去除了不同类型参数的数据单位量纲限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。系统的输入特征矢量元素被映射到[0,1]区间上,缩小相同类别特征值域范围,便于样本比较和加权计算,有利于提高训练收敛速度。
[0210] 其中,待处理工件是指示范人员进行动作示范时进行处理的工件。在一些实施方式中,可通过图4中的运动数据采集装置500获取待处理工件的位姿数据。
[0211] 由于直接获取得到的位姿数据一般包含噪声和抖动,因此,该冗余双臂机器人示教装置还包括:
[0212] 滤波模块,用于对获取的待处理工件的位姿数据进行滤波处理(如卡尔曼滤波处理,但不限于此),以消除噪声和抖动。
[0213] 其中,把第一轨迹数据分切为多个轨迹子片段数据,是为了使各轨迹子片段足够短,从而每个轨迹子片段的运动状态可用一个或有限的几个状态特征来表征,以便于分层学习神经网络模型进行处理。轨迹子片段数据的具体分切方式可根据实际需要设置。
[0214] 例如,在一些实施方式中,数据预处理模块2在把第一轨迹数据分切为多个轨迹子片段数据的时候,执行:
[0215] 根据示范人员的腕关节的运动时间把第一轨迹数据分切为多个轨迹子片段数据。
[0216] 具体地,可把第一轨迹数据按对应关节点的运动总时间平分为P(P为预设的正整数,可根据实际需要设置)个轨迹子片段数据,使每个轨迹子片段数据的时间长度相等。
[0217] 或者,先通过以下公式计算第一分切份数,然后根据该第一分切份数,按对应关节点的运动总时间把第一轨迹数据进行平分;
[0218] , 为第一分切份数, 为关节点的运动总时间,为预设的时长阈值(可根据实际需要设置), 为向下取整函数;
[0219] 平分后每个轨迹子片段数据的时间长度为 ,从而可使每个轨迹子片段数据的时间长度不超过 ,以保证在各个轨迹子片段中,关节的运动状态变化较小,从而保证每个轨迹子片段的运动状态可用一个或有限的几个状态特征来表征。
[0220] 又例如,在一些实施方式中,数据预处理模块2在把第一轨迹数据分切为多个轨迹子片段数据的时候,执行:
[0221] 根据示范人员的腕关节的轨迹长度把第一轨迹数据分切为多个轨迹子片段数据。
[0222] 具体地,可把第一轨迹数据按对应关节点的运动轨迹总长度平分为Q(Q为预设的正整数,可根据实际需要设置)个轨迹子片段数据,使每个轨迹子片段数据的轨迹长度相等。
[0223] 或者,先通过以下公式计算第二分切份数,然后根据该第二分切份数,按对应关节点的运动轨迹总长度把第一轨迹数据进行平分;
[0224] , 为第二分切份数, 为关节点的运动轨迹总长度, 为预设的长度阈值(可根据实际需要设置), 为向下取整函数;
[0225] 平分后每个轨迹子片段数据的轨迹长度为 ,从而可使每个轨迹子片段数据的轨迹长度不超过 ,以保证在各个轨迹子片段中,关节的运动状态变化较小,从而保证每个轨迹子片段的运动状态可用一个或有限的几个状态特征来表征。
[0226] 或例如,在一些实施方式中,数据预处理模块2在把第一轨迹数据分切为多个轨迹子片段数据的时候,执行:
[0227] 根据示范人员的腕关节的速度变化情况把第一轨迹数据分切为多个轨迹子片段数据。
[0228] 具体地,以第一轨迹数据对应的轨迹的起始点第一个轨迹子片段的起始点,搜索离该起始点最接近且与该起始点的速度偏差(为绝对值)等于预设偏差阈值(可根据实际需要设置)的轨迹点为第一个轨迹子片段的终点,以该起始点和该终点之间的第一轨迹数据段为第一个轨迹子片段数据;然后依次以上一个轨迹子片段的终点为下一个轨迹子片段的起始点,搜索离该起始点最接近且与该起始点的速度偏差(为绝对值)等于预设偏差阈值的轨迹点为该下一个轨迹子片段的终点,若搜索不到该终点,则以第一轨迹数据对应的轨迹的终点为该下一个轨迹子片段的终点(并结束搜索),以该起始点和该终点之间的第一轨迹数据段为下一个轨迹子片段数据。其中,若某一个轨迹子片段数据的轨迹长度或时间长度过大(即大于预设的轨迹长度阈值或时间长度阈值),则按轨迹长度或时间长度把该轨迹子片段数据平分。
[0229] 在一些优选实施方式中,为了简化轨迹子片段数据,以便于分层学习神经网络模型进行处理,数据预处理模块2在把第一轨迹数据分切为多个轨迹子片段数据的时候,还执行:
[0230] 保留各个轨迹子片段数据中的状态特征点的运动状态数据,并删除其它轨迹点的运动状态数据。
[0231] 例如,状态特征点包括对应的轨迹子片段的起始点、中间点(时间中点或轨迹中点)和终点,运动状态数据包括位置数据、速度数据和加速度数据。实际上,状态特征点不限于此,例如也可以仅包括起始点、中间点、终点中的一部分,或者包括更多轨迹点。
[0232] 在本实施例中,数据预处理模块2在根据第一转动角度数据提取各轨迹子片段数据对应的腰关节角度数据的时候,执行:
[0233] 在第一转动角度数据中提取与轨迹子片段数据的状态特征点在时间上对应的腰关节的转动角度数据,得到与该轨迹子片段数据对应的腰关节角度数据。
[0234] 例如,某个轨迹子片段数据的状态特征点包括对应的轨迹子片段的起始点、中间点(时间中点或轨迹中点)和终点,起始点的时间为Time1,中间点的时间为Time2,终点的时间为Time3,则从第一转动角度数据中提取腰关节在Time1、Time2和Time3时刻的腰关节的转动角度数据,得到与该轨迹子片段数据对应的腰关节角度数据。
[0235] 在本实施例中,运动策略数据集包括与每个轨迹子片段数据对应的动作向量序列;动作向量序列包括多个动作向量,每个动作向量包含冗余双臂机器人各关节的动作数据;
[0236] 关节数据获取模块4用于在根据运动策略数据集获取冗余双臂机器人各关节的动作数据序列的时候,执行:
[0237] 从运动策略数据集中,提取各关节的动作数据,分别形成各关节的初始的动作数据序列;
[0238] 采用三次多项式插值方法对各关节的初始的动作数据序列进行插值,得到各关节的最终的动作数据序列。
[0239] 其中,采用三次多项式插值方法对各关节的初始的动作数据序列进行插值,得到各关节的最终的动作数据序列,具体包括:
[0240] 分别以初始的动作数据序列中相邻的两个动作数据为插值起始动作数据和插值终点动作数据;
[0241] 根据该插值起始动作数据和插值终点动作数据之间的时间间隔确定插入该插值起始动作数据和插值终点动作数据之间的新增动作数据的数量,和各新增动作数据与插值起始动作数据之间的时间间隔(例如把插值起始动作数据和插值终点动作数据之间的时间间隔均分为多段,划分的段数可根据实际需要设置,并在每个分段的时间节点处插入一个新增动作数据,从而确定新增动作数据的数量和各新增动作数据与插值起始动作数据之间的时间间隔);
[0242] 采用以下公式计算各新增动作数据:
[0243] ;
[0244] ;
[0245] ;
[0246] 其中, 为第 个新增动作数据, 为插值起始动作数据对应的时间, 为插值终点动作数据对应的时间, 为第 个新增动作数据与插值起始动作数据之间的时间间隔, 、 分别为第 个新增动作数据的转动角度和
转动角速度, 、 、 、 为插值系数, 、 分别为插值终点动作数据的转
动角度和转动角速度, 、 分别为插值起点动作数据的转动角度和转动角速度。
其中,对于任一关节均可采用以上公式进行新增动作数据的计算,从而 为
对应关节的新增动作数据;
[0247] 在该插值起始动作数据和插值终点动作数据之间插入计算得到的新增动作数据。
[0248] 对于一个初始的动作数据序列,根据上述步骤遍历各相邻的两个动作数据,从而得到最终的动作数据序列。
[0249] 通过插值处理,可使各关节在转动时不产生速度和加速度的突变,使运动过程更加平滑,降低工作过程中产生的振动。
[0250] 在本实施例中,根据输入的轨迹子片段数据,该分层学习神经网络模型通过以下模型对机械臂末端的运动轨迹进行编码和离散:
[0251]    (1);
[0252] (2);
[0253] ,     (3);
[0254] 其中, 为大于0的预设常数, 为输入的轨迹子片段数据的轨迹子片段时长(等于轨迹子片段数据的最后一个数据和第一个数据之间的时间间隔), 为相位变量,公式(1)用于把时间信号转换成相位信号;
[0255] 其中, 、 、 分别为机械臂(左机械臂或右机械臂,对于两个机械臂均适用上述模型)末端在t时刻的位置、速度和加速度, 为腰关节在t时刻的转动角度, 为预设的机器人刚度矩阵, 为预设的机器人阻尼矩阵, 为关节转动
调整项, 为机械臂末端的目标状态(目标状态包括目标位置和目标速度,为了保证机械臂末端运动的连续性,该目标状态取相邻的下一个轨迹子片段数据的起始点的状态,即目标位置和目标速度分别为相邻的下一个轨迹子片段数据的起始点的位置和速度), 为腰关节的期望姿态(期望姿态包括目标转动角度数据,为保证机器人腰关节转动的连续性,该期望姿态取相邻的下一个轨迹子片段数据的起始点对应的腰关节角度数据);
[0256] 其中, , 为 的第 个关节转动分量,  为 的分量的个数(等于两个机械臂的关节以及腰关节的关节数量总
和,对于机械臂为七轴机械臂的情况, 等于15;第 个关节转动分量对应的是这些关节中的第 个关节的关节转动分量), 为第 个基函数, 、 均为 对应的预设
常数,且 , , 为 的第 个基函数的权重系数, 为拟合
所需的基函数的个数, 为 的第 个分量, 为 的第
个分量, 为 的第 个分量, 为 的第 个分量。
[0257] 该分层学习神经网络模型针对输入的每个轨迹子片段数据,会输出对应的运动策略数据,多个运动策略数据的集合即为运动策略数据集。其中,每个运动策略数据包括多个策略元组 , 为机器人在t时刻的状态量向量, 为机器人在t时刻的动作向量(对应同一个轨迹子片段数据的各动作向量组成的序列即为动作向量序列), 为第 个轨迹子片段数据对应的策略参数矩阵。
[0258] 其中,
[0259] ;
[0260] ;
[0261] ;
[0262] 为 的第一分量, 为 的第二分量, 、 、 分别为与 个轨迹子片段数据对应的第机器人左机械臂末端在t时刻的位置、速度和加速度, 、 、分别为与 个轨迹子片段数据对应的第机器人右机械臂末端在t时刻的位置、速度和加速度, 为与 个轨迹子片段数据对应的机器人腰关节在t时刻的动作数据,
为与 个轨迹子片段数据对应的机器人左机械臂各关节在t时刻的动
作数据, 为与 个轨迹子片段数据对应的机器人右机械臂各关节在t
时刻的动作数据。
[0263] 其中,
[0264] 。
[0265] 其中,
[0266] ;
[0267] 为 的分量的个数。
[0268] 该分层学习神经网络模型包括策略记忆库,该策略记忆库用于存储训练过程中产生的策略元组。
[0269] 该分层学习神经网络模型通过以下步骤训练得到:
[0270] S1. 网络参数及训练样本初始化。
[0271] 获取示范人员在进行动作示范时的腕关节的第二轨迹数据(为了与实际使用时采集的第一轨迹数据做区分,把此时的腕关节的轨迹数据称为第二轨迹数据)和腰关节的第二转动角度数据(为了与实际使用时采集的第一转动角度数据做区分,把此时的腰关节的转动角度数据称为第二转动角度数据),并把第二轨迹数据分切为多个轨迹子片段样本数据,并根据第二转动角度数据提取各轨迹子片段样本数据对应的腰关节角度样本数据(具体过程参考前文的步骤A2)。
[0272] 初始化策略记忆库。
[0273] 使用随机策略参数矩阵 ,初始化回报值函数 ,其中,回报值函数由关节转动调整项的各个转动关节分量定义,即 ,
为机器人的状态量向量, 为 的第 个分量, 为机器人的动作向量, 为 的第 个分量, 为高维的策略参数矩阵, 为 的第 个列向量(即 中对应第 个关节运动的
列数据组成的向量); 为 的第 个分量(即第 个关节运动的
回报值函数分量),其中,
[0274] ,即
[0275] (后续通过训练使回报值函数最大化,实际是使每个关节对应的 最小化,使得 最大化)。
[0276] 初始化冗余双臂机器人的运动约束参数和动力约束参数。
[0277] S2. 迭代训练神经网络参数。
[0278] 根据各轨迹子片段样本数据的时间顺序,依次针对各个轨迹子片段样本数据,执行以下操作:
[0279] 1)初始化机器人的状态量向量;如果当前的轨迹子片段样本数据是首个轨迹子片段样本数据,则把机器人的状态量向量初始化为该轨迹子片段样本数据的起始点的示范人员腕关节的状态量向量(即,初始化后的机器人的左机械臂末端的位置、速度和加速度等于该轨迹子片段样本数据的起始点处的示范人员左腕关节的位置、速度和加速度,初始化后的机器人的右机械臂末端的位置、速度和加速度等于该轨迹子片段样本数据的起始点处的示范人员右腕关节的位置、速度和加速度,其中,示范人员腕关节的加速度可以通过对速度进行求导得到);如果当前的轨迹子片段样本数据不是首个轨迹子片段样本数据,则把机器人的状态量向量初始化为上一个轨迹子片段样本数据训练结束时的机器人的实际状态量向量。
[0280] 2)设定学习步长 ,该学习步长 为从轨迹子片段样本数据的起始点到终点,机械臂单次学习运动步长的最大值。该学习步长 可根据实际需要设置,或者通过以下公式计算得到:
[0281] ;
[0282] 为第 个轨迹子片段样本数据(即当前的轨迹子片段样本数据)对应的轨迹片段的长度, 为预设的比例系数(可根据实际需要设置)。
[0283] 3)由迭代数iteration=1时刻开始训练,通过对当前状态前馈,预测当前时刻的动作向量 对应的回报值函数。
[0284] 根据步骤S1中初始化得到的冗余双臂机器人的运动约束参数和动力约束参数,对每个关节的转角区间进行均分得到16个角度值,用各关节的这些角度值随机组合出x(x可根据实际需要设置)个动作向量输入至神经网络,分别计算得到对应的回报值函数,选取这些回报值函数的最大值对应的动作向量输入值为相应时刻的动作向量 。通过该方式选取得到各时刻的动作向量 和对应的回报值函数,可大大提升训练稳定性和训练效率。
[0285] 4)计算动作向量 对应的奖励值 。奖励值 可定义为离散化的机器人当前位姿与示教轨迹片段点重合程度的度量,即由机器人的动作向量 和运动学正解算法计算得到的机器人的机械臂末端位姿与示教轨迹片段点的平均偏差回报。
[0286] 5)由当前时刻的动作向量 和当前时刻的策略参数矩阵 所对应的机器人的状态量向量 ,生成策略元组 。
[0287] 6)在该策略元组 满足预设条件时,把该策略元组加入至策略记忆库。其中,预设条件可根据实际需要设置,例如,预设条件为该策略元组与策略记忆库中的至少一个已有的策略元组的相关性(如欧式距离或皮尔逊系数等)达到预设阈值,但不限于此。反之,如果该策略元组 不满足预设条件,则不加入存储
策略记忆库。
[0288] 以当前进行状态前馈,对下一时刻的状态量向量 进行赋值,其中下一时刻的策略参数矩阵由当前 赋初始值,即下一时刻的参数初始值 ,下一时刻的状态量向量 。
[0289] 从步骤3)中组合得到的x个动作向量中随机抽取一个运动矢量作为下一时刻的动作向量 接续训练;当记忆库存储的策略元组数量达到预设数量阈值时,可从策略记忆库中随机抽取一小批batch样本动作向量用于新的策略元组的训练,历史经验都可以被多次用到,用以更新权重,数据利用效率更高。
[0290] 7)根据步骤6)计算得到的下一时刻的动作向量 和下一时刻的状态量向量 ,计算最大化的回报值函数,即 ;计算损失函数, 为损失函数,
为探索系数;使用 探索机制,用系数 来选择是继续探索,还是直接根据经验做出决策,一般地,系统里 是从1逐渐减少到0.1 ,使得训练初期,尽可能多的对下一时刻的状态量向量 探索更大的区域,随后再逐渐偏向于上一时刻的状态量向量 的经验。训练初期通过广泛试错找准一个方向,然后沿着该方向一路试探下去直到达到奖励值最大和运动策略最优。
[0291] 8)通过神经网络反向传播使用梯度下降的方法来更新策略参数矩阵 。
[0292] S3.针对多个不同的动作示范过程重复上述步骤S1和S2。
[0293] 步骤A3之后,还包括步骤:在得到的运动策略数据集的策略元组满足预设条件时,把对应的策略元组加入至策略记忆库。
[0294] 需要说明的是, 策略记忆库中还记录有各策略元组对应的输入数据(轨迹子片段数据或轨迹子片段样本数据、对应的腰关节角度数据或腰关节角度样本数据、运动约束参数和动力约束参数、以及待处理工件的位姿数据)。
[0295] 该冗余双臂机器人示教装置还包括:
[0296] 强化训练模块,用于对分层学习神经网络模型进行强化训练。具体地,从策略记忆库中随机抽取若干样本(输入数据)进行训练,训练过程参考前文,而且在训练时用样本对应的策略元组进行初始化。由于从策略记忆库中随机抽取样本进行强化学习,打乱数据相关性,避免受样本分布的影响,且用样本对应的策略元组进行初始化,可提高训练效率。
[0297] 由上可知,该冗余双臂机器人示教装置,通过获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据、冗余双臂机器人的运动约束参数和动力约束参数、以及待处理工件的位姿数据;把第一轨迹数据分切为多个轨迹子片段数据,并根据第一转动角度数据提取各轨迹子片段数据对应的腰关节角度数据;把运动约束参数、动力约束参数、待处理工件的位姿数据、多个轨迹子片段数据和对应的腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;根据运动策略数据集获取冗余双臂机器人各关节的动作数据序列;动作数据序列包括多个动作数据,动作数据包括对应关节的转动角度和转动角速度;根据冗余双臂机器人各关节的动作数据序列控制各关节运动;从而,可方便快捷地实现对冗余双臂机器人的示教。而且在模型在计算时不仅考虑了示范人员腕关节轨迹的位姿信息,还综合考虑了手臂各关节和部的转动姿态信息,并将机器人的运动学和动力学参数当做约束条件,作为输入参数,使机械臂的运动满足关节转角范围、机械臂可达空间、关节最大转动角速度和关节最大输出力矩等约束条件,使得机械臂动作和轨迹在原有示范者的演示基础上,泛化为机器人所能适用的双臂协同运动,在提高机器人作业的环境适应能力同时,避免了机械臂在运动时的奇异构型和相互碰撞。
[0298] 请参照图3,图3为本申请实施例提供的一种电子设备的结构示意图,本申请提供一种电子设备,包括:处理器301和存储器302,处理器301和存储器302通过通信总线303和/或其他形式的连接机构(未标出)互连并相互通讯,存储器302存储有处理器301可执行的计算机程序,当电子设备运行时,处理器301执行该计算机程序,以执行上述实施例的任一可选的实现方式中的冗余双臂机器人示教方法,以实现以下功能:获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据、冗余双臂机器人的运动约束参数和动力约束参数、以及待处理工件的位姿数据;把第一轨迹数据分切为多个轨迹子片段数据,并根据第一转动角度数据提取各轨迹子片段数据对应的腰关节角度数据;把运动约束参数、动力约束参数、待处理工件的位姿数据、多个轨迹子片段数据和对应的腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;根据运动策略数据集获取冗余双臂机器人各关节的动作数据序列;动作数据序列包括多个动作数据,动作数据包括对应关节的转动角度和转动角速度;根据冗余双臂机器人各关节的动作数据序列控制各关节运动。
[0299] 请参照图4‑图6,本申请提供了一种冗余双臂机器人示教系统,包括冗余双臂机器人400、运动数据采集装置500和上位机(图中没画);
[0300] 冗余双臂机器人400包括基座401、通过腰部关节402转动设置在基座顶部的转台403以及两个对称地设置在转台403两侧的机械臂405,该机械臂405为七轴机械臂;
[0301] 运动数据采集装置500包括多个围绕示范工位600设置的立体相机501;运动数据采集装置500用于获取示范人员在进行动作示范时的腕关节的第一轨迹数据和腰关节的第一转动角度数据,以及待处理工件的位姿数据,并上传至上位机(具体过程参考前文的冗余双臂机器人示教方法的步骤);
[0302] 上位机用于获取冗余双臂机器人400的运动约束参数和动力约束参数;把第一轨迹数据分切为多个轨迹子片段数据,并根据第一转动角度数据提取各轨迹子片段数据对应的腰关节角度数据;把运动约束参数、动力约束参数、待处理工件的位姿数据、多个轨迹子片段数据和对应的腰关节角度数据输入预先训练好的分层学习神经网络模型中,得到运动策略数据集;根据运动策略数据集获取冗余双臂机器人各关节的动作数据序列;动作数据序列包括多个动作数据,动作数据包括对应关节的转动角度和转动角速度;根据冗余双臂机器人400各关节的动作数据序列控制各关节运动(具体过程参考前文的冗余双臂机器人示教方法的步骤)。
[0303] 该冗余双臂机器人示教系统,通过获取示范人员的示范动作的腕关节的第一轨迹数据和腰关节的第一转动角度数据,并对该第一轨迹数据进行片段分切,结合冗余双臂机器人的运动约束参数和动力约束参数和待处理工件的位姿数据,用分层学习神经网络模型得到运动策略数据集,进而从中提取出各关节的动作数据序列,并用以控制冗余双臂机器人运动,实现了在运动约束和动力约束条件下对示范人员作业过程的模仿,可方便快捷地实现对冗余双臂机器人的示教,使冗余双臂机器人能够快速适应各种复杂的新任务要求。
[0304] 在一些实施方式中,该冗余双臂机器人400包括基座401、通过腰部关节402转动设置在基座401顶部的转台403、设置在转台403顶部的立体视觉装置404、两个对称地设置在转台403两侧的机械臂405、以及两个分别设置在两个机械臂405末端的电动夹爪406;机械臂405为七轴机械臂,包括七个关节,其中三个关节组成具有三个自由度的肩关节407,另外的一个关节组成具有一个自由度的肘关节408,剩余的三个关节组成具有三个自由度的腕关节409;其中,肩关节407与肘关节408之间连接有后臂杆410,肘关节408与腕关节409连接有前臂杆411。该冗余双臂机器人400的腰部关节402可模拟人体的腰部转动,其机械臂405的结构与人体的手臂结构类似,因此能够较好地模仿人的动作,降低无法复现示范人员的动作的几率。
[0305] 其中,冗余双臂机器人400的工作工位处的环境布置与示范工位600处的环境布置相同(主要是指工作台、工件上料区和工具放置区之间的相对位姿相同)。
[0306] 在本实施例中,见图4,运动数据采集装置500还包括多个遮光板502和铝合金骨架503,多个遮光板502通过铝合金骨架503围成一个3/4球形内腔,示范工位600设置在3/4球形内腔的球心处,每个遮光板502上设置有一个立体相机501,且各立体相机501与该球心的距离相等;其中一个立体相机501设置在示范工位600的正上方。通过遮光板502的遮光作用,可避免外部光线影响图像识别的精度。把示范工位600设置在球形内腔的球心处,作业示范人员作业过程中的双手双臂及腰部运动均在各个立体相机501的重叠视场中,并且立体相机501均安装在球心距相等的位置上,保证了不同角度的立体相机501的数据采集距离一致性,进一步保证了数据采集的准确性和可靠性。
[0307] 该冗余双臂机器人示教系统具有以下优点:
[0308] 1. 冗余双臂机器人的采用机械臂和腰部协同化运动机制,在满足类似人员作业时的腰部与手臂协同作业要求的前提下,每个机械臂的7个转动轴,关节分布合理、结构紧凑轻巧、运动灵活、协同工作空间大,与单机械臂机器人相比,作业更稳定的特点,作业更灵活,适用范围更广;
[0309] 2.可实现在运动约束和动力约束条件下对示范人员作业过程的模仿,可方便快捷地实现对冗余双臂机器人的示教,使冗余双臂机器人能够快速适应各种复杂的新任务要求;
[0310] 3.使用的分层学习神经网络模型,不仅考虑了示范人员手腕关节轨迹的位姿信息,并将双臂机器人的运动学和动力学参数当做约束条件,使机械臂的运动满足关节转角范围、机械臂可达空间、关节最大转动角速度和关节最大输出力矩等约束条件;从而使得输出轨迹在原有示范者的演示示范基础上,泛化成为双臂机器人所能适用的双臂协同运动参数指令,避免了机械臂在运动时的奇异构型和相互碰撞;
[0311] 4. 将多个立体相机采集模块(立体相机和对应的遮光板)搭建为总体外形呈球3/4球形,示范工位600设置在3/4球形内腔的球心处,作业示范人员作业过程中的双手双臂及腰部运动均在各个相机的重叠视场中,并且相机均安装在球心距相等的位置上,保证了不同角度相机的数据采集距离一致性,进一步保证了数据采集的准确性和可靠性。可解决在实际作业过程中,由于人体腰部转动或者双臂协同运动带来的关节点遮挡而引起的数据采集异常问题。
[0312] 在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0313] 另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0314] 再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0315] 在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
[0316] 以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。