Human-in-the-Loop Optimization of Exoskeleton Assistance Via Online Simulation of Metabolic Cost

文章来源https://ieeexplore.ieee.org/abstract/document/9698243

本文介绍了一种人在环的外骨骼控制优化算法,主要内容包括:

  1. 通过OpenSim来估计人体新陈代谢速率VVV。
  2. 通过贝叶斯优化算法来优化控制算法中的参数ppp,使之最小化人体形成代谢速率VVV。

一. 实验硬件部分

1. 带有位置与力传感的跑步机&动捕系统


如上图所示,在实验过程中记录受试者走路时脚掌与跑步机界面的力与力矩fg\boldsymbol{\mathrm{f}}_gfg​:
fg=(fx,fy,fz,0,Ty,0)∈R6,\boldsymbol{\mathrm{f}}_g = (f_x,f_y,f_z,0,T_y,0) \in \mathbb{R}^6, fg​=(fx​,fy​,fz​,0,Ty​,0)∈R6,
其中yyy为垂直于接触界面的方向,TyT_yTy​代表力矩。实验同时记录了接触时压力中心的位置:
cp=(cx,cy,cz)∈R3.\boldsymbol{\mathrm{c}}_p = (c_x,c_y,c_z) \in \mathbb{R}^3. cp​=(cx​,cy​,cz​)∈R3.
同时通过动捕系统获取Markers的位置信息xox_{o}xo​
xo=(px,py.pz)∈R3.x_o = (p_x,p_y.p_z) \in \mathbb{R}^3. xo​=(px​,py​.pz​)∈R3.

2. Active Pelvis Orthosis (APO)外骨骼


外骨骼的参数如下所示:

二. 外骨骼控制算法(四种模式)

1. Transparent Mode

通过底层的PD控制器,使得外骨骼的助力τdes=0\tau_{des}=0τdes​=0,即模仿穿戴者没有穿戴外骨骼时的场景。

2. Adaptive Oscillator Mode

τdes=Kv(θ(ϕ−δϕ)−θ(ϕ)),\tau_{des} = K_\mathcal{v}(\theta(\phi - \delta\phi)-\theta(\phi)), τdes​=Kv​(θ(ϕ−δϕ)−θ(ϕ)),
其中Kv,δθK_\mathcal{v},\delta\thetaKv​,δθ为可调整参数,分别代表虚拟刚度矩阵(Virtual Stiffness)以及相位差(文章用相位θ∈[0,100]\theta \in [0,100]θ∈[0,100]来表征当前行走处在的不同阶段,例如0代表左脚刚刚着地,右脚刚准备抬起;50代表右脚抬起到最高处)。θ(⋅)\theta(\cdot)θ(⋅)是将相位θ\thetaθ映射到关节角度的函数。

这种控制算法相当于估计下一时刻关节角度位置,然后给予合适大小的力矩帮助穿戴者到达该关节角度位置。

3. Generic Mode

