21、基于迭代学习控制的遗传算法在机器人动力学参数估计中的应用

基于迭代学习控制的遗传算法在机器人动力学参数估计中的应用

1. 引言

工业机器人需要重复执行轨迹运动,并且要具备高轨迹跟踪精度。要实现这一点,需要有精确的机器人动力学模型。然而,在大多数情况下,动力学模型的参数难以精确计算,模型存在不确定性。因此,机器人控制系统需要结合多种控制策略来提高轨迹跟踪精度。

  • 已有控制策略
    • 有将计算扭矩控制与模糊控制相结合的方法。
    • 还有使用隐式Lyapunov函数控制方法作为连续反馈控制。
    • 更具计算效率的是迭代学习控制(ILC),它由Uchiyama和Arimoto提出,是一种受生物启发的方法,通过重复执行相同轨迹并使用学习算子来减少轨迹跟踪误差。对于非线性系统,其鲁棒性和收敛性在1989年由Heizinger等人证明。
  • 受限输出迭代学习控制(COILC) :该方法可轻松融入硬约束机器人系统的控制系统中。COILC过程的收敛性取决于学习算子的选择,而学习算子的选择又依赖于机器人动力学模型参数的正确估计。
  • 遗传算法(GA) :由Holland在1975年提出,是最早的基于种群的随机算法之一。它通过模拟物种进化的自然选择过程来实现优化策略,包括选择下一代的最佳个体以及通过交叉和变异技术形成下一代。

本研究的目标是将COILC和遗传算法相结合,以找到机器人模型参数的最佳估计。

2. 问题描述

为了研究,我们考虑SCARA型机器人的前两个连杆,并使用SEIKO Instruments TT - 3000的模型。其运动学关系中,$l_1 = 25$ cm,$l_2 = 22$ cm。

该机器人的拉格朗日动力学方程为:
[
\begin{cases}
a_{11}(q_2)\ddot{q} 1 + a {12}(q_2)\ddot{q} 2 - 2b\sin q_2\dot{q}_1\dot{q}_2 - b\sin q_2\dot{q}_2^2 + d_1\dot{q}_1 + f {c1} = u_1 \
a_{12}(q_2)\ddot{q} 1 + a {11}(q_2)\ddot{q} 2 - 2b\sin q_2\dot{q}_1^2 + d_2\dot{q}_2 + f {c2} = u_2
\end{cases}
]
其中:
[
\begin{cases}
a_{11}(q_2) = a + 2b\cos q_2 \
a_{12}(q_2) = a_{21}(q_2) = v + b\cos q_2 \
a_{22} = v \
a = I_1 + m_1s_1^2 + I_2 + m_2(I_1^2 + s_2^2) \
b = m_2l_1s_2 \
v = I_2 + m_2s_2^2
\end{cases}
]
这里,$d_i$($i = 1, 2$)是粘性阻尼,$f_{ci}$是库仑摩擦,$l_i$是机器人连杆的指定长度,$s_i$是质心位置,$m_i$是连杆总质量,$I_i$是连杆绕质心的惯性矩。

COILC控制算法步骤如下:
1. 设置初始迭代次数$l = 0$,开始迭代过程。
2. 从初始位置$q_l(0)$开始,系统在控制$u_l(t)$下跟踪期望轨迹,直到出现$j$($1\leq j\leq m$),使得$q_{l,j}(S_l) = Q_{min,j}$或$q_{l,j}(S_l) = Q_{max,j}$,或者到达结束位置$q_l(T)$。当$t = S_l$($S_l\in(0, T]$)时,跟踪过程停止。
3. 当前跟踪完成后,学习控制器根据以下学习更新定律更新前馈控制项:
[
\begin{cases}
u_{l + 1}(t, S_l) = u_l(t, S_{l - 1}) + u_l^ (t, S_l) \
u_0(t, S_{-1}) \equiv u_0(t) \
u_l^
(t, S_l) =
\begin{cases}
L(q_l(t), t)(\ddot{q}_d(t) - \ddot{q}_l(t)), & t\in[0, S_l], S_l\in(0, T] \
0, & \forall t\in(S_l, T]
\end{cases}
\end{cases}
]
4. 如果输出误差(最大迭代跟踪误差)$\vert\Delta q_l(t)\vert$小于或等于可接受的跟踪精度,则退出学习过程;否则,令$l = l + 1$,转到步骤2。

