我已经使用封闭形式的解决方案实现了IK,当然我想出了八种解决方案-每个解决方案实际上都在定位末端执行器在正确的位置和方向(我实现了论文中描述的方法:“类人机器人HUBO2 +的运动学和逆运动学”)。
现在的问题是如何选择正确的运动,知道最终效应器将遵循轨迹。这个想法是迭代地计算将提供给IK模块的$ [N,S,A,P] $矩阵。
我正在考虑的一种解决方案是在决策表中选择联合解决方案,以最小化给定指标:
$$ \ sum_i(\ theta_i ^ {current}-\ theta_i ^ {next})^ 2 $$
其中$ \ theta_i ^ {current} $表示$ i ^ {th} $联合的当前值,而$ \ theta_i ^ {next} $是其中的计算值决策表。
您认为这是正确的方法,还是有其他方法可以从决策表中找到最佳的联合解决方案。
#1 楼
看起来像是一对有趣的手臂:-)是的,如果您已经有一个已知的姿势,那么选择一种可以最大程度地减少运动的解决方案是不错的选择。明显的缺点是,针对特定姿势做出的选择取决于历史,这可能会使验证更加困难。
另一种选择是使扭矩最小化(由于重力/负载) )在较弱的伺服器上。我注意到您在肩膀上使用MX-28,但在肘部使用AX-12。考虑到the纸牙的重量和负载以及手臂的长度,您可能不应该打算在这种配置下举起任何重物!
我被要求详细说明“明显的缺点。 “
在验证机械系统在特定环境(例如在人类周围)中可以安全使用时,您需要能够验证该系统永远不会处于“不良”配置。当时间T的配置取决于时间T-1的配置时,您将无法创建一个封闭形式的公式来精确描述给定输入集的系统位置,因此验证会降为假设大多数悲观的假设(发生在理论上可能的移动范围之内的所有事情都会发生),或者您必须降级为手动测试,这众所周知地不利于发现罕见的边缘情况。
同样,当出现问题时,您将很难重现失败的条件,以便可以研究它们,修复它们,然后添加某种测试以确保不再发生失败。如果电枢的姿势不仅取决于已知的当前输入,而且取决于自上电以来已馈入机器人的所有输入,那么与姿势相比,您将不得不记录和研究更多的数据是“封闭形式”。 (对于简单的与时间相关的系统,仅存储时间T-1的输出状态和新的输入状态可能足以重现运动-为您的系统考虑这一点。)
另一种选择就是说:“该系统足够脆弱,永远不会伤害人类,并且仅用于化妆品展示,因此,如果它崩溃了,那就没钱了。”这是进行系统分析的一种好方法。过去,我曾设计过带有MX伺服器的系统,由于一个错误,它进入了干扰状态(对自身不利),在我断电(几秒钟)之前,这些伺服器中的精致Maxxon电机已经烧坏了电刷,每台伺服电机需要更换$ 90。伺服控制器中存在“过热”和“停滞运动”安全性,但这些安全性的时间为5-7秒,而以最高额定电压4S LiPos烧毁电动机的时间更像2秒...
因此,验证不仅是为了确保人类安全,还在于节省金钱。为避免这种情况,您必须保证在执行迭代解决方案时,手臂中的任何链接都不会干扰机器人的身体或手臂的另一链接(被其阻塞)。使用封闭式解决方案时,您可以将保证放到解决方案中,并放心永远不会出现此类问题。
总而言之,迭代解决方案非常简单,而且从美学角度来看通常也“看起来更好”,因此许多解决方案最终只能这样做,并且承受了与验证相关的明显缺点:-)
(如果发现有帮助,请接受此答案。)
#2 楼
您可以使用微分IK沿给定轨迹求解一组IK解。这个想法是,您使用当前时间步的IK解来计算下一时间步的IK解。假设$ q $是当前时间步的IK解,$ x是当前时间步的IK解^ + $是下一个时间步长所需的最终执行器姿势。您可以通过迭代更新$ q $来计算$ q ^ + $:
$$
$$
其中$ dq = J ^ {\ dagger}(q)dx $,$ J ^ {\ dagger} $是Jacobian矩阵的伪逆,而$ dx $是当前末端执行器姿势与所需姿态之间的差一。如果存在解决方案,则此过程应仅收敛几次迭代(例如,少于$ 10 $迭代)。收敛值取为$ q ^ + $。
此方法的优点是最终您将拥有一条平滑的关节轨迹。
要为该轨迹选择初始IK解决方案,可以选择一个与配置空间边界相距甚远的解决方案,以便在跟随末端执行器轨迹时不会碰到边界。
评论
$ \ begingroup $
乔恩,您好,谢谢您的回答,实际上,我将根据最后一个已知的姿势进行选择,并且第一个实验看起来不错(到目前为止:)),但是我是否可能错过了一些“明显的缺点”?有时间可以提供更多详细信息吗?没错,肘部有AX12,我不打算举大重物-它更多地是关于运动和身体表情。
$ \ endgroup $
–建筑物
17年3月28日在9:30
$ \ begingroup $
非常感谢您的详细回答乔恩,我明白了!
$ \ endgroup $
–建筑物
17年3月31日在7:29