2010-12-14 4 views
0

J'ai essayé de travailler avec iCreate, roomba sans aspirateur connecté à l'aide de Python 2.7.1 et j'ai créé un code de travail. Lorsque je tape chaque ligne à la main, cela fonctionne parfaitement, mais lorsque je mets tout le code ensemble, il est bloqué et ne fonctionne pas.Problèmes d'exécution de code avec Python IDLE

import Create 
import VideoCapture 
from PIL import Image, Imagechops 
import os 
robot = Create.Create(3) 
camera = VideoCapture.Device(0, 1) 
(rgb_red, rgb_green, rgb_blue) = (0, 0, 0) 
red = Image.open("Red.jpeg") 
(redr, redg, redb) = red.getpixel((0, 0)) 
blue = Image.open("Blue.jpeg") 
(bluer, blueg, blueb) = blue.getpixel((0, 0)) 
green = Image.open("Green.jpeg") 
(greenr, greeng, greenb) = green.getpixel((0, 0)) 
yellow = Image.open("Yellow.jpeg") 
(yellowr, yellowg, yellowb) = yellow.getpixel((0, 0)) 
camera.getImage(0, 0, 'tl') 
camera.saveSnapshot('CurrentPicture.jpeg', 0, 0, 'tl') 
pic = Image.open("CurrentPicture.jpeg") 
(rgb_red, rgb_green, rgb_blue) = pic.getpixel((0, 0)) 
os.remove("C:\Python27\CurrentPicture.jpeg") 
while 0 == 0: 
    if((rgb_red - redr) < (rgb_green - greeng)) and ((rgb_red - redr) < (rgb_blue - blueb)): 
     robot.stop() 
    elif((rgb_blue - blueb) < (rgb_green - greeng)) and ((rgb_blue - blueb) < (rgb_red - redr)): 
     robot.turn(45, 40) 
    elif((rgb_green - greeng) < (rgb_red - redr)) and ((rgb_green - greeng) < (rgb_blue - blueb)): 
     robot.move(50, 50) 
    camera.saveSnapshot('CurrentPicture.jpeg', 0, 0, 'tl') 
    pic = Image.open("CurrentPicture.jpeg") 
    (rgb_red, rgb_green, rgb_blue) = pic.getpixel((0, 0)) 
    os.remove("C:\Python27\CurrentPicture.jpeg")  

Y a-t-il des problèmes avec IDLE pour l'exécution de plusieurs lignes et juste ne fonctionne pas, je ne suis pas très sûr de ce que je devrais demander. C'est juste que rien ne se passe quand je cours tout le bloc ensemble mais ligne par ligne entrant dans les travaux.

-Toute aide est grandement appréciée.

+0

Où est la partie qui fait des choses? Ce code n'a pas de sortie. – nmichaels

+0

"en mettant tout le code ensemble, il se bloque et ne fonctionne pas"? Qu'est-ce que ça veut dire? S'il vous plaît soyez très précis sur ce que ** exactement ** vous avez fait. Qu'avez-vous tapé? Quelle commande avez-vous exécuté? Qu'avez-vous vu comme une réponse? –

Répondre

0
  1. Au lieu de cela, si coller le code dans IDLE, enregistrez-le dans un fichier, et l'exécuter comme ceci:

    python yourfile.py

  2. while 0 == 0: Vous pouvez while True: à la place.

  3. red = Image.open("Red.jpeg") (redr, redg, redb) = red.getpixel((0, 0)) est une façon très complexe de dire RED = (255, 0, 0)

+0

Le fichier et True sont de bonnes idées et je vais les essayer. La raison pour laquelle j'ai fait le long chemin est parce que ce n'est pas réellement 255, 0, 0 c'est en fait une feuille rouge de carton que j'utilise donc il doit se comparer à ces feuilles afin de déterminer la commande ou au moins c'est ce que j'essaie de faire. Merci pour la réponse. –

+0

Ah, je vois. Mais il est probablement préférable de sauvegarder ces valeurs une fois, au lieu de chaque fois que vous exécutez le programme. :-) –

Questions connexes