基于鲁棒观测器的深度强化学习垂直起降运载器姿态稳定研究

源自:系统工程与电子技术

作者:李彦铃  罗飞舟  葛致磊

“人工智能技术与咨询”  发布

摘要

针对考虑弹性振动、模型不确定干扰下的垂直起降运载器姿态稳定问题, 将鲁棒观测器和深度强化学习中的近端策略优化算法相结合, 研究了一种基于鲁棒观测器的近端策略优化(robust observer-based proximal policy optimization, ROB-PPO)方法。该方法设计鲁棒观测器重构受弹性振动干扰的运载器姿态信息, 将鲁棒观测器与运载器动力学模型组成环境, 将鲁棒观测器得到的重构姿态作为深度强化学习算法的状态, 使得深度强化学习智能体与之不断交互, 从而训练智能体控制运载器姿态稳定。仿真结果表明, 所研究的ROB-PPO算法相较于目前常用的自适应模糊比例-积分-微分(proportional-integral-derivative, PID)算法鲁棒性更强, 收敛速度更快。最后, 在自主研制的垂直起降运载器上验证了所提出算法有效性。

关键词

垂直起降运载器 ; 姿态控制 ; 鲁棒观测器 ; 深度强化学习

 引言

随着人类对太空的不断探索, 对运载火箭技术的要求也逐步提高, 迄今为止国内运载火箭型号几乎只能单次使用, 而垂直起降技术的发展为运载火箭重复使用开辟了一条新道路[1-2]。垂直起降运载器从提出伊始就受到各国航天机构及科研人员的高度重视, 随之多种垂直起降运载器应运而生, 如ROOST/ROBOS[3]、Apollo Lunar Module[4]、DC-X/DC-XA[5]、RVT[6]、Falcon系列[7]等。

垂直起降运载器控制系统的设计是其飞行控制技术的核心, 而姿态稳定是运载器平稳飞行的前提。根据当前的研究和工程实践, 稳定飞行器姿态控制是一个复杂而关键的问题, 需要选择合适的控制策略以实现期望的控制效果[8-9]。滑模控制、模型预测控制和鲁棒控制等算法被广泛应用于该领域, 但存在对模型准确性和全面性的依赖问题[10-12]。一方面, 如果模型表达不够准确或参数无法精确表达, 则这些控制方法可能无法获得理想的效果; 另一方面, 过于复杂的模型也会增加控制器设计难度。因此, 应在模型准确性和复杂度之间进行权衡并寻找最优解。虽然比例-积分-微分(proportional-integral-derivative, PID)控制仍是目前工程上主流控制算法之一, 但其抗干扰能力和处理模型不确定性的能力相对较弱[13]。近年来, 许多改进PID控制方法被提出, 其中自适应模糊PID控制结合模糊控制和PID控制的优点, 被广泛应用于垂直起降无人机姿态控制[14-16]。

同时, 长细比的增加降低了运载火箭弯曲模态的固有频率, 低阶弹性振动容易与火箭本身的振动耦合, 使控制更加困难, 对于高阶弹性振动可以设计陷波滤波器进行抑制, 但是对于低模态的弹性振动, 特别是振动频率接近箭体的固有频率时, 弹性振动的抑制比较困难, 因此目前低阶弹性振动干扰下的箭体姿态稳定问题仍然是航空航天领域的难题[17]。

随着信息技术的进一步发展, 人工智能技术的飞速发展也切实影响到了传统控制领域。基于机器学习的智能飞行控制策略成为研究焦点[18]。即使对于不确定的非线性模型, 智能控制算法也能实现良好的控制效果, 这主要得益于深度神经网络强大的非线性拟合能力[19]。但是通过神经网络的实现行为克隆的方法有时效果会很差, 这是由于网络收集的数据和正确数据不匹配[20]。因此, 为了克服监督学习方法的不足, 研究人员提出了深度强化学习方法。在2005年, Waslander等人首次将强化学习算法应用在四旋翼模型飞行控制问题[21]。近些年来, 深度强化学习已经被应用于无人机控制[22]、机器人控制[23]、自动驾驶[24]以及制导一体化[25]等领域, 都取得了出色的效果。然而, 上述研究都仅仅停留在仿真环境中, 在真实环境和仿真环境之间存在着许多差异, 将从仿真环境中学习到的飞机模型直接应用到实际的环境中会导致许多问题, 如精度和稳定性下降, 这才是研究的难点[26]。

