2010-11-21 19 views
0

Bir iRobot Create algılayıcısını pyserial ile akışlandırmaya çalışıyorum. Ben CreateBot fonksiyonu ile openinterface.py, kurulum bot değişkeni ithal ve sonraGövde sensörleri psilasyoyla nasıl yayınlanır?

bot.stream_sensors (6) Sonra

Ben bu hatayı almaya çağırır - "! Aralık dışında Akış iplik hata tanımlama grubu endeksi" Tek nedenli işlevi 6 ile çağırıyorum çünkü kullandığım örnek budur. Ayrıca 6'ya kadar olan stream_sensors (0), stream_sensors (1) 'i de denedim. 6'dan küçük herhangi bir sayı ile aynı hatayı artırarak "Geçersiz sensör kimliği!". Parametre nedir? Akış yapmak istediğim belirli bir algılayıcı mı (ve eğer öyleyse, numarayı nasıl alabilirim)? Herhangi bir yardım takdir edilecektir.

+1

Sorunuzu, kullanmakta olduğunuz kodu içerecek şekilde düzenler misiniz? – spade78

cevap

1

openinterface.py kaynağına bakarak, "Yasak algılayıcı kimliği" hatasını aldığınız anlaşılıyor; çünkü stream_sensors() işlevini çağırdığınızda kullandığınız belirli ID değeri, bilinen algılayıcı kimliğine sahip bir sözlükle eşleşmiyor. Sensör Kimliği sözlük sınıfına SensorPacketDecoderAPI belirtilir: "! ... Akış iplik hatasını", emin değilim sen alıyoruz sebeplerinden gelince

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} 

, tüm anlarım Kod aracılığıyla benim bakış açımdan, CreateBot sınıfının içinde _stream_sensors_worker adlı bir işlevden kaynaklanmasıdır. Ayrıca _stream_sensors_worker'dan bazı hata ayıklama bilgilerini almaya çalışabileceğiniz _test_sensor_streaming adlı bir işlev de vardır.

İlgili konular