A. 求助樹莓派避障小車,遇到 python 了
小白第一次上手 python ,用樹莓派,紅外和超聲波感測器做智障小車。 編譯錯誤:
RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(trip,GPIO.OUT)
Traceback (most recent call last):
File "xiaochetest.py", line 82, in <mole>
fwd()
TypeError: fwd() takes exactly 1 argument (0 given)
下面是小車的代碼:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
m1_fwd = 12
m1_rev = 11
m2_fwd = 13
m2_rev = 15
red_left = 07
red_right = 16
trip = 38
echo = 37
def init():
GPIO.setup(m1_fwd,GPIO.OUT)
GPIO.setup(m1_rev,GPIO.OUT)
GPIO.setup(m2_fwd,GPIO.OUT)
GPIO.setup(m2_rev,GPIO.OUT)
def stop(sleep_time):
GPIO.output(m1_fwd,False)
GPIO.output(m1_rev,False)
GPIO.output(m2_fwd,False)
GPIO.output(m2_rev,False)
time.sleep(sleep_time)
GPIO.cleanup()
def fwd(sleep_time):
GPIO.output(m1_fwd,GPIO.HIGH)
GPIO.output(m1_rev,GPIO.LOW)
GPIO.output(m2_fwd,GPIO.HIGH)
GPIO.output(m2_rev,GPIO.LOW)
time.sleep(sleep_time)
GPIO.cleanup()
def rev(sleep_time):
GPIO.output(m1_fwd,GPIO.LOW)
GPIO.output(m1_rev,GPIO.HIGH)
GPIO.output(m2_fwd,GPIO.LOW)
GPIO.output(m2_rev,GPIO.HIGH)
time.sleep(sleep_time)
GPIO.cleanup()
def right(sleep_time):
GPIO.output(m1_fwd,GPIO.HIGH)
GPIO.output(m1_rev,GPIO.LOW)
GPIO.output(m2_fwd,False)
GPIO.output(m2_rev,False)
time.sleep(sleep_time)
GPIO.cleanup()
def left(sleep_time):
GPIO.output(m1_fwd,False)
GPIO.output(m1_rev,False)
GPIO.output(m2_fwd,GPIO.HIGH)
GPIO.output(m2_rev,GPIO.LOW)
time.sleep(sleep_time)
GPIO.cleanup()
def get_distance():
GPIO.setup(trip,GPIO.OUT)
GPIO.setup(echo,GPIO.IN)
GPIO.output(trip,GPIO.HIGH)
time.sleep(0.000015)
GPIO.output(trip,GPIO.LOW)
while not GPIO.input(echo):
pass
t1 = time.time()
while GPIO.input(echo):
pass
t2 = time.time()
return (t2-t1)*34300/2
def turnaround():
GPIO.setup(red_left,GPIO.IN)
GPIO.setup(red_right,GPIO.IN)
while GPIO.input(red_left) and GPIO.input(red_right)==0:
rev()
if GPIO.input(red_left)==1:
left(1)
else:
right(1)
GPIO.cleanup()
while True:
distance = get_distance()
time.sleep(0.5)
if distance > 20:
fwd()
elif distance == 20:
stop()
else:
stop()
turnaround()
def fwd(sleep_time)
if distance > 20:
fwd()
調用 fwd 的時候要傳參數啊,錯誤提示說的比較清楚了。
B. 樹莓派中 哪裡可以修改源碼改跳過cpu判斷,怎麼改
樹莓派應該算是一個微型台式機。
它用的雖然是arm的CPU,不過支持通用的操作系統,而不是嵌入式的操作系統。
當然也可以安裝android之類的操作系統。
嵌入式開發板現在主要開發板用的還是自己定製的操作系統。
如果有一個應用需要在arm的CPU上運行,可以試著用它來玩玩。
不過通常開發特定的嵌入式系統,都會自己定製嵌入式開發板。
如果不會做,可以找一些專門做這種開發板小廠子定。
10年用的板子基本上都沒有操作系統,全部自己寫的C。
後來用vmware。
現在似乎用android的比較多。
也可以使用嵌入式linux。
使用QT作為圖形界面。
比如有些導航儀。
手機開發有一段時間用MTK。
現在基本上都android了。
C. 如何在樹莓派上從源代碼構建Golang
第一步是安裝Mercurial,這是Google用來管理Go源代碼的版本控制系統。
sudo apt-get install -y mercurial
對於Mercurial系統來說,其主要的命令行介面是hg,有了這個你就能下載Golang的源代碼。下面的命令將把構建Golang所必須的源代碼下載到/usr/local/go目錄中去:
sudo hg clone -u default
這一過程大約需要10分鍾,取決於你的網速有多快了。一旦下載完成,你就可以開始構建的過程了。用cd命令將當前目錄修改為/usr/local/go/src,然後開始構建過程:
sudo ./all.bash
構建過程中會在終端上輸出很多內容,大部分都是一些信息提示。整個構建過程大概需要90分鍾到2小時。
構建進程會提示我們將Go的二進制包所在的目錄添加到系統PATH中去。要做到這一點你需要編輯.profile文件,每次你創建一個新的shell會話時,Bash都會處理這個文件。用cd命令將你的當前目錄切換回home,使用nano編輯器編輯.profile文件:
nano .profile
在文件最底部,添加如下這行:
export PATH=$PATH:/usr/local/go/bin
鍵入CTRL + X來退出nano編輯器,然後輸入Y來確定編輯過的文件已保存。按下ENTER鍵來保持當前文件名不變。
你需要退出當前的終端然後重新開啟另一個(如果你用的是桌面環境),或者也可以登出再登入(如果你用的是純命令行界面)。
要驗證Go是否安裝正確,可以創建一個名為hello.go的文件,然後寫下如下代碼(著名的hello world又來了):
package main
import "fmt"
func main() {
fmt.Printf("Hello Make Tech Easier!\n")
}
要運行它,請在終端上輸入:
1
go run hello.go
程序的輸出結果是一行文本:Hello Make Tech Easier!
D. 樹莓派自動泊車,有人做嗎
可以的,樹莓派跑ROS就可以了,有很多源碼的
E. ai小車是什麼
AI 智能機器人小車是一款基於機器智能、深度學習框架 Tensorflow 開發的 AI 巡線機器人小車,小車裝配有攝像頭,使用樹莓派作為主控平台,支持手機無線遙控、實時視頻傳.