2010-11-21 55 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得到一些调试信息。