本文主要研究运载器验证机在垂直起降阶段的俯仰通道的姿态稳定问题, 该验证机俯仰通道开环系统的截止频率ωc=1.8 Hz, 根据带宽与截止频率的关系可得系统带宽ωb=1.6ωc=2.88 Hz, 若是一阶振动频率和系统带宽相差10倍以上, 则完全没有必要考虑一阶振动的影响, 使用频率隔离法就能设计出满意的控制器。然而, 当振动频率模态频率略大于系统带宽时, 弹性振动很难与工作频率分隔开, 此时频率隔离法不适用, 需要研究其他策略[27-28]。经过辨识, 本文的研究对象一阶振动模态频率为20.25 rad/s, 二阶振动模态频率为180.88 rad/s, 因此对一阶振动模态抑制难以使用频率隔离法。本文中, 首先为了避免欧拉角奇异, 以垂向地理坐标系作为惯性坐标系, 建立动力学和运动学模型。其次, 考虑垂直起降过程中的弹性振动、模型不确定性等干扰因素, 设计基于鲁棒观测器的深度强化学习控制策略。设计鲁棒观测器对姿态变量与复杂的弹性振动进行重构, 使得弹性振动变量转换为易于控制的具有箭体姿态特征的附加姿态, 并将带有附加姿态的重构箭体姿态作为深度强化学习神经网络的输入, 输出最优控制力矩指令, 以稳定垂直起降运载器验证机在垂直起降过程中俯仰姿态角和弹性振动。本文从仿真和实物上验证了面对包含弹性振动模型不确定性的复杂受控系统, 相较于工程中应用广泛的自适应模糊PID控制, 本文设计的控制算法能够更好地稳定火箭姿态。

1 模型建立

本文以实验室一台自制的运载火箭验证机作为研究对象, 该验证机是大型运载火箭的合理微型化, 如图 1(a)所示, 同时为了模拟真实运载火箭在飞行过程中出现的弹性振动干扰, 在验证机上搭载了弹性舱段, 细节如图 1(b)所示。

图片

图1   垂直起降运载器验证机

由于运载器在垂直起降飞行时姿态角的定义不同于常规飞行器, 为了避免运载器在垂直起降过程中出现的欧拉角奇异问题, 本文采用垂向地理坐标系(“天东北”, 即UEN)作为火箭的惯性参考坐标系, 如图 2所示。

图片

图2   垂向地理坐标系

垂向地理坐标系下运载器的姿态角表示为

图片

, 机体角速度与姿态角之间的关系如下所示:

图片

(1)

式中: φv是垂向滚转角; θv是垂向俯仰角; ψv是垂向偏航角。w=[p, q, r]T为运载器在机体坐标系下的角速度。

为便于建立运载器垂直起降动力学模型, 本文做出以下假设。

假设1   重力加速度不会随着运载器飞行高度的变化而变化, 忽略地球曲率。

假设2   运载器的构型和质量分布关于箭体纵轴对称, 所以惯性积Jxy=Jyz=Jxz=0[29]。

在上述假设成立的前提下, 机体坐标系下绕运载器质心转动的动力学方程如下所示:

图片

(2)

式中: M=[Mx, My, MZ]T为运载器受到的合力矩, 且M=Mc+Md, Mc=[Mcx, Mcy, Mcz]T是控制力矩, Md=[Mdx, Mdy, Mdz]T是总的干扰力矩, 包括重力力矩、气动力矩等干扰力矩。

本文研究俯仰通道的控制器的设计, 弹性振动方程如下所示:

图片

(3)

联立式(1)~式(3), 同时考虑到垂直起降飞行模式下的滚转角非常小, 俯仰角速度是影响θv的主要因素, 故可得到运载器俯仰通道的动力学模型如下:

图片

(4)

式中: qi 为第i阶弹性振动位移;ξi为第i阶弹性振动的阻尼比;ωi 为第i阶弹性振动的振动频率;D1i 为第i阶弹性振动和俯仰角的耦合系数;D2i为第i阶弹性振动与控制力矩的耦合系数;Qiy是第 i 阶弹性振动受到的广义干扰力矩。dθv1可以看作俯仰通道的干扰量。

对式(4)两边求导可得

