如何在OrangePi AIpro智能小车上实现安全强化学习算法

随着人工智能和智能移动机器人的广泛应用,智能机器人的安全性和高效性问题受到了广泛关注。在实际应用中,智能小车需要在复杂的环境中自主导航和决策,这对算法的安全性和可靠性提出了很高的要求。传统的强化学习算法在处理安全约束时存在一定的局限性,引入安全强化学习算法成为了解决这一问题的有效途径。安全强化学习算法通过在强化学习过程中引入安全约束,确保在训练和实际应用中系统的行为始终在安全范围内。这对于智能小车在无人监督的情况下自主运行尤为重要。本文将介绍如何在OrangePi AIpro智能小车上实现安全强化学习算法,详细探讨硬件和软件的配置、算法的设计与实现、实验设置与结果分析等内容,以期为相关研究提供参考和借鉴。

一、OrangePi AIpro开发板

由于强化学习算法对计算能力有着极高的要求,一般的开发板难以满足其算力需求。经过对比众多开发板的性能,最终选用了OrangePi AIpro作为系统的主控,用于部署安全强化学习算法。OrangePi AIpro是一款高性能的开发板,专为AI和IoT应用设计。搭载了4核64位处理器和强大的AI处理器,支持8TOPS的AI算力。具备8GB或16GB LPDDR4X内存和可扩展的32GB至256GB eMMC存储。板载多种高速接口,包括双HDMI 2.0输出、两个USB 3.0端口、一个Type-C 3.0端口以及支持SATA/NVMe SSD的M.2接口,适合进行大容量数据处理和快速读写。此外,它还提供了丰富的连接选项,如千兆以太网、多种MIPI接口用于摄像头和显示屏,以及预留的电池接口,使其非常适合用于边缘计算、深度学习、视频分析、自然语言处理等多种AI应用场景。OrangePi AIpro支持Ubuntu和openEuler操作系统,配备MindStudio全流程开发工具链,实现简化的开发和模型适配,适用于从AI教学到企业级应用的广泛场景。下图为OrangePi AIpro硬件的详细图。

centered image

本文将详细介绍如何在OrangePi AIpro智能小车上部署强化学习算法,并测试OrangePi AIpro开发板的性能。通过实际应用场景中的实验,评估其在高计算需求任务中的表现,以及其在处理复杂导航和决策任务时的效率和可靠性。

二、安全强化学习

强化学习(Reinforcement Learning, RL)是一种机器学习方法,通过智能体与环境的交互,学习如何在不同情况下采取行动,以最大化某种累积奖励。强化学习广泛应用于机器人运动控制、自动驾驶等领域。在运动控制任务中,基于强化学习的智能体能够根据环境变化调整策略,以完成复杂的场景任务,并可以直接从数据中学习策略降低控制系统的设计成本。然而,由于在策略训练过程中强化学习算法可能会探索危险动作,对机器人的安全性构成潜在威胁,并且随着训练周期的增加,反复试验可能会对机器人的运动性能和使用寿命造成损害。因此,为确保运动体在训练策略和实现目标过程中的安全,安全强化学习算法被提出。

安全强化学习通过结合传统强化学习框架与先进的安全约束策略,致力于增强智能体在复杂环境中的表现与安全性。这些技术主要包括状态约束、安全层和恢复策略等,用以确保在执行任务时,智能体不仅能达成预设目标,同时也能避免对自身及环境造成潜在的危害。通过引入如状态约束,可以限制智能体的行为在安全的状态空间内进行;安全层则通过覆盖或修改原有的行为策略来防止危险行为的发生;恢复策略则在智能体偏离安全路径时提供了必要的干预手段。这些方法的综合应用显著提升了强化学习算法在实际应用中的可靠性和安全性。下图为状态约束下安全强化学习的算法框架。

centered image

三、OrangePi AIpro智能小车的硬件和软件配置

3.1 硬件

OrangePi AIpro智能小车总体硬件图:

centered image

全向移动小车的运动控制是整个实验系统的关键技术之一,它能实现全向移动小车的避障、跟踪等功能。为了保证运动体的安全性和跟踪性,需要通过运动控制器控制四个麦克纳姆轮的的转速和转向,可以控制全向移动小车沿任意方向平移或旋转,从而使小车能够跟踪其安全控制指令。

