Python 导入robot后更改弹簧常数会导致问题
我必须对模拟腿部的肌腱刚度进行优化。手动更改弹簧常数不会导致任何问题,物理模型似乎运行良好。当我尝试优化这些值时,问题就出现了 由于这是一个优化问题,我必须运行模拟1.5秒,然后用稍微不同的弹簧常数将机器人重置为初始状态。为此,我将机器人模型保存为“robot.wbo”文件。在每次优化迭代结束时,我删除现有的robot节点,并使用“def importMFNode”创建一个新的robot节点,该节点在初始状态下创建robot。在每个新迭代开始时,我会设置新的spring常量,设置这些常量会导致模型出现意外行为。我已将问题锁定在这两条线上Python 导入robot后更改弹簧常数会导致问题,python,webots,Python,Webots,我必须对模拟腿部的肌腱刚度进行优化。手动更改弹簧常数不会导致任何问题,物理模型似乎运行良好。当我尝试优化这些值时,问题就出现了 由于这是一个优化问题,我必须运行模拟1.5秒,然后用稍微不同的弹簧常数将机器人重置为初始状态。为此,我将机器人模型保存为“robot.wbo”文件。在每次优化迭代结束时,我删除现有的robot节点,并使用“def importMFNode”创建一个新的robot节点,该节点在初始状态下创建robot。在每个新迭代开始时,我会设置新的spring常量,设置这些常量会导致模
knee_spring_constant.setSFFloat(int(x[2]))
heel_spring_constant.setSFFloat(int(x[3]))
这两条线所做的全部工作就是更改两个滑块关节的弹簧常数。如果我使用这两个命令,模型就会失败。如果我手动操作,它就会工作
模型的行为不是正常的,而是不稳定的,与预期的不一样。但是,如果我在通过主管代码导入robot节点后立即手动创建一个新副本,并删除旧副本,则robot的行为将与预期的一样。我不确定这为什么不起作用,可能是缺少一个 但是可以肯定的是,你卸载/重新装载机器人的方法很重,而且很容易简化。 有几种重置机器人的解决方案更简单,因此可能工作得更好
我不知道为什么这不起作用,也许是因为缺少了一个 但是可以肯定的是,你卸载/重新装载机器人的方法很重,而且很容易简化。 有几种重置机器人的解决方案更简单,因此可能工作得更好
谢谢在Robot.wbo内更换弹簧修复了该问题!谢谢在Robot.wbo内更换弹簧修复了该问题!