图片

(5)

将式(2)中的第2式代入式(5)为

图片

(6)

式中:m表示箭体弹性振动的阶数。

式(6)进一步写为

图片

(7)

式中:

图片

2 垂直起降姿态控制器设计

垂直起降运载器俯仰通道姿态控制器的设计分为两个部分: 第一部分是鲁棒观测器的设计, 设计鲁棒观测器使得垂直起降过程中的低阶弹性振动成为刚体姿态的附加姿态角, 实现弹性振动的被动抑制; 第二部分设计深度强化学习控制器, 将鲁棒观测器输出的带有附加姿态的姿态角和姿态角速度作为输入从而决策出控制指令, 作用给环境。环境反馈给近端策略优化(proximal policy optimization, PPO)智能体下一时刻的状态、奖励信息以及结束信号, PPO智能体以最大化累计奖励为目标, 不断优化深度神经网络参数, 实现运载器姿态稳定[30]。这里需要说明的是, 此处的附加姿态角和附加姿态角速度是中间量, 是鲁棒观测器重构受弹性振动干扰的姿态角和姿态角速度过程中得到的; 而带有附加姿态的俯仰角和俯仰角速度是鲁棒观测器的输出量, 即为重构后的姿态角和姿态角速度。

2.1 鲁棒观测器设计

首先设计鲁棒观测器, 将运载器垂直起降过程中的干扰通过鲁棒观测器转换为箭体姿态的附加姿态角和附加姿态角速度, 此时鲁棒观测器的输出是带有附加姿态的俯仰角和俯仰角速度, 即重构后的姿态角和姿态角速度, 这样可以使干扰对火箭姿态控制的影响大大减小。

考虑箭体控制中纵向通道姿态控制系统具有如下形式:

图片

(8)

式中: A为姿态状态矩阵; B为控制矩阵; F为设定的输出矩阵; 

图片

为姿态向量; F=[f, 1], f>1, 则

图片

为输出信号, 由系统输出的受到弹性振动干扰的姿态角和姿态角速度的加权组成, 这里受到弹性振动干扰的姿态角和姿态角速度即为鲁棒观测器需要重构的状态量; fx表示系统不确定部分的总和, 各矩阵具有相应维数, A∈Rn×n, B∈Rn×m。

引入一个非奇异的变换T, 使得

图片

(9)

本文中取

图片

则方程可转化成

图片

(10)

式中: z是变换后的状态向量, 由z1和输出信号y构成, z1=-fθv。

根据参考文献[17], 针对变换后的动态方程设计观测器如下:

图片

(11)

图片

(12)

图片

(13)

式中: 

图片

是鲁棒观测器得到的状态观测值, 

图片

分别表示重构后的姿态角和姿态角速度; 

图片

, 是观测器的输出; a1, a2, …, an是

图片

的特征方程的系数; v是设计的变结构观测控制量; Gn是变结构观测控制量的系数矩阵, 在本文中取

图片

; 根据文献[31], 

图片

是可变增益; L是干扰的上界; sign(·)表示符号函数; 其余参数详情见文献[17]。

可以得到误差方程:

图片

(14)

式中:

图片

定理1[32]   当k1, k2, …, kn被正确选择时, 误差运动是有限时间稳定收敛的。

当系统存在不确定性, 即存在参数摄动和外干扰时, 特别是当外干扰较大或变化较剧烈时, 上述设计的变结构观测控制量v存在较大的抖振, 引入边界层进行连续化, 即:

图片

式中: p1∈Rp×p是李亚普诺夫方程ATp1+p1A=-Q1的解, Q1是一个对称正定的矩阵; η的取值要满足误差方程李亚普诺夫稳定性条件, Δ是边界层。

2.2 深度强化学习控制器设计

强化学习是不同于有监督学习和无监督学习的一种全新的学习方式, 通过不断与环境交互, 以试错的方式学习经验更新策略以最大化目标奖励。强化学习问题都需要被描述成马尔可夫问题, 本文中运载器姿态的转移过程也可以被看作是马尔可夫过程, 即: P(st+1)=E(st+1|st, at), 其中st+1代表t+1时刻的系统状态, 也就是鲁棒观测器输出给强化学习控制器的含有附加姿态的俯仰角

图片

和俯仰角速度

图片