根据运动控制的硬件配置,选择了嵌入式芯片STM32F407作为运动控制器。为了开发运动控制相关的程序,使用了keil开发环境,并编写了uart串口通信协议来接收安全控制量。由于数据传输过程中可能会出现误码或数据丢失的情况,为了保证数据传输的可靠性和准确性,采用了首尾检验的方法来确保数据的完整性和正确性。接收到安全控制量(Vx,Vy,Yaw)后,不能直接用于电机的控制,需要根据全向移动小车的逆运动学模型,将安全控制量解算为四个轮子的转速。在运动控制器内部,我们使用了PI控制算法对轮子的转速进行闭环控制。同时,为了方便调节PI控制器的参数,使用了Matlab/Simulink系统工具箱。首先,采集全向移动小车的输入和输出数据,并通过系统辨识方法得到了以状态空间表达式呈现的动力学模型。其次,针对该全向移动小车的动力学模型,并根据系统的调节时间和鲁棒性的性能指标,设计了PI控制器的相关参数,实现了全向移动小车能够精确跟踪安全控制量。

3.2 软件环境配置

3.2.1 连接OrangePi AIpro

开机显示页面如下,连接wifi

centered image

3.2.2 ssh连接

为了方便配置环境及进行文件传输,使用ssh连接OrangePi AIpro进行环境配置

img

连接成功

centered image

3.2.3 配置运行环境

创建环境

conda create -n srl python=3.8

安装依赖环境

pip install torch==1.10.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pybullet==3.2.6 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install gym==0.25.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install cvxopt==1.3.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install qpth -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

安装cvxopt报错

centered image

在尝试构建 cvxopt 时,链接器无法找到 llapack 库。

安装 lapackblas

sudo apt-get install liblapack-dev libblas-dev
centered image

表明在编译 cvxopt 时,找不到 umfpack.h 头文件。umfpack.h 是 SuiteSparse 库的一部分,需要安装该库才能解决这个问题

安装 SuiteSparse

sudo apt-get install libsuitesparse-dev
export SUITESPARSE_INCLUDE_DIR=/usr/include/suitesparse
export SUITESPARSE_LIBRARY_DIR=/usr/lib
pip install --no-cache-dir --no-binary :all: cvxopt

四、安全强化学习算法的设计与实现

强化学习 (RL) 的重点是寻找一个的最优得策略, 以获得最大化的长期回报。它通过反 复观察智能体的状态、采取行动, 并获得奖励来反复优化策略以获得最佳策略。该方法已 成功应用于连续控制任务, 其中多次策略迭代得策略已学会稳定复杂机器人。然而, 由于RL专注于最大化长期奖励, 它很可能在学习过程中探索不安全的行为。这个特性是有问题 的尤其对于将部署在硬件上的 RL 算法, 因为不安全的学习策略可能会损坏硬件或给人类 带来伤害。本文是将现有的无模型 RL 算法(DDPG)与控制障碍函数 (CBF) 集成, 在稀疏 奖励下完成运动体的安全控制, 提高学习过程中的探索效率。

由于控制障碍函数具有强约束性的特点, 将强化学习策略探索过程中的动作输出作为标称控制器的输出, 即控制障碍函数的输入, 以保证探索过程中的实时安全, 其与环境交互的原理如图:

centered image

运动体执行的动作为:

$$
u_{k}(s)=u_{\theta_{k}}^{R L}(s)+u_{k}^{C B F}\left(s, u_{\theta_{k}}^{R L}\right)
$$

在无模型强化学习的策略探索中, $u_{\theta_{k}}^{R L}(s)$ 给出了一个动作, 试图优化长期奖励, 但可能是不安全的。CBF控制器 $u_{k}^{C B F}\left(s, u_{\theta_{k}}^{R L}\right)$ 过滤掉强化学习动作中不安全的行为, 并提供最小的控制干预, 以确保总体控制器 $u_{k}(s)$安全, 同时使系统状态保持在安全集内。

CBF控制器的输出 $u_{k}^{C B F}\left(s, u_{\theta_{k}}^{R L}\right)$ 由以下公式在每个时间步长进行一次规划求解得出:

$$
\begin{aligned}
& u_{k}^{C B F}=\underset{v^s, \epsilon}{\arg \min } \frac{1}{2}\left|v^s-u_{\theta_{k}}^{R L}(s)\right|^2+k_\epsilon \epsilon^2 \
& \text { s.t. } \frac{\partial h_i}{\partial p} v^s \geq-\alpha\left(h_i(p)\right)-\epsilon, \quad \forall i \in \mathcal{N}_s
\end{aligned}
$$

其中 $a_{\mathrm{low}}^{i} \leq a_{t}^{i}+u_{\theta_{k}}^{R L(i)}\left(s_{t}\right) \leq a_{\mathrm{high}}^{i}$ 对输出的限幅, 在实际控制对象中, 执行器的动作空间有限, 将动作界限做为二次规划的约束条件, 其输出结果就是在界限内的安全动作, 保证运动体的安全。

