Raspberry Pi 機器人P控制循跡 – 使用BrickPi轉接板

這是一台使用Raspberry Pi 為核心的循跡機器人, 使用Dexter Industries 公司所生產的 BrickPi 轉接板來接上樂高NXT的感測器與馬達。請看影片中的機器人使用了比例控制方法,所以動作相當順暢:

這是我們1/24 25兩天研習時,現場demo機器人的照片。當然您可以直接從 Raspberry Pi 的 GPIO腳位來控制馬達與感測器,一樣可以做出機器人而無需使用 BrickPi 轉接板。之所以使用它當然是因為樂高零件的方便性囉,當然 Dexter Industries 的周邊感測器也都有現成的函式庫可以用,端看您如何選擇囉

2014-01-24 17.17.21

看完也想玩玩看嗎?   歡迎報名 14/02/23 Raspberry Pi 單板電腦整合機器人研習營

延伸閱讀:

[開箱文]BrickPI – 讓 Raspberry Pi 接上您的樂高機器人感測器與馬達

BrickPi_用RasberryPi操控NXT

以下為Python程式碼:

from BrickPi import *

BrickPiSetup()

BrickPi.MotorEnable[PORT_A] = 1
BrickPi.MotorEnable[PORT_B] = 1

BrickPi.SensorType[PORT_1] = TYPE_SENSOR_LIGHT_ON

BrickPiSetupSensors()

while True:

result = BrickPiUpdateValues()

if not result:
light = BrickPi.Sensor[PORT_1]
print light

white = 476
black = 626
mid = (white + black)/2
last_power = 255*0.7 #70% of motor power
M = last_power/(black – white)

power_A = int((light – mid)*M + last_power)
power_B = int((light – mid)*(-1)*M + last_power)

if(power_A >= 255):
power_A = 255

elif(power_A <= -255):
power_A = -255

if(power_B >= 255):
power_B = 255

elif(power_B <= -255):
power_B = -255

print str(power_A) + “|” + str(power_B)

BrickPi.MotorSpeed[PORT_A] = power_A
BrickPi.MotorSpeed[PORT_B] = power_B

BrickPiUpdateValues()

 

 

About 偉和 (21 Articles)

單純的初音迷,世界以初音為中心

Leave a comment

Your email address will not be published.


*