栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 架构设计

【机器人载体系统设计】嵌入式硬件系统架构

架构设计 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【机器人载体系统设计】嵌入式硬件系统架构

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理

文章目录
  • 系列文章目录
  • 前言
  • 一、开发平台
  • 二、传感器系统
    • 1.无人驾驶车传感器配置
    • 2.内部传感器
    • 3.外部传感器
    • 4.手持控制器
  • 三、微控制器系统
    • 1.一个系统为什么要分控制器和处理器两个模块
    • 2.微控制器背景
    • 3.微控制器系统示例
  • 四、处理器系统
    • 1.处理器分类
      • (1)高级处理器
      • (2)低级处理器
    • 2.处理器类型
      • (1)CPU处理器
      • (2)CPU+GPU处理器
    • 3.移动机器人硬件系统的主控选型:
  • 五、高速通讯硬件系统
    • 1.通讯架构
      • 架构1:有MCU平行采集CAN/485等传感器并打包成串口数据发送给PC机
      • 架构2:多块单片机串型通讯(CAN->SPI->以太网)
      • 架构3:无MCU直接采用PC的linux底层开发的读取传感器CAN/485/SPI等数据
      • 架构4:无MCU并行通讯(CAN/485等直接转USB串口模块->PC机)
      • 架构5:综合上面的4种方法的组合
    • 2.通讯方式
      • (1)CAN通讯
      • (2)485通讯(485Modbus)
        • 用标准的CRC16算法
        • 用标准的CRC16算法生成代码
        • 用标准的CRC16算法计算查询网页
      • (3)串口通讯
        • (1)硬件环境准备
        • (2)收发协议编写的平台
      • (4)SPI通讯
      • (5)IIC通讯
      • (6)PC以太网通讯(SSH)
    • 3.远程通讯方式


前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!

**
**
衡量好一个导航系统多少是业务比例、场景比例、算法比例、工程逻辑比例、人力资源比例? 基于这样看,具体问题具体分析,每个机器人的导航架构都不一样!

大家共同努力才搭建出来的!融入其中可以学会搭建一个系统的能力

架构师都是深入底层,对整个框架的每个具体实现都懂的(管好各个模块不打架)

系统框架不是看看书就行,要根据实际的来,要自己动手去做!理论学习,工程实践,自己搭架构这一关是少不了的,还有一些系统架构设计、系统架构管理的学习,理论和实践一样都少不了!

架构师要懂得搭建架构,理论架构还有工程架构,三方库啥的,cmake工程链接架构的管理研发要尊重客观规律

2、开发方式和开发工具需要不断积累
工作必须在一个开源的系统中移植到自己专有的系统中,这样的东西把控程度和安全护城墙性才比较高

本文先对嵌入式硬件系统架构做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章


提示:以下是本篇文章正文内容

做应用开发,也要注重操作系统和芯片等的系统支持,不然应用开发什么都做不到,算法的应用开发更加贴近业务需求,但是底层系统是颠覆性的

一、开发平台

(1)MCU
一般使用外设库开发或者freeRTOS实时系统管理开发

(2)嵌入式或PC机
一般使用ubuntu系统或者机器人操作系统ROS开发【防盗标记–盒子君hzj】

.
.

二、传感器系统

无人驾驶传感器必须冗余,提高安全性!

1.无人驾驶车传感器配置

2.内部传感器

(1)电机电流霍尔传感器(扭矩信息)【防盗标记–盒子君hzj】
(2)电机磁编码器(位置信息)
…
.
.

3.外部传感器

(1)IMU(姿态信息)
Xsens MTI300
X-sense MTi IMU

(2)压力扭矩传感器

(3)相机摄像头(目标检测跟踪信息)

(4)激光雷达(地图定位信息)
Velodyne VLP-16
Hokuyo UTM-30lx
…
.
.

4.手持控制器

(1)罗技Gamepad F310遥控器(控制指令信息)

(2)无线键鼠(控制指令信息)【防盗标记–盒子君hzj】

(3)航模遥控器
…
.
.

三、微控制器系统 1.一个系统为什么要分控制器和处理器两个模块

电机控制PID是实时性算法,也就是严格的实时时钟驱动的逻辑,一般的上位机系统不能满足这种高实时性的需求;另外就是出于系统解耦合和模块化设计的考虑,单独用一个价格便宜的MCU来实现电机控制。【防盗标记–盒子君hzj】

2.微控制器背景

