机器人 树莓派 自闭症_已制成树莓派控制六足机器人,参考树莓派实验室,具体学习及制作过程见附件...

该博客介绍了如何使用树莓派控制一个六足机器人,包括前进、后退、左转、右转等操作。同时,它包含了自动模式下检测障碍物并避开的功能。源代码中使用了RPi.GPIO和pigpio库来实现伺服电机的控制。
摘要由CSDN通过智能技术生成

import RPi.GPIO as GPIO

import pigpio

import time

GPIO.setmode(GPIO.BCM)

GPIO.setwarnings(False)

tilt = 4

br = 21

bl = 6

trig = 23

echo = 24

GPIO.setup(trig, GPIO.OUT)

GPIO.setup(echo, GPIO.IN)

pi = pigpio.pi()

def backward():

pi.set_servo_pulsewidth(tilt, 800)

time.sleep(0.15)

pi.set_servo_pulsewidth(bl, 800)

time.sleep(0.15)

pi.set_servo_pulsewidth(tilt, 2000)

time.sleep(0.15)

pi.set_servo_pulsewidth(br, 1800)

time.sleep(0.15)

pi.set_servo_pulsewidth(tilt, 1500)

time.sleep(0.15)

pi.set_servo_pulsewidth(bl, 1500)

time.sleep(0.15)

pi.set_servo_pulsewidth(br, 1500)

time.sleep(0.15)

return;

def forward():

pi.set_servo_pulsewidth(tilt, 800)

time.sleep(0.15)

pi.set_servo_pulsewidth(bl, 1800)

time.sleep(0.15)

pi.set_servo_pulsewidth(tilt, 2000)

time.sleep(0.15)

pi.set_servo_pulsewidth(br, 800)

time.sleep(0.15)

pi.set_servo_pulsewidth(tilt, 1500)

time.sleep(0.15)

pi.set_servo_pulsewidth(bl, 1500)

time.sleep(0.15)

pi.set_servo_pulsewidth(br, 1500)

time.sleep(0.15)

return;

def left():

pi.set_servo_pulsewidth(tilt, 800)

time.sleep(0.15)

pi.set_servo_pulsewidth(bl, 1800)

time.sleep(0.15)

pi.set_servo_pulsewidth(tilt, 2000)

time.sleep(0.15)

pi.set_servo_pulsewidth(br, 1800)

time.sleep(0.15)

pi.set_servo_pulsewidth(tilt, 1500)

time.sleep(0.15)

pi.set_servo_pulsewidth(bl, 1500)

time.sleep(0.15)

pi.set_servo_pulsewidth(br, 1500)

time.sleep(0.15)

return;

def right():

pi.set_servo_pulsewidth(tilt, 800)

time.sleep(0.15)

pi.set_servo_pulsewidth(bl, 800)

time.sleep(0.15)

pi.set_servo_pulsewidth(tilt, 2000)

time.sleep(0.15)

pi.set_servo_pulsewidth(br, 800)

time.sleep(0.15)

pi.set_servo_pulsewidth(tilt, 1500)

time.sleep(0.15)

pi.set_servo_pulsewidth(bl, 1500)

time.sleep(0.15)

pi.set_servo_pulsewidth(br, 1500)

time.sleep(0.15)

return;

def stop():

pi.set_servo_pulsewidth(tilt, 0)

time.sleep(0.15)

pi.set_servo_pulsewidth(bl, 0)

time.sleep(0.15)

pi.set_servo_pulsewidth(br, 0)

time.sleep(0.15)

return

def obstacleDetected():

backward()

backward()

backward()

backward()

backward()

right()

right()

right()

return

def turnHead():

pi.set_servo_pulsewidth(head, 700)

time.sleep(0.5)

pi.set_servo_pulsewidth(head, 2100)

time.sleep(0.5)

pi.set_servo_pulsewidth(head, 1500)

time.sleep(0.5)

return

def autoMode():

print ("Running in auto mode!")

turnHead()

time.sleep(0.5)

GPIO.output(trig, 0)

time.sleep(0.5)

GPIO.output(trig,1)

time.sleep(0.00001)

GPIO.output(trig,0)

while GPIO.input(echo) == 0:

pulse_start = time.time()

while GPIO.input(echo) == 1:

pulse_end = time.time()

pulse_duration = pulse_end - pulse_start

distance = pulse_duration * 17150

distance = round(distance, 2)

if distance > 1 and distance < 35:

obstacleDetected()

else:

forward()

forward()

forward()

pi.set_servo_pulsewidth(head, 2100)

time.sleep(0.5)

return

def manualMode():

move = str(sys.argv[2])

if move == "F" or move == "f":

print("Moving forward!")

forward()

elif move == "B" or move == "b":

print("Moving backward!")

backward()

elif move == "L" or move == "l":

print("Moving left!")

left()

elif move == "R" or move == "r":

print("Moving right!")

right()

else:

print("Invalid argument!")

return

def main():

opt = str(sys.argv[1])

if opt == "A" or opt == "a":

autoMode()

elif opt == "M" or opt == "m":

manualMode()

return

while True:

main()

GPIO.cleanup()

pi.stop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值