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

2024-03-13 15:10

本文主要是介绍如何设计一款四轮智能小车,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

通过这一讲课程,我们希望大家脑海中能够对智能小车有一个明确的认识和开发思路,未来我们再逐个击破,把它一点一点做出来。

总体设计思路

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

先来看执行机构,这是机器人要动起来的重要装置,比如移动机器人是需要移动的,那如何带动轮子旋转或者转弯呢,就是类似这样的电机、舵机来执行运动的。但并不是所有运动部位都会安装电机,比如一辆真实的汽车,一般只有一个电机或者发动机,那如何让两个轮子,甚至四个轮子都转起来呢,这就需要一个完成动力分配的传动系统,比如转弯的时候动态调整左右两个轮子的速度,这需要严密的机械设计,也就是差速器的功能。除了移动机器人,在一些工业机器人中,驱动机器人的关节电机、抓取物体的吸盘夹爪,也可以看做是执行机构。总之,执行机构就是执行运动的一套装置。

为了让执行机构准确的执行动作,还需要在执行机构前连接一套驱动系统,比如我们要让机器人的电机按照1m/s的速度旋转,如何动态的调整电压、电流,来达到准确的运动目的呢,这就是由电机驱动器来实现的。如果是电动执行机构的话,其配套的驱动系统一般都是由驱动板卡+控制软件组成,也是嵌入式系统应用的重要领域,我们在学校中学习的单片机、PID、数字电路等概念,都和这个部分紧密相连。驱动系统的选择是根据执行机构来的,比如普通的直流电机,用类似这样的电机驱动板就行,工业上常用的伺服电机,都会用到220V甚者380V电压,就得用专业的伺服驱动器了,还有类似吸盘的气压驱动,外接键盘鼠标一样的外设驱动,以及各种各样的传感器驱动,总之,驱动系统的职责就是保证机器人各种设备的正常运行。

机器人光动是不行的,还需要具备感知能力,这就得靠传感系统了。传感系统一般分为内部传感和外部传感,内部传感是用来感知机器人自身状态的,比如通过里程计计算自己轮子旋转的速度,从而计算累积位移,通过陀螺仪感知机器人自身的角加速度,判断转弯时的状态,通过加速度计,感知机器人在各个运动方向上的加速度,可以用来判断运动趋势或者上下坡,还有力传感器,可以用来感知机器人自身与外部的相互作用力度,比如抓一个鸡蛋,但又不至于抓破。

与内部传感器相反,外部传感器帮助机器人感知外部信息,类似人眼一样,使用摄像头来看到外部的彩色图像,不过机器人可以通过多种外部传感器超越人类的极限,比如可以使用红外传感器,在没有光线的情况下,也可以看到外部环境,类似夜视仪一样,还可以利用激光雷达、声纳、超声波等距离传感器,感知在某个角度范围内的障碍物距离,还有麦克风和喇叭,方便我们与机器人语音交流。

传感系统是智能机器人的重要组成,很多机器人甚至装备了几十上百个传感器,感知自身与环境的各种信息,比如自动驾驶汽车就是如此。

在这些系统的上层,就是机器人的大脑——控制系统了。控制系统一般也是硬件+软件组成,硬件大多采用计算资源丰富的处理器,比如我们常用的笔记本电脑、树莓派、英伟达板卡等;其中运行的软件就是各种丰富的应用程序了,比如让机器人建立未知环境的地图,或者让机器人运动到送餐地点,再或者是让机器人识别人脸。

智能机器人的核心算法体现,都是在控制系统中完成,这也是我们未来做机器人软件开发的主要位置。

机器人实例

机械结构设计

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

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

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

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

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

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

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

接下来,我们把焦点放到小车的执行结构上,也就是这两个电机和四个轮子,它们如何控制小车运动呢?

其实对于智能小车而言,常见的有三种形态运动方式,接下来一一介绍。

差速运动模式

什么叫差速?简单来说,就是通过两侧运动机构的速度差,来驱动机器人前进或转弯。

平衡车就是典型的差速驱动。大家想象一下平衡车的运动方式,如果两个轮子的速度相同,一起往前转,平衡车整体就向前走,一起往后转,平衡车整体就向后走。如果左边轮子的速度比右边快,平衡车就会向右转,反之则是向左转。这就是差速运动最基本的运动方式。

从这张图中,大家也可以看到,差速运动的重点是两侧轮子的速度差,像我们家里用的扫地机器人,大家有兴趣可以翻起来看一下,一般左右两侧都有一个驱动轮,一共是两个轮子,可以叫做两轮差速。大家可能还看到过稍微大一些的车子,比如美团京东的自动物流机器人,很多都是有四个驱动轮的,原理和两轮差速类似,但是负载和越障能力都更强,这就类似汽车中的两驱和四驱的差别,四驱的动力性能会更加强劲。

