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

news2024/11/16 2:07:07

随着人工智能和智能移动机器人的广泛应用,智能机器人的安全性和高效性问题受到了广泛关注。在实际应用中,智能小车需要在复杂的环境中自主导航和决策,这对算法的安全性和可靠性提出了很高的要求。传统的强化学习算法在处理安全约束时存在一定的局限性,引入安全强化学习算法成为了解决这一问题的有效途径。安全强化学习算法通过在强化学习过程中引入安全约束,确保在训练和实际应用中系统的行为始终在安全范围内。这对于智能小车在无人监督的情况下自主运行尤为重要。本文将介绍如何在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 官方文档

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[CVPR-24] HUGS: Human Gaussian Splats

本文提出一种新的数字人表征Human Gaussian Splats (HUGS),可以实现新姿态和新视角生成;本文提出一种新的前向形变模块(forward deformation module),在标定空间基于Gaussians表征数字人,并基于LBS学习如何…

【Pandas】深入解析`pd.read_sql()`函数

【Pandas】深入解析pd.read_sql()函数 🌈 欢迎莅临我的个人主页👈这里是我深耕Python编程、机器学习和自然语言处理(NLP)领域,并乐于分享知识与经验的小天地!🎇 🎓 博主简介&#xf…

开放式耳机推荐品牌:五款品质超凡机型必须选购

在这个快节奏的生活中,我们每个人都渴望在忙碌之余找到一片属于自己的宁静。音乐,作为连接心灵的桥梁,无疑是最为直接和有效的途径。而一款优秀的开放式耳机,不仅能让我们沉浸在美妙的旋律中,还能在保持对外界环境感知…

Golang os.Rename invalid cross-device link的原因

文章目录 背景运行环境 文件系统对比linux下的文件系统mac下的文件系统linux下的mv指令 golang的os.Rename源码os.Renamesyscall.Renamesyscall.RenameatSYS_RENAMEAT是什么 查看系统调用函数文档什么是man pageman page的用法user commandssystem calls renameat不支持跨挂载点…

如何用俄语预定酒店,柯桥外贸俄语培训

-Привет, Алекс! Как твои дела? 你好,阿列克斯!你最近好吗? -Отлично! Я скоро уезжаю на 10 дней в Санкт-Петербург, но никак не могу найти там…

ITIL4认证考试这么贵,还值得考证吗,有必要学吗?

从2023年4月1日开始,ITIL 4是Foundation认证将会捆绑OTM(Official Training Materials),这样在一次ITIL4的考试费中将会捆绑:试卷费电子教材书费监考费OTM费,每一种考试费都相较于2022年有涨幅,再加上PeopleCert收取的授权机构的授…

redis-cli help使用

1. redis-cli命令使用—先连接上服务器 连接到 Redis 服务器: 使用 redis-cli 命令即可连接到本地运行的 Redis 服务器,默认连接到本地的 6379 端口。 redis-cli如果 Redis 服务器不在本地或者端口不同,可以使用 -h 和 -p 参数指定主机和端…

一次收获颇丰的Google漏洞挖掘旅程

本文由安全专家Henry N. Caga于2024年03月23日发表在InfoSecWrite-ups网站,本文记录了Henry N. Caga的一次漏洞挖掘过程,此次漏洞挖掘的成果得到了Google官方认可,拿到了4133.70美元的漏洞奖金,并让他成功进入了Google名人堂。本文…

秘钥托管技术简介

