搜索代码

课程 第6课,共10课:使用树莓派Pico 4WD智能车套件控制直流电机

本课是……的一部分: Raspberry Pi Pico 四驱智能车

课程 第6课,共10课:使用树莓派Pico 4WD智能车套件控制直流电机

本项目指南基于Robojax Raspberry Pi Pico智能车课程的第六课。在本节课中,您将学习如何集成舵机和超声波传感器,为您的四驱车创建一个智能避障系统。该项目不仅仅是让车在检测到物体时停下来,而是将您的车转变为一个迷你自主机器人,能够主动扫描周围环境,判断最清晰的路径,并绕过障碍物导航。

这不仅仅是理论练习;它是构建更复杂机器人技术的基础项目。以下是这种避障逻辑的一些实际应用:

  • 自主探索机器人:构建一个无需任何遥控即可自行在房间或迷宫中导航的机器人。
  • 智能吸尘器:使用相同的逻辑创建一个简单的机器人吸尘器,在清洁地板时能够避开家具和墙壁。
  • 安保巡逻机器人:编程让车巡逻周边区域,并使用超声波传感器检测并绕过意外物体。
  • 教育机器人平台:以此为基础,实验更高级的路径规划算法和传感器融合技术。

核心概念是使用舵机旋转超声波传感器,充当“雷达”,从左到右扫描区域。通过测量不同角度的距离,车可以构建其周围环境的即时地图,并决定前进、左转或右转以找到清晰的路径(视频中02:47处)。

硬件/组件

本项目基于SunFounder Raspberry Pi Pico 4WD智能车套件构建。本课使用的关键组件包括:

  • Raspberry Pi Pico开发板
  • 带电机的4WD智能车底盘
  • 电机驱动板(包含在套件中)
  • 超声波传感器(HC-SR04类型)
  • 舵机
  • 电池组

接线指南

视频中提到,该套件附带完整的文档、分步说明和接线图。舵机和超声波传感器的接线通常连接到电机驱动板,该板整合了Pico的连接。

请参考下图了解您套件的具体引脚连接。

代码解释

视频重点讲解了obstacle_avoid.py文件中的逻辑。虽然完整代码随套件提供,但本课重点介绍了控制车行为的用户可配置参数。这些是您可能希望调整以优化机器人性能的变量。

在主程序顶部,您会找到定义车行为的关键设置(视频中13:07处):

# 避障设置
RADAR_REFERENCE = 20  # 视为障碍物的距离(厘米)
STEP_ANGLE = 10       # 每次扫描步骤舵机移动的度数
FORWARD_SPEED = 30    # 前进时的电机速度
TURN_SPEED = 50       # 转弯时的电机速度
FORWARD_SCAN_ANGLE = 50  # 快速向前扫描的度数
  • RADAR_REFERENCE:这是最关键的设置。它定义了最小安全距离(以厘米为单位)。如果超声波传感器检测到物体距离小于此值,车会将其视为“危险”并启动避障程序(视频中22:03处)。
  • STEP_ANGLE:这决定了雷达扫描的分辨率。较小的值(例如10度)使扫描更精确但更慢。较大的值使其更快但细节较少。
  • FORWARD_SPEED和TURN_SPEED:这些是控制电机功率的PWM值(0-100)。您可以调整这些值来改变车前进的速度和转弯的快慢(视频中13:33处)。
  • FORWARD_SCAN_ANGLE:避开障碍物后,车会执行一次快速扫描以确保前方路径畅通。此变量设置该扫描的角度。值为50表示它相对于中心扫描从-25度到+25度(视频中13:40处)。

现场项目/演示

在视频中,讲师分阶段演示了该项目。首先,他运行一个简单测试来展示超声波传感器如何测量距离并将值打印到shell中,确认“0”代表障碍物,“1”代表清晰路径(视频中03:48处)。

然后他解释了决策流程图,这是操作的核心。车使用一个名为get_direction()的函数来分析雷达数据。该函数将扫描数据分割成开放空间段,并识别最宽的一段。根据这个宽路径所在的位置(左侧、中央或右侧),车决定转向哪个方向(视频中11:19处)。

最后,讲师设置了一个障碍迷宫,并演示车在其中导航。您可以看到车左右扫描,如果卡住则后退,最终在没有任何手动控制的情况下找到穿过障碍物的路径(视频中22:53处)。

章节

  • [00:00] Pico Car避障功能简介
  • [01:31] 套件特性与文档概览
  • [02:47] 避障功能演示
  • [03:48] 超声波传感器与距离测量测试
  • [07:45] 避障算法与流程图解析
  • [12:49] 主避障代码分析
  • [15:50] 实时代码演示与数据解读
  • [18:11] 深入探讨方向获取与转向逻辑
  • [22:53] 障碍迷宫最终实车测试
没有附加代码。

资源与参考

尚无可用资源。

文件📁

没有可用的文件。