五、实验和结果

仿真实验

为了验证安全强化控制算法, 在如下的环境中进行安全控制实验, 运动体 (四轮小车) 需要绕过紫色障碍, 安全到达绿色区域即可获得相应奖励。

centered image

OrangePi AIpro开发板仿真实验运行效果:

centered image

动态运行效果:

centered image

Pybullet动态效果:

centered image

物理实验

本节以全向移动机器人在复杂环境中的路径跟踪为背景设计实验系统,实验系统的总体框图如图所示

centered image

该实验系统由运动捕捉系统、地面站和搭载OrangePi AIpro开发板的全向移动小车组成。运动捕捉系统能够获取全向移动小车的实时位姿, 并将其作为反馈信息传递给地面站。地面站讲定位数据解算完成,讲小车的控制指令与位置信息发送给小车, 小车OrangePi AIpro运行安全强化学习策略,给出小车的速度控制指令,产生安全控制,控制全向移动小车安全地到达目标点。

物理实验效果:

centered image

六、总结

本文成功在OrangePi AIpro智能小车上实现安全强化学习算法的部署,并进行了仿真及物理实验测试,均取得了良好的测试效果,显示了该开发板在AI应用中的潜力和实用性。以下是对OrangePi AIpro的综合评价,包括其优点和一些改进建议:

优点:

  1. 环境配置便利: 通过支持conda环境管理工具,使得环境配置变得迅速且高效,对于强化学习等算法依赖的安装过程中没有出现致命的编译错误。
  2. 高性能AI算力: 支持8TOPS的AI算力,表现出色,尤其适用于计算需求较高的AI应用场景。
  3. 高性价比与流畅度: 相比于其他竞争对手如树莓派,OrangePi AIpro提供了更优的性价比和更流畅的开发体验。

改进建议:

  1. 供电方案优化: 在移动机器人等移动设备上部署时,现有的供电方案不够理想。建议提供更详细的供电指南,包括是否可以通过引脚供电的具体方法。
  2. 框架兼容性与部署流程: 虽然OrangePi AIpro在性能上表现出色,但主流AI算法框架(如TensorFlow、Pytorch、PaddlePaddle)的兼容性仍有待提高。建议开发更系统的算法框架转换和部署流程,以便开发者能够更顺利地实现算法的迁移和应用。

七、参考资料

  • 基于分层强化学习与控制障碍函数的安全控制算法[J]. 控制工程
  • OrangePi 官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/652538.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot搭建OAuth2

背景 前几天自己从零开始的搭建了CAS 服务器,结果差强人意(反正是成功了)。这几天,我躁动的心又开始压抑不住了,没错,我盯上OAuth2了,大佬们都说OAuth2比CAS牛批,我就想知道它有多牛…

Elasticsearch不删原有jdk8导致的系列安装和启动问题

以前在空机器直接装elasticsearch,没有遇到什么问题。今天在现有JDK上安装,遇到的问题记录一下: 1. JDK的环境变量配置与我原有的不一致报如下错误: [estestZK-DES-I root]$ /usr/elasticsearch/bin/elasticsearch could not fi…

SSL函数01-数组函数Array Functions

一、数组的初始化 SSL中,数组下标从1开始! 1-1、不知道数组的长度 :DECLARE a6; a6 : {}; Aadd(a6,a); Aadd(a6,b); Aadd(a6,c); 当用a : {}创建一个数组的时候,不可以用a[1] 值,来赋值! 1-2、知道数组的长度 方式一…

【录用案例】2天录用!提交可录,沾边即可!

本周投稿推荐 SSCI • 2区社科类,3.0-4.0(录用友好) EI • 计算机工程生物医学等(2天录用) CNKI • 3天内初审录用,随即出版(急录友好) SCI&EI • 4区生物医学类&#x…

数据链路层 + NAT技术

数据链路层:负责设备之间的数据帧的传送和识别。 一、以太网 以太网的帧格式 如何分离报头和有效数据? 报头是固定长度的 如何将数据交给上层协议? 通过类型,如果是0800,则交给IP协议,如果是0806&#xf…

JavaScript正则表达式

一、介绍 正则表达式是用于匹配字符串中字符组合的模式。在javascript中,正则表达式也是对象。通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式。 正则表达式的作用: 表单验证(匹配)、过滤敏感…

筛斗数据提取:解锁信息宝藏的关键步骤

