首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何提高弹道优化结果

如何提高弹道优化结果
EN

Stack Overflow用户
提问于 2021-08-08 06:06:00
回答 1查看 162关注 0票数 0

我想做轨道优化阿特拉斯机器人模型在德雷克。不考虑垃圾狗示例和存储库,我尝试了跳转运动优化这里。基本上,我更改了in_stance序列,添加了Initial guess of q,并添加了一个不同的q_cost

但是似乎很难得到最优解,SNOPT输出是:

代码语言:javascript
运行
复制
 SNOPTA EXIT  10 -- the problem appears to be infeasible
 SNOPTA INFO  13 -- nonlinear infeasibilities minimized

这是一个视频来显示优化的轨迹。

我有一些想法来探索改进解决方案的方法:

  1. 使用简化的模型。我认为这个问题可能更容易解决。
  2. 仔细观察每个约束。例如,在跳转的情况下,我认为最好是约束xz轴angular_momentum,而不限制y轴angular_momentum。
  3. 为所有变量添加一个更好的初始猜测。
  4. 增加参考轨迹的成本,以指导求解者。
  5. 增加一些费用,以稳定飞行阶段的腿。

我不知道我应该先做哪一件,或者我错过了一些重要的事情,而这个问题是无法解决的?

谢谢你的建议!

谢谢你的快速回复:戴洪凯。我检查了matlab的版本,并在这里testJump.m上找到了讨论。

我使用q类添加了对InverseKinematics的初步猜测。尝试添加接触力轨迹和CoM轨迹的初始猜测。

testJump.m中,这是你最初的猜测吗?这不是一个运动轨迹的初步猜测,对吗?

代码语言:javascript
运行
复制
x_seed = zeros(cdfkp.num_vars,1);
x_seed(cdfkp.h_inds) = 0.06;
x_seed(cdfkp.q_inds(:)) = reshape(bsxfun(@times,qstar,ones(1,nT)),[],1);
x_seed(cdfkp.com_inds(:)) = reshape(bsxfun(@times,com_star,ones(1,nT)),[],1);
x_seed(cdfkp.lambda_inds{1}(:)) = reshape(bsxfun(@times,1/num_edges*ones(num_edges,4,1),ones(1,1,nT)),[],1);
x_seed(cdfkp.lambda_inds{2}(:)) = reshape(bsxfun(@times,1/num_edges*ones(num_edges,4,1),ones(1,1,nT)),[],1);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-08 06:28:44

  1. 最好的初步猜测很有帮助。你可以先尝试解一个运动轨迹(不考虑力),然后用运动轨迹初始化你的轨迹优化变量。
  2. 当优化不可行时,您可以在不可行的解决方案中检查违反了哪些约束。使用函数 result.GetInfeasibleConstraints(prog),它返回违反约束的列表,然后您可以尝试放松/删除约束。您可以调用prog.RemoveConstraint()函数来删除约束,也可以使用constraint.UpdateLowerBound()constraint.UpdateUpperBound()放宽约束界限。

对于阿特拉斯跳跃运动,我们有一个Matlab实现。如果您查看一下德雷克的旧matlab版本,那么在文件夹中,它使用这个中的思想实现了阿特拉斯跳跃运动的轨迹优化。

在testJump.m中,我没有使用运动轨迹作为初步猜测。我计算了站立在地面上的机器人的初始姿态,接触力在每条腿上均匀分布。

TestJump.m中还有其他细微之处:

  1. 我将接触力的决策变量按质量* g进行缩放,因此接触力的决策变量值大致为1。在目前版本的Drake中,您可以在MathematicalProgram中使用MathematicalProgram方法。
  2. 在testJump.m中,浮动基座的方向用欧拉角表示。在当前版本的Drake中,浮动基方向由单位四元数表示。四元数的时间积分比欧拉角要复杂得多。您可以尝试单元四元数的QuaternionEulerIntegrationConstraint,其余的连接可以像往常一样使用欧拉/中点积分。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68698187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档