离线计算的前馈项$u_{l + 1}$可减少机器人在下一次迭代中的运动跟踪误差。ILC更新定律的鲁棒性和收敛性在$L(q)\equiv\hat{A}(q)$时得到证明,其中$\hat{A}$是惯性矩阵$A$的相应估计。ILC过程的收敛取决于动力学模型参数$a$、$b$和$v$的正确估计。本研究的目标是使用遗传算法找到使COILC方法总收敛时间最小的参数$a$、$b$和$v$。

3. 结合COILC和GA的参数估计算法

为了应用遗传算法,需要定义初始初始化、选择、交叉、变异和终止条件等操作。
- 第一代初始化 :第一代将随机初始化为48位无符号整数。为减少所需的代数,初始种群的个体应根据机器人动力学参数的预期估计来选择。对于所描述的机器人,参数$a$将在2000到8000 $kg\cdot cm^2$范围内选择,参数$b$和$v$将在1000到2000 $kg\cdot cm^2$之间。
- 选择
1. 为每一代定义一个适应度函数,计算使用该代对应个体的学习算子应用COILC时收敛所需的总时间。
2. 由于学习算子是随机选择的,需要限制ILC过程的最大迭代次数,以避免非收敛的ILC过程。如果ILC过程不收敛或在选择的最大迭代次数内找不到解,则适应度函数返回预定义的最大值。
3. 评估所有个体的适应度函数值,并按适应度值升序对个体进行排序。
4. 下一代保留排序后前50%的个体,另外50%通过交叉操作生成。
- 交叉操作 :从选择的前50%具有最佳适应度值的个体中选择两个父个体,将它们分别拆分为16位和32位的两部分,然后进行组合。16位部分对应参数$a$,32位部分对应参数$b$和$v$,生成两个新的子个体。
- 变异操作 :交叉操作后,按无符号整数升序对新一代个体进行排序。如果一代中有两个相等的数字,则随机翻转其中一个的单个位进行变异。
- 终止条件 :代过程的终止条件是手动检查和达到固定代数的组合。

该遗传算法依赖于ILC收敛与受控机器人系统惯性矩阵正确估计之间的对应关系,通过自然选择过程找到对应于机器人惯性矩阵估计的最优参数。

4. 仿真结果

使用TT - 3000机器人的计算机仿真来评估遗传算法的性能。仿真使用两组不同的参数,标准参数集用于模拟机械臂,实验估计参数集用于计算COILC过程的学习算子$L(q)\equiv\hat{A}(q)$。

机器人需要执行如图所示的轨迹。如果使用实验估计参数集应用COILC,达到最大跟踪误差0.02的执行时间对于轨迹A为83 s,对于轨迹B为103 s。

对于遗传算法,考虑由120个个体组成的一代,随机初始化后创建15代。适应度函数是考虑轨迹A时COILC过程达到最大跟踪误差0.02所需的最短时间。

标准参数 [kg·cm²] a b v d1 d2 fc1 fc2
6596.2 1505.6 1353.4 17.29 12.49 6.46 3.44
实验估计 [kg·cm²] $\hat{a}$ $\hat{b}$ $\hat{v}$ $\hat{d}_1$ $\hat{d}_2$ $\hat{f}_{c1}$ $\hat{f}_{c2}$
6555.3 1471.8 1847.8 17.29 12.49 8.13 5.51

经过15代后,最佳适应度值为29.1 s。以下是部分代中最佳两个个体的比较:
| 代 | 个体表示 | a [kg·cm²] | b [kg·cm²] | v [kg·cm²] | 适应度值 [s] |
| — | — | — | — | — | — |
| 1 | 32049171138104 | 7462 | 1910 | 1592 | 53.24 |
| 1 | 30163684557856 | 7023 | 1972 | 1056 | 57.71 |
| 2 | 25155706356780 | 5857 | 1265 | 1068 | 38.80 |
| 2 | 26783510365447 | 6236 | 1439 | 1287 | 48.50 |
| 15 | 24193633813516 | 5633 | 1267 | 1036 | 29.10 |
| 15 | 24502871327752 | 5705 | 1265 | 1032 | 29.10 |

对于轨迹B,使用遗传算法找到的最佳参数集将COILC执行时间从103 s减少到58.2 s。使用实验估计参数集时,前几次迭代因达到工作空间限制而中止;使用遗传算法找到的参数集时,跟踪轨迹更接近期望轨迹,COILC收敛更快。

值得注意的是,遗传算法找到的参数与用于虚拟机器人仿真的参数不同,这是因为COILC学习算子未考虑摩擦,但COILC过程可以补偿由摩擦引起的误差。

