针对在软体机器人控制时 , 多电机协同控制过程中难度大 、 通用性差 、 协同性差等缺点 , 设计了基于 ARM 和 FPGA 的软体机器人的控制器局域网络 ( controller area network , CAN ) 总线运动控制器 , 采用 ARMCortex-M4 为内核的 STM32F407 开发板和 AX7102 FPGA 开发板设计一种基于 CAN 总线的软体机器人运动控制器 , 主要包括该系统的体系架构 、 硬件设计和软件设计等 。 该控制器利用 STM32作为控制核心和 FPGA 的高速处理能力来实现控制算法的运算 , 并用 CAN 总线技术来实现与上位机通信 。 经过试验操作 , 该控制器可以满足预定要求。
软体机器人有别于传统刚体机器人 , 其具有众多优点, 具有生物柔性 , 能够通过蠕动 、 爬行 、 扭动
穿过狭小的空间实现灵活避障或者实现柔顺抓取等操作, 在非结构化环境中应用前景广泛 [
1 ] , 于是 需要一种适用于软体机器人运动控制的运动控制器。 到目前为止, 通用的运动控制器从结构上可分为以下 3 大类 [ 2-3 ] 。
( 1 ) 标准总线式运动控制器 。 这种运动控制器大多是基于计算机标准总线的, 其相对于计算机是
独立的 、 具有开放式体系结构 。 其大多使用数字信号处理器( digital signal processor , DSP ) 芯片或微机芯片作为处理器, 可实现运动规划 、 高速插补 、伺服滤波和电机驱动、I /O 通用接口等功能,并且用户可以使用其丰富的函数库,根据自己的需求,在不同平台下自行开发相应软件来组成控制系统。

( 2 ) 开放式运动控制器 。 这种运动控制器灵活性好, 将控制软件安装在计算机中 , 再加上伺服驱
动器 、 通用 I /O 接口等硬件电路 , 就可以在操作系统支持下, 利用开放式的运动控制器内核 , 开发所需要的各种类型的高性能运动控制系统, 因此它可以提供给用户更多的选择。 其优点是开发设计成本相对较低, 可以给用户提供更加个性化的开发平台 。
( 3 ) 嵌入式运动控制器 。 这种运动控制器能够 独立运行, 其特点是把计算机嵌入到运动控制器
中 。 而它们之间的通信则是依靠计算机总线 ,该总线实质上是计算机标准总线一种变化。对于标准

总线来说 , 其采用了更加通用的总线连接方式 , 在工业生产中有更广泛的应用。 在实际使用中 , 采用如控制器局域网络 ( controller area network , CAN ) 总 线、 以太网 、 串口等现场通信接口来连接计算机或 控制面板以实现对该种运动控制器的上位机控制。 鉴于以 上 总 结 分 析, 对 基 于 STM32 和 FPGA ( field-programmable gate array ) 的嵌入式运动控制器 进行了研究和设计, 该嵌入式硬件架构能充分发挥 它们的优点, 可以同时控制多个电机 , 目前很少应用在软体机器人控制中。 对于二者之间的通信则 采用可变静态存储控制器 ( flexible static memory
controller , FSMC ) 总线来实现数据信息的交换与传输, 并采用 CAN 总线来实现与上位机通信 , 该总线具有实现连接方便、 灵活度高 、 实时性强等特点 。
1 总体方案设计
控制 器 以 基 于 Cortex-M4 处理器为核心的STM32F407 芯片进行通信 、 数据处理等操作 , 它具
有多种集成功能 , 满足系统的设计要求 。 FPGA 作为该控制器的脉冲发生和数据采集机构, 则利用其 高速性和并行性进行速度控制、 位置确定和算法实现。 控制器的总体构造如图 1 所示 。
控制器主要由上位机 、 STM32 开发板控制模块、 FPGA 开发板脉冲发生模块 、 伺服驱动器等部分
组成 。 其中每个部分的组成和相应的作用是 : 上位机具有信息传输和 CAN 通信的作用 , CAN 通信具 有大量 数 据 高 速 通 信 的 优 点, 通过上位机可向STM32 开发板发送指令 , 如实现电机的启动 、 停止 、 正反转等; STM32 开发板控制模块与 FPGA 开发板脉冲发生模块, 通过 I /O 接口来进行两者之间的数 据发送和读取, STM32 开发板根据上位机传输过来 的的不同命令和相关数据进行对应的数据分析和 处理, 然后传输给 FPGA 开发板 , 与此同时也要从FPGA 开发板上依次读取直流伺服电机在运动过程当中相应的速度和位置等参数; 伺服驱动器通过脉冲宽度调制来实现直流伺服电机的精确控制, 如正反转、 加减速 、 启动 、 停止等 。控制器采用直流有刷伺服电机,其具有成本较低、结构简单、控制方便、 启动转矩大、调速范围宽等优点,因此适合作为控制器的运动执行部分[4-5]。