, 即重构后的俯仰角和俯仰角速度, st+1只和t时刻的系统状态有关。在状态转移过程中强化学习智能体得到环境返回的奖励rt(at, st)。定义一个回合中的动作序列τ={s1, a1, s2, a2, …, sτ, aτ}, 累计期望收益指的是采取一个行动状态序列τ的概率与该行动组状态序列对应的奖励乘积之和。

图片

(15)

式中: R(τ)表示每一个回合的累计奖励; pθ(τ)为每一个回合发生的概率, θ是策略π的网络参数, pθ(τ)为一个行动状态序列τ的概率, 可以进一步表示为

图片

(16)

强化学习的目标函数就是最大化累计奖励, 即式(15)。

目标函数对网络参数θ求偏导可得

图片

(17)

由求导公式

图片

, 可将式(17)化简为

图片

(18)

深度强化学习是将深度学习和强化学习相结合, 使算法同时具有深度学习强大的表述能力和强化学习卓越的自适应能力。PPO算法基本已经成为一种最流行的深度强化学习算法, 在Open AI开源算法中, 也将PPO作为基线算法。其采用Actor-Critic网络结构, 其中Actor网络输出动作, Critic网络输出状态价值函数V(st)。

为了得到状态的精确价值估计, PPO算法采用广义优势估计优化价值函数, 如下所示:

图片

(19)

式中: δt 为时序差分, 具体表达式为式(19)第2式; γ和λ是两个重要的参数, γ决定了价值函数的最大值, λ用来平衡偏差和方差。同时, PPO为了提高训练效果, 避免策略梯度算法中采样数据利用率低的缺点, 引入了重要性采样, 智能体采用旧策略πθold 与环境交互获得训练数据存入样本池中更新策略πθ, 则PPO算法的奖励微分可以表示为

图片

(20)

则似然函数可以表示为

图片

(21)

但是要求两个策略的分布不能差别太大, 因此需要进行一定程度的剪切, 最终得到的PPO算法:

图片

(22)

式中: θ是策略π的网络参数; ε是剪切比, 与文献[30]保持一致, 本文中ε取0.2。

2.3 ROB-PPO控制器设计

本节介绍基于深度强化学习算法PPO设计俯仰通道姿态控制器。图 3是基于鲁棒观测器的深度强化学习运载器垂直起降姿态控制框图。鲁棒观测器输出重构后的俯仰角

图片

和俯仰角速度

图片

作为PPO智能体的输入状态

图片

, 动作网络根据当前状态St生成动作at, 即就是控制力矩Mcy, 环境对动作at作出反馈, 返回下一时刻的状态

图片

和当前奖励rt, 组成的四元组(st, at, rt, st+1)存入经验池中, 每隔一段时间, 从经验池中批量取出数据计算优势函数

图片

并更新网络参数,

图片

图3   基于鲁棒观测器的深度强化学习运载器垂直起降姿态控制框图

基于此, ROB-PPO控制器的算法流程伪代码如算法1所示。

图片

奖励函数作为指导智能体训练的关键, 其好坏决定了智能体能否达到理想的控制效果以及训练速度, 对于本文中对垂直起降运载器俯仰通道的控制, 在不同的姿态角误差条件下, 奖励函数设置为

图片

式中:

图片

是t时刻俯仰角与期望俯仰角的偏差值, 

图片

是t时刻俯仰角速度与期望俯仰角速度的偏差值, 可以直观地看出, 奖励函数通过加入角度偏差值, 角速度偏差值以及控制力矩构成惩罚项, 当运载器的姿态越趋于稳定, 惩罚项越小, 奖励函数越趋于零, 这也是符合规律的。对于各项加权系数的确定, 首先参考DeepMind团队在demo(倒立摆、火箭回收等)中设计奖励函数的方法和其他相关文献中确定奖励函数系数的取值经验。对于姿态稳定这一问题, 首先从控制目标出发, 姿态角偏差的权重一般要大于姿态角速度偏差的权重, 一般为10~100倍, 常取10的倍数, 然后根据训练过程中奖励的变化情况进行微调, 最终得到合适的加权系数[33]。特别地, 为了设计的控制器更符合实际应用, 在动作采样网络中, 设置限幅, 防止最终得到的舵偏角超过运载器机械幅值。

3 仿真结果及分析

