自动驾驶控制算法-横向误差微分方程LQR前馈控制

本文是学习自动驾驶控制算法第六讲 前馈控制与航向误差以及前两节的学习笔记。

1 横向误差微分方程

以规划的轨迹作为自然坐标系,计算自车在轨迹上的投影点,进而计算误差:
在这里插入图片描述
如图所示,横向误差为 d d d,航向误差为 θ − θ r \theta-\theta_r θθr,投影点的速度大小为 s ˙ \dot{s} s˙,注意这里的 θ \theta θ是航向角,与横摆角 φ \varphi φ相差一个侧偏角 β \beta β
θ = φ + β \begin{equation} \theta=\varphi+\beta \end{equation} θ=φ+β
根据之前所介绍的笛卡尔坐标系与自然坐标系的转换关系可知:
d ˙ = v sin ⁡ ( θ − θ r ) \begin{equation} \dot{d}=v\sin(\theta-\theta_r) \end{equation} d˙=vsin(θθr)
s ˙ = v cos ⁡ ( θ − θ r ) 1 − k r d \begin{equation} \dot{s}=\frac{v\cos(\theta-\theta_r)}{1-k_rd} \end{equation} s˙=1krdvcos(θθr)
这里 k r k_r kr是投影点处的曲率。
结合式1和2
d ˙ = v sin ⁡ ( φ + β − θ r ) = v sin ⁡ β cos ⁡ ( φ − θ ) + v cos ⁡ β sin ⁡ ( φ − θ ) \begin{equation} \dot{d}=v\sin(\varphi+\beta-\theta_r)=v\sin{\beta}\cos{(\varphi-\theta)}+v\cos{\beta}\sin{(\varphi-\theta)} \end{equation} d˙=vsin(φ+βθr)=vsinβcos(φθ)+vcosβsin(φθ)
φ − θ r \varphi-\theta_r φθr为小量,所以上式进一步简化为
d ˙ = v y + v x ( φ − θ r ) \begin{equation} \dot{d}=v_y+v_x(\varphi-\theta_r) \end{equation} d˙=vy+vx(φθr)

