2013-05-14 85 views
1

我目前正在与Aldebaran Robotics开发的NAO机器人系统一起工作,我试图做的是在飞行中更改我们学习行为文件的值。这些文件存储为:/behaviours/filename.xarPython修改.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> 
... 

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

我知道这里的用户像代码一样被显示为迄今为止所做的,但我还没有写任何东西。我只是在试图找出最好的办法来解决这个问题。

总是有可能在100%的头部点头,110%等处创建多个文件。然而,这非常耗时,并且只占用机器人硬盘上不必要的空间。

回答

1

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

您的要求应该是这样的内容: - 打开文件 - 使用minidom命名为格式解析文件是XML - 改变 - 保存

但根据更改的频率,它不是一个好主意(cpu消​​费)。

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

其他的方法是导出你的时间轴到Python使用“导出运动到剪贴板”,然后使用纯Python来修改你的时间线像数组,保存它,...