2013-05-14 45 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來修改你的時間線像數組,保存它,...