采用qL-MPC技术进行小型固定翼无人机的路径跟随控制
来自论文"Predictive Path-Following Control for Fixed-Wing UAVs Using the qLMPC Framework in the Presence of Wind Disturbances"
控制架构
采用的是 ULTRA-Extra无人机,相关参数如下:
这里用于guidance law的无人机运动学模型为:
{ x ˙ p = V a cos γ cos χ + V w cos γ w cos χ w y ˙ p = V a cos γ sin χ + V w cos γ w sin χ w z ˙ p = V a sin γ + V w sin γ w χ ˙ = g tan ϕ / V a γ ˙ = g ( n z cos ϕ − cos γ ) / V a \begin{cases} \dot{x}_p = V_a\cos\gamma\cos\chi + V_w\cos\gamma_w\cos\chi_w \\ \dot{y}_p = V_a\cos\gamma\sin\chi + V_w\cos\gamma_w\sin\chi_w \\ \dot{z}_p = V_a\sin\gamma + V_w\sin\gamma_w \\ \dot{\chi} = g\tan\phi/V_a \\ \dot{\gamma} = g(n_z\cos\phi-\cos\gamma)/V_a \end{cases} ⎩ ⎨ ⎧x˙p=Vacosγcosχ+Vwcosγwcosχwy˙p=Vacosγsinχ+Vwcosγwsinχwz˙p=Vasinγ+Vwsinγwχ˙=gtanϕ/Vaγ˙=g(nzcosϕ−cosγ)/Va
其中状态量为 ( x p , y p , z p , γ , χ ) (x_p,y_p,z_p,\gamma,\chi) (xp,yp,zp,γ,χ),控制量为 ( V a , n z , ϕ ) (V_a,n_z,\phi) (Va,nz,ϕ)。在自动驾驶仪(Autopilot)中,采用 Successive-Loop-Closure (SLC)实现参考量 ( V a m , n z m , ϕ m ) (V_{a_m},n_{z_m},\phi_m) (Vam,nzm,ϕm)的信号跟踪:
自动驾驶仪中依然采用横纵向通道的SLC实现控制,相应的控制逻辑如下:
Path Following 最优控制器
对运动学模型进行二阶求导可以得到:
( x ˙ p y ˙ p z ˙ p χ ˙ γ ˙ x ¨ p y ¨ p z ¨ p χ ¨ γ ¨ ) = ( O 5 × 5 I 5 − V a cos γ sin χ − V a sin γ cos χ V a cos γ cos χ − V a sin γ sin χ O 5 × 5 O 5 × 3 0 V a cos γ 0 0 0 g sin γ V a ) ( x p y p z p χ γ x ˙ p y ˙ p z ˙ p χ ˙ γ ˙ ) + ( O 5 × 3 cos γ cos χ 0 0 cos γ sin χ 0 0 sin γ 0 0 − g tan ϕ V a 2 g V a cos 2 ϕ 0 g ( cos γ − n z cos ϕ ) V a 2 − g n z sin ϕ V a g cos ϕ V a ) ( V ˙ a ϕ ˙ n ˙ z ) \left( \begin{matrix} {{{\dot{x}}}_{p}} \\ {{{\dot{y}}}_{p}} \\ {{{\dot{z}}}_{p}} \\ {\dot{\chi }} \\ {\dot{\gamma }} \\ {{{\ddot{x}}}_{p}} \\ {{{\ddot{y}}}_{p}} \\ {{{\ddot{z}}}_{p}} \\ {\ddot{\chi }} \\ {\ddot{\gamma }} \\ \end{matrix} \right)=\left( \begin{matrix} {{O}_{5\times 5}} & {} & {{I}_{5}} & {} \\ {} & {} & -{{V}_{a}}\cos \gamma \sin \chi & -{{V}_{a}}\sin \gamma \cos \chi \\ {} & {} & {{V}_{a}}\cos \gamma \cos \chi & -{{V}_{a}}\sin \gamma \sin \chi \\ {{O}_{5\times 5}} & {{O}_{5\times 3}} & 0 & {{V}_{a}}\cos \gamma \\ {} & {} & 0 & 0 \\ {} & {} & 0 & \frac{g\sin \gamma }{V_{a}^{{}}} \\ \end{matrix} \right)\left( \begin{matrix} {{x}_{p}} \\ {{y}_{p}} \\ {{z}_{p}} \\ \chi \\ \gamma \\ {{{\dot{x}}}_{p}} \\ {{{\dot{y}}}_{p}} \\ {{{\dot{z}}}_{p}} \\ {\dot{\chi }} \\ {\dot{\gamma }} \\ \end{matrix} \right)+\left( \begin{matrix} {} & {{O}_{5\times 3}} & {} \\ \cos \gamma \cos \chi & 0 & 0 \\ \cos \gamma \sin \chi & 0 & 0 \\ \sin \gamma & 0 & 0 \\ -\frac{g\tan \phi }{V_{a}^{2}} & \frac{g}{{{V}_{a}}{{\cos }^{2}}\phi } & 0 \\ \frac{g(\cos \gamma -{{n}_{z}}\cos \phi )}{V_{a}^{2}} & -\frac{g{{n}_{z}}\sin \phi }{V_{a}^{{}}} & \frac{g\cos \phi }{V_{a}^{{}}} \\ \end{matrix} \right)\left( \begin{align} & {{{\dot{V}}}_{a}} \\ & {\dot{\phi }} \\ & {{{\dot{n}}}_{z}} \\ \end{align} \right) x˙py˙pz˙pχ˙γ˙x¨py¨pz¨pχ¨γ¨ = O5×5O5×5O5×3I5−VacosγsinχVacosγcosχ000−Vasinγcosχ−VasinγsinχVacosγ0Vagsinγ xpypzpχγx˙py˙pz˙pχ˙γ˙ + cosγcosχcosγsinχsinγ−Va2gtanϕVa2g(cosγ−nzcosϕ)O5×3000Vacos2ϕg−Vagnzsinϕ0000Vagcosϕ V˙aϕ˙n˙z
这里设 ρ = ( γ , χ , V a , ϕ , n z ) T \rho=(\gamma,\chi,V_a,\phi,n_z)^T ρ=(γ,χ,Va,ϕ,nz)T, x = ( x p , y p , z p , χ , γ , x ˙ p , y ˙ p , z ˙ p , χ ˙ , γ ˙ ) T x=(x_p,y_p,z_p,\chi,\gamma,\dot{x}_p,\dot{y}_p,\dot{z}_p,\dot{\chi},\dot{\gamma})^T x=(xp,yp,zp,χ,γ,x˙p,y˙p,z˙p,χ˙,γ˙)T, u = ( V ˙ a , ϕ ˙ , n ˙ z ) T u=(\dot{V}_a,\dot{\phi},\dot{n}_z)^T u=(V˙a,ϕ˙,n˙z)T,得到:
x ˙ = A v ( ρ ) x + B v ( ρ ) u \dot{x}=A_v(\rho)x+B_v(\rho)u x˙=Av(ρ)x+Bv(ρ)u
假设要跟踪的量为 r = ( x r , y r , z r ) T r=(x_r,y_r,z_r)^T r=(xr,yr,zr)T,构造跟踪向量 e = ( x r − x p , y r − y p , z r − z p ) T = r − ( x p , y p , z p ) T e=(x_r-x_p,y_r-y_p,z_r-z_p)^T=r-(x_p,y_p,z_p)^T e=(xr−xp,yr−yp,zr−zp)T=r−(xp,yp,zp)T,有: e ˙ = r ˙ − ( O 3 × 5 , I 3 , O 3 × 2 ) x \dot{e}=\dot{r}-(O_{3\times 5},I_3,O_{3\times 2})x e˙=r˙−(O3×5,I3,O3×2)x,得到:
( x ˙ e ˙ ) = ( A v ( ρ ) O 10 × 3 − ( O 3 × 5 ∣ I 3 ∣ O 3 × 2 ) O 3 ) ( x e ) + ( B v ( ρ ) O 3 × 3 ) u + ( O 10 × 1 r ˙ ) \begin{pmatrix} \dot{x} \\ \dot{e} \end{pmatrix} = \begin{pmatrix} A_v(\rho) & O_{10\times3} \\ -(O_{3\times 5}|I_3|O_{3\times 2}) & O_3 \end{pmatrix}\begin{pmatrix} x \\e \end{pmatrix} + \begin{pmatrix} B_v(\rho) \\O_{3\times 3} \end{pmatrix} u + \begin{pmatrix} O_{10\times 1} \\\dot{r} \end{pmatrix} (x˙e˙)=(Av(ρ)−(O3×5∣I3∣O3×2)O10×3O3)(xe)+(Bv(ρ)O3×3)u+(O10×1r˙)
利用4阶Runge-Kutta法可以将上式可以离散化为一个LPV状态空间方程(linear parameter varying state-space representation):
x e , k + 1 = A e ( ρ k ) x e , k + B e ( ρ k ) u e , k + c r , k x_{e,k+1} = A_e(\rho_k)x_{e,k}+B_e(\rho_k)u_{e,k}+c_{r,k} xe,k+1=Ae(ρk)xe,k+Be(ρk)ue,k+cr,k
令 P k = ( ρ k T , ρ k + 1 T , . . . ρ k + N − 1 T ) T P_k=(\rho_{k}^T,\rho_{k+1}^T,...\rho_{k+N-1}^T)^T Pk=(ρkT,ρk+1T,...ρk+N−1T)T, X k = ( x e , k + 1 T , x e , k + 2 T , . . . , x e , k + N T ) T X_k=(x_{e,k+1}^T,x_{e,k+2}^T,...,x_{e,k+N}^T)^T Xk=(xe,k+1T,xe,k+2T,...,xe,k+NT)T, U k = ( u e , k + 1 T , u e , k + 2 T , . . . , u e , k + N T ) T U_k=(u_{e,k+1}^T,u_{e,k+2}^T,...,u_{e,k+N}^T)^T Uk=(ue,k+1T,ue,k+2T,...,ue,k+NT)T, c k = ( c r , k + 1 T , c r , k + 2 T , . . . c r , k + N T ) T c_k = (c_{r,k+1}^T,c_{r,k+2}^T,...c_{r,k+N}^T)^T ck=(cr,k+1T,cr,k+2T,...cr,k+NT)T得到:
X k + 1 = H ( P k ) X k + S ( P k ) U k + c k = L k + S ( P k ) U k X_{k+1}=H(P_k)X_k + S(P_k)U_k+c_k \\ =L_k + S(P_k)U_k Xk+1=H(Pk)Xk+S(Pk)Uk+ck=Lk+S(Pk)Uk
其中: x e , k = ( x k T , e k T ) T x_{e,k}=(x^T_k,e^T_k)^T xe,k=(xkT,ekT)T, H ( P k ) = d i a g ( [ A e ( ρ k ) , A e ( ρ k + 1 ) . . . A e ( ρ k + N − 1 ) ] ) H(P_k) =diag([A_e(\rho_{k}),A_e(\rho_{k+1})...A_e(\rho_{k+N-1})]) H(Pk)=diag([Ae(ρk),Ae(ρk+1)...Ae(ρk+N−1)]), S ( P k ) = d i a g ( [ B e ( ρ k ) , B e ( ρ k + 1 ) . . . B e ( ρ k + N − 1 ) ] ) S(P_k)=diag([B_e(\rho_{k}),B_e(\rho_{k+1})...B_e(\rho_{k+N-1})]) S(Pk)=diag([Be(ρk),Be(ρk+1)...Be(ρk+N−1)])。采用MPC控制器进行设计时, k + 1 k+1 k+1时刻需要优化的目标函数:
J k + 1 = ∑ i = 1 N ( x k + i + 1 T Q x k + i + 1 + u k + i T R u k + i + e k + i + 1 T T e k + i + 1 ) = X k + 1 T H X X k + 1 + U k T H U U k = [ L k + S ( P k ) U k ] T H X [ L k + S ( P k ) U k ] + U k T H U U k = U k T ( S ( P k ) T H X S ( P k ) + H U ) U k + 2 L k T H X S ( P k ) U k + L k T H X L k J_{k+1}=\sum_{i=1}^N(x_{k+i+1}^TQx_{k+i+1} + u_{k+i}^TRu_{k+i} + e_{k+i+1}^TTe_{k+i+1}) \\ =X_{k+1}^TH_XX_{k+1} + U_{k}^TH_UU_{k}\\=[L_k + S(P_k)U_k]^TH_X[L_k + S(P_k)U_k] + U_{k}^TH_UU_{k}\\ =U_k^T(S(P_k)^TH_XS(P_k)+H_U)U_k + 2L_k^TH_XS(P_k)U_k + L_k^TH_XL_k Jk+1=i=1∑N(xk+i+1TQxk+i+1+uk+iTRuk+i+ek+i+1TTek+i+1)=Xk+1THXXk+1+UkTHUUk=[Lk+S(Pk)Uk]THX[Lk+S(Pk)Uk]+UkTHUUk=UkT(S(Pk)THXS(Pk)+HU)Uk+2LkTHXS(Pk)Uk+LkTHXLk
其中: Q = Q T > 0 , P = P T > 0 , R = R T > 0 Q=Q^T>0,P=P^T>0,R=R^T>0 Q=QT>0,P=PT>0,R=RT>0; H X = d i a g ( [ Q , Q , . . . , Q ] ) H_X=diag([Q,Q,...,Q]) HX=diag([Q,Q,...,Q]), H U = d i a g ( [ R , R , . . . , R ] ) H_U=diag([R,R,...,R]) HU=diag([R,R,...,R])。
而对于控制量 U k U_k Uk和状态量 X k + 1 X_{k+1} Xk+1有限幅,即: U min ≤ U k ≤ U max U_{\min}\leq U_k\leq U_{\max} Umin≤Uk≤Umax, X min ≤ X k + 1 ≤ X max X_{\min} \leq X_{k+1} \leq X_{\max} Xmin≤Xk+1≤Xmax,得到约束:
( I − I S ( P k ) − S ( P k ) ) U k ≤ ( U max − U min X k + 1 − L k − X k + 1 + L k ) \begin{pmatrix} I \\ -I\\ S(P_k)\\ -S(P_k) \end{pmatrix}U_k \leq \begin{pmatrix} U_{\max} \\ -U_{\min} \\ X_{k+1} - L_k \\ -X_{k+1} + L_k \end{pmatrix} I−IS(Pk)−S(Pk) Uk≤ Umax−UminXk+1−Lk−Xk+1+Lk
上面的假设是基于全状态反馈的,也是就是说对于 k + 1 k+1 k+1时刻的在线优化能获取 k k k时刻所有的状态信息和偏差信息。
若观测量为 Y k = C k X k Y_k = C_kX_k Yk=CkXk, Y min ≤ Y k ≤ Y max Y_{\min}\leq Y_k\leq Y_{\max} Ymin≤Yk≤Ymax,则上面的约束将被修正为:
( I − I C k S ( P k ) − C k S ( P k ) ) U k ≤ ( U max − U min Y max − C k L k − Y min + C k L k ) \begin{pmatrix} I \\ -I\\ C_kS(P_k)\\ -C_kS(P_k) \end{pmatrix}U_k \leq \begin{pmatrix} U_{\max} \\ -U_{\min} \\ Y_{\max} - C_kL_k \\ -Y_{\min} + C_kL_k \end{pmatrix} I−ICkS(Pk)−CkS(Pk) Uk≤ Umax−UminYmax−CkLk−Ymin+CkLk
无论如何,上述问题都可以被转化成QP问题,利用Matlab工具箱中的quadprog
函数进行求解,或者说是在线优化为以下问题:
min U k 1 2 U k T F k U k + G k U k A k U k ≤ b k \min_{U_k}\frac{1}{2}U_k^TF_kU_k +G_kU_k \\ A_kU_k \leq b_k Ukmin21UkTFkUk+GkUkAkUk≤bk
附带相应的伪代码如下图所示:
参考文献
@inproceedings{bib:Samir,title={Predictive Path Following Control for Fixed Wing UAVs Using the qLMPC Framework in the Presence of Wind Disturbances},author={Rezk, Ahmed S and Calder{\'o}n, Horacio M and Werner, Herbert and Herrmann, Benjamin and Thielecke, Frank},booktitle={AIAA SCITECH 2024 Forum},pages={1594},year={2024}
}
相关文章:
采用qL-MPC技术进行小型固定翼无人机的路径跟随控制
来自论文"Predictive Path-Following Control for Fixed-Wing UAVs Using the qLMPC Framework in the Presence of Wind Disturbances" 控制架构 采用的是 ULTRA-Extra无人机,相关参数如下: 这里用于guidance law的无人机运动学模型为&#…...
比特币是否会取代美元(以及其他主权货币)
上图是 Olivier Blanchard 宏观经济学第八版的英文版内容。这里用中文解释。 1. 背景与现状: 比特币的规模与美元相比仍然很小: 截至 2018 年 12 月,比特币的总流通量为 1730 万枚,每枚价值 $3,900,总市值约 $670 亿…...
safe area helper插件
概述 显示不同机型的必能显示的区域 实现步骤 引入safearea,引入其中的safearea的csharp 为cancas加入gameobject gameobject中加入safearea脚本 将UI作为这个gameobject的子物体,就可以完成显示...
融云分享基于 Rust 的鸿蒙 SDK 开发实践
12 月 5 日,以“同心聚力,共建共享鸿蒙新生态”为主题的“鸿蒙生态伙伴 SDK 开发者论坛”在京举行。 融云凭借对鸿蒙生态的率先适配和创新贡献,荣获华为鸿蒙生态“HarmonyOS NEXT SDK 星河奖”。 本次论坛邀请了多位行业领导者参与ÿ…...
golang中的值传递与引用传递,如何理解结构体的方法?
先从一个例子说起 type Counter struct {count int }func (c Counter) Inc() {c.count }func test1() {c : Counter{}do : func() {for i : 0; i < 10; i {c.count}fmt.Println("done")}go do()go do()time.Sleep(3 * time.Second)fmt.Println(c.count) }func te…...
TON游戏现状一览:区块链与Telegram的完美融合
TON(The Open Network)作为一款基于区块链的开放平台,因其超高的交易处理速度和与Telegram的紧密集成,成为游戏开发者和用户的新兴乐土。TON不仅仅是一个去中心化的网络,它还通过其核心加密货币——Toncoin,…...
《变分法·吴迪光1987年》复习汇总
目录 第一章 变分法的概念1 泛函和泛函的极值例1 捷线(最速降线)问题例2 等周问题例3 极小曲面问题极值必要条件 2 基本引理(考反证法)基本引理1基本引理2 第二章 固定边界的变分问题 ♠ \spadesuit ♠ 欧拉方程(一&am…...
使用IP自签名SSL证书
最近需要创建WebSocket服务器并使用SSL证书,由于是内网测试,所以需要使用指定IP的自签SSL证书。 其实笔者前面博文 使用nexus3作为Docker镜像仓库 解决nexus3登录x509: certificate has expired or is not yet valid 中有创建过相应的证书,这…...
如何持续优化呼叫中心大模型呼出机器人的性能?
如何持续优化呼叫中心大模型呼出机器人的性能? 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 持续优化呼叫中心大模型呼出机器人的性能是一个复杂而持续的过程,涉及多个层面的策略和措…...
3D,点云平滑法线估计
需要平滑的情况 1、用激光扫描仪等设备扫描物体(尤其是比较小的物体)时,往往会有测量误差。这些误差所造成的不规则数据如果直接拿来曲面重建的话,会使得重建的曲面不光滑或者有漏洞,而且这种不规则数据很难用统计分析等滤波方法消除; 2、后处理过程中,对同一个物体从…...
windows下pyenv与宝塔python冲突解决
windows下安装pyenv后与宝塔python环境冲突 1、将C:\Program Files\python\Scripts中的pip3.exe改名(pip3-.exe) 2、将C:\用户\{用户名}\.pyenv\pyenv-win\shims中的pip、pip.bat、python、python.bat改名(pip-、pip-.bat、python-、python-.bat),然后使用pip3和p…...
C# 探险之旅:第二十五节 - 类型class之字段Fields大冒险
嘿,探险家们!欢迎再次搭乘C#的魔法列车,今天我们要深入探索class里的宝藏——字段(Fields)!想象一下,字段就像是类里的秘密小房间,里面藏着对象的小秘密和宝藏。我们不仅要看看这些小…...
如何更新项目中的 npm 或 Yarn 依赖包至最新版本
要升级 package.json 文件中列出的包,你可以使用 npm(Node Package Manager)或 yarn。以下是两种工具的命令来更新你的依赖项: 使用 npm 更新所有包到最新版本 npm update如果你想将所有依赖项更新到其各自最新的大版本…...
【Linux系列】使用 watch 命令实时查看容器状态
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
电脑技巧:Everything 1.5 版本重大更新支持拼音搜索+全文搜索
目录 一、软件介绍 二、主要更新亮点 更快的搜索速度和拼音搜索 全文搜索功能 智能推荐功能 增强的过滤选项 改进的用户界面 更好的多语言支持 增强的安全性和隐私保护 三、总结 Everything 作为一款备受推崇的文件搜索工具,以其卓越的性能和简洁的用户界…...
MySQL八股-全局锁,表级锁,表锁,元数据锁,意向锁,行级锁,行锁,间隙锁,临键
文章目录 全局锁表级锁表锁(表级锁)元数据锁(MDL,Meta Data Lock,表级锁)元数据锁演示元数据锁兼容的情况元数据锁互相阻塞的情况 意向锁(Intention lock,表级锁)意向锁分类意向锁演示:意向共享锁(**IS**)与…...
电子应用设计方案-53:智能AI打印机系统方案设计
智能 AI 打印机系统方案设计 一、引言 随着人工智能技术的不断发展,将其应用于打印机系统可以显著提升打印效率、优化打印质量,并提供更智能化的用户体验。本方案旨在设计一款融合 AI 技术的智能打印机系统。 二、系统概述 1. 系统目标 - 实现高精度、…...
docker—私有仓库搭建
docker—私有仓库搭建 HTTP 部署 docker run -d \-p 5000:5000 \--restartalways \--name registry \-v /opt/data/registry:/var/lib/registry \registry:2使用官方的 registry 镜像来启动私有仓库。默认情况下,仓库会被创建在容器的 /var/lib/registry 目录…...
马斯克Neuralink:未来的人机交互先锋,将会挑战传统通讯方式
Neuralink,由埃隆马斯克于2016年创立,专注于研发脑机接口技术。该技术通过植入大脑的芯片,实现人类与机器的“无缝连接”。2024年,Neuralink取得了突破性进展,成功在人体中植入了脑芯片。首位植入者Noland Arbaugh通过…...
[Maven]IDEA父工程创建子工程后父工程不可运行
IDEA在使用maven构建项目时,如果你在当前工程下创建一个子工程,那么原有的工程(变为父工程的工程)原有的代码通常会变得不可运行。 这是因为,使用maven创建父子工程关系后,IDEA会自动变更项目的模块相关配置。 比如这是我maven工程…...
Linux DNS 协议概述
1. DNS 概述 互联网中,一台计算机与其他计算机通信时,通过 IP 地址唯一的标志自己。此时的 IP 地址就类似于我们日常生活中的电话号码。但是,这种纯数字的标识是比较难记忆的,而且数量也比较庞大。例如,每个 IPv4 地址…...
Web前端技术宝典:期末冲刺指南
本文将为大家整理一份 Web 前端期末复习资料,内容涵盖 HTML、CSS、JavaScript 和常用的前端框架等方面的知识,帮助大家高效复习。 Web前端技术宝典:期末冲刺指南 1. HTML基础2. CSS基础3. JavaScript基础4. 前端框架5. 常见考试题型结语 1. …...
JVM 双亲委派模型以及垃圾回收机制
目录 1. JVM 内存区域划分 2. JVM 中类加载的过程 1) 类加载的基本流程 2) 双亲委派模型 3. JVM 中垃圾回收机制 1) 找到垃圾 a) 引用计数 b) 可达性分析 2) 释放垃圾 1. JVM 内存区域划分 一个运行起来的 Java 进程,其实就是一个 JVM 虚拟机。 而进程是…...
Linux编译Kernel时的文件zImage、文件dtb(dtbs)、核心模块分别是什么东西?
zImage文件的介绍 在编译Linux内核时,zImage 是一种内核映像文件,它是内核的压缩版本,通常用于引导嵌入式设备或其他资源有限的环境。 zImage 的具体含义 zImage 是 “Compressed Kernel Image” 的缩写。它是通过压缩原始的内核映像&…...
《计算机视觉证书:开启职业发展新航道》
一、引言 在当今科技飞速发展的时代,计算机视觉技术正以惊人的速度改变着我们的生活和工作方式。从智能手机的人脸识别解锁到自动驾驶汽车的环境感知,计算机视觉技术的应用无处不在。而计算机视觉证书作为这一领域的专业认证,其作用愈发凸显…...
4.Python 数字类型
Python 数字类型总结 文章目录 Python 数字类型总结1. 数字类型概述特点 2. 数字类型的创建与赋值3. 数字类型转换4. 数学运算与函数math 模块cmath 模块 5. 随机数生成6. 三角函数7. 数学常量 总结 Python 提供了多种数字类型来存储和操作数值数据。这些类型包括整数、浮点数、…...
火焰传感器与C++编程:精准检测火灾的技术实现
火灾是我们日常生活中一个不可忽视的安全隐患,而火灾报警系统的实现可以大大提高我们的安全保障。通过嵌入式技术和传感器,我们能够在第一时间识别火灾隐患并发出警报。火焰传感器作为一种专门用于火灾监测的传感器,能高效地通过红外线&#…...
纯前端实现一个精致的中英文挖空提示功能
前言 这两天给我的学习卡盒小程序新增了一个提示功能,在卡片正面的时候,点击左下角的小灯泡,就会弹出背面内容的提示,这个提示是挖了空的,这种方式可以帮助我们循序渐进的回忆内容,而不是直接看答案。 实现…...
秘塔搜索AI多线程批量生成TXT原创文章软件
秘塔AI搜索是秘塔科技旗下的搜索产品,其产品是简单、无广告、直接的搜索答案。 秘塔AI搜索写出来的文章无AI味及无AI痕迹,在如今AI文章泛滥时代,搜索引擎喜欢抓取收录这样无AI味原创文章。 秘塔搜索AI多线程批量生成TXT原创文章软件介绍&am…...
鸿蒙生态的崛起:开发实践、认证路径与激励策略
目录 前言 鸿蒙生态能力和行业解决方案 1、鸿蒙创新能力 2、鸿蒙行业解决方案 中软鸿蒙生态业务布局 1、深度参与鸿蒙生态建设 2、提供一站式鸿蒙生态服务 (1)服务目录 (2)改造过程的关键点 (3)鸿…...
python调用matlab函数(内置 + 自定义) —— 安装matlab.engine
文章目录 一、简介二、安装matlab.engine2.1、基于 CMD 安装2.2、基于 MATLAB 安装(不建议) 三、python调用matlab函数(内置 自定义) 一、简介 matlab.engine(MATLAB Engine API for Python):…...
【数据分享】2014-2024年我国POI兴趣点数据(免费获取/来源于OSM地图)
POI是Point of Interest的简称,意为“兴趣点”,是互联网电子地图中用于表示特定位置的地理实体的核心数据类型。POI通常用于标注具体地点,例如餐厅、商场、学校、医院、景点等。这些数据以点的形式呈现,并附带详细属性信息&#x…...
【设计模式】如何用C++实现观察者模式【发布订阅机制】
【设计模式】如何用C实现观察者模式【发布订阅机制】 一、问题背景 代码质量影响生活质量。最近工作中频繁接触各种设计模式,深刻体会到优秀的设计模式不仅能显著降低后续维护的压力,还能提升开发效率。观察者模式作为一种降低耦合度、提高扩展性的利器…...
Qt编写RK3588视频播放器/支持RKMPP硬解/支持各种视音频文件和视频流/海康大华视频监控
一、前言 用ffmpeg做硬解码开发,参考自带的示例hw_decode.c即可,里面提供了通用的dxva2/d3d11va/vaapi这种系统层面封装的硬解码,也就是无需区分用的何种显卡,操作系统自动调度,基本上满足了各种场景的需要࿰…...
深入了解IPv6——光猫相关设定:DNS来源、DHCPv6服务、前缀来源等
光猫IPv6设置后的效果对比图: 修改前: 修改后: 一、DNS来源 1. 网络连接 来源: 从上游网络(如运营商)获取 IPv6 DNS 信息,通过 PPPoE 或 DHCPv6 下发。 特点: DNS 服务器地址直…...
Deepmotion技术浅析(五):运动追踪
运动追踪是 DeepMotion 动作捕捉和 3D 重建流程中的核心模块之一。该模块的主要任务是在视频序列中跟踪人体的运动轨迹,捕捉人体各部分随时间的变化,并生成连续的 3D 运动数据。DeepMotion 的运动追踪技术结合了计算机视觉、深度学习和物理模拟等方法&am…...
【html网页页面012】html+css制作品牌主题宏宝莱网页含视频、留言表单(7页面附效果及源码)
品牌主题宏宝莱网页制作 🥤1、写在前面🍧2、涉及知识🌳3、网页效果完整效果(7页):代码目录结构:page1、首页page2、衍生品page3、包装设计page4、视频介绍page5、留言板page6、联系我们page7、详情页(三层页…...
Java的栈与队列以及代码实现
Java栈和队列 栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组实现)用队列实现栈用栈来实现队列总结 栈的概念(Stack) 栈是常见的线性数据结构&…...
华为HarmonyOS NEXT 原生应用开发:鸿蒙中组件的组件状态管理、组件通信 组件状态管理小案例(好友录)!
文章目录 组件状态管理一、State装饰器1. State装饰器的特点2. State装饰器的使用 二、Prop装饰器(父子单向通信)1. Prop装饰器的特点2. Prop装饰器的使用示例 三、Link装饰器(父子双向通信)1. Link装饰器的特点3. Link使用示例 四…...
LeetCode:150. 逆波兰表达式求值
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:150. 逆波兰表达式求值 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表…...
LLM模型的generate和chat函数区别
在 Hugging Face 的 transformers 库中,GPT(Generative Pre-trained Transformer)类的模型有两个常用的生成文本的方法:generate 和 chat。这两个方法在使用上有一些区别。通常公司发布的 LLM 模型会有一个基础版本,还…...
Vulhub:Fastjson[漏洞复现]
1.2.24-rce(CVE-2017-18349-Fastjson反序列化) 对于 Fastjson 来说,该漏洞的主要问题在于其1.2.24版本中autotype特性允许任意类的反序列化,因此攻击者通过type指定自定义类并实例化,在特定条件下调用这些类的公共方法。如果一个不受信任的 J…...
C++学习日记---第19天
笔记复习 1.继承 在C中,我们通过函数来实现代码的复用,防止重复造轮子,但是使用函数也有一个缺点1,就是当函数被定义完成之后,它的功能也就确定了,无法被修改,这时候我们引入继承。 C中的继承…...
opencv-python的简单练习
题目1.读取一张彩色图像并将其转换为灰度图。 import cv2 # 读取图片文件 img cv2.imread(./1.png)# 将原图灰度化 img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 输出图片 cv2.imshow(img,img) cv2.imshow(img_g,img_gray) # 进行阻塞 cv2.waitKey(0) 题目2:…...
生活小妙招之UE CaptureRT改
需求,四个不同的相机拍摄结果同屏分屏显示 一般的想法是四个Capture拍四张RT,然后最后在面片/UI上组合。这样的开销是创建4张RT,材质中采样4次RT。 以更省的角度,想要对以上流程做优化,4个相机拍摄是必须的ÿ…...
源码编译jdk11 超详细教程 openjdk11
关于源代码 当前的openJDK的源代码已经被发布到了github上了,所以我们可以直接从github上下载到。 OpenJDK11u源码托管地址:https://github.com/openjdk/jdk11u 带后缀U的地址,或者发行的jdk包,表示当前版本下的持续跟新版。而…...
lightRAG 论文阅读笔记
论文原文 https://arxiv.org/pdf/2410.05779v1 这里我先说一下自己的感受,这篇论文整体看下来,没有太多惊艳的地方。核心就是利用知识图谱,通过模型对文档抽取实体和关系。 然后基于此来构建查询。核心问题还是在解决知识之间的连接问题。 论…...
计算机网络-数据链路层
以太⽹的帧格式 源地址和⽬的地址是指⽹卡的硬件地址(也叫MAC地址), ⻓度是48位,是在⽹卡出⼚时固化的; • IP地址描述的是路途总体的 起点 和 终点; • MAC地址描述的是路途上的每⼀个区间的起点和终点;、 举个例子: 帧协议类型字段有三种值,分别对应IP、ARP、RARP...
ES6 混合 ES5学习记录
基础 数组 let arr [数据1,数据2,...数组n] 使用数组 数组名[索引] 数组长度 arr.length 操作数组 arr.push() 尾部添加一个,返回新长度 arr.unshift() 头部添加一个,返回新长度 arr.pop() 删除最后一个,并返回该元素的值 shift 删除第一个单元…...
Electron electron-builder.yml 配置 (自定义包名,用户自定义安装目录...)
electron-builder.yml 配置 # 唯一的应用程序标识符,用于操作系统级别的识别 appId: com.electron.app# 应用程序的名称,显示在用户界面上 productName: 我的应用# 定义构建资源目录,放置图标、证书等资源文件 directories:buildResources: …...