簡體   English   中英

pi2go - 將機器人移動 90º 或僅向前移動 10 厘米並停止?

[英]pi2go - move robot in 90º or move foward just 10 cm and stop?

我買了一個 pi2go 機器人,它很棒,但我有一些問題,我想制作機器人

  1. 向左/向右旋轉 90º 度並停止
  2. 向前/向后移動 10 厘米並停止

我想做4個腳本蟒蛇只是要做到這一點像left.pyforward.py

在 pi2go 幫助文件中有一個腳本可以讓你用鍵盤控制機器人,但我不希望我只想調用例如sudo python left.py一次然后退出。

這是 pi2go 示例:

import pi2go, time

import sys
import tty
import termios

UP = 0
DOWN = 1
RIGHT = 2
LEFT = 3

def readchar():
    fd = sys.stdin.fileno()
    old_settings = termios.tcgetattr(fd)
    try:
        tty.setraw(sys.stdin.fileno())
        ch = sys.stdin.read(1)
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
    if ch == '0x03':
        raise KeyboardInterrupt
    return ch

def readkey(getchar_fn=None):
    getchar = getchar_fn or readchar
    c1 = getchar()
    if ord(c1) != 0x1b:
        return c1
    c2 = getchar()
    if ord(c2) != 0x5b:
        return c1
    c3 = getchar()
    return ord(c3) - 65  # 0=Up, 1=Down, 2=Right, 3=Left arrows

speed = 30

pi2go.init()

try:
    while True:
        keyp = readkey()
        if keyp == 'w' or keyp == UP:
            pi2go.forward(speed)
            print 'Forward', speed
        elif keyp == 's' or keyp == DOWN:
            pi2go.reverse(speed)
            print 'Backward', speed
        elif keyp == 'd' or keyp == RIGHT:
            pi2go.spinRight(speed)
            print 'Spin Right', speed
        elif keyp == 'a' or keyp == LEFT:
            pi2go.spinLeft(speed)
            print 'Spin Left', speed
        elif keyp == '.' or keyp == '>':
            speed = min(100, speed+10)
            print 'Speed+', speed
        elif keyp == ',' or keyp == '<':
            speed = max (0, speed-10)
            print 'Speed-', speed
        elif keyp == ' ':
            pi2go.stop()
            print 'Stop'
        elif ord(keyp) == 3:
            break


    pi2go.cleanup()

但我只想創建一個執行此操作並退出的腳本,例如:

pi2go.spinLeft(100) 
pi2go.stop()

我認為你的問題是你沒有給電機任何時間轉動。 如果我查看您的代碼片段,您是在告訴電機向左旋轉,然后立即停止電機。

嘗試執行以下操作:

import time
import pi2go

pi2go.spinLeft(100)
time.sleep(1)
pi2go.stop()

給電機時間來真正做他們的事情。

您遺漏了初始化命令pi2go.init() ,看起來您也遺漏了import pi2go模塊的最重要的import語句。

這應該有效:

import pi2go

pi2go.init()
pi2go.spinLeft(100) 
pi2go.stop()

pi2go.cleanup()

顯然,我無法測試這段代碼……除非你給我買一個機器人。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM