重要参考:
课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ
讲义链接:Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程
学习到当前阶段大家对ROS已经有一定的认知了,但是之前的内容更偏理论,尤其是介绍完第6章仿真与第7章导航之后,想必相当一部分同学有些疑惑:
实体机器人与仿真实现有什么区别?
ROS系统如何控制机器人底盘运动,并计算里程计数据呢?
实际的传感器如雷达、摄像头等应该怎么使用呢?
...
机器人系统是一套机电一体化的设备,机器人设计也是高度集成的系统性实现,为了给大家解答上述疑惑,方便机器人硬件的快速上手,本章去繁就简旨在从0到1的设计一款入门级、低成本、简单但又具备一定扩展性的两轮差速机器人,学习完本章内容之后,你甚至可以构建属于自己的机器人平台。
本章主要介绍内容如下:
-
机器人的组成部分;
-
Arduino 基本使用;
-
Arduino 与电机驱动;
-
底盘控制实现;
-
基于树莓派的ROS环境搭建;
-
激光雷达与相机的基本使用与集成。
本章学习目标如下:
- 能够独立搭建机器人平台。
注意:
-
该章内容会使用到ROS的分布式框架,树莓派端作为主机,PC端作为从机;
-
PC端使用的ROS版本为noetic,树莓派端使用的版本为melodic,因为树莓派需要与底盘交互,而相关功能包还未更新。
案例演示:
1.机器人底盘实现
底盘正面
Arduino 与 电机驱动板
底盘背面
2.机器人控制系统以及传感器实现
3.机器人集成效果
8.1 概述
立足角度不同,对机器人组成的认识也会有明显差异,从控制的角度来看,机器人系统可以分为四部分:
传感系统、控制系统、驱动系统、执行机构。
1.传感系统
它由内部传感器模块和外部传感器模块组成,获取内部和外部环境中有用的信息,相当于人体的感官与神经,内部传感系统包括电机的编码器、陀螺仪等,可以通过自身信号反馈检测位姿状态;外部传感系统包括摄像头、红外、声纳等,用于感知外部环境。
2.控制系统
控制系统的任务是根据机器人的作业指令以及从传感器反馈回来的信号,输出控制命令信号,类似于人的大脑。控制系统需要基于处理器实现,在处理器之上,控制系统需要完成算法处理、关节控制、人机交互等复杂功能。
3.驱动系统
驱动系统主要负责驱动执行机构,将控制系统下达的命令转换成执行机构所需要的信号,相当于人的小脑与神经。采用的动力源不同,驱动系统的传动方式也不同。驱动系统的传动方式主要有四种:液压式、气压式、电气式和机械式。电力驱动是目前使用最多的一种驱动方式,其特点是电源取用方便,响应快,驱动力大,信号检测、传递、处理方便,并可以采用多种灵活的控制方式,驱动电机一般采用步进电机或伺服电机。
4.执行机构
执行机构是机器人组成中的机械部分,类似于人的手与脚,比如:机器人的行走部分与机械臂。
在当前机器人系统中,各组成部分对应硬件清单如下:
执行机构: 主体使用亚克力板拼装,由两个直流电机带动主动轮以及保持平衡的两个万向轮实现机器人行走,由于执行机构比较简单,不再做单独介绍。
驱动系统: 电池、arduino 以及电机驱动模块;
控制系统: 树莓派;
传感系统: 编码器、单线激光雷达、相机;
其中,执行机构与驱动系统构成了机器人底盘。
8.2 机器人平台设计之arduino基础
在构建差分轮式机器人平台时,驱动系统的常用实现有 STM32 或 Arduino,在此,我们选用后者,因为 Arduino 相较而言更简单、易于上手。本节将介绍如下内容:
- arduino 简介;
- arduino 开发环境搭建;
- arduino 基本语法。
概念
Arduino是一款便捷灵活、方便上手的开源电子原型平台。在它上面可以进行简单的电路控制设计,Arduino能够通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。
作用
或多或少你可能听说过“集成电路”(又称“微电路”、“微芯片”或“芯片”)这种概念,集成电路(integrated circuit)是一种微型电子器件或部件,通过集成电路再结合一些外围的电子电子元器件、传感器等,可以感知环境(温度、湿度、声音),也可以影响环境(控制灯的开关、调节电机转速)。但是传统的集成电路应用比较繁琐,一般需要具有一定电子知识基础,并懂得如何进行相关的程序设计的工程师才能熟练使用,而Arduino的出现才使得以往高度专业的集成电路变得平易近人,Arduino主要优点如下:
- 简单:在硬件方面,Arduino本身是一款非常容易使用的印刷电路板。电路板上装有专用集成电路,并将集成电路的功能引脚引出方便我们外接使用。同时,电路板还设计有USB接口方便与电脑连接;
- 易学:只需要掌握 C/C++ 基本语法即可;
- 易用:Arduino提供了专门的程序开发环境Arduino IDE,可以提高程序实现效率。
当前,Arduino已经成为全世界电子爱好者电子制作过程中的重要选项之一。
组成
Arduino 体系主要包含硬件和软件两大部分。硬件部分是可以用来做电路连接的各种型号的Arduino电路板(下图为本章内容使用的 arduino mega 2560);软件部分则是Arduino IDE。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。