2 硬件设计
在对控制器进行硬件设计时 , 其核心器件有 STM32 开发板 、 FPGA 开发板 、 伺服驱动器 、 CAN 通 信模块和外围电路等。 考虑到在制作和使用过程 中的成本和性能方面, 现对各个模块进行选型 , 以 达到合理与合适的效果。 其中 STM32 开发板选择 基于 Cortex-M4 内核 STM32F407IGT6 , FPGA 开发 板则选用 Xilinx 公司的 AX7102 , 直流伺服电机选择
MAXON MOTOR RE30 。 每个开发板的最小系统能够正常运行是硬件
设计的基础 , 而每个最小系统都是由很多模块组成 的, 且都有对应的功能 。 电源模块为该系统提供电 源, 晶振模块为该系统提供基本的时钟信号 , 下载 模块则负责将程序下载到该系统中, I /O 接口模块 是为了进行数据的输入和输出, 复位模块的作用是 使 CPU 恢复到原始状态 , 等等 。 不同的是 , FPGA 的 最小系统中芯片外围滤波电路模块的功能是滤去 电压中的纹波、 配置电路模块以达到实现相应的功 能、 存储模块用以数据存储等 。 STM32 的最小系统 则还有通信模块以实现上位机与开发板之间的通 信。 下面就下载模块 、 接口模块 、 通信模块进行详 细描述[6] 。
2. 1 STM32 模块电路
2. 1. 1 仿真器接口模块
STM32 有 2 种 下 载 模 式 , 分别是串行调试( SWD ) 模式和联合测试工作组 ( JTAG ) 模式 。 本文
设计的系统采用 JTAG 模式 , 如图 2 所示 。 JTAG 作 为一种边界扫描技术, 主要被用来做芯片内部测 试。 控制系统设计时选用的 JTAG 调试口针数为 20 针 。 由于开发板预留的是 SWD 接口 , 则通过 STLink 实现 JTAG 与 SWD 的转换 , 这里 SWD 接口的 频率使用 4 MHz 。 在进行代码调试时 , 通过 ST-Link 将上位机与 STM32 微控制器开发板相连 , 进而烧写 程序。
2. 1. 2 CAN 通信模块
CAN 是一种异步通信 , 只有 CAN_High 和 CAN _Low 两条信号线 , 共同构成一组差分信号线 , 以差 分信号的形式进行通信。 由于上位机与 STM32 通 过 CAN 进行通信需要 USB 转 CAN 模块 [
7 ] , 这里选 用若比特公司的 USB2CAN 适配器 V2 , 其工作原理
如图 3 所示 。
STM32 开 发 板 具 有 内 置 的 CAN 控 制 器 ,即bxCAN,它支持 CAN 协议 2. 0A 和 CAN 协议 2. 0B,具有 3 个发送邮箱,2 个 3 级深度的接收 FIFO( firstinput first output,先进先出) ,14 个可变位宽的过滤器组,波特率最高为 1 Mbit / s[8]。CAN 通信模块如图 4 所示。