目录 前言 一、秘钥托管是什么? 二、秘钥托管技术简介 1. Skipjack算法 2. LEAF产生过程示意图 3. 对加密通信的法律实施存取过程 总结 前言 1993年4月,美国政府为了满足其电信安全、公众安全和国家安全,提出了托管加密标准EES (escro…

ADOP带你了解:800G 收发器的类型和应用

随着对快速数据传输的需求不断增加,800G收发器因其高带宽、快速传输速率、出色的性能、紧凑的设计和面向未来的兼容性等特性而引起了人们的极大兴趣。在本文中,我们旨在概述各种 800G 光模块,并深入研究它们的应用,以帮助您在选择…

卷积计算过程详解(含图示和代码)

什么是卷积? 卷积是一种数学运算,通过两个函数f和g生成第三个函数,其本质是一种特殊的积分变换,表征函数f与g经过翻转和平移的重叠部分函数值乘积对重叠长度的积分。卷积在泛函分析中扮演重要角色,可以被看作是“滑动平…

1.9.3 卷积神经网络中的瓶颈结构和沙漏结构提出的初衷是什么?可以应用于哪些问题?

chat瓶颈结构沙漏结构初衷瓶颈结构最初被引入用于深度卷积神经网络中,旨在通过减少中间特征图的通道数来降低计算复杂度,并在保持网络容量的同时减少参数量。这种设计能够在保持网络性能的前提下,提高计算效率和降低内存消耗。沙漏结构最初提…

从 ASCII 到 UTF-8 - Unicode 码的诞生与实现

前言:最近我在整理过往笔记时,发现涉及到了 UTF-8、Unicode 的相关内容,相信大家中的很多人和之前的我一样,在过去的很长一段时间里,并没有搞清楚什么是 Unicode、什么是 UTF-8,于是就有了这篇文章&#xf…

线下教育招生营销短信群发时这几点很重要

线下教育招生营销短信群发时,以下几点非常重要,可以帮助教育机构更有效地进行招生营销: 一、明确目标受众 1.确定目标学生群体:了解你的机构主要服务于哪个年龄段、需求和兴趣的学生,以便更有针对性地编写短信内容。…

LeetCode热题100 Day1——双指针

双指针 移动零11. 盛最多水的容器 移动零 思路: 双指针i,j,j指针遍历数组,i指针存放非0元素。遍历结束后,i指针及其后面的一定是0,就再将空出来的位置设置为0 移动零 class Solution {public void moveZeroes(int[] …

942. 增减字符串匹配 - 力扣

1. 题目 由范围 [0,n] 内所有整数组成的 n 1 个整数的排列序列可以表示为长度为 n 的字符串 s &#xff0c;其中: 如果 perm[i] < perm[i 1] &#xff0c;那么 s[i] I 如果 perm[i] > perm[i 1] &#xff0c;那么 s[i] D 给定一个字符串 s &#xff0c;重构排列 pe…

Linux搭建PHP下的RabbitMQ环境(php-amqp/rabbitmq-c/erlang)

本文演示环境 Red Hat 11.2.1-9gcc (GCC) 11.2.1 20220127OpenSSL v1.1.0PHP 7.1 安装erlang erlang和RabbitMQ有版本对应关系Erlang Version Requirements&#xff0c;需要选择正确的版本。 本文以erlang 26和RabbitMQ 3.13.2为例。 erlang下载地址 下载包上传服务器后&a…

Ubuntu20.04升级到22.04之后出现的问题

项目场景&#xff1a; 之前一致使用的是Ubuntu20.04&#xff0c;虽然丑了点&#xff0c;但是用着没什么问题&#xff0c;最近没能按捺住好奇心&#xff0c;升级到了22.04&#xff0c;升级后颜值有所提高&#xff0c;但是也带来了一些问题。 从20.04升级到22.04&#xff0c;起始…

Cobaltstrike渗透测试框架

Cobaltstrike简介 cobalt strike&#xff08;简称CS&#xff09;是一款团队作战渗透测试神器&#xff0c;分为客户端及服务端&#xff0c;一个服务端可以对应多个客户 端&#xff0c;一个客户端可以连接多个服务端&#xff0c;可被团队进行分布式协团操作. 和MSF关系 metas…

pdf只要其中一页 pdf只要第一页怎么办 pdf只要前几页怎么弄

在现代办公环境中&#xff0c;PDF文件已经成为我们日常工作中不可或缺的一部分。然而&#xff0c;有时我们可能只需要PDF文件中的某一页&#xff0c;而不是整个文件。这时&#xff0c;我们该如何操作才能只获取所需的那一页呢&#xff1f;本文将详细操作方法&#xff0c;帮助大…