关于在机器人领域深入应用FPGA技术的一些思考

本文分析了FPGA在机器人领域的应用前景,指出基于ROS的机器人反馈控制系统存在性能瓶颈,如信号采集、数据处理和指令执行阶段的实时性问题。而加入FPGA能提高多路传感器采样、反馈控制算法及多路驱动器动作的实时性和协同性,还给出了应用思路、实施方法及系统优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录:

0 引言

1 机器人控制系统的理想化设计目标

2 基于ROS实现反馈控制环路的性能瓶颈、基于FPGA的解决方法

2.1 建立作为分析对象的简化系统架构图

2.2 对信号采集阶段的分析
2.2.1 基于ROS的架构中典型的信号采集过程
2.2.2 基于ROS的架构中信号采集过程的性能瓶颈
2.2.3 基于FPGA的架构针对信号采集过程的解决方法

2.3 对数据处理阶段的分析
2.3.1 基于ROS的架构中典型的数据处理过程
2.3.2 基于ROS的架构中数据处理过程的性能瓶颈
2.3.3 基于FPGA的架构针对数据处理过程的解决方法

2.4 对指令执行阶段的分析
2.4.1 基于ROS的架构中典型的指令执行过程
2.4.2 基于ROS的架构中指令执行过程的性能瓶颈
2.4.3 基于FPGA的架构针对指令执行过程的解决方法

2.5 关于RTOS + ROS2

2.6 小结

3 基本思路及实施方法
3.1 在机器人领域深入应用FPGA技术的基本思路
3.2 基本思路的实施方法

4 系统优化科技树 -- 基于FPGA实现EtherCAT主站控制器之后

5 建议

正文:

0 引言

FPGA相比于CPU、DSP,具有高速、并行、运算及引脚资源极其丰富、定时精确、功能灵活、硬件直接实现算法、操作数存取机制简单高效、开发调试手段直探硬件底层的优点。个人认为,在机器人领域深入应用FPGA技术具有非常广阔的前景,有望成为行业技术创新的下一个突破点

伺服驱动器中应用FPGA是业界的常规做法,在此基础上更进一步,已经有专业的机器人技术团队在深入应用FPGA的方向做出努力,我了解到的有武汉某初创公司的研发团队(以下简称为“武汉J团队”)以及某大型国企。武汉J团队的最新方案“新一代片上驱控一体系统”以Zynq芯片作为硬件载体,用Zynq内置的一个ARM核跑Linux+ROS作为系统的基础,改写一部分ROS功能模块以提高其实时性,用Zynq内置的另一个ARM核无操作系统执行实时性要求比较高的软件算法(例如运动控制),用Zynq内置的FPGA资源实现硬件加速、信号处理、电机控制(包括电流环控制)、I/O扩展功能,在电机侧直接摒弃了EtherCAT。

武汉J团队的技术负责人曾经就他们的上述工作做过一次公开的介绍,其内容篇幅不长,并且整体来说偏重于从系统架构设计的角度进行阐述,可能不利于读者深入理解在架构中引入FPGA的重要意义;他关于ROS局限性的阐述,更多的是提供一些经验,没有进行原理方面的分析。

本文依据笔者对机器人系统、计算机体系结构、操作系统、ROS、FPGA技术的理解,定性分析以Linux+ROS为代表的软件系统实现实时多任务目标时存在的性能短板,提出关于在机器人领域深入应用FPGA技术的一些想法

本文内容复制自笔者几年前写的一篇技术文档。这篇文档当时曾在小范围内传播,现在以知乎文章的形式予以公布,以期为机器人领域底层技术的更新换代略尽绵薄之力。

笔者并非机器人专业科班出身,所述内容难免存在谬误之处,欢迎业内人士批评、指正。

所述内容若侵犯他人知识产权,请留言告知,笔者将道歉、删除相关内容。

1 机器人控制系统的理想化设计目标

为展开分析,首先明确在已完成反馈控制算法设计的情况下机器人控制系统的理想化设计目标

在一定的成本约束下,在统一的时标下,在尽可能短的时间周期之内,以尽可能小的周期抖动幅度,完成对传感器信号集的采样、传输、数据处理、生成控制信号集,然后,以尽可能短的延迟,在各控制信号所需的尽可能精确的时刻,将控制信号集传输到各个执行器。

2 基于ROS实现反馈控制环路的性能瓶颈、基于FPGA的解决方法

2.1 建立作为分析对象的简化系统架构图

为方便分析问题,首先将基于ROS的机器人反馈控制系统抽象为一个简化的系统架构图图A),然后逐一分析反馈控制环中的三个阶段:信号采集、数据处理、指令执行,指出因为软件的执行必须在操作系统的调度下时分复用CPU而导致系统存在性能瓶颈,进而设计了加入FPGA之后系统的简单架构图B),分析后者在解决这些瓶颈问题方面所能起到的作用。

图A中,在Linux内核调度下,多个ROS节点以时分复用CPU的模式运行,通过API与传感器/执行器的驱动程序通信,进而实现与传感器/执行器进行参数、指令、数据、状态的传输。

图B在图A的基础上增加了FPGA,FPGA一侧挂在CPU的外部总线上,另一侧连接各传感器/执行器,形成驱动程序与传感器/执行器之间的中间环节。

对图A、图B的几点说明

(1) 此处着重讨论软件运行机制对机器人性能的影响,所以并未按标准的机器人系统5级架构(主机、运动控制器、伺服驱动器、电机、机械结构)进行描述,而是将其抽象为“CPU+总线+内存+外设”的简化计算机系统。

(2) 图A、B中将内存挂接在外部总线上属于抽象的示意。实际的DDRX-SDRAM模组应该连接到位于CPU或北桥芯片中的内存控制器,若应用程序/外设需对内存进行读写,就要由CPU、各级Cache控制器、内存控制器协同执行一系列复杂的软硬件操作,这些操作仅仅在外部行为上可以抽象地表述为“某软/硬件读写了由某段地址标定的一块内存空间”。

(3) 如某些技术资料中提到的,在产品化的机器人系统中,纯粹的ROS节点只能实现机器人所必须的大量功能中的一部分,很多功能需要由开发者自己编写的应用程序予以实现。这些应用程序在形式上未必与ROS节点相同,但两者同属于应用软件,两者与操作系统、内存、传感器、执行器进行数据交互基本过程也相差不多,所以在图中、在后续分析中未予单独表述。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值