全向轮运动模式

如果要让机器人向前运动,就得让左右两侧的轮子把这里的横向分力抵消掉,所以两个轮子是对称的,如果不对称,那横向分力都是朝一个方向,机器人就走偏了。

如果要让机器人横着向左运动,那就得把纵向分力抵消掉,一个轮子向后转,一个轮子向前转。

如果要让机器人斜着走怎么办,对侧的轮子不转就可以了,运动的这两个轮子合力就是斜向前45度的。

可见,麦轮平台的运动就是各个轮子之间“力” 的较量。

阿克曼运动模式

这个是阿克曼运动的原理图,大家仔细看两个前轮和两个后轮的状态,像不像两个并驾齐驱的自行车呢,大家手拉手一起转弯。没错,我们一般性的把阿克曼模型等效简化为自行车模型,这两种模型在运动机理方面基本是一致的。大家再想想我们平时骑自行车的画面,车把控制前轮转向,但没有动力,脚蹬通过一系列齿轮,传送动力到后轮上,驱动自行车运动,这些齿轮就相当于是差速器。

驱动系统设计

之前我们有介绍过,机器人的驱动系统可以分为这几种方式,大家想一下,在智能小车中,我们需要用到哪些呢。

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

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

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

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

传感系统设计

传感系统分为内部和外部之分,相信大家通过之前的讲解,已经了解了智能小车中都有哪些传感器了。

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

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

里程计

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

类似于汽车记录行驶公里数的码表,可以通过轮子的旋转圈数记录里程,机器人一般也会在轮子或者电机上安装一个传感器,通过检测轮子的旋转速度,再对时间积分,得到机器人的实时位置和速度,这项功能所使用的设备就叫做里程计,而实现这种功能的设备也并不是唯一的。

比如大家在某些小车上,会看到电机旁边安装有这样一个码盘,上边有不少开缝,电机旋转带动码盘旋转,光电管发射的光线就会以某种频率穿过缝隙,被接收端采集到,通过这个频率我们就可以计算得到电机的旋转速度,从而得到机器人走了多远、旋转了多少度等自身状态信息。

我们这里设计的智能小车采用的里程计是另外一种,叫做霍尔传感器,安装在电机尾部,当电机旋转时,霍尔传感器通过感应周边磁场产生的信号,测量出电机的旋转速度,继而得到机器人的状态信息。

所以无论是光电码盘还是霍尔传感器,都是根据采样单位时间内产生的脉冲数计算出轮子旋转的圈数,再通过轮子的周长计算出机器人的运动速度,速度对时间积分后,就得到里程信息啦,这就是里程计的基本原理。

不过里程计也有一个问题,那就是每次测量会有误差,不断积分后,误差必然会被放大,也就是我们常说的里程计累积误差。

相机成像

https://www.guyuehome.com/46197

控制系统设计

硬件选择

之前我们介绍的驱动系统、传感系统,最终都会和控制系统这个大脑中枢产生联系。

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

在智能小车的开发中,直接放一个电脑在机器人身上肯定是不合适的,常用的方式是使用更加小型的嵌入式应用处理器,比如常见的树莓派、Jetson Nano、RDK X3,都可以满足智能小车的开发需求。

我们就拿这三款板卡做一个参数对比,CPU和内存两项都大差不差,智能小车的应用开发我们更加关注算力和框架的支持,在算力方面,理论上数值越高,我们能够实现的应用就会越流畅,比如人体识别之类的,RDK X3有5T的算力,相比其他板卡优势较为明显。在框架方面,三者都支持我们后续使用的ROS,RDK X3中还提供了一套深度优化的ROS2系统,名为TogetheROS,包含很多智能化的应用功能。

综合而言,我们这里选择RDK X3作为控制系统的硬件平台,当然,大家在自己智能小车的设计中,使用其他平台也都可以,里边的软件基本都是通用的,只是在算力要求较高的应用上会有一些差别。

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

我们通过这张图来明确一下。

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

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

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

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

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

好啦,讲到这里,相信大家已经对智能小车的设计思路有了清晰的理解。

回到我们最初的问题,如何从零设计并开发一款智能小车呢?

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

这篇关于如何设计一款四轮智能小车的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/805265

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

智能交通(二)——Spinger特刊推荐

特刊征稿 01  期刊名称: Autonomous Intelligent Systems  特刊名称: Understanding the Policy Shift  with the Digital Twins in Smart  Transportation and Mobility 截止时间: 开放提交:2024年1月20日 提交截止日

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

SprinBoot+Vue网络商城海鲜市场的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者,全网30w+