2010-11-21 4 views
0

pyserial로 iRobot Create의 센서를 스트리밍하려고합니다. 나는 CreateBot 기능 openinterface.py, 설치 봇 변수를 가져온 다음pyserial을 사용하여 봇 센서를 스트리밍하는 방법은 무엇입니까?

bot.stream_sensors (6) 다음

나는이 오류가 수신 전화 -! "범위를 벗어 스트리밍 스레드 오류 튜플 인덱스는"을 내가 6을 사용하여 함수를 호출하는 유일한 이유는 사용 된 예제에서 보았던 것이기 때문입니다. 나는 또한 최대 6 번까지 stream_sensors (0), stream_sensors (1)을 시도했다. 6보다 작은 숫자를 사용하면 "Illegal sensor id!"와 같은 오류가 발생한다. 매개 변수는 무엇입니까? 그것이 스트림하려는 특정 센서입니까? (그렇다면 숫자를 어떻게 얻습니까?) 어떤 도움을 주시면 감사하겠습니다.

+1

사용중인 코드를 포함하도록 질문을 편집 할 수 있습니까? – spade78

답변

1

stream_sensors()를 호출 할 때 사용하는 주어진 ID 값이 알려진 센서 ID가있는 사전과 일치하지 않기 때문에 openinterface.py 소스를 살펴보면 "잘못된 센서 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에서 디버그 정보를 얻을 수도 있습니다.

관련 문제