在本节, 垂直起降运载器的仿真环境中, 应用ROB-PPO的方法训练一个深度强化学习智能体, 一旦运载器在仿真环境中成功飞行, 将训练好的控制器实现到实物平台上, 以测试其在垂直起降运载器姿态控制中的稳定性。

3.1 仿真验证

Actor网络和Critic网络均采用全连接结构, 隐藏层激活函数采用Relu函数, Actor网络均值激活函数采用tanh函数, 方差激活函数为softmax函数。ROB-PPO算法的网络结构和超参数如表 1所示。

图片

表1   ROB-PPO算法的网络结构和超参数

仿真环境设置: 为了使得所训练的ROB-PPO智能体具有较好的环境适应性, 以便于之后将在仿真环境中训练好的模型能够成功迁移到实际环境中, 设置不确定的初始姿态, 即每一回合的初始条件有着10%的随机量, 可以表示为

图片

期望姿态角和期望姿态角速度分别为0 rad和0 rad/s。设置深度强化学习算法的随机种子seed=1, 采样时间为0.01 s, 仿真总时间为10 s, 整个训练过程一共有1.2×106回合, 每个回合交互1 000步。系统矩阵

图片

, 观测矩阵F=[5   1]T, 转换矩阵

图片

。同时, 考虑到低阶弹性振动的主导作用以及简化强化学习环境的搭建, 仿真中考虑一阶弹性振动的影响, 弹性振动的频率ω=20.25 rad/s, 阻尼比ζ=0.006。

训练强化学习智能体1.2×106回合, 得到的训练过程中的平均奖励变化曲线如图 4所示。可以看出, 经过前2×104回合的探索之后, 智能体学会了控制策略, 之后的平均奖励值一直收敛, 说明智能体已经训练完成。将训练好的网络模型保存, 用于控制效果的测试。

图片

图4   PPO训练平均奖励

图 5和图 6中初始姿态角在0 rad到1 rad之间任意取值的条件下, 在上述训练好的智能体控制下姿态角和姿态角速度的曲线。根据李雅普诺夫理论, 神经网络拟合的动力学系统是渐进收敛的[34]。图 5和图 6表明即使在初始状态变化情况下, 本文训练的控制器均能保证姿态角和姿态角速度收敛到期望姿态, 具有稳定性。

图片

图5   姿态角响应曲线

图片

图6   姿态角速度响应曲线

图 7~图 11给出了本文设计的基于鲁棒观测器的深度强化学习算法和文献[16]提出的自适应模糊PID控制算法的对比图。其中, 图 7展示了ROB-PPO和自适应模糊PID控制作用下的舵偏角比较曲线, 可以看出, 与传统自适应模糊PID控制相比, 虽然在0.2 s时ROB-PPO的幅值超过了自适应模糊PID, 但是在0.8 s就趋于收敛, 而传统自适应模糊PID在3 s才稳定, ROB-PPO相较于传统自适应模糊PID控制算法收敛时间加快了2.2 s, 可以看出本文设计的控制器在快速性方面表现出色。

图片

图7   舵偏角比较曲线

图片

图8   俯仰姿态角对比曲线

图片

图9   俯仰角速度比较曲线

图片

图10   弹性振动位移对比图

图片

图11   弹性振动速率对比图

图 8和图 9分别展示了ROB-PPO和自适应模糊PID控制作用下俯仰姿态角和角速度的对比曲线。

从图 8中可以看出, 相较于自适应模糊PID, ROB-PPO算法的控制性能明显提升, 俯仰角幅值为0.1 rad, 而传统自适应模糊PID控制作用下的幅值达到了0.3 rad; 同时, 在本文设计的控制器作用下, 俯仰角在0.8 s就收敛到平衡位置了。图 10和图 11分别展示了ROB-PPO和自适应模糊PID控制作用下一阶弹性振动位移和一阶弹性振动速度的对比曲线。

与之前的结论一致, ROB-PPO对弹性振动的抑制效果优于自适应模糊控制, 相较于自适应模糊PID控制, 弹性振动幅值相差无几, 但收敛时间缩短了1.3 s。ROB-PPO控制下的一阶弹性振动位移和速度基本在1 s左右就趋于稳定, 而自适应模糊PID控制下在2.3 s才逐渐稳定, 体现出ROB-PPO算法具有更好的弹性振动抑制效果。

3.2 实验验证

