课程购买链接:https://zyesr.xetslk.com/s/2n7Biy

*本课程不提供PPT, 课程资料请到课程目录第一章节获取

该课程已开通专门交流答疑区,点击这里,发帖提问交流

课程目的

每位机器人开发者都曾有“从零开发一款智能机器人”的梦想,唯一的区别就在于你是否付诸行动。

 

本课程继《从零开发智能小车》,将给大家介绍四轮机器人的一些特点和开发实例。我们将通过一系列不同主题内容的讲解,带领大家从零设计并开发一款智能小车,知识体系横跨结构、电气、嵌入式、ROS、人工智能等诸多领域,让大家快速了解机器人设计的完整路径,掌握机器人开发的核心方法。

本课程总共4大部分,总时长2.8h,将通过一系列实例来给大家介绍关于机器人开发的一些方法,并给出一些演示过程带大家实际操作智能机器人,希望通过这门课程的学习,大家能够对智能小车有一个明确的认识和开发思路。

课程内容

如何设计一款四轮智能小车

此部分共分为五个小节,通过这个部分的学习,我们将了解机器人的概念和组成,对机器人的整体设计有一个明确的思路,然后通过机械结构、驱动系统、传感系统、控制系统四大组成部分,展开介绍设计一款智能小车的基本思路。

通过这一部分的学习,我们希望大家脑海中能够对智能小车有一个明确的认识和开发思路,在之后的介绍中我们再逐个击破。

 

1.1 总体设计思路

 

从控制的角度来讲,机器人可以划分为图中四大组成部分,分别是:传感系统、执行机构、驱动系统和控制系统。

2.PNG

3.PNG

1.2 机械结构设计

机器人实例

4.png

5.png

以上述机器人为例,直观看上去,似乎这个小车并不复杂。

 

底盘是整个小车的底座,通过螺丝安装了四个个车轮和配套的电机以及舵机,用来驱动小车运动。

底盘上第一层是电池,相对比较重,尽量放在下边,可以让小车的中心靠下,第二层则用来放置主要的传感器和控制器板卡,这样可以很好的隐藏两层板的叠加同时让板卡更加安全。

小车底盘的前端,为了安装相机,我们要设计一个安装的支架,一侧用螺丝固定在底盘上,另外一侧可以固定相机,最好还可以调节相机可视角度。

第三层则有一个LED显示屏以及一些通孔,可以用来放置一些方便调试以及需要一定高度的传感器如雷达等。

此外在车体两侧还放置了RGB灯带,可以让小车看起来更加炫酷。

这就是智能小车的机械结构,大家可以根据自己选择的各种零部件尺寸。

对于智能小车而言,常见的有三种形态运动方式,差速运动模式、全向轮运动模式、阿克曼运动模式,具体内容视频里会一一介绍。

1.3 驱动系统设计

6.png

之前我们有介绍过,机器人的驱动系统可以分为这几种方式:

电机驱动肯定是需要的,我们得让小车的电机转起来;

传感驱动也是需要的,小车里的里程计、IMU都要驱动之后才能获取数据。

还有外设驱动,作为下位机的控制器板卡和上位机应用处理器之间,需要通过串口传输数据,这需要串口驱动,我们还希望了解小车的一些状态,一般会在控制器板卡上设计显示屏或者蜂鸣器来做人机交互,这也需要IO的驱动。

这样看来,驱动系统需要支持的设备不少,它是智能小车的底层基础,强壮稳定的驱动系统是未来上层应用开发的必要保障,大家在设计开发中千万不要忽视。

7.jpg

1.4 传感系统设计

8.png

智能小车还需要去感知自身和环境的状态,需要哪些传感器,它们的原理又是什么样的?

传感系统分为内部和外部之分;

内部传感器主要是电机上的编码器,和控制板卡上的IMU。

外部传感器主要是前端的相机。

里程计,是移动机器人普遍使用的传感器。

13.png

1.5 控制系统设计

9.png

硬件选择

智能小车的身体/肌肉都有了,接下来我们来看一下智能小车的大脑,之前我们介绍的驱动系统、传感系统,最终都会和控制系统这个大脑中枢产生联系。

一般情况下,我们会在控制系统中完成这些功能,这也是我们进行机器人开发的主战场,后边使用的ROS就是这个战场上我们使用的主要武器。