综上所述,本研究提出的将COILC和遗传算法相结合的方法,通过计算机仿真验证了其有效性,表明COILC可用于机器人的轨迹跟踪和模型参数估计。

基于迭代学习控制的遗传算法在机器人动力学参数估计中的应用

5. 方法优势分析

将COILC和遗传算法相结合的方法具有多方面的优势,以下进行详细分析:
- 提高参数估计精度 :遗传算法通过模拟自然选择过程,在众多可能的参数组合中寻找最优解。结合COILC的收敛特性,能够不断优化参数估计,使其更接近真实值。从仿真结果可以看出,经过多代迭代,找到的参数能显著减少COILC的执行时间,提高轨迹跟踪精度。
- 适应模型不确定性 :由于机器人动力学模型参数难以精确计算,存在不确定性。该方法不依赖于精确的模型,而是通过迭代学习和遗传搜索来适应这种不确定性。即使模型存在误差,也能找到合适的参数,保证系统的性能。
- 处理约束条件 :COILC方法可以安全地应用于具有状态空间约束的机器人系统。在实际应用中,机器人的运动往往受到各种限制,如关节角度限制、速度限制等。该方法能够在满足这些约束条件的前提下,实现有效的轨迹跟踪和参数估计。

6. 实际应用场景

这种基于COILC和遗传算法的参数估计方法在多个实际应用场景中具有重要价值:
- 工业生产 :在工业机器人的生产线上,机器人需要重复执行相同的任务,对轨迹跟踪精度要求较高。通过准确估计动力学参数,可以提高机器人的工作效率和产品质量,减少废品率。
- 物流仓储 :物流仓储中的搬运机器人需要在复杂的环境中进行货物搬运,对运动的灵活性和准确性有较高要求。该方法可以帮助机器人更好地适应环境变化,提高搬运效率。
- 医疗手术 :在医疗手术机器人中,精确的轨迹跟踪和参数估计至关重要。该方法可以提高手术机器人的操作精度,减少手术风险,为患者提供更安全、有效的治疗。

7. 未来研究方向

虽然本研究取得了一定的成果,但仍有一些方面值得进一步深入研究:
- 算法优化 :可以探索更高效的遗传算法操作,如改进选择策略、交叉和变异算子,以加快收敛速度,提高算法性能。
- 多机器人系统 :研究如何将该方法扩展到多机器人系统中,实现多个机器人之间的协同工作和参数估计。
- 实时应用 :进一步优化算法,使其能够在实时环境中运行,满足实际应用的实时性要求。

8. 总结

本研究成功地将受限输出迭代学习控制(COILC)和遗传算法(GA)相结合,用于机器人动力学模型参数的估计。通过计算机仿真验证了该方法的有效性,具体表现如下:
- 参数估计效果显著 :遗传算法结合COILC,能够在众多可能的参数组合中找到最优解,显著提高了参数估计的精度。从仿真结果可以看出,找到的参数使COILC的执行时间大幅减少,轨迹跟踪精度明显提高。
- 适应复杂情况 :该方法能够适应机器人动力学模型的不确定性和状态空间约束,在实际应用中具有较强的鲁棒性。
- 应用前景广阔 :该方法在工业生产、物流仓储、医疗手术等多个领域具有重要的应用价值,为机器人技术的发展提供了有力支持。

未来,我们可以进一步优化算法,拓展其应用范围,使其在更多领域发挥更大的作用。

相关流程和操作总结

以下是结合COILC和GA进行机器人动力学参数估计的主要流程:

graph LR
    A[初始化第一代] --> B[选择操作]
    B --> C[交叉操作]
    C --> D[变异操作]
    D --> E{是否满足终止条件}
    E -- 否 --> B
    E -- 是 --> F[输出最优参数]
  • 初始化第一代 :随机生成48位无符号整数作为个体,参数$a$在2000 - 8000 $kg\cdot cm^2$,参数$b$和$v$在1000 - 2000 $kg\cdot cm^2$。
  • 选择操作
    1. 定义适应度函数,计算COILC收敛时间。
    2. 限制ILC最大迭代次数。
    3. 评估适应度值并排序。
    4. 保留前50%个体。
  • 交叉操作 :选择前50%个体中的两个父个体,拆分组合生成子个体。
  • 变异操作 :对新个体排序,若有相同数字则随机翻转一位。
  • 终止条件 :手动检查和达到固定代数。

通过以上流程,可以有效地估计机器人动力学模型的参数,提高机器人的轨迹跟踪精度和性能。

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值