扫我~扫我~

获取更多资讯

    查看: 130|回复: 8

    【Raspberry Pi 3 小车】9、侦测避障

    [复制链接]

    116

    主题

    486

    帖子

    1万

    积分

    护林员

    Rank: 9Rank: 9Rank: 9

    积分
    14064
    发表于 2016-12-2 13:28 | 显示全部楼层 |阅读模式
    1、实验介绍
    (1)实验目的:利用超声波传感器实现小车自主侦测避障运动
    (2)实验环境
    硬件环境:基于Raspberry Pi 的4WD移动平台、超声波传感器
    软件环境:putty SSH 登录软件,FileZilla FTP文件传输工具,Notepad++文本编辑器
    (3)使用接口分析
    Raspberry Pi 电机驱动板要使用的接口:电机接口A、电机接口B、超声波URF接口
    Raspberry Pi 控制器要使用到的GPIO接口:
    • A口方向控制接口GPIO25
    • A口使能控制接口GPIO17
    • B口方向控制接口GPIO4
    • B口使能控制接口GPIO10
    • 超声波传感器INPUT接口GPIO23
    • 超声波传感器OUTPUT接口GPIO18
    (4)硬件连接
    本例程中仅使用了超声波传感器,所以直接将超声波传感器插入到Raspberry Pi 电机驱动板的超声波接口即可,如图所示:
    图片1.png
    2、例子程序
    使用文本编辑器,输入下列代码,并保存为“robot9.py”文件,使用FTP传输工具,将程序传送到Raspberry Pi控制器,Pi目录下的alsrobot文件夹中。
    1. import RPi.GPIO
    2. import time

    3. directionA = 25
    4. EA = 17
    5. directionB = 4
    6. EB = 10
    7. INPUT = 23
    8. OUTPUT = 18

    9. RPi.GPIO.setmode(RPi.GPIO.BCM)
    10. RPi.GPIO.setup(EA,RPi.GPIO.OUT)
    11. RPi.GPIO.setup(directionA,RPi.GPIO.OUT)
    12. RPi.GPIO.setup(EB,RPi.GPIO.OUT)
    13. RPi.GPIO.setup(directionB,RPi.GPIO.OUT)
    14. RPi.GPIO.setup(INPUT,RPi.GPIO.OUT)
    15. RPi.GPIO.setup(OUTPUT,RPi.GPIO.IN)

    16. def back():
    17.         RPi.GPIO.output(EA,True)
    18.         RPi.GPIO.output(directionA,False)
    19.         RPi.GPIO.output(EB,True)
    20.         RPi.GPIO.output(directionB,False)

    21. def forward():
    22.         RPi.GPIO.output(EA,True)
    23.         RPi.GPIO.output(directionA,True)
    24.         RPi.GPIO.output(EB,True)
    25.         RPi.GPIO.output(directionB,True)

    26. def right():
    27.         RPi.GPIO.output(EA,True)
    28.         RPi.GPIO.output(directionA,True)
    29.         RPi.GPIO.output(EB,True)
    30.         RPi.GPIO.output(directionB,False)

    31. def left():
    32.         RPi.GPIO.output(EA,True)
    33.         RPi.GPIO.output(directionA,False)
    34.         RPi.GPIO.output(EB,True)
    35.         RPi.GPIO.output(directionB,True)
    36.         
    37. def stop():
    38.         RPi.GPIO.output(EA,False)
    39.         RPi.GPIO.output(directionA,False)
    40.         RPi.GPIO.output(EB,False)
    41.         RPi.GPIO.output(directionB,False)

    42. def checkdist():
    43.         RPi.GPIO.output(INPUT,True)
    44.         time.sleep(0.000015)
    45.         RPi.GPIO.output(INPUT,False)
    46.         while not RPi.GPIO.input(OUTPUT):
    47.                         pass
    48.         t1 = time.time()
    49.         
    50.         while RPi.GPIO.input(OUTPUT):
    51.                         pass
    52.         t2 = time.time()
    53.         return (t2-t1)*340/2 * 100
    54. #time.sleep(0.5)
    55.                
    56. try:
    57.         while True:
    58.                 forward()
    59.                 distance = checkdist()                        
    60.                 if distance < 35:        
    61.                         left()
    62.                         time.sleep(0.3)
    63.                         val_left = checkdist()
    64.                         time.sleep(0.5)
    65.                         right()
    66.                         time.sleep(1.3)
    67.                         val_right = checkdist()
    68.                         time.sleep(0.5)
    69.                         if val_left < val_right:
    70.                                 forward()
    71.                                 time.sleep(0.1)
    72.                         elif val_left > val_right:
    73.                                 left()
    74.                                 time.sleep(1)
    75.                 time.sleep(0.5)
    76.                         
    77. except KeyboardInterrupt:
    78.         pass
    79. RPi.GPIO.cleanup()
    80. RPi.GPIO.setmode(RPi.GPIO.BCM)
    81. RPi.GPIO.setup(EA,RPi.GPIO.OUT)
    82. RPi.GPIO.setup(EB,RPi.GPIO.OUT)
    83. RPi.GPIO.output(EA,False)
    84. RPi.GPIO.output(EB,False)
    复制代码
    3、程序执行
    游客,如果您要查看本帖隐藏内容请回复





    回复

    使用道具 举报

    0

    主题

    4

    帖子

    10

    积分

    小松籽

    Rank: 1

    积分
    10
    发表于 2016-12-17 23:50 | 显示全部楼层
    厉害  学习学习
    回复 支持 反对

    使用道具 举报

    0

    主题

    10

    帖子

    51

    积分

    大松籽

    Rank: 2

    积分
    51
    发表于 2016-12-22 14:56 | 显示全部楼层
    1234567890
    回复 支持 反对

    使用道具 举报

    0

    主题

    9

    帖子

    25

    积分

    小松籽

    Rank: 1

    积分
    25
    发表于 2017-1-3 16:26 | 显示全部楼层
    学习树莓派
    回复 支持 反对

    使用道具 举报

    0

    主题

    18

    帖子

    67

    积分

    大松籽

    Rank: 2

    积分
    67
    发表于 2017-1-4 08:29 | 显示全部楼层
    学习中。。。。。。。
    回复

    使用道具 举报

    0

    主题

    2

    帖子

    6

    积分

    小松籽

    Rank: 1

    积分
    6
    发表于 2017-1-4 08:54 | 显示全部楼层
    学习                                
    回复 支持 反对

    使用道具 举报

    0

    主题

    5

    帖子

    35

    积分

    小松籽

    Rank: 1

    积分
    35
    发表于 2017-1-8 10:11 | 显示全部楼层
    学习了.
    回复

    使用道具 举报

    0

    主题

    4

    帖子

    31

    积分

    小松籽

    Rank: 1

    积分
    31
    发表于 2017-1-11 18:17 | 显示全部楼层
    学习一下
    回复

    使用道具 举报

    0

    主题

    6

    帖子

    31

    积分

    小松籽

    Rank: 1

    积分
    31
    发表于 2017-1-19 19:39 | 显示全部楼层
    666666666666666666666666666
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表