2. 2 STM32 与 FPGA 接口模块
STM32 开发板与 FPGA 开发板的接口电路的作 用是实现二者之间的通信以及数据传输。 在控制
器设计过程中 , 控制信号 、 地址信号和伺服电机运 行参数是 STM32 开发板与 FPGA 开发板之间相互 传输的主要数据。 在输入 / 输出端口中有 4 组引脚 被使用到, 分别是 PD 、 PE 、 PF 、 PG 中的部分引脚 , 接口模块的具体设计如图 5 所示 。
在该设计中 , FSMC 总线用来实现 STM32 开发板和 FPGA 开发板之间数据的传输 , 所以 PE0 、 PE1 、

PD4 、 PD5 、 PG10 作为 FSMC 总线端口 。 除此以外 , STM32 还将部分端口配置为步进电机驱动器方向信号的输出端口, FPGA 的脉冲输出信号输入至步进电机驱动器。
2. 3 伺服驱动器
作为自动调速系统中的一部分 , 伺服驱动器是用来调节电动机的转速的[9] 。 采用的是 COPLEY 公司的 Accelnet 型伺服驱动器 。 该驱动器的组成部 分有电源电路、 继电器板 、 主控板 、 驱动板及功率器 件。 伺服驱动器的工作原理如图 6 所示 电源电路通过把外部输入的 20 ~ 55 V 直流电 转换为相应的直流电, 为继电器板 、 主控板 、 驱动板 和功率器件提供直流电源。 继电器板的作用包括 两个方面, 一方面是提供相应的直流电 , 另一方面 是完成控制信号、 转速检测信号和转子位置检测信 号之间的传递。 该伺服驱动器的核心部分是主控 板, 主控板则采用数字信号处理器作为控制核 心[ 10 ] 。 功率器件采用智能 功率模块 ( intelligent power module, IPM ) 为核心的驱动电路 , 即主电路 , 采用三相全控桥式逆变电路, 在主回路中还加入软 启动电路, 以减小启动过程对驱动器的冲击 。