为了验证所训练的模型在实物运载器姿态控制上的有效性, 将训练稳定的智能体搭载在实物平台上, 自制运载器从上而下主要分为油料舱、弹性舱、飞控舱以及发动机舱, 油料舱主要为运载器提供燃料, 弹性舱模拟弹性振动, 飞控舱为运载器传感器及飞控板提供安装位置。其中, 由激光雷达得到高度信息, 由GPS得到位置信息, 由三轴陀螺仪测量运载器的姿态信息。将ROB-PPO(PID)控制器输出的控制力矩通过力矩分配算法得到舵偏角, 再映射到与4台涡喷发动机和4个舵机相连的飞控物理输出口, 并且将与发动机相连输出口的PWM信号频率调制为400 Hz, 与舵机相连输出口的PWM信号频率调制为50 Hz。飞行过程如图 12所示。

图片

图12   垂直起降运载器飞行过程

在飞行过程中, 对运载器施加绳子的扰动作用以模拟飞行过程中受到的横风乱流的干扰, 并通过Pixhawk的日志记录下运载器的角度信息和角速度信息如图 13和图 14所示。

图片

图13   飞行过程中俯仰角对比曲线

图片

图14   飞行过程中俯仰角速度对比

图 12展示了垂直起降运载器在现实环境下的飞行结果。图 13和图 14分别是飞控日志记录的俯仰通道的姿态角和姿态角速度的对比曲线, 根据飞行过程中垂直起降运载器的飞行状态。对图 13和图 14中的曲线进行分析, 在1~10 s, 运载器接收到起飞指令准备起飞, 刚开始飞行高度较低, 运载器低速上升。在此过程中, 主要是弹性振动的干扰作用, 可以看出训练的ROB-PPO智能体的控制效果良好。在11~16 s, 随着运载器高度的增加, 外部阵风对运载器姿态的稳定起到主要干扰作用, 同时外部阵风的干扰激起了弹性振动, 在此期间扰动增大, 因此图 13中的曲线呈现波动现象。但是, 姿态控制作用下, 运载器并没有失稳, 之后运载器逐渐下降, 姿态角和姿态角速度重新恢复到稳定状态直至着陆。同时可以看出, 相较于自适应模糊PID控制, 本文研究的ROB-PPO控制方法的效果更好, 超调量较小, 动态特性和稳态特性较好, 说明本设计中的ROB-PPO控制器具有较强的鲁棒性, 运载器在垂直起降过程中可以克服一般阵风或者乱流的干扰。

4 结束语

本文中采用ROB-PPO算法设计垂直起降运载器俯仰通道的姿态控制器。仿真结果表明, 在考虑弹性振动的条件下, 本文设计的深度强化学习控制器的收敛速度和控制性能都优于目前常用的自适应模糊PID控制。设置随机的初始条件训练深度强化学习智能体以及鲁棒观测器对受到干扰的姿态角和姿态角速度的重构作用都是将仿真环境中训练完成的智能体迁移到真实环境的关键。

尽管仿真以及实验结果较好, 但是还有很多方面可以优化。比如, 观测量和奖励函数, 增加飞行信息可以更加准确地描述环境, 智能体对于不同的奖励函数有不同的表现。目前已经完成了俯仰通道姿态控制器设计的仿真以及实验验证工作, 下一步将考虑运载器在垂直起降过程中的位置控制, 其中会涉及故障检测、容错控制。

此外, 本文提出的ROB-PPO方法是基于定常模型的, 但是可以通过一些方法拓展到时变模型: ①使用递归神经网络(recurrent neural network, RNN): RNN具有记忆功能, 能够处理序列数据, 并且可以将之前的信息传递到下一个时间步骤中。因此, 使用RNN可以在一定程度上适应时变参数模型。②训练多个模型: 在时变参数模型中, 可以使用多个模型来表示不同的状态。例如, 可以训练一个模型来表示正常工作状态, 另一个模型来表示故障状态。然后, 在实际控制过程中, 根据当前状态的特征选择合适的模型进行控制。

声明:公众号转载的文章及图片出于非商业性的教育和科研目的供大家参考和探讨,并不意味着支持其观点或证实其内容的真实性。版权归原作者所有,如转载稿涉及版权等问题,请立即联系我们删除。

“人工智能技术与咨询”  发布

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值