控制系统中的软件部门该如何实现呢?

运动控制器作为驱动系统的核心,负责控制电机,完成对机器人自身状态的检测。这其中各项功能的实现,都是嵌入式开发的过程,会用到定时器、IO、PWM、PID等很多概念的原理和实现。

控制系统是智能小车的大脑,运行自主导航、地图构建、图像识别等功能,同时也会兼具一小部分传感器驱动的任务,通过USB采集外部相机和雷达的信息。

这个控制系统和运动控制器之间的通讯连接,通过串口来完成的。

为了方便机器人的操控,我们还会在机器人之外,使用自己的笔记本连接机器人进行编码和控制。

在整个这个大框架中,虚线框中的应用功能都是基于ROS2和TogetheROS环境进行开发实现,运动控制器中的功能是基于嵌入式开发来实现,从这张图中,大家也可以更好的理解ROS开发与嵌入式开发的关系,两者各司其职,一个偏向于上层应用,另一个偏向于底层控制,共同实现机器人的智能化功能。

如何从零设计并开发一款智能小车呢?

我们的目标是要做出这样一台智能小车,拆解之后由这些部件组成,可以划分为执行机构、驱动系统、传感系统、控制系统四大组成部分,我们就会继续沿着这个思路,详细展开每一个部分的设计与实现。

如何开发智能小车的驱动器软件

2.1 驱动器软件总体架构

10.png

11.png

基于过往的一些开发经验总结而来的针对机器人系统,我们需要从哪些部分进行开发?

抛开机械结构等外形,从底向上看是硬件部分,硬件我们可以分成两个部分,分别是嵌入式板卡和外设。嵌入式板卡又可以分为MCU和开发板,外设则是接到两个板卡上的一些机构,例如电机、相机、雷达等;往上看是驱动单元,驱动单元是针对硬件板卡进行设计的,它需要使能MCU和开发板的各个外设,并为后续的开发提供坚实稳定的基础。再往上是中间件,ROS/ROS2就是基于Linux下进行操作的一个中间件,我们可以基于这样的中间件更加便捷的开发机器人的各种功能,而工具很好理解,就是将一系列的功能打包起来,变成便捷易操作同时功能十分强大的面板或者指令了;

所以,其实驱动器软件的上下游是硬件外设和中间件软件,想要开发驱动器软件就需要对上下游非常熟悉吗?

不一定,但是作为一个嵌入式工程师需要懂得如何和对应开发者进行交流。

首先对于硬件开发者,他们会给我们提供一份原理图,以及一般性的我们需要知道芯片的使用手册,这样才能辅助我们去正确的使用硬件的各个IO,避免如最低级的正负级接反等问题;对于中间件软件,我们则需要和他们一起制定一个协议,这个协议约定了双方如何进行正确的数据交互。

一方面要正确的使用板卡资源和外设资源,并对其数据进行加工处理来做一些开发者企图实现的功能。另一方面要将处理的数据与上游进行交互从而达到更高效的数据利用,当然了必要时也需要接收来自上游数据的指令。

2.2 FreeRTOS 快速上手

具体内容包含:搭建软件环境、FreeRTOS使用、任务创建、代码实例、运行状态等。

2.3 运动控制与PID使用

具体内容包含:PID原理介绍和工程实例。

为了更好的控制机器人行走,电机控制算法通常使用PID算法,PID(proportion integration differentiation)其实就是指比例,积分,微分控制。当我们得到系统的输出后,将输出经过比例,积分,微分3种运算方式,重新叠加到输入中,从而控制系统的行为,让它能精确的到达我们指定的状态。基本形态如下图所示:

12.png

2.4 人机显示屏交互

15.png

人机交互在驱动板中的体现很多,比如LED等、蜂鸣器、用户按键、继电器等,但是其中最为直观的外设当为OLED显示屏。

为什么要引入OLED显示屏?从设计之初的考虑来看,最重要的一个原因是方便大家调试MCU代码,如大家可以看到当前状态下关键传感器信息,如陀螺仪等;此外也可以显示一些控制器传下来的信息,如WIFI0的IP地址。

以OriginCar使用的0.96寸SSD1306 OLED显示屏为例,以下为其原理图:

14.png

2.5 串口通信

串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,由于其简单便捷,因此大部分电子设备都支持该通讯方式,其通讯协议可分层为协议层和物理层。