e d = d \begin{equation} e_d=d \end{equation} ed=d
e φ = φ − θ r \begin{equation} e_{\varphi}=\varphi-\theta_{r} \end{equation} eφ=φθr
求一阶二阶导数则有
e d ˙ = v x e φ + v y \begin{equation} \dot{e_d}=v_xe_{\varphi}+v_y \end{equation} ed˙=vxeφ+vy
假设 v x v_x vx是常数
v y ˙ = e d ¨ − v x e φ ˙ \begin{equation} \dot{v_y}=\ddot{e_d}-v_x\dot{e_{\varphi}} \end{equation} vy˙=ed¨vxeφ˙
e ¨ φ = φ ¨ − θ ¨ r ≈ φ ¨ \begin{equation} \ddot{e}_{\varphi}=\ddot{\varphi}-\ddot{\theta}_{r}≈\ddot{\varphi} \end{equation} e¨φ=φ¨θ¨rφ¨
这里 θ ¨ r \ddot{\theta}_r θ¨r约等于0,是因为轨迹通常比较平滑。
综合可得
{ v y = e ˙ d − v x e φ v ˙ y = e ¨ d − v x e ˙ φ φ ˙ = e ˙ φ + θ ˙ r φ ¨ = e ¨ φ \begin{equation} \begin{cases} v_y=\dot{e}_d-v_xe_{\varphi}\\ \dot{v}_y=\ddot{e}_d-v_x\dot{e}_{\varphi} \\ \dot{\varphi}=\dot{e}_{\varphi}+\dot{\theta}_r \\ \ddot{\varphi}=\ddot{e}_{\varphi} \end{cases} \end{equation} vy=e˙dvxeφv˙y=e¨dvxe˙φφ˙=e˙φ+θ˙rφ¨=e¨φ
由上节的公式:
[ v y ˙ φ ¨ ] = [ C α f + C α r m v x a C α f − b C α r m v x − v x a C α f − b C α r I v x a 2 C α f + b 2 C α r I v x ] [ v y φ ˙ ] + [ − C α f m − a C α f I ] δ \begin{equation} \begin{bmatrix} \dot{v_y} \\ \ddot{\varphi} \end{bmatrix}= \begin{bmatrix} \frac{C_{\alpha{f}}+C_{\alpha{r}}}{mv_x} & \frac{aC_{\alpha{f}}-bC_{\alpha{r}}}{mv_x}-v_x \\ \frac{aC_{\alpha{f}}-bC_{\alpha{r}}}{Iv_x} & \frac{a^2C_{\alpha{f}}+b^2C_{\alpha{r}}}{Iv_x} \end{bmatrix} \begin{bmatrix} v_y \\ \dot{\varphi} \end{bmatrix}+ \begin{bmatrix} -\frac{C_{\alpha{f}}}{m} \\ -\frac{aC_{\alpha{f}}}{I} \end{bmatrix}\delta \end{equation} [vy˙φ¨]=[mvxCαf+CαrIvxaCαfbCαrmvxaCαfbCαrvxIvxa2Cαf+b2Cαr][vyφ˙]+[mCαfIaCαf]δ
结合式11和式12可得
e ¨ d = C α f + C α r m v x e ˙ d + ( − C α f + C α r m ) e φ + a C α f − b C α r m v x e ˙ φ + ( a C α f − b C α r m v x − v x ) θ ˙ r + ( − C α f m ) δ \begin{equation} \ddot{e}_d=\frac{C_{\alpha{f}}+C_{\alpha{r}}}{mv_x} \dot{e}_d+(-\frac{C_{\alpha{f}}+C_{\alpha{r}}}{m})e_{\varphi}+\frac{aC_{\alpha{f}}-bC_{\alpha{r}}}{mv_x}\dot{e}_{\varphi}+(\frac{aC_{\alpha{f}}-bC_{\alpha{r}}}{mv_x}-v_x)\dot{\theta}_r+(-\frac{C_{\alpha{f}}}{m})\delta \end{equation} e¨d=mvxCαf+Cαre˙d+(mCαf+Cαr)eφ+mvxaCαfbCαre˙φ+(mvxaCαfbCαrvx)θ˙r+(mCαf)δ
e ¨ φ = a C α f − b C α r I v x e ˙ d + ( − a C α f − b C α r I ) e φ + a 2 C α f + b 2 C α r I v x e ˙ φ + ( a 2 C α f + b 2 C α r I v x ) θ ˙ r + ( − a C α f I ) δ \begin{equation} \ddot{e}_{\varphi}=\frac{aC_{\alpha{f}}-bC_{\alpha{r}}}{Iv_x} \dot{e}_d+(-\frac{aC_{\alpha{f}}-bC_{\alpha{r}}}{I})e_{\varphi}+\frac{a^2C_{\alpha{f}}+b^2C_{\alpha{r}}}{Iv_x}\dot{e}_{\varphi}+(\frac{a^2C_{\alpha{f}}+b^2C_{\alpha{r}}}{Iv_x})\dot{\theta}_r+(-\frac{aC_{\alpha{f}}}{I})\delta \end{equation} e¨φ=IvxaCαfbCαre˙d+(IaCαfbCαr)eφ+Ivxa2Cαf+b2Cαre˙φ+(Ivxa2Cαf+b2Cαr)θ˙r+(IaCαf)δ
进而有
[ e ˙ d e ¨ d e ˙ φ e ¨ φ ] = [ 0 1 0 0 0 C α f + C α r m v x − C α f + C α r m a C α f − b C α r m v x 0 0 0 1 0 a C α f − b C α r I v x − a C α f − b C α r I a 2 C α f + b 2 C α r I v x ] [ e d e ˙ d e φ e ˙ φ ] + [ 0 − C α f m 0 − a C α f I ] δ + [ 0 a C α f − b C α r m v x − v x 0 a 2 C α f + b 2 C α r I v x ] θ ˙ r \begin{equation} \begin{bmatrix} \dot{e}_d \\ \ddot{e}_{d} \\ \dot{e}_{\varphi} \\ \ddot{e}_{\varphi} \end{bmatrix}= \begin{bmatrix} 0&1&0&0 \\ 0&\frac{C_{\alpha{f}}+C_{\alpha{r}}}{mv_x} &-\frac{C_{\alpha{f}}+C_{\alpha{r}}}{m}&\frac{aC_{\alpha{f}}-bC_{\alpha{r}}}{mv_x} \\ 0&0&0&1 \\ 0&\frac{aC_{\alpha{f}}-bC_{\alpha{r}}}{Iv_x}&-\frac{aC_{\alpha{f}}-bC_{\alpha{r}}}{I}&\frac{a^2C_{\alpha{f}}+b^2C_{\alpha{r}}}{Iv_x} \end{bmatrix} \begin{bmatrix} e_d \\ \dot{e}_d \\ e_{\varphi} \\ \dot{e}_{\varphi} \end{bmatrix}+ \begin{bmatrix} 0\\ -\frac{C_{\alpha{f}}}{m} \\ 0 \\ -\frac{aC_{\alpha{f}}}{I} \end{bmatrix}\delta+ \begin{bmatrix} 0 \\ \frac{aC_{\alpha{f}}-bC_{\alpha{r}}}{mv_x}-v_x \\ 0 \\ \frac{a^2C_{\alpha{f}}+b^2C_{\alpha{r}}}{Iv_x} \end{bmatrix}\dot{\theta}_r \end{equation} e˙de¨de˙φe¨φ = 00001mvxCαf+Cαr0IvxaCαfbCαr0mCαf+Cαr0IaCαfbCαr0mvxaCαfbCαr1Ivxa2Cαf+b2Cαr ede˙deφe˙φ + 0mCαf0IaCαf δ+ 0mvxaCαfbCαrvx0Ivxa2Cαf+b2Cαr θ˙r
e ˙ r r = A e r r + B u + C θ ˙ r \begin{equation} \dot{e}_{rr}=Ae_{rr}+Bu+C\dot{\theta}_r \end{equation} e˙rr=Aerr+Bu+Cθ˙r

2 LQR原理

对于式16,先暂时不考虑最后一项,那么有
e ˙ r r = A e r r + B u \begin{equation} \dot{e}_{rr}=Ae_{rr}+Bu \end{equation} e˙rr=Aerr+Bu
目的是选择合适的 u u u使得 ∣ e ˉ r r ∣ |\boldsymbol{\bar{e}}_{\boldsymbol{rr}}| eˉrr尽可能小,也即式
J = w a e r r 2 + w b u 2 \begin{equation} J=w_a{\boldsymbol{e}}^2_{\boldsymbol{rr}}+w_bu^2 \end{equation} J=waerr2+wbu2
尽可能小,进一步也即
J = e r r T Q e r r + u T R u \begin{equation} J={\boldsymbol{e}}^T_{\boldsymbol{rr}}Q{\boldsymbol{e}}_{\boldsymbol{rr}}+u^TRu \end{equation} J=errTQerr+uTRu
尽可能小,其中 Q Q Q R R R是对角矩阵,问题就变成了在式17的约束下使 J J J取最小值。

2.1 连续方程离散化

式17写成一般形式
x ˙ = A x + B u \begin{equation} \dot{x}=Ax+Bu \end{equation} x˙=Ax+Bu
上式两边积分
∫ t t + d t x ˙ ( τ ) d τ = ∫ t t + d t A x ( τ ) d τ + ∫ t t + d t B u ( τ ) d τ \begin{equation} \int_t^{t+dt}\dot{x}(\tau)d\tau=\int_t^{t+dt}Ax(\tau)d\tau+\int_t^{t+dt}Bu(\tau)d\tau \end{equation} tt+dtx˙(τ)dτ=tt+dtAx(τ)dτ+tt+dtBu(τ)dτ
得到
x ( t + d t ) − x ( t ) = A x ( ξ ) d t + B u ( ξ ) d t \begin{equation} x(t+dt)-x(t)=Ax(\xi)dt+Bu(\xi)dt \end{equation} x(t+dt)x(t)=Ax(ξ)dt+Bu(ξ)dt
A ( ξ ) A(\xi) A(ξ)采用中值欧拉法,对 u ( ξ ) u(\xi) u(ξ)采用向前欧拉法(因为 u ( t + d t ) u(t+dt) u(t+dt)未知)得到:
x ( t + d t ) = x ( t ) + A d t ( x ( t + d t ) + x ( t ) 2 ) + B u ( t ) d t \begin{equation} x(t+dt)=x(t)+Adt(\frac{x(t+dt)+x(t)}{2})+Bu(t)dt \end{equation} x(t+dt)=x(t)+Adt(2x(t+dt)+x(t))+Bu(t)dt
( I − A d t 2 ) x ( t + d t ) = ( I + A d t 2 ) x ( t ) + B u ( t ) d t \begin{equation} (I-\frac{Adt}{2})x(t+dt)=(I+\frac{Adt}{2})x(t)+Bu(t)dt \end{equation} (I2Adt)x(t+dt)=(I+2Adt)x(t)+Bu(t)dt
x ( t + d t ) = ( I − A d t 2 ) − 1 ( I + A d t 2 ) x ( t ) + ( I − A d t 2 ) − 1 B d t u ( t ) ≈ ( I − A d t 2 ) − 1 ( I + A d t 2 ) x ( t ) + B d t u ( t ) \begin{equation} \begin{split} x(t+dt) &= (I-\frac{Adt}{2})^{-1}(I+\frac{Adt}{2})x(t)+(I-\frac{Adt}{2})^{-1}Bdtu(t) \\ &≈(I-\frac{Adt}{2})^{-1}(I+\frac{Adt}{2})x(t)+Bdtu(t) \end{split} \end{equation} x(t+dt)=(I2Adt)1(I+2Adt)x(t)+(I2Adt)1Bdtu(t)(I2Adt)1(I+2Adt)x(t)+Bdtu(t)
x k + 1 = A ˉ x k + B ˉ u k \begin{equation} x_{k+1}=\bar{A}x_k+\bar{B}{u_k} \end{equation} xk+1=Aˉxk+Bˉuk

2.2 LQR

问题就是在式26的约束下,求 u u u使式
J = ∑ k = 1 ∞ x k T Q x k + u k T R u k \begin{equation} J=\sum_{k=1}^\infty{x^T_{k}Qx_k}+u^T_kRu_k \end{equation} J=k=1xkTQxk+ukTRuk
取得最小值。
u u u的形式为
u = − K x \begin{equation} u=-Kx \end{equation} u=Kx
K = ( R + B ˉ T P B ˉ ) − 1 B ˉ T P A ˉ \begin{equation} K=(R+\bar{B}^TP\bar{B})^{-1}\bar{B}^TP\bar{A} \end{equation} K=(R+BˉTPBˉ)1BˉTPAˉ
其中其 P P P就是离散时间 R i c c a t i Riccati Riccati方程
P = Q + A ˉ T P A ˉ − A ˉ T P B ˉ ( R + B ˉ T P B ˉ ) − 1 B ˉ T P A ˉ \begin{equation} P=Q+\bar{A}^TP\bar{A}-\bar{A}^TP\bar{B}(R+\bar{B}^TP\bar{B})^{-1}\bar{B}^TP\bar{A} \end{equation} P=Q+AˉTPAˉAˉTPBˉ(R+BˉTPBˉ)1BˉTPAˉ
的解。

3 前馈控制与航向误差

对于式16,如果使用上一节的LQR结果(式28、29),
e ˙ r r = ( A − B K ) e r r + C θ ˙ r \begin{equation} \dot{e}_{rr}=(A-BK)e_{rr}+C\dot{\theta}_r \end{equation} e˙rr=(ABK)err+Cθ˙r
无论 K K K取何值, e ˙ r r \dot{e}_{rr} e˙rr e r r {e}_{rr} err不可能同时为0,那么 e r r {e}_{rr} err也就不会为0,系统存在稳态误差
引入前馈控制消除稳态误差
u = − K x + δ f \begin{equation} u=-Kx+\delta_f \end{equation} u=Kx+δf
在这里插入图片描述
e ˙ r r = ( A − B K ) e r r + B δ f + C θ ˙ r \begin{equation} \dot{e}_{rr}=(A-BK)e_{rr}+B\delta_f+C\dot{\theta}_r \end{equation} e˙rr=(ABK)err+Bδf+Cθ˙r
系统稳定后, e ˙ r r = 0 \dot{e}_{rr}=0 e˙rr=0
e r r = − ( A − B K ) − 1 ( B δ f + C θ ˙ r ) \begin{equation} e_{rr}=-(A-BK)^{-1}(B\delta_f+C\dot{\theta}_r) \end{equation} err=(ABK)1(Bδf+Cθ˙r)
选取合适的 δ f \delta_f δf,使 e r r {e}_{rr} err尽可能接近0。
式34展开后得:
e r r = [ 1 k 1 { δ f − θ ˙ r v x [ a + b − b k 3 − m v x 2 a + b ( b c f + a c r k 3 − a c r ) ] } 0 − θ ˙ r v x ( b + a a + b m v x 2 c α f ) 0 ] \begin{equation} e_{rr}= \begin{bmatrix} \frac{1}{k_1}\{\delta_f-\frac{\dot{\theta}_r}{v_x}[a+b-bk_3-\frac{mv^2_x}{a+b}(\frac{b}{c_f}+\frac{a}{c_r}k_3-\frac{a}{c_r})]\} \\ 0\\ -\frac{\dot{\theta}_r}{v_x}(b+\frac{a}{a+b}\frac{mv^2_x}{c_{\alpha{f}}})\\ 0 \end{bmatrix} \end{equation} err= k11{δfvxθ˙r[a+bbk3a+bmvx2(cfb+crak3cra)]}0vxθ˙r(b+a+bacαfmvx2)0
可知当
δ f = θ ˙ r v x [ a + b − b k 3 − m v x 2 a + b ( b c f + a c r k 3 − a c r ) ] \begin{equation} \delta_f=\frac{\dot{\theta}_r}{v_x}[a+b-bk_3-\frac{mv^2_x}{a+b}(\frac{b}{c_f}+\frac{a}{c_r}k_3-\frac{a}{c_r})] \end{equation} δf=vxθ˙r[a+bbk3a+bmvx2(cfb+crak3cra)]
时, e d {e}_{d} ed等于0,其中 k 3 k_3 k3是反馈 K K K中的第三个元素。
通过一系列化简,式35的第三个元素可近似等于 − β -\beta β,即
e φ = − β \begin{equation} e_{\varphi}=-\beta \end{equation} eφ=β
因为目的是 θ − θ r = 0 \theta-\theta_r=0 θθr=0,那么 e φ {e}_{\varphi} eφ的稳态误差刚好就是 − β -\beta β

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

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

相关文章

Apache RocketMQ 5.1.3安装部署文档

官方文档不好使,可以说是一坨… 关键词:Apache RocketMQ 5.0 JDK 17 废话少说,开整。 1.版本 官网地址,版本如下。 https://rocketmq.apache.org/download2.配置文件 2.1namesrv端口 在ROCKETMQ_HOME/conf下 新增namesrv.pro…

Google Cloud Kubernetes Anthos是什么,和Istio有什么关联

Google Cloud Platform (GCP) Kubernetes Anthos 是 Google 推出的一种多云管理平台,基于 Kubernetes,旨在帮助企业在多个云环境中管理和运行容器化应用程序。 https://cloud.google.com/blog/topics/hybrid-cloud/5-frequently-asked-questions-about-…

多摩川编码器协议

多摩川编码器是一种常用的绝对值编码器,其协议基于485硬件接口的标准NRZ协议,通讯波特率为固定的2.5Mbps。以下是多摩川编码器协议的详细说明: 硬件接口 多摩川编码器使用RS485接口进行通信,接口定义如下: 5V供电&…

AI新书推荐:深度学习和大模型原理与实践(清华社)

本书简介 在这个信息爆炸、技术革新日新月异的时代,深度学习作为人工智能领域的重要分支,正引领着新一轮的技术革命。《深度学习和大模型原理与实践》一书,旨在为读者提供深度学习及其大模型技术的全面知识和实践应用的指南。 本书特色在于…

redis延迟队列

Redis延迟队列 Redis延迟队列是基于Redis构建的消息队列,用来处理需延迟执行的任务。 基本原理 它借助Redis的有序集合(Sorted Set)数据结构达成目的。会把任务及其执行时间分别当成成员与分值存进有序集合,由于执行时间作为分值…

Android 之 List 简述

一、简单创建方式 Android 开发中&#xff0c;列表有很多种类&#xff0c;如ArrayList、LinkedList、List、MutableList等&#xff0c;创建列表的方式如下所示&#xff1a; fun listDemo() {// 使用 listOf 创建不可变的空列表val list listOf<Int>()val list1 listOf…

webrtc音频模块(三) windows Core Audio API及声音的播放

在前面介绍了ADM(Audio Device Module)&#xff0c;它用于抽象音频设备管理和音频数据采集/播放接口。windows的实现是AudioDeviceWinowCode&#xff0c;它封装了Core Audio APIs实现了对音频设备的操作。 Core Audio APIs windows提供了多种音频操作API&#xff0c;比如最常…

微信小程序页面之间的传值方式

在微信小程序的开发过程中&#xff0c;页面之间的传值是一个常见的操作。根据多年的实践&#xff0c;我就我所知道的小程序页面之间的传值方式&#xff0c;进行简单的总结。希望能够帮助大家。 一、URL参数传递 原理 这种方式类似于网页开发中的URL传参。在微信小程序中&…

cursor保存更改操作技巧

1. 当我们在agent模式时&#xff0c;要求cursor更改代码时&#xff0c;cursor回答后&#xff0c;就已经更改了代码了&#xff0c;这时候就可以对程序进行编译和测试&#xff0c; 不一定先要点” accept“, 先测试如果没有问题再点“accept”&#xff0c;这样composer就会多一条…

运维工程师面试系统监控与优化自动化与脚本云计算的理解虚拟化技术的优点和缺点

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

各种网站(学习资源及其他)

欢迎围观笔者的个人博客~ 也欢迎通过RSS网址https://kangaroogao.github.io/atom.xml进行订阅~ 大学指南 上海交通大学生存手册中国科学技术大学人工智能与数据科学学院本科进阶指南USTC不完全入学指南大学生活质量指北科研论 信息搜集 AI信息搜集USTC飞跃网站计算机保研 技…

2.在 Vue 3 中使用 ECharts 实现动态时间轴效果

在前端开发中&#xff0c;时间轴&#xff08;Timeline&#xff09;是一种常见且有效的方式来展示时间相关的数据。在本篇文章中&#xff0c;我们将展示如何在 Vue 3 项目中使用 ECharts 创建一个具有动态时间范围的时间轴&#xff0c;并添加了今日时间的标记以及通过按钮来前进…

uniapp-微信小程序调用摄像头

1.uniapp中的index.vue代码 <template><view class"content"><view class"container"><!-- 摄像头组件 --><camera id"camera" device-position"front" flash"off" binderror"onCameraErr…

uni-app开发收货地址管理

目录 一:功能描述 二:功能实现 一:功能描述 收货地址在个人中心的我的地址里面,点击我的地址可以查看我的收货地址列表,可以新增收货地址,点击特定收货地址可以编辑和删除该地址信息。 二:功能实现 1:收货地址列表 <view v-for="(item, index) in data_lis…

Android修行手册 - 移动端几种常用动画方案对比

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

Java日志框架:log4j、log4j2、logback

文章目录 配置文件相关1. properties测试 2. XMl使用Dom4j解析XML Log4j与Log4j2日志门面 一、Log4j1.1 Logges1.2 Appenders1.3 Layouts1.4 使用1.5 配置文件详解1.5.1 配置根目录1.5.2 配置日志信息输出目的地Appender1.5.3 输出格式设置 二、Log4j22.1 XML配置文件解析2.2 使…

《信管通低代码信息管理系统开发平台》Linux环境安装说明

1 简介 信管通低代码信息管理系统应用平台提供多环境软件产品开发服务&#xff0c;包括单机、局域网和互联网。我们专注于适用国产硬件和操作系统应用软件开发应用。为事业单位和企业提供行业软件定制开发&#xff0c;满足其独特需求。无论是简单的应用还是复杂的系统&#xff…

HTTPS协议原理与CA认证

目录 引言 HTTPS 是什么 1.什么是"加密" 2. 为什么要加密 3. 常⻅的加密⽅式 对称加密 ⾮对称加密 4.数据摘要 && 数据指纹 5. 数字签名 HTTPS 的⼯作过程探究 ⽅案 1 - 只使⽤对称加密 ⽅案 2 - 只使⽤⾮对称加密 ⽅案 3 - 双⽅都使⽤⾮对称加密…

STM32单片机芯片与内部33 ADC 单通道连续DMA

目录 一、ADC DMA配置——标准库 1、ADC配置 2、DMA配置 二、ADC DMA配置——HAL库 1、ADC配置 2、DMA配置 三、用户侧 1、DMA开关 &#xff08;1&#xff09;、标准库 &#xff08;2&#xff09;、HAL库 2、DMA乒乓 &#xff08;1&#xff09;、标准库 &#xff…

vulnhub靶场——Log4j2

第一步:搭建靶场环境 #开启环境 cd vulhub/log4j/CVE-2021-44228 docker-compose up -d 来到网站首页 第二步:搭建一个dnslog平台上获取我们注入的效果 第三步:发现 /solr/admin/cores?action 这里有个参数可以传 我们可以看到留下了访问记录并且前面的参数被执行后给我们回…