τdes={−τe,0≤x<17,τf,40≤x<64,−τe,92≤x≤100,0,else.\tau_{des} = \begin{cases} -\tau_e, & 0\le x<17,\\ \tau_f, & 40 \le x <64, \\ -\tau_e, & 92 \le x \le 100, \\ 0, & \text{else}. \end{cases} τdes​=⎩⎨⎧​−τe​,τf​,−τe​,0,​0≤x<17,40≤x<64,92≤x≤100,else.​
将人体行走分为固定的四个阶段,每个阶段给予固定的助力(缺乏个性化)。

4. Human-in-the-Loop Mode(文章的卖点所在)



与3.Generic Mode中相同,文章将人体行走分为了五个阶段,并根据事先设定好的函数形式提供助力。不同的是,这种模式下五个阶段的分界线pi,i=1,2,3,4p_i, i=1,2,3,4pi​,i=1,2,3,4变为了可调节参数。(注意只有pip_ipi​是可调节参数,τe,τf\tau_e,\tau_fτe​,τf​仍为固定大小的值)。

文章在接下来的部分讲解了如何利用OpenSim的肌肉骨骼模型来优化pip_ipi​,以达到最小化人体新陈代谢速率的效果。

三. 通过OpenSim进行仿真,估计人体新陈代谢速率


文章在OpenSim中建立了Gait2354人体肌肉骨骼模型与IUVO建立的外骨骼CAD模型。外骨骼与人体肌肉骨骼模型之间通过固定点进行连接。模型中包括了许多Markers,与** 一.实验硬件部分**中的Markers点位置一一对应。

1.通过模型计算关节力矩

由模型中的Markers点与实验中的Markers点位置一一对应,可以通过最小化以下函数求解当前各关节角度qqq:
min⁡q∑i=1mωi∣∣xoi−xi(q)∣∣2,\min_{q}{\sum_{i=1}^m{\omega_i || x_{oi}-x_i(q)||^2}}, qmin​i=1∑m​ωi​∣∣xoi​−xi​(q)∣∣2,
其中mmm为marker点的数量,xoix_{oi}xoi​为实验中通过动捕系统测得的第iii个Marker的三维坐标,xi(⋅)x_i(\cdot)xi​(⋅)为OpenSim的函数,其功能是计算前向运动学,即根据当前的关节角度qqq计算当前Marker点的位置。通过最小化以上函数,就可以求得当前各关节角度qqq。

在求得关节角度后,再根据逆动力学模型计算当前关节力矩τ\tauτ:
τ=M(q)q¨+C(q,q˙)+g(q)+J(q)Tfext,\tau = M(q)\ddot{q}+C(q,\dot{q})+g(q) + J(q)^Tf_{\text{ext}}, τ=M(q)q¨​+C(q,q˙​)+g(q)+J(q)Tfext​,
其中M,JM,JM,J分别为模型的质量矩阵(mass matrix)以及Jacobian,C,gC,gC,g为科里奥利力项和重力项,fextf_{\text{ext}}fext​为外界力。这些函数均为OpenSim内部函数。

2.通过关节力矩计算肌肉激活度

每一个关节力矩都由不同的肌肉-肌腱模块提供的力矩组成:
τj=∑m=1cϕmTCm,\tau_j = \sum_{m=1} ^c{\phi_m^TC_m}, τj​=m=1∑c​ϕmT​Cm​,
其中CmC_mCm​为力臂,ϕm\phi_mϕm​为肌肉力。而肌肉力通过以下的函数计算得到:
ϕm=H(αm,λm,vm,πm),\phi_m = H(\alpha_m,\lambda_m, v_m,\pi_m), ϕm​=H(αm​,λm​,vm​,πm​),
其中HHH为OpenSim内置黑箱函数,αm\alpha_mαm​为肌肉激活度,λm,vm\lambda_m, v_mλm​,vm​为当前肌肉骨骼模型参数,πm\pi_mπm​为肌肉的参数。

通过联立以上两式,可以得到肌肉激活度αm\alpha_mαm​。注意到以上的问题一般都为超定方程,无法求得单一解,一般情况下都需要增加一目标函数以求得单一解。文章选择的目标为最小化肌肉激活度:
min⁡∑m=1n(αm)2.\min \sum_{m=1}^n(\alpha_m)^2. minm=1∑n​(αm​)2.

3.通过肌肉激活度计算肌肉能量(与新陈代谢速率相关)

通过黑箱模型,可以计算得到第m块肌肉运用的能量比例ϵ˙m\dot\epsilon_mϵ˙m​:
ϵ˙m=U(αm,λm,vm,πm),\dot\epsilon_m = U(\alpha_m,\lambda_m, v_m,\pi_m), ϵ˙m​=U(αm​,λm​,vm​,πm​),
肌肉总能量比例为
ϵ˙=∑m=1nϵ˙m\dot\epsilon = \sum_{m=1}^n\dot\epsilon_m ϵ˙=m=1∑n​ϵ˙m​

四. 利用贝叶斯优化更新模型参数

在实验进行当中,实时记录markers的位置信息(用于计算关节角度)以及外部力信息(用于计算关节力矩):
P={p1,p2,...,pn},F={f1,f2,...,fn}.P = \{p_1, p_2, ..., p_n\},\\ F = \{ f_1, f_2, ..., f_n\}. P={p1​,p2​,...,pn​},F={f1​,f2​,...,fn​}.
根据以上信息,可以依次得到关节角度信息QQQ:
Q={q1,q2,...,qn}.Q = \{ q_1, q_2, ..., q_n\}. Q={q1​,q2​,...,qn​}.
肌肉激活度信息AAA:
A={α1,α2,...,αn}.A = \{ \alpha_1, \alpha_2, ..., \alpha_n\}. A={α1​,α2​,...,αn​}.
以及肌肉能量比例信息EEE。
E={ϵ1,ϵ2,...,ϵn}.E = \{ \epsilon_1, \epsilon_2, ..., \epsilon_n\}. E={ϵ1​,ϵ2​,...,ϵn​}.
根据肌肉能量比例信息EEE,可以计算得到肌肉的能量消耗Vi,VsV_i,V_sVi​,Vs​:
Vi=1M(ti−ti−1)∫ti−1tiϵi˙(t)dt,Vs=1n∑i=1nVi.V_i = \frac{1}{M(t_i-t_{i-1})}\int_{t_{i-1}}^{t_i}{\dot{\epsilon_i}(t)dt},\\ V_s = \frac{1}{n}\sum_{i=1}^{n}{V_i}. Vi​=M(ti​−ti−1​)1​∫ti−1​ti​​ϵi​˙​(t)dt,Vs​=n1​i=1∑n​Vi​.
假设外骨骼控制算法中的参数pi,i=1,2,3,4p_i, i=1,2,3,4pi​,i=1,2,3,4与VsV_sVs​满足如下关系:
Vs=fsC(p1,p2,p3,p4).V_s = f_s^C(p_1,p_2,p_3,p_4). Vs​=fsC​(p1​,p2​,p3​,p4​).
则根据贝叶斯优化,可以求得pi∗,i=1,2,3,4p_i^*, i=1,2,3,4pi∗​,i=1,2,3,4使得V_s最小。

Human-in-the-Loop Optimization of Exoskeleton Assistance Via Online Simulation of Metabolic Cost相关推荐

  1. [免费下载][SCI期刊]印刷版A reinforced exploration mechanism whale optimization algorithm

    论文名称: A Reinforced Exploration Mechanism Whale Optimization Algorithm for Continuous Optimization Pr ...

  2. 最新[SCI期刊]A reinforced exploration mechanism whale optimization algorithm(附免费下载地址)

    一.SCI论文全称 :A reinforced exploration mechanism whale optimization algorithm for continuous optimizati ...

  3. 【NIPS2020】 Workshop List

    整理了NIPS2020的研讨会清单 link >>> Muslims in ML link >>> LXAI Research @ NeurIPS 2020 lin ...

  4. 技术解析 | 抛弃骨骼的外骨骼——柔性外骨骼Soft Exosuit

    作者:打荷雨 来源 · 知乎 编辑 · 睿小妹 原文 · https://zhuanlan.zhihu.com/p/258082979 本来这一期是想写Sarcos公司的XOS1-2外骨骼,顺便捋一下 ...

  5. 人工智能 | ShowMeAI资讯日报 #2022.06.02

    ShowMeAI日报系列全新升级!覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向.点击查看 历史文章列表, ...

  6. 资源推荐 | TensorFlow电子书《FIRST CONTACT WITH TENSORFLOW》

    资源推荐 | TensorFlow电子书<FIRST CONTACT WITH TENSORFLOW> 2016-06-29 系统科学社 本书由 UPC Barcelona Tech大学教 ...

  7. 【深度学习】谷歌工程师万字好文:我们为何追求高性能深度学习?如何实现?...

    原文:High Performance Deep Learning 作者:Gaurav Menghani(谷歌研究院 | 软件工程师) 译者:青苹果 深度学习技术的突破性进展彰显了其令人难以置信的潜力 ...

  8. 【ICLR2019】Poster 论文汇总

    ICLR2019 Poster 文章汇总, 共478 papers Convolutional Neural Networks on Non-uniform Geometrical Signals U ...

  9. 基于深度学习下的稳定学习究竟是什么?因果学习?迁移学习?之一

    机器学习 | 稳定学习 | DGBR 深度学习 | 迁移学习 | 因果学习 众所周知,深度学习研究是机器学习领域中一个重要研究方向,主要采用数据分析.数据挖掘.高性能计算等技术,其对服务器的要求极其严 ...

最新文章

  1. python 加载动图_在浏览器中使用TensorFlow.js和Python构建机器学习模型(附代码)...
  2. 2020-10-11 LMI线性矩阵不等式的一些知识
  3. 音视频技术开发周刊 83期
  4. javascript经典问题总结及代码实例(未完待续)
  5. adobe acrobat看PDF文档显示字体发虚,有毛刺的解决办法
  6. 笨办法学 Python · 续 练习 12:复习
  7. python并集符号_Python Union()用法及代码示例
  8. php 实现二叉树的最大深度_LintCode 题解丨Apple面试题:二叉树的最大深度
  9. python3 二进制文件比较_《Python 3程序开发指南(第2版•修订版)》——7.4 随机存取二进制文件...
  10. 《Redis设计与实现》知识点目录
  11. erp oracle mrp,OracleERP用戶手册-MRP.doc
  12. android 6.0 创建文件或文件夹失败
  13. xml文件中SQL语句的大于号、小于号、等于号的转义问题
  14. QNX ETH VLAN ping 不通
  15. linux批处理模式,巧用linux-top的批处理模式
  16. 对计算机网络的保密管理整改措施,保密工作自查整改报告
  17. 添加到收藏夹和设置首页代码大全
  18. 数据库读写分离(单主单从+双主双从)
  19. 停滞在一个圈子,决定人生的高低![深度文章]
  20. 计算机硬件知识试题,计算机硬件基础知识试题.doc

热门文章

  1. php取余函数,php 取余数详解
  2. 2018年「编码美丽」公众号精华帖总结,建议收藏(文末赠书)!
  3. Java项目01-菜谱管理系统控制台实现
  4. 火箭双杀尼克斯 哈林组合和砍50分
  5. Python实现学生管理系统(功能全面)
  6. 简单快速生成序列化ID
  7. 直击|知乎App增加视频回答入口 视频流归到问题下
  8. 程序员找不到对象是伪命题?他用大数据找对象,现在婚都结了
  9. 最近发现一个很好的网站-夏泽网,超链接如下:
  10. 中国人误传千年的七句话