电控系统的作用是提供机器人各个部件所需要的能源和控制信号。合理设计的电控系统可以保证机器人长时间安全运性,选用STM32一类的微控制器,仅用于与传感器、执行器间通讯,并运行关节控制器的低级控制算法,在PCB上集成IMU、GPS接收机和数传、图传链路等芯片集成度得到了极大的提高【防盗标记–盒子君hzj】
目前意法半导体的STM32系列是采用率很高的低成本机器人主控芯片,目前其面向伺服系、机器人和无人车推出了多种不同算力性能的单片机处理器,覆盖了STM32F0/F1/F3/F4/F7/L0/L1/L4等多个产品系列。以ARMCortex-M4的STM32F4系列MCU为例,其主频为180MHz能满足目前无人机所需要姿态解算、【防盗标记–盒子君hzj】PID控制和EKF融合导航的基本需求,其处理性能达到225DMIPS/608CoreMark,并且内置DMA和FPU硬件加速模块,提供处理在完成通讯和浮点运算的效率,同时具有丰富的GPIO管脚内置SPI、CAN等通讯接口的协议,配合DMA可以不打断主线程完成与外部设备的高速通讯

3.微控制器系统示例

毕业了才能把项目的硬件架构开放出来~
稍微等一等
.
.

四、处理器系统 1.处理器分类 (1)高级处理器

对于大型的复杂的机器人,则需要高速的可以搭载操作系统的处理器,例如Intel系列处理器,主处理器的作用是完成机器人的步态规划、环境感知以及定位导航等,是机器人的大脑。主处理器需要读取机器人搭载的各类传感器,如视觉传感器、关节编码器数据、关节扭矩等信息,融合信息完成机器人的步态规划和路径规划,并将规划信息发送给机器人的关节驱动器,使得机器人可以稳定地行走并躲避障碍。【防盗标记–盒子君hzj】

(2)低级处理器

对于简单的机器人,可以使用单片机、现场可编程门阵列(FPGA)等小型处理器
.
.
.

2.处理器类型 (1)CPU处理器

(1)用途
运行运动控制高级算法时,运动控制的频率较高,要运行高频率的MPC和WPC需要比较大的算力和内存,处理器的作用是完成机器人的步态规划、环境感知以及定位导航等,是机器人的大脑。主处理器需要读取机器人搭载的各类传感器,如视觉传感器、关节编码器数据、关节扭矩等信息,融合信息完成机器人的步态规划和路径规划,并将规划信息发送给机器人的关节驱动器,使得机器人可以稳定地行走并躲避障碍。使用x86架构CPU运行机器人的控制算法【防盗标记–盒子君hzj】


(2)背景
运动控制的频率较高,想要运行高精度的MPC和WPC需要比较大的算力和内存
操作工具上,Linux操作系统能方便的集成和使用高性能矩阵计算库如Eigen或优化运算库如g2o等;硬件设备上,以SD/MicroSD卡为内存硬盘、以EMMC作为内存、板载USB、网卡、可直接控制的硬件GPIO如SPI,UART等典型的通信接口


(3)产品

(1)ARM系列

1)树莓派
配置了cortex-A53的处理器和1GB内存,简直就是最便宜的价格最顶配的性能了,并且官方有支持的ubuntu-mate系统也是超级给力,所以初学者选用这个板子是非常适合的【防盗标记–盒子君hzj】

2)RK3399
配置了双核cortex-A72+四核cortex-A53的处理器,处理器绝对是给力的,配置的内存2GB/4GB可选。搭载裁剪版的Lubuntu或Xubuntu也是很不错的

(2)X86系列

1)upbroad
主控采用了一个i7处理器的工控机 (Sandy Bridge Core i7, 8 Gb ram)运行Linux操作系统通过EtherCAT与底层ARM处理器进行交互控制。对于其后续推出的Mini Cheetah四足机器人其主控架构采用了更低成本的方案,使用x86架构的单板处理器UP Board 作为主控其采用x5-Z8350 处理器(4核1.4Ghz, 4 gb RAM,5W低功耗)通过运行PREEMPT-RT 实时补丁的Linux系统保证算法的1Khz运行,最终通过扩展SPI接口板实现与底层电机的CAN高速交互通讯

缺点
(1)upboard的算力比较低的
(2)upboard没有内置的CAN接口,但是有SPI接口【防盗标记–盒子君hzj】

2)小型因特尔/AMD
i7-5650U,4G内存,64G固态硬盘
.
.
.

(2)CPU+GPU处理器

(1)用途
用于环境感知:SLAM、视觉、语音,若加入环境感知模块,如视觉的深度学习方向还是比较吃显卡GPU算力的、激光雷达、IMU等多传感器的融合还是比较考验计算机的多线程能力的


