接触了移动机器人这么久,我觉得应该写点什么东西,分享一下最基础的自己关于移动机器人的理解,也作为笔记总结,留到以后查阅。目前我还是觉得自己刚入门,有时候总想的太多,不如实践来的更直接,下面总结之前的实践经验,来系统的梳理一下什么是移动机器人软硬件系统问题。文中涉及到的开源项目网站地址如下:
开源项目网站Handsfree(https://github.com/HANDS-FREE/OpenRE);
项目网站和教程: http://wiki.hfreetech.org/
开源代码 : https://github.com/hands-free
图 1 移动机器人的物理样机
图1所示的是实验中常用的移动智能小车的架构,其中设备和接口是嵌入式软硬件系统最底层的一部分,CPU 需要对其它设备或者传感器进行通信,控制,操作则是通过这里的接口实现的。
这里借用github 上的开源项目Handsfree(https://github.com/HANDS-FREE/OpenRE),对 移动智能车的底层嵌入式系统做个简单的介绍,完成整个小车的搭建。
本课题专门为机器人系统所设计的嵌入式系统架构,主要包含设备和 IO 接口,操作系统组件和应用软件。
- 其中硬件设备和 IO 接口总是紧密相连的,设备一般都需要 IO 接口和处理器进行通信,其中设备又可以细化为传感器设备和普通 IO 设备。传感器设备主要包含了加速计,陀螺仪,磁力计,气压计,编码器等,IO 设备主要有存储器,驱动器,还有遥控器,液晶显示等。
- 操作系统组件则包含系统内核,图形库,文件系统等。移植一个实时操作系统不仅仅增加了软件系统功能,还增加了系统的鲁棒性,多任务编程也便于整个系统代码的维护管理。
- 应用软件则是建立在前两者基础上的功能软件或者独立于嵌入式的代码库,比如电机控制库,机器人控制库,或者数学运算库等。由于软件的最终功能,基本都是这一部分来决定的。
1 最底层之设备与接口
图3 HANDS FREE硬件设备与接口
如图 3,则是 HANDS FREE 为了上层应用跨平台建立的底层软件框架,其隔离了不同CPU环境下的设备和接口代码 。接口方面封装了USRT,IIC,SPI,CAN 等常用通信接口,以及 pwm 电机控制输出,encoder 编接口等。设备方面封装了常用的陀螺仪,加速计,磁力计等传感器,以及直流电机,伺服舵机,遥控器等设备。
1.1 惯性测量传感器与 IIC 接口(具体的模块使用,请看前面的博客)
IIC 即 Inter-Integrated Circuit(集成电路总线),IIC 是一种多向控制总线,半双工通信方式,也就是说多个芯片可以连接到同一总线结构下,同时控制每个芯片的实时数据传输。
IIC 是串行总线的一种,一般是有两根信号线构成,一根是可以双向通信的数据线并连接着每个设备的 SDA,另一根是所有设备的时钟线SCL。每个 IIC 设备有一个属于自己的地址,通信是 IIC 通信协议会先进行地址匹配,从而有条不紊的分别操作 IIC 总线上不同的设备。
图1的系统中,使用 IIC 接口的设备非常多,有保存数据用的可擦写存储器 AT24C0X,512KB 的 EEPROM,也有测量角速度,重力加速计的传感器MPU6050,测量磁场的磁力计 HMC5883L,测量气压的气压计 MS5611。
1.2 射频模块与 SPI 接口(具体的模块使用,请看前面的博客)
SPI 是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速度,全双工,同步通信的总线结构,一般占用 4 根线ÿj*bn"zCfjV6_O&7rjvC'k>7jbB{ZbB"jfhG:3^vC_*G:_7jvC?kZ"vC?;3~;/
Cj>7#o3"H'*j{Z |