1

我目前正在使用 Aldebaran Robotics 开发的 NAO 机器人系统,我想做的是动态更改我们研究的行为文件的值。这些文件存储为:/behaviours/filename.xar

这些文件中有相当多的代码,我希望能够即时修改每个电机的值。

 ....
<ActuatorCurve name="value" actuator="HeadPitch" recordable="1" mute="0" unit="-1">
    <Key frame="15" value="16.9607" />
    <Key frame="20" value="16.9607" />
    <Key frame="25" value="16.8198" />
    <Key frame="30" value="16.9607" />
    <Key frame="35" value="16.8198" />
    <Key frame="40" value="16.9607" />
    <Key frame="45" value="16.8198" />
    <Key frame="50" value="16.9607" />
    <Key frame="55" value="16.8198" />
</ActuatorCurve>
...

对于机器人的肩膀、手臂、手、腿等中的不同电机,还有各种其他的 ActuatorCurve。我试图找出一种方法,我可以打开这个文件,搜索并找到 HeadPitch 电机中的值,修改所述值,然后保存文件。

我知道这里的用户喜欢将代码显示为我到目前为止所做的,但我还没有写任何东西。我只是在试图找出解决这个问题的最佳方法。

总是有可能在 100% 点头、110% 等情况下创建多个文件。但是这很耗时,而且只会占用机器人硬盘驱动器上不必要的空间。

4

1 回答 1

1

有很多方法可以做到这一点。

你的要求应该是这样的: - 打开文件 - 使用 minidom 解析文件,因为格式是 xml - 更改它 - 保存它

但是根据您更改的频率,这不是一个好主意(消耗 CPU)。

更好的方法是加载/解析/更改,但是您可以使用 motion.angleInterpolationBezier 直接将新时间线发送到运动模块,而不是保存它。

其他方法是使用“将运动导出到剪贴板”将您的时间线导出到 python,然后使用纯 python 修改您的时间线,如数组,保存它,...

于 2013-05-15T08:32:04.877 回答