(2)背景
处理器已经开始集成低成本GPU和神经网络处理模块,来运行小规模的神经网络,如TensorFlow Lite等典型的深度网络,除了具有多核心、高算力和低功耗的特点外,更多以集成高性能GPU为特点面向终端上的深度学习网络部署以及机器人运动控制。
若加入环境感知模块,如视觉的深度学习方向还是比较吃显卡GPU算力的、激光雷达、IMU等多传感器的融合还是比较考验计算机的多线程能力的


(3)产品

(1)NVIDA nano

(2)NVIDA TX2
板子售价4000块钱左右,有点小贵。配置了四核cortex-A57的处理器,256个CUDA核心的英伟达自家的帕斯卡架构GPU,内存8GB。板子的亮点是GPU,非常适合用来做深度学习和计算机视觉方面的应用【防盗标记–盒子君hzj】

(3)NVIDA xaver

(4)超级微型pc机,如i7-7567U+集显Plus Graphics 650

.
.

3.移动机器人硬件系统的主控选型:

(1)DJ1:maniflod2-c(X86)
(2)NUC(X86)
(3)NX(ARM)–一般的planner是可以的
.
.
.

五、高速通讯硬件系统 1.通讯架构 架构1:有MCU平行采集CAN/485等传感器并打包成串口数据发送给PC机

这种方法类似于方法3,但是不同之处是把采集传感器程序放到MCU,PC端仅仅需要串口数据接收
.
.

架构2:多块单片机串型通讯(CAN->SPI->以太网)

单片机用两个STM32是因为带宽不够, 每个STM32有两路CAN总线, 每一路负责三个电机(一条腿)的通讯才能达到1000Hz, 若一路负责六个电机控制频率只能降到约600Hz
第二:使用SPI通讯是因为同步通讯的通讯速度快,从而使控制的频率带宽跟得上PC运动控制输出的带宽
.
.

架构3:无MCU直接采用PC的linux底层开发的读取传感器CAN/485/SPI等数据

这种通讯方式不用单片机做中转,把单片机采集传感器程序放到pc上实现,要通过各类外设驱动【防盗标记–盒子君hzj】
.
.

架构4:无MCU并行通讯(CAN/485等直接转USB串口模块->PC机)

这种通讯方式不用单片机做中转,把单片机采集传感器程序放到pc上实现,仅仅需要USB串口驱动
.
.

架构5:综合上面的4种方法的组合

.
.

2.通讯方式 (1)CAN通讯

(1)CAN简介:
CAN是Controller Area Network 的缩写,控制器局域网络,是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986 年率先提出。此后,CAN 通过ISO11898 及ISO11519 进行了标准化。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,高速、短距离“闭环网络”,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准,低速、远距离“开环网络”。


(2)CAN应用领域:
CAN具有很高的可靠性,广泛应用于:汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。


(3)CAN通信特点

1.多主控制
2.系统柔软性
3.通信速度
4.错误检测、通知、恢复功能
5.故障封闭
6.远程数据请求
7.连接节点【防盗标记–盒子君hzj】

(4)CAN的优缺点

电气稳定、并联连接,但通讯速率比较低,带宽比较小
.
.

(2)485通讯(485Modbus)

(1)RS485的特点

1、逻辑“1”以两线间的电压差为+(2—6)V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。接口信号电平比RS232降低了,不易损坏电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。

2、RS485通信速度快,数据最高传输速率为10Mbps以上;其内部的物理结构,采用的是平衡驱动器和查分接收器的组合,抗干扰能力大大增加。

3、传输距离最远可达到1200米左右,但传输速率和传输距离是成反比的,只有在100KB/s以下的传输速率,才能达到最大的通信距离,如果需要传输更远距离可以使用中继

4、可以在总线上进行联网实现多机通信,总线上允许挂多个收发器,【防盗标记–盒子君hzj】从现有的RS485芯片来看,有可以挂32、64、128、256等不同个设备的驱动器。


(2)RS485的接法

(1)四线制:只能实现点对点的通信方式,现很少采用

(2)两线制:这种接线方式为总线式拓朴结构,在同一总线上最多可以挂接32个结点。在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机,很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,这有2个原因:

1)共模干扰问题:RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。但人们往往忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作。当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。

2)EMI问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。


(3)Modbus通信协议(在485这个硬件载体的通讯协议)【重点】

Modbus协议是应用于电子控制器上的一种通用语言,此协议定义了一个控制器能认识使用的消息结构,描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。【防盗标记–盒子君hzj】它制定了消息域格局和内容的公共格式。