物理层规定通信协议中具有机械、电子功能的特性,从而确保原始数据在物理媒体的传播;协议层主要规定通讯逻辑,统一双方的数据打包、解包标准。

如何实现智能小车的通信协议

3.1 通信协议设计

什么是通讯方式的协议层?

它是指通信双方对数据传送控制的一种约定,协议中包括数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等,通信双方必须共同遵守。

更具体一些常见的协议如下图所示:

16.png

17.png

上位机下发指令

18.png

下位机上发指令

19.png

3.2 通信协议的下位机实现

具体内容包含:波特率设置、数据接收、数据发送。

3.3 通信协议的下位机实现

具体内容包含:数据接收和数据发送。

3.4 构建机器人ROS底层驱动

如何开发智能小车的应用功能

4.1 基础知识介绍

具体内容包含:中间件、镜像版本、终端软件、连接方式、前处理和后处理、代码编辑软件等。

4.2 视觉巡线

机器人巡线是智能机器人比较常见的一个功能,实现的方式也有多种,一般会根据传感器的种类有一些差别。接下来以视觉巡线为例,以OriginCar机器人为载体给大家做介绍,具体有OpenCV巡线和深度学习巡线。

21.png

4.3 人体跟随

4.4 目标检测

目标检测是计算机视觉领域的核心问题之一,其任务是给定一张图片或者是一个视频帧,让计算机定位出这个目标的位置并且知道目标物是什么,即输出目标的Bounding Box(边框)以及标签。

目标检测的定义为:目标检测时图片中对可变数量的目标进行查找和分类。

需要解决的问题包括:1、目标种类与数量;2、目标尺度问题:目标稠密、目标大小等3、外在环境干扰问题:遮挡、光照。

由于各类不同物体有不同的外观,姿态,以及不同程度的遮挡,加上成像是光照等因素的干扰,目标检测一直以来是一个很有挑战性的问题。目标检测的方法有传统方法,也有深度学习的方法。传统方法需要手动设计特征,使用滑动窗口和传统分类器,准确性和实时性比较差。深度学习方法通过深度网络学习特征,Proposal或者直接回归,使用深度网络,支持端到端,准确性高和实时性比较好。

传统的目标检测方法包括:Viola-Jones(采用积分图特征+AdaBoost方法对人脸进行检测等);HOG+SVM(主要用于行人检测,通过对行人目标候选区域提取HOG特征,并结合SVM分类器来进行判定);DPM(是基于HOG特征检测的一种变种,不同的地方在于,DPM中会加入一些额外的策略,来提升检测的精度,而DPM方法是目前非深度学习方法,检测效果最好的,性能最优。在后续的深度学习方法中会用到很多DPM算法中提到的策略,例如包围框策略等)等等。

深度学习方法主要分为两类:一阶段(One Stages)的目标检测算法和两阶段(Two Stages)的目标检测算法。一阶段的目标检测算法直接对输入图像应用算法并输出类别和相应的定位,如YOLO、SSD等。二阶段的目标检测算法先产生候选区域然后进行CNN分类,如R-CNN,Fast R-CNN,Faster R-CNN,Mask R-CNN等。两阶段的目标检测算法精度较高,但速度较慢;一阶段的目标检测算法速度较快,但精度相对较低。

22.png

课程目录

微信截图_20240513141901.png

微信截图_20240513141940.png

微信截图_20240513141957.png

微信截图_20240513142015.png

温馨提示

1 、本课程适用于机器人开发者;

2、由于本产品的视频课程属性,观看后不予退款。

3、购买须知:发起拼团后暂不支持退出哈。

若有人与您拼团成功则课程将进入您购买所用的账号里可直接观看;若暂无其他人与您拼团,24小时后您会自动成团,课程依旧会进入您的账号里,麻烦您稍加等待,感谢您的理解与支持~

上新优惠

课程原价¥79.8

两人拼团¥49.8,三人拼团¥39.8

现上新价更优惠~

本周上新期间活动期间可领取一张10元优惠券

【每人限领一张,仅限本课程使用】

领取优惠券后15天内有效

两种领取方式如下所示:

1.商品详情页领取

微信图片_20240513154203.jpg

微信图片_20240513154207.jpg

微信图片_20240513154211.jpg

2.扫码领取优惠券

微信图片_20240513154216.png