在数字化时代,数据已成为推动社会进步和企业发展的关键要素。然而,数据本身并不直接产生价值,其价值在于我们如何从中提取有用的信息。数据提取,作为解锁信息宝藏的关键步骤,对于任何希望从海量数据中获取洞察力和竞争…

十四天学会Vue——Vue核心(理论+实战)上篇(第一天)

一、Vue核心(上篇) 热身tops:选取开发模式 ①用于开发模式 我们只需要知道 我们是开发模式,开发模式他会跟你提示代码出现错误的地方以及出错原因,而生产模式比较简洁。 ②用于生产模式 1.1 new Vue()实例 了解Vue&a…

人脸识别——筛选与删除重复或近似重复数据提高人脸识别的精确度

1. 概述 人脸识别研究通常使用从网上收集的人脸图像数据集,但这些数据集可能包含重复的人脸图像。为了解决这个问题,我们需要一种方法来检测人脸图像数据集中的重复图像,并提高其质量。本文介绍了一种检测人脸图像数据集中重复图像的方法。该…

有趣的css - 双开门按钮

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是一个双开门的按钮,交互效果比较强,但是实现很简单,快学起来吧。 最新文章通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码cs…

充电宝哪家好用推荐?买什么充电宝性价比高?2024年充电宝排行榜

说实话,我其实是个手机重度使用者,买过的充电宝也有无数款了,每次手机没电的时候插座都离得不是特别近,不是要下床充电就是要固定在一个位置充电感觉怪麻烦的,但是有了充电宝后可以在床上玩手机都不用担心手机没电&…

惯性测量单元M-G366PDG提供低误差系数的解决方案

人形机器人、自动驾驶的快速发展,促成了惯性测量单元(IMU)的爆火市场。据相关研究报告统计,IMU全球市场规模从2018年的99.94亿美元增加至2021年的135.95亿美元预计2027年将达到222.53亿美元,2021年至2027年复合增长率达8.56%。而由于智能技术…

VUE3+TS+elementplus创建table,纯前端的table

一、前言 开始学习前端,直接从VUE3开始,从简单的创建表格开始。因为自己不是专业的程序员,编程主要是为了辅助自己的工作,提高工作效率,VUE的基础知识并不牢固,主要是为了快速上手,能够做出一些…

免费,Python蓝桥杯等级考试真题--第13级(含答案解析和代码)

Python蓝桥杯等级考试真题–第13级 一、 选择题 答案:C 解析:正向下标由0开始,下标3代表第四个元素,故答案为C。 答案:A 解析:range(0,4)的取前不取后,元组的符号是小括…

AI大模型在测试中的深度应用与实践案例

文章目录 1. 示例项目背景2. 环境准备3. 代码实现3.1. 自动生成测试用例3.2. 自动化测试脚本3.3. 性能测试3.4. 结果分析 4. 进一步深入4.1. 集成CI/CD管道4.1.1 Jenkins示例 4.2. 详细的负载测试和性能监控4.2.1 Locust示例 4.3. 测试结果分析与报告 5. 进一步集成和优化5.1. …

Transformer模型的简单学习

前言 Transformer 来源于一篇论文:Attention is all you need TRM在做一件什么事情呢?其实一开始它是被用于机器翻译的: 更详细的: 更详细的: 从上图可以看出,一个Encoders 下面包含了 n 个 Encoder&…

triton之paged attention

一 原理 图解大模型计算加速系列之:vLLM核心技术PagedAttention原理 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/691038809 二 源码分析 1 测试参数设置 test_paged_attention(num_seqs32,num_heads(64, 64),head_size64,block_size16,dtypetorch.float16,…

【ARM+Codesys案例】RK3568 +Codesys 软PLC方案在电镀生产线的应用

1 电镀生产简介 电镀是一种比较重要的工艺,产品经过电镀工艺处理后,不仅产品质量获得提高,产品性能也会大幅度提高,同时延长了产品的使用时间。电镀生产线是指按一定的电镀生产工艺要求,将有关的各种电镀处理槽、电镀行车运动装置…

ubuntu移动硬盘重命名

因为在ubuntu上移动硬盘的名字是中文的,所以想要改成英文的。 我的方法: 将移动硬盘插到windows上,直接右键重命名。再插到ubuntu上名字就改变了。 别人的方法: ubuntu下如何修改U盘名字-腾讯云开发者社区-腾讯云 在自带的软件…

安卓获取内部存储信息

目录 前言获取存储容量 前言 原生系统设置里的存储容量到底是怎么计算的,跟踪源码,涉及到VolumeInfo、StorageManagerVolumeProvider、PrivateStorageInfo、StorageStatsManager......等等,java上层没有办法使用简单的api获取到吗&#xff1f…