這是一台使用Raspberry Pi 為核心的循跡機器人, 使用Dexter Industries 公司所生產的 BrickPi 轉接板來接上樂高NXT的感測器與馬達。請看影片中的機器人使用了比例控制方法,所以動作相當順暢:
[youtube=http://youtu.be/qdDGpQBW0YA]這是我們1/24 25兩天研習時,現場demo機器人的照片。當然您可以直接從 Raspberry Pi 的 GPIO腳位來控制馬達與感測器,一樣可以做出機器人而無需使用 BrickPi 轉接板。之所以使用它當然是因為樂高零件的方便性囉,當然 Dexter Industries 的周邊感測器也都有現成的函式庫可以用,端看您如何選擇囉
看完也想玩玩看嗎? 歡迎報名 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()