2010-11-21 121 views
0

我在嘗試使用pyserial流式傳輸iRobot Create的傳感器。我進口openinterface.py,設定機器人變量與CreateBot功能,然後調用如何使用pyserial流式傳感器傳感器?

bot.stream_sensors(6)

然後我收到此錯誤 - !「流線錯誤元組索引超出範圍」的唯一的原因是我用6調用函數是因爲這就是我所看到的例子。我也嘗試了stream_sensors(0),stream_sensors(1),一直到6。對於任何少於6的數字,我得到相同的錯誤加上「非法傳感器ID!」。基於什麼參數?它是我想要傳輸的特定傳感器嗎(如果是這樣,我如何獲得數字)?任何幫助,將不勝感激。

+1

您能編輯您的問題以包含您使用的代碼嗎? – spade78 2010-12-16 20:02:22

回答

1

翻閱openinterface.py源代碼,它看起來像獲得「非法傳感器ID」錯誤,因爲您在調用stream_sensors()時使用的給定ID值與具有已知傳感器ID的字典不匹配。傳感器ID字典中的類SensorPacketDecoderAPI規定:

class SensorPacketDecoderApi: 
""" 
Transform sensor data in the form of bytes (from a serial stream) 
into a dictionary of sensor values. 
""" 

names = {'left-velocity' : 42, 
     'right-velocity' : 41, 
     'radius' : 40, 
     'velocity' : 39, 
     'n-stream-packets' : 38, 
     'song-playing' : 37, 
     'song-number' : 36, 
     'oi-mode' : 35, 
     'home-base?'  : 34, 
     'internal-charger?' : 34, 
     'user-analog-in-0' : 33, 
     'baud-rate-change?' : 32, 
     'user-digital-in-3' : 32, 
     'user-digital-in-2' : 32, 
     'user-digital-in-1' : 32, 
     'user-digital-in-0' : 32, 
     'cliff-right-signal' : 31, 
     'cliff-right-front-signal' : 30, 
     'cliff-left-front-signal' : 29, 
     'cliff-left-signal' : 28, 
     'wall-signal' : 27, 
     'capacity' : 26, 
     'charge' : 25, 
     'temperature' : 24, 
     'current' : 23, 
     'voltage' : 22, 
     'charging-state' : 21, 
     'angle' : 20, 
     'distance' : 19, 
     'advance?' : 18, 
     'play?' : 18, 
     'infrared-byte' : 17, 
     'left-wheel-overcurrent?'  : 14, 
     'right-wheel-overcurrent?'  : 14, 
     'low-side-driver-2-overcurent?' : 14, 
     'low-side-driver-0-overcurent?' : 14, 
     'low-side-driver-1-overcurent?' : 14, 
     'virtual-wall?' : 13, 
     'cliff-right?' : 12, 
     'cliff-front-right?' : 11, 
     'cliff-front-left?' : 10, 
     'cliff-left?' : 9, 
     'wall?' : 8, 
     'wheel-drop-caster?' : 7, 
     'wheel-drop-left?' : 7, 
     'wheel-drop-right?' : 7, 
     'bump-left?'   : 7, 
     'bump-right?'  : 7, 
     'all' : 6} 

至於爲什麼你得到的理由「!流線的錯誤......」,我不知道,我可以告訴從我的瀏覽代碼中可以看出,它起源於CreateBot類中的一個名爲_stream_sensors_worker的函數。還有一個叫做_test_sensor_streaming的函數,你也可以嘗試從_stream_sensors_worker得到一些調試信息。