一、Modbus 寄存器种类说明

1— 线圈状态:输出端口,可设定端口的输出状态,也可以读取该位的输出状态

2— 离散输入状态:输入端口,通过外部设定改变输入状态,可读但不可写

3— 保持寄存器:控制器运行时被设定的某些参数,可读可写

4— 输入寄存器:控制器运行时从外部设备获得的某些参数,可读不可写


二、Modbus 功能码简述

功能码可以分为位操作和字节操作,位操作的最小单位是Bit,字节操作的最小单位为2个字节(Byte)

1— 位操作指令:读线圈状态01H、读离散输入状态02H、写单个线圈05H、写多个线圈0FH.

2— 字节操作指令:读保存寄存器03H、读输入寄存器04H、写单个保存寄存器06H、写多个保存寄存器10H.【防盗标记–盒子君hzj】


三、Modbus功能码

一个MODBUS消息从主机发给从机,包含了从机地址、命令(例如,读寄存器或者写寄存器)、数据、校验码(LRC或者CRC)


四、指令的校验码的生成【重点】

Modbus一般采用CRC16校验,特征多项式取0xA001。你可以用标准的CRC16算法代码,不过要更改特征多项式。所以一般大家都是用查表法处理Modbus的CRC校验部分的,反正也就512个字节

用标准的CRC16算法
1) 预置 1 个 16 位的寄存器为十六进制FFFF(即全为 1) , 称此寄存器为 CRC寄存器。
2) 把第一个 8 位二进制数据 (通信信息帧的第一个字节) 与 16 位的 CRC寄存器的低 8 位相异或, 把结果放于 CRC寄存器。
3) 把 CRC 寄存器的内容右移一位( 朝低位)用 0 填补最高位, 并检查右移后的移出位。
4) 如果移出位为 0, 重复第 3 步 ( 再次右移一位); 如果移出位为 1, CRC 寄存器与多项式A001 ( 1010 0000 0000 0001) 进行异或。
5) 重复步骤 3 和步骤 4, 直到右移 8 次,这样整个8位数据全部进行了处理。
6) 重复步骤 2 到步骤 5, 进行通信信息帧下一个字节的处理。
7) 将该通信信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换。【防盗标记–盒子君hzj】
8) 最后得到的 CRC寄存器内容即为 CRC码
用标准的CRC16算法生成代码
unsigned int crc_chk(unsigned char *data,unsigned char length)
{
 unsigned char j;
 unsigned int reg_crc=0xffff;

 while(length--)
 {
  reg_crc^=*data++;
  for(j=0;j<8;j++)
  {
   if(reg_crc&0x01)    
   {
    reg_crc=(reg_crc>>1)^0xa001;
   }
   else
   {
    reg_crc=reg_crc>>1;
   }
  } 
 }
 return reg_crc;
}
用标准的CRC16算法计算查询网页

http://cht.nahua.com.tw/index.php?url=http://cht.nahua.com.tw/software/crc16/&key=Modbus,%20RTU,%20CRC16&title=%E8%A8%88%E7%AE%97%20Modbus%20RTU%20CRC16


(3)串口通讯 (1)硬件环境准备

STM32串口+TTL转USB模块(CH340)+Linux硬件设备

(2)收发协议编写的平台

(1)STM32下位机依托USART1编写的收发协议【防盗标记–盒子君hzj】

(2)ROS上位机依托boost::asio编写的收发协议
.
.

(4)SPI通讯

(1)SPI简介:
SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线

(2)SPI优点:
支持全双工通信、通信简单、数据传输速率块

(3)SPI缺点:
没有指定的流控制,没有应答机制确认是否接收到数据,【防盗标记–盒子君hzj】所以跟IIC总线协议比较在数据,可靠性上有一定的缺陷

(4)SPI特点:
1)高速、同步、全双工、非差分、总线式
2)主从机通信模式

(5)通信原理
SPI的通信原理以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。

(1)SDO/MOSI – 主设备数据输出,从设备数据输入;
(2)SDI/MISO – 主设备数据输入,从设备数据输出;
(3)SCLK – 时钟信号,由主设备产生;
(4)CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低或者是拉高。

.
.

(5)IIC通讯

就是读写陀螺仪,OLED显示屏这些。有数字IIC,也可以编程模拟IIC【防盗标记–盒子君hzj】
.
.

(6)PC以太网通讯(SSH)

.
.

3.远程通讯方式
(1)通过4G流量数据发送到基站服务器
(2)通过wifi发送到基站服务器

区分通讯方式的使用场景,机器人长距离一般用can和以太网

.
.


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/911362.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号