3 软件设计
在软件设计部分主要涉及 3 个模块 , 分别是STM32 与上位机通信模块 、 FPGA 与 STM32 通信模
块和直流电机运动中的加减速模块 , 如图 7 所示 。
3. 1 STM32 与上位机通信模块
关于 STM32 与上位机的 CAN 通信在硬件设计部分已经介绍过了, 这里只对软件设计进行详细介
绍 , 软件部分是基于 CAN 总线来实现 STM32 与上 位机的通信, 主要任务是只要进行 CAN 初始化和数 据发送即可。 本设计初始化模块中只需要对 CAN 工作方式进行配置, 而不需要对过滤器进行特殊的 配置, 部分初始化程序如下 。
/ * CAN register init ( CAN 寄存器初始化 ) * /
CAN_DeInit ( ) ;
CAN_StructInit ( &CAN_InitStructure ) ;
/ * CAN cell init ( CAN 单元初始化 ) * /
CAN_InitStructure. CAN_TTCM = DISABLE ;
……
CAN_InitStructure. CAN_Mode = CAN_Mode_Normal ; / / 工作模式
选择
CAN_InitStructure. CAN_SJW = CAN_SJW_1tq ;
CAN_InitStructure. CAN_BS1 = CAN_BS1_5tq ;
CAN_InitStructure. CAN_BS2 = CAN_BS2_1tq ;
CAN_InitStructure. CAN_Prescaler = 6 ; / / 波特率的设定
CAN_Init ( &CAN_InitStructure ) ;
/* CAN filter init ( CAN 过滤器初始化 ) * /
CAN_FilterInitStructure. CAN_FilterNumber = 0 ;
……
CAN_FilterInitStructure. CAN_FilterActivation = ENABLE ;
CAN_FilterInit ( &CAN_FilterInitStructure ) ;
其中波特率的配置在工作方式配置中是最主
要的 , 设计中使用的开发板中 CAN 是挂 APB1 时钟
上的 , 其频率为 42 MHz 。 由波特率的计算公式 , 波
特率 = 1 / 正常的位时间 , 正常的位时间 = 1 t q + t BS1 +
t BS2 。 但是这样计算的为理论值 , 且难以计算和理
解 , 在实际设置中有简单公式 ( 1 ) , 现欲得到 1 Mbit /
s 的波特率 , 计算如下 :
式 ( 1 ) 中 : CANclock 为 APB 总线频 率 ; prescler 为
APB 总线时钟 6 分频 ; t q 、
t BS1 、
t BS2 分别对应 1 个 、
5 个
和 1 个 t can 时钟周期
3. 2 FPGA 与 STM32 通信模块
在硬件设计中已经介绍了 STM32 和 FPGA 使
用 I /O 口连接 , 软件设计采用 FSMC 总线实现二者
的数据信息的交换 。
STM32 和 FPGA 的通信既要完成 STM32 向
FPGA 下传数据的工作 , 还要达到 STM32 从 FPGA
中回读数据的目的 。 所以两者的通信包含了接收
数据和传送数据两个部分 。 在本文所设计的控制
系统中 , 为了能够实现同步控制多台步进电机 , 使
用了 FSMC 来 实 现 STM32 和 FPGA 两 者 之 间 的
通信 。
ST 公司为用户开发提供了完整 、 高效的工具和
固件库 , STM32 固件库中拥有 FSMC 的 SRAM 控制
器相应的操作固件 , 其中含有 1 个数据结构和 3 个
函数 。
FSMC_NORSRAMInitStructure ; / / 调用库函数 ;
RCC_Configuration ( ) ; / / 时钟选择 ;
NVIC_Configuration ( ) ; / / 中断优先级 ;
FSMC_GPIO_Configuration ( ) ; / / 连接 IO 口初始化 ;
FSMC_SRAM_Init ( ) ; / /FSMC 配置 ;
USART_Initial ( ) ; / /UART1 端口配置 。
本设计初始化模块中只需要对 FSMC 工作方式
进行配置 , 部分 STM32 初始化程序如下 :
FSMC _ NORSRAMInitTypeDefFSMC _ NORSRAMIni-tStructure ; / /
定义 FSMC 初始化的结构体变量
FSMC _ NORSRAMTimingInitTypeDefreadWrite-Timing ; / / 用 来 设
置 FSMC 读时序和写时序的指针变量
GPIO _ InitTypeDefGPIO _ InitStructure ; / / 初 始 化 FSMC 总 线 的
IO 口 。
部分 FPGA 程序如下 :
assign rd = ! ( csn & rdn ) ; / / 获取读脉冲
assign wr = ! ( csn & wrn ) ; / / 获取写脉冲
assign db = rd ? indata : 16' hzzzz ; / * 当不进行读写操作时 db =
indata ;
当进行写操作时 db = 16'hzzzz ; 当进行读操作时 db = indata* /

4 实验验证
为验证该运动控制器的控制效果和控制精度 ,
现对其控制进行实验验证 。 实验验证是在自行设
计制作的运动平台上进行的 , 该运动实验平台运动
执行部分采用的是弹性比较好的弹簧 , 中间则是支
撑弹簧 , 其中 3 个电机与 3 根缆绳相连 , 缆绳的另一
端则连接在软体机器人的单个关节上 , 通过控制器
控制不同电机的启停运转 , 来实现该节弹簧的弯
曲 , 并可以实现弹簧在不同方向的运动 。 控制器以
基于 Cortex-M4 处理器为核心的 STM32F407 芯片和
Xilinx 公司的 AX7102 的 FPGA 开发板 , 进行通信 、
数据处理 、 位置确定和算法实现等操作 。 软体机器
人运动平台如图 10 所示 。
通过控制算法和对应的数据计算 , 在运动平台
按照预先设定的运动方式进行运动 。 通过同时控
制多个电机进行协同运动 , 其中电机转速为 2 r /
min , 以中间支撑轴为原点 , 可以得到在最终运动状
态下机器人弯曲了约 45° , 缆绳缩短约 5 cm 。 具体
运动实验过程如图 11 所示 。
图 11 仅展示机器人首节运动 , 其中图 11 ( a ) 记
为机器人起始状态 , 图 11 ( b ) 、 图 11 ( c ) 、 图 11 ( d )
分别对应 5 、 15 、 30 s 时运动状态 , 其中图 11 ( d ) 即为
最终运动状态 。 由运动状态结果可以得到 , 开发板
在控制电机运动过程中整体运行平稳 , 运动速度有
变化 , 在按照设定的轨迹运动时运动精度较高 , 基
本实现了设想的功能 , 使得该实验成功实现 。

5 结论
对于目前软体机器人运动控制难度大 、 精度
低 、 协同控制多电机难以实现同步性等问题 , 提出
采用基于 ARM 和 FPGA 的软体机器人的 CAN 总线
运动控制器 , 得到以下结论 。
( 1 ) 实现 STM32 与 FPGA 接口通信 , STM32 开
发板根据上位机传输过来的不同命令和相关数据
进行对应的数据分析和处理 , 然后传输给 FPGA 开
发板 , 与此同时也要从 FPGA 开发板上依次读取直
流伺服电机在运动过程中相应的速度和位置等参
数 ; 伺服驱动器通过脉冲宽度调制来实现直流伺服
电机的精确控制 。
( 2 ) 实现 STM32 开发板与上位机之间的通信 ,
这里采用 CAN 总线 , 因为 CAN 总线可以进行大量
数据的高速通信 , 适合对多电机进行协同控制 , 并
可大量传输下位机采集到的数据 。
( 3 ) 在加减速模块中 , 采用 S 型曲线加减速法
有利于减小电机的冲击 , 实现机器人整体平稳运
行 , 作用方法是通过改变运动过程中加速度的大
小 , 使其在不同阶段拥有不同的加速度 , 来大幅度
减小冲击力 。
( 4 ) 根据自行设计加工的运动对软体机器人的
运动控制进行了实验验证 , 实验结果表明 , 该控制
器整体协同控制性能较好 , 能比较理想地实现预期
的运动 。
由于控制算法部分并没有介绍 , 在实际控制过
程中与控制算法中的仿真存在误差 , 所以下一步会
对控制算法和机械结构进行优化 , 以期望实现更理
想的运动 。
信迈提供STM32+FPGA运动控制器定制化解决方案。

基于STM32 ARM+ FPGA 的软体机器人的 CAN总线运动控制器的设计相关推荐

  1. 基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计

    本部分主要介绍 FPGA+ARM 控制部分的软件设计. FPGA+ARM 控制部分包括 Verilog HDL 硬件描述语言和 C 语言的开发. FPGA 部分主要控制 AD7606 模数转换.数字三 ...

  2. 基于STM32 ARM+FPGA的电能质量分析仪方案(一)硬件设计

    本章主要给出了本系统的设计目标和硬件设计方案,后面详细介绍了硬件电路的设计 过程,包括数据采集板. FPGA+ARM 控制板. 3.1系统设计目标 本系统的主要目的是实现电能质量指标的高精度测量和数据 ...

  3. 北航和哈佛研发软体机器人,抓住各类物体!

    章鱼作为软体动物的典型代表而受到研究人员的广泛关注.其触手多自由度运动+数以百计吸盘的奇特结构赋予其无与伦比的水下复杂精密操作能力,能快速捕捉小至螃蟹,大到鲨鱼. 研究人员发现不同种类的章鱼有着不同大 ...

  4. 机器人大牛 Daniela Rus 领衔!MIT 新算法实现软体机器人「本体感知」

    本文转自雷锋网,如需转载请至雷锋网官网申请授权. 说起软体机器人,或许很多人都不觉得陌生了. 软体机器人的发展离不开包括材料学.机器人学.生物力学.传感与控制在内的多学科进步,近年来相关学科迅速发展, ...

  5. 中国首篇Science机器人子刊!北航软体机器人实验室四年成果登上封面长篇

    来源:北航新闻网.机器人大讲堂 概要:通过这三项关键技术,我们成功实现了机器人样机能够像真正的䲟鱼一样牢牢吸附在物体表面,并且通过内部鳍片的主动抬起运动显著增大摩擦力. 重磅 惊喜,北京时间9月21日 ...

  6. 水凝胶 静电纺丝_北理工赵扬ACS Nano:在水凝胶纺织软体机器人方面取得进展

    近日,北京理工大学化学与化工学院赵扬特别研究员与合作者在水凝胶纺丝与软体机器人方向取得重要进展.研究成果以"Large-Scale Spinning Approach to Engineer ...

  7. 人造电子皮肤、软体机器人、单孔腔镜手术机器人......青年科学家们都在研究哪些“黑科技”?...

    8 月 25 日,2017 世界机器人大会人工智能与机器人青年创新创业专题论坛在京召开,本次论坛由中国电子学会-嵌入式系统与机器人分会主办,雅瑞资本.真格基金.立德共创承办,并由多家大学.创投机构.新 ...

  8. 韩国成功研发变色龙软体机器人;曝新iPhone将推出摄影版“人像模式”;Android 12 Beta 4发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 孙胜 出品 | CSDN(ID:CSDNnews) ...

  9. stm32采集脉冲信号_基于STM32+FPGA的数据采集系统的设计与实现

    引言 由于火控系统工作环境特殊,所需采集信号复杂多样,传统的以微控制器或PC为主的采集系统往往难以胜任.针对上述问题,提出了一种基于STM32+FPGA的数据采集系统的设计方案,该方案不仅能够完成对多 ...

最新文章

  1. Java调用库文件(JNI)(android对此有所改变)
  2. Facebook大牛、HipHop作者赵海平加入阿里巴巴
  3. 数据库基础操作(二)数据库表数据的增删查改
  4. 【转】Qt VS MFC
  5. 使用openssh的登录的三种方法
  6. 春节7天新增病毒54万 钓鱼欺诈成最大威胁
  7. SQLserver2008全文检索使用方法
  8. win10鼠标右键拓展(使用vs Code打开)
  9. C++内存管理之shared_ptr
  10. cosmo是什么牌子_时尚COSMO - 时尚品牌 - 时尚
  11. 360视频质量评估标准:WS-PSNR,S-PSNR,CPP-PSNR
  12. 使用react开发谷歌插件
  13. 电脑快捷键快速关机方法,电脑如何快速关机
  14. KNN算法实现鸢尾花的分类
  15. 使用 bash 脚本把 Google 虚拟机的数据备份到 GCS
  16. 团体程序设计天梯赛-练习集L1-058 6翻了 (15 分)
  17. Matlab函数参考
  18. 钉钉分享唤起三方app
  19. 匈牙利表示法(hungarian)
  20. 结合redis设计与实现的redis源码学习-2-SDS(简单动态字符串)

热门文章

  1. win10手动添加隐藏WiFi
  2. 针对部分网站在登陆时无法查看到密码的问题
  3. win10系统轻量级垃圾清理软件推荐
  4. vue调用微信扫一扫功能
  5. 汤家凤数一强化测试10套卷
  6. 转-思想决定行动,行动决定习惯,习惯决定性格,性格决定命运
  7. elasticsearch重启过程
  8. 重磅!三大运营商同框联手发布《5G消息白皮书》,菊风受邀出席发布会
  9. 用Python爬取了三大相亲软件评论区,结果...
  10. 记录深度学习的detection系列过程--RCNN系列