基于PX4飞控的双机领航-跟踪的理论分析与实验验证

2023-05-16

双机领航-跟踪是最简单的无人机分布式控制,是实现大规模集群分布式控制的基础,本文主要记录对如何实现双机跟踪护航控制的思考以及验证实验。

文章目录

    • 一、理论基础
    • 二、仿真实验
    • 三、实飞实验

一、理论基础

无人机的位置控制模型可以建立为:
{ p ˙ = v v ˙ = u − > x ˙ ( t ) = A x ( t ) + B u ( t ) , x ( t ) = [ p ( t ) v ( t ) ] , A = [ 0 1 0 0 ] B = [ 0 1 ] \left\{\begin{array}{l} \dot{p}=v \\ \dot{v}=u \end{array}\right.->\dot{x}(t)=Ax(t)+Bu(t),x(t)= \left[ \begin{matrix} p(t) \\ v(t) \end{matrix} \right], A=\left[ \begin{matrix} 0 & 1 \\ 0 & 0 \end{matrix} \right] B=\left[ \begin{matrix} 0 \\ 1 \end{matrix} \right] {p˙=vv˙=u>x˙(t)=Ax(t)+Bu(t),x(t)=[p(t)v(t)],A=[0010]B=[01]

领航机和跟随机的相关变量可分别用下标{0,1}来标记,领航机的控制协议 u 0 u_0 u0不受跟随机影响,仅仅受期望路线和自身状态反馈影响,假设其期望飞行轨迹为 f 0 ( t ) = [ p d 0 ( t ) , v d 0 ( t ) ] T f_0(t)=[p_{d0}(t),v_{d0}(t)]^T f0(t)=[pd0(t),vd0(t)]T,那么其控制协议可以设计为:
u 0 = K ( f 0 ( t ) − x 0 ) + v ˙ d 0 (1) u_0=K(f_0(t)-x_0)+\dot{v}_{d0} \tag{1} u0=K(f0(t)x0)+v˙d0(1)

其中 K = [ k 1 , k 2 ] K=[k_1,k_2] K=[k1,k2],只要保证参数 k 1 , k 2 k_1,k_2 k1,k2均是正数,即可确保领航机对轨迹 f 0 ( t ) f_0(t) f0(t)的跟踪。

对于跟随机而言,由于要跟踪领航机,其期望的位置应当为相对于领航机的某一位置,可以表示为:
f 1 ( t ) = s 1 ( t ) + x 0 ( t ) f_1(t)=s_1(t)+x_0(t) f1(t)=s1(t)+x0(t)

其中 s 1 ( t ) = [ p s 1 ( t ) , v s 1 ( t ) ] T s_1(t)=[p_{s1}(t),v_{s1}(t)]^T s1(t)=[ps1(t),vs1(t)]T表示相对于领航机的期望位置差和速度差,类似的,其控制协议可设计为:
u 1 = K ( f 1 ( t ) − x 1 ) + v ˙ d 1 = K ( s 1 ( t ) + x 0 ( t ) − x 1 ( t ) ) + ( v ˙ s 1 + v ˙ 0 ) (2) \begin{aligned} u_1&=K(f_1(t)-x_1)+\dot{v}_{d1} \\ &=K(s_1(t)+x_0(t)-x_1(t))+(\dot{v}_{s1}+\dot{v}_0) \end{aligned} \tag{2} u1=K(f1(t)x1)+v˙d1=K(s1(t)+x0(t)x1(t))+(v˙s1+v˙0)(2)

二、仿真实验

可开展时变编队实验和时不变编队实验:
(1)时不变编队, s 1 ( t ) s_1(t) s1(t)为恒定值,在三维方向上可取
s 1 x ( t ) = [ − 5 , 0 ] T , s 1 y ( t ) = [ 0 , 0 ] T , s 1 z ( t ) = [ 0 , 0 ] T s_{1x}(t)=[-5,0] ^T, s_{1y}(t)=[0,0]^T , s_{1z}(t)=[0,0]^T s1x(t)=[5,0]T,s1y(t)=[0,0]T,s1z(t)=[0,0]T

即跟随机始终在维持在距离领航机X负方向5m的地方。

(2)时变编队, s 1 ( t ) s_1(t) s1(t)为变化值,我们可以构造跟随机在水平方向上绕领航机旋转的绕圆函数,圆的半径为 r = 5 m r=5m r=5m,绕圆线速度为 v 1 = 1.1 m / s v_1=1.1m/s v1=1.1m/s,则绕圆角速度为 w 1 = v / r = 0.22 rad/s w_1=v/r=0.22 \text{rad/s} w1=v/r=0.22rad/s,则 s 1 ( t ) s_1(t) s1(t)在三维方向上可取
s 1 x ( t ) = [ 5 cos ( 0.22 t ) , − 1.1 sin ( 0.22 t ) ] T , s 1 y ( t ) = [ 5 sin ( 0.22 t ) , 1.1 cos ( 0.22 t ) ] T , s 1 z ( t ) = [ 0 , 0 ] T s_{1x}(t)=[ 5\text{cos}(0.22t),-1.1\text{sin}(0.22t)] ^T, s_{1y}(t)=[5\text{sin}(0.22t),1.1 \text{cos}(0.22t)] ^T, s_{1z}(t)=[0,0] ^T s1x(t)=[5cos(0.22t),1.1sin(0.22t)]T,s1y(t)=[5sin(0.22t),1.1cos(0.22t)]T,s1z(t)=[0,0]T

领航机和跟随机的初始状态可分别取为:
x 0 x ( 0 ) = [ 0 , 0 ] T , x 0 y ( 0 ) = [ 0 , 0 ] T , x 0 z ( 0 ) = [ 5 , 0 ] T x 1 x ( 0 ) = [ 6 , 0 ] T , x 1 y ( 0 ) = [ 6 , 0 ] T , x 1 z ( 0 ) = [ 5 , 0 ] T \begin{aligned} &x_{0x}(0)=[0,0]^T,x_{0y}(0)=[0,0]^T ,x_{0z}(0)=[5,0]^T\\ &x_{1x}(0)=[6,0]^T,x_{1y}(0)=[6,0]^T ,x_{1z}(0)=[5,0]^T \end{aligned} x0x(0)=[0,0]T,x0y(0)=[0,0]T,x0z(0)=[5,0]Tx1x(0)=[6,0]T,x1y(0)=[6,0]T,x1z(0)=[5,0]T

领航机的期望飞行轨迹可设为一个边长为10m的正方形轨迹,最大速度为$v_{max}= 0.4 m / s , 最 大 加 速 度 为 0.4m/s,最大加速度为 0.4m/sa_{max}=0.4\text{m/s}$ ,首先可列出期望轨迹方程为:
z ( t k + 1 ) = { fh = { fhan ( z 1 ( t k ) − L ( t k ) , z 2 ( t k ) , a m a x , 3 Δ T ) , ∣ v d 0 ( t k ) ∣ < v m a x 0 , ∣ v d 0 ( t k ) ∣ ≥ v m a x z 1 ( t k + 1 ) = z 1 ( t k ) + z 2 ( t k ) Δ T z 2 ( t k + 1 ) = z 2 ( t k ) + fh Δ T z(t_{k+1})=\left\{\begin{array}{l} \text{fh}=\left\{\begin{array}{l} \text{fhan} (z_{1}(t_k)-L(t_k),z_{2}(t_k),a_{max},3\Delta T),&|v_{d0}(t_k)|<v_{max} \\ 0,&|v_{d0}(t_k)|\geq v_{max} \end{array}\right.\\ z_{1}(t_{k+1})=z_{1}(t_k)+z_{2}(t_k)\Delta T\\ z_{2}(t_{k+1})=z_{2}(t_k)+\text{fh}\Delta T \end{array}\right. z(tk+1)=fh={fhan(z1(tk)L(tk),z2(tk),amax,3ΔT),0,vd0(tk)<vmaxvd0(tk)vmaxz1(tk+1)=z1(tk)+z2(tk)ΔTz2(tk+1)=z2(tk)+fhΔT

f 0 ( t k + 1 ) = [ f 0 x ( t k + 1 ) f 0 y ( t k + 1 ) f 0 z ( t k + 1 ) ] = z ( t k + 1 ) [ v e c x ( n ) v e c y ( n ) [ 0 , 0 ] T ] + [ [ p x ( n ) , 0 ] T [ p y ( n ) , 0 ] T [ 5 , 0 ] T ] , n = 0 , 1 , 2 , 3 f_{0}(t_{k+1})=\left[ \begin{matrix} f_{0x}(t_{k+1}) \\ f_{0y}(t_{k+1}) \\ f_{0z}(t_{k+1}) \end{matrix} \right]=z(t_{k+1})\left[ \begin{matrix} vec_x (n) \\ vec_y(n)\\ [0,0]^T \end{matrix} \right]+\left[ \begin{matrix} [p_{x}(n),0]^T \\ [p_{y}(n),0]^T \\ [5,0] ^T \end{matrix} \right],n=0,1,2,3 f0(tk+1)=f0x(tk+1)f0y(tk+1)f0z(tk+1)=z(tk+1)vecx(n)vecy(n)[0,0]T+[px(n),0]T[py(n),0]T[5,0]T,n=0,1,2,3

其中, v e c ( n ) = [ v e c x ( n ) , v e c y ( n ) ] T vec(n)=[vec_x(n),vec_y(n)]^T vec(n)=[vecx(n),vecy(n)]T表示无人机在XY平面上每一条边的速度单位向量, p ( n ) = [ p x ( n ) , p y ( n ) ] T p(n)=[p_x(n),p_y(n)]^T p(n)=[px(n),py(n)]T表示正方形每一个顶点处的位置坐标:
{ v e c ( 0 ) = [ 1 , 0 ] T , v e c ( 1 ) = [ 0 , 1 ] T , v e c ( 2 ) = [ 1 , 0 ] T , v e c ( 3 ) = [ 0 , 1 ] T p ( 0 ) = [ 0 , 0 ] T , p ( 1 ) = [ 10 , 0 ] T , p ( 2 ) = [ 10 , 10 ] T , p ( 3 ) = [ 0 , 10 ] T \left\{\begin{array}{l} vec(0)=[1,0]^T,vec(1)=[0,1]^T,vec(2)=[1,0]^T,vec(3)=[0,1]^T\\ p(0)=[0,0]^T,p(1)=[10,0]^T,p(2)=[10,10]^T,p(3)=[0,10]^T \end{array}\right. {vec(0)=[1,0]T,vec(1)=[0,1]T,vec(2)=[1,0]T,vec(3)=[0,1]Tp(0)=[0,0]T,p(1)=[10,0]T,p(2)=[10,10]T,p(3)=[0,10]T

因为每一段边长需要的飞行时间为: T = 2 × v m a x / a m a x + ( 10 − v m a x 2 / a ) / v m a x = 12 s T=2×v_{max}/a_{max}+(10-v_{max}^2/a)/v_{max}=12 \text{s} T=2×vmax/amax+(10vmax2/a)/vmax=12s,飞行策略可设为每飞12s停歇1s:

{ L ( t k ) = 10 , i f : 13 n ≤ t k < 13 n + 12 , n = 0 , 1 , 2 , 3 L ( t k ) = 0 , o t h e r w i s e \left\{\begin{array}{l} L(t_k)=10, if :13n\leq t_k<13n+12,n= 0,1,2,3\\ L(t_k)=0 ,otherwise \end{array}\right. {L(tk)=10,if:13ntk<13n+12,n=0,1,2,3L(tk)=0,otherwise

仿真结果如下:
(1)时不变跟踪仿真:

在这里插入图片描述

图1 时不变跟踪仿真
(2)时变跟踪仿真:

在这里插入图片描述

图2 时变编队跟踪仿真

三、实飞实验

实飞实验开始前,需要先修改好相应的飞控程序及地面站程序,主要包括:

  • 原点标定
  • 多机主要状态显示
  • 领导者发送状态信息到跟随者
  • 跟随者接收信息的测试

原点标定主要是为了确保每架无人机以某个相同的经纬度作为坐标原点,此外因为无人机都以北-东-地(NED)为XYZ正方向,这样无人机就能在同一个坐标系下工作运行了。具体方法为:

  • 在飞行场地随便选择一个点作为候选原点
  • 取一架无人机在此点处开机,待收到GPS信号后,地面站发送指令设置该点经纬度为参考原点的经纬度;
  • 其它无人机也在此点开机,并将该点设置为原点。

由于PX4飞控自带有设置home点功能,我们也可以将home点设置为参考原点,即给每架无人机都设置相同的home点:

void
MavlinkReceiver::handle_message_set_my_command(mavlink_message_t *msg)
{
	/* command */
	mavlink_set_my_command_t cmd_mavlink;
	mavlink_msg_set_my_command_decode(msg, &cmd_mavlink);

	struct vehicle_command_s vcmd;
	vcmd.timestamp = hrt_absolute_time();
	vcmd.param5 = NAN;
	vcmd.param6 = NAN;
	/* minimum pitch */
	vcmd.param1 = NAN;
	vcmd.param2 = NAN;
	vcmd.param3 = NAN;
	vcmd.param4 = NAN;
	vcmd.param7 = NAN;
	vcmd.target_system = 1;
	vcmd.target_component = 1 ;
	vcmd.source_system = 1;
	vcmd.source_component =1;
	vcmd.confirmation = false;
	vcmd.from_external = true;
        switch (cmd_mavlink.data1)
	{
	   case 0://设置原点
	        vcmd.param1 = 1;
			vcmd.command = vehicle_command_s::VEHICLE_CMD_DO_SET_HOME;
		break;
	   case 1://设置锁定
	        vcmd.param1 = 1;
			vcmd.command = vehicle_command_s::VEHICLE_CMD_COMPONENT_ARM_DISARM ;
		break;		
	   case 2://起飞
			vcmd.command = vehicle_command_s::VEHICLE_CMD_NAV_TAKEOFF;
		break;
	   case 3://降落
			vcmd.command = vehicle_command_s::VEHICLE_CMD_NAV_LAND;
		break;		
             ...
        }

可以在QGC飞控里添加相应的指令发送功能:
在这里插入图片描述

图3 设置原点

注释:我对QGC地面站的FlightDisplayView页面进行了一些改进,使之可以适合于多机状态显示和指令的发送。

我们关心的多机状态显示主要是姿态和位置:
在这里插入图片描述

图4 主要状态显示

关于领导者发送状态信息的问题,我们在构造这个mavlink消息时,需要考虑以下数据:

  • 自身位置数据: x,y,z ,可取单位为m,精确到小数点后1位,即分米级(室外GPS定位大致也就这个级别的精度),我们可以用16位int型两字节数据来表示,可表示的范围为:-3276.3m~3276.3米,即我们初步考虑无人机的飞行范围不超过以原点为圆心,半径为3276.3m的球型区域(对于实验来说,这个范围应当已经足够了);
  • 自身速度数据,Vx,Vy,Vz,同样的可取单位为m,精确到小数点后2位,即厘米级,如果用8位一个字节存储,表示范围只能到-1.27~1.27m/s,显然不够,所以最低也只能两个字节,可表示范围为-327.63m/s~327.63m/s
  • 加速度数据,这个可以由领导者的编队指令给出,也应包括x,y,z,但我们可只精确到分米级,所以仅用一个字节的数据即可,范围为-12.7~12.7m/s

由此总共需要的字节数为2*6+3=15个字节,对应的mavlink消息结构体变量如下:

#define MAVLINK_MSG_ID_agent_state 272

MAVPACKED(
typedef struct __mavlink_agent_state_t {
 int16_t x; /*<  unit:dm 1E3*/
 int16_t y; /*<  unit:dm 1E3*/
 int16_t z; /*<  unit:dm 1E3*/
 int16_t vx; /*<  unit:cm/s 1E3*/
 int16_t vy; /*<  unit:cm/s 1E3*/
 int16_t vz; /*<  unit:cm/s 1E3*/
 int8_t ax; /*<  unit:dm/s 1E3*/
 int8_t ay; /*<  unit:dm/s 1E3*/
 int8_t az; /*<  unit:dm/s 1E3*/
}) mavlink_agent_state_t;

#define MAVLINK_MSG_ID_agent_state_LEN 15

实飞实验的步骤为:

  • 两架无人机同时起飞至悬停状态(在同时到达悬停状态之前,不启动领导-跟随模式)
  • 领导者可一直发送自身状态信息给跟随者
  • 跟随者检测是否收到领导者信息,若检测到,可发信息给地面站,使能领导-跟随模式
  • 地面站选择时不变编队跟踪模式,领导者开始绕矩形轨迹运动,跟随者则始终在距其X方向-5m处进行跟踪,矩形绕完后保持悬停
  • 点击降落命令,无人机开始降落

在进行机间通信时,发现了一些错误:
无人机的编号(sysyid)必须和Xbee模块上的跟随机编号-MacId 一一对应,这一段主要体现在QGC代码中的:

static inline void select_des_address(mavlink_message_t* msg,uint8_t vehicleID)
{
        switch (vehicleID)
        {
              case 1:
                  msg->addr64 = Addr_QuadRotor1;
                  break;
              case 2:
                  msg->addr64 = Addr_QuadRotor2;
                  break;             
              default:
                  msg->addr64=0x000000000000FFFF;
                  break;

        }
}

因此在新增通信模块时,一定要在地面站增加该模块的通信地址ID。在收到地面站开始领航跟踪指令后,领航机按照预定规划的路线飞行即可,而跟随机在位置控制器里要加入编队分量和领航机传递的状态分量 。

我们采用的是F450的机架(耐摔神机,如下):

在这里插入图片描述

图5 实验无人机

实际飞行视频已上传到腾讯视频:双机领航-跟踪实验视频

这次实验只做了时不变编队的领航-跟踪实验,尚未开展时不变编队实验。主要是发现跟随机的跟踪效果不是非常理想,在实验现场看起来较领航机要抖振的多,在查看飞行数据后,感觉主要原因在于:

  • 由领航机发送过来的位置、速度状态数据对于跟随机来说是非平滑的轨迹曲线,既有自身测量噪声的原因,也有间歇通信(毕竟只能25Hz的频率传输数据)的原因,而领航机的轨迹是自己用轨迹生成函数自动生成的,不会存在不平滑的问题。所以跟随机的飞行效果要远逊于领航机。

后续计划考虑采用一些滤波器对跟踪机接收到的领航机数据进行滤波。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于PX4飞控的双机领航-跟踪的理论分析与实验验证 的相关文章

  • ardupilot & px4 书写自己的app & drivers (二)

    新建任务列表任务 打印时间 任务列表 const AP Scheduler span class hljs tag Task span Copter span class hljs tag scheduler tasks span span
  • 【2020-8-9】APM,PX4,GAZEBO,MAVLINK,MAVROS,ROS之间的关系以及科研设备选型

    0 概述 无人机自主飞行平台可以分为四个部分 xff1a 动力平台 xff0c 飞行控制器 xff0c 机载电脑和模拟平台 动力平台 xff1a 负责执行飞行任务 xff0c 包括螺旋桨 电机 机架等 xff0c 用于科研的一般都是F380
  • PX4/Pixhawk---uORB深入理解和应用

    The Instructions of uORB PX4 Pixhawk 软件体系结构 uORB 主题发布 主题订阅 1 简介 1 1 PX4 Pixhawk的软件体系结构 PX4 Pixhawk的软件体系结构主要被分为四个层次 xff0c
  • px4源码编译指南

    px4源码编译指南 强烈推荐大家去看官网的英文文档 xff0c 国内的博客杂七杂八 xff0c 官网的中文也很久没有更新 xff0c 这几天自己踩了很多坑 xff0c 写个教程希望能帮助到大家 xff08 本文选用平台是pixhawk1 1
  • PX4进入系统控制台以及运行程序

    这里提供进入控制台两种办法 1 运行 Tools mavlink shell py dev ttyACM0 是我进入Px4系统控制台的命令 xff0c 进入之后应该是这样 Pixhawk src Firmware Tools mavlink
  • 无人机仿真—PX4编译,gazebo仿真及简单off board控制模式下无人机起飞

    无人机仿真 PX4编译 xff0c gazebo仿真及简单off board控制模式下无人机起飞 前言 在上篇记录中 xff0c 已经对整体的PX4仿真环境有了一定的了解 xff0c 现如今就要开始对无人机进行起飞等仿真环境工作 xff0c
  • PX4模块设计之三:自定义uORB消息

    PX4模块设计之三 xff1a 自定义uORB消息 1 新增自定义uORB消息步骤2 应用ext hello world消息示例3 编译执行结果4 参考资料 基于PX4开源软件框架简明简介和PX4模块设计之二 xff1a uORB消息代理
  • PX4模块设计之十八:Logger模块

    PX4模块设计之十八 xff1a Logger模块 1 Logger模块简介2 模块入口函数2 1 主入口logger main2 2 自定义子命令Logger custom command2 3 日志主题uORB注册 3 重要实现函数3
  • PX4模块设计之二十六:BatteryStatus模块

    PX4模块设计之二十六 xff1a BatteryStatus模块 1 BatteryStatus模块简介2 模块入口函数2 1 主入口battery status main2 2 自定义子命令custom command 3 Batter
  • PX4模块设计之三十三:Sensors模块

    PX4模块设计之三十三 xff1a Sensors模块 1 Sensors模块简介2 模块入口函数2 1 主入口sensors main2 2 自定义子命令custom command2 3 模块状态print status 重载 3 Se
  • PX4模块设计之三十九:Commander模块

    PX4模块设计之三十九 xff1a Commander模块 1 Commander模块简介2 模块入口函数2 1 主入口commander main2 2 自定义子命令custom command 3 Commander模块重要函数3 1
  • PX4模块设计之四十五:param模块

    PX4模块设计之四十五 xff1a param模块 1 param模块简介2 模块入口函数param main3 重要函数列表4 总结5 参考资料 1 param模块简介 Description Command to access and
  • PX4模块设计之四十七:mavlink模块

    PX4模块设计之四十七 xff1a mavlink模块 1 mavlink模块简介2 模块入口函数mavlink main3 mavlink模块重要函数3 1 Mavlink start3 2 Mavlink task main3 3 Ma
  • 关于github px4 gps 驱动的开发的总结

    源码编译上边已经写过文章了 遇到的几个问题 1 解决虚拟机不能共享文件夹的问题 一开始虚拟机的更新 vmware tools 是灰色的 xff0c 不能点 xff0c 然后通过关掉虚拟机 xff0c 然后再开启的时候 xff0c 在没有启动
  • px4_simple_example和uorb机制

    px4 simple app PX4 Autopilot src exampes px4 simple app xff0c 这个程序是用c语言调用orb API和poll机制订阅和发布通讯数据 xff0c 但是这个例子并不是既有接收又有发送
  • PX4-4-任务调度

    PX4所有的功能都封装在独立的模块中 xff0c uORB是任务间数据交互和同步的工具 xff0c 而管理和调度每个任务 xff0c PX4也提供了一套很好的机制 xff0c 这一篇我们分享PX4的任务调度机制 我们以PX4 1 11 3版
  • PX4飞控之自主返航(RTL)控制逻辑

    本文基于PX4飞控1 5 5版本 xff0c 分析导航模块中自护返航模式的控制逻辑和算法 自主返航模式和导航中的其他模式一样 xff0c 在Navigator main函数中一旦触发case vehicle status s NAVIGAT
  • 步骤八:PX4使用cartographer与move_base进行自主建图导航

    首先老样子硬件如下 飞控 HOLYBRO PIXHAWK V4 PX4 机载电脑 jetson nano b01 激光雷达 思岚a2 前提 你已经完成了cartographer建图部分 能够正常输出map话题 前言 由于要参加中国机器人大赛
  • PX4项目学习::(五)模块代码启动流程

    54条消息 PX4 模块代码启动流程 zhao23333的博客 CSDN博客
  • 无人机PX4使用动捕系统mocap的位置实现控制+MAVROS

    动捕系统Optitrack xff0c 有很高的定位精度 xff0c 能够给无人机提供比较精确的位置信息 xff0c 因此如果实验室有条件 xff0c 都可以买一套动捕系统 动捕系统的原理 xff1a 光学式动作捕捉依靠一整套精密而复杂的光

随机推荐

  • Linux系统安装ClamAV的详细步骤

    ClamAV是一款开源免费的杀毒软件 xff0c 它可以在Linux系统上运行 以下是在Linux系统上安装ClamAV的步骤 xff1a 打开终端并更新软件包列表 xff1a sudo apt update 安装ClamAV xff1a
  • 为什么 0.1 + 0.2 不等于0.3?如何解决这个问题?

    一 开头 我们都知道0 1 43 0 2 61 61 0 3 xff0c 而是0 30000000000000004 xff0c 那么是为什么 xff1f 我们都知道计算机在内部实现中使用的是二进制 xff0c 0 1也是不例外的 xff0
  • 前端手写(十八)——Promise并行限制

    一 写在前面 一般我们做多个异步请求 xff0c 此时我们常常采用的是Promise all来进行处理 xff0c Promise all会全部的一起执行 xff0c 但是如果存在一些并行的限制 xff0c 也就是说一次最多只能执行固定的数
  • 深度学习环境安装(VMware)-Miniconda-pytorch

    提示 xff1a 最近要要跑一些算法 xff0c 用的linux系统一直是在服务器上进行开发 xff08 无GUI界面 xff09 xff0c 双系统又懒得开关机 xff0c 虚拟机还不能调用gpu xff0c 真无了个大语 对于文章中出现
  • novnc安装

    ubuntu22 04 span class token comment 安装软件 span span class token function sudo span span class token function apt span sp
  • python扫描端口

    什么是端口扫描 定义 xff1a 对一段端口或指定的端口进行扫描 目的 xff1a 通过扫描结果可以知道一台计算机上都提供了哪些服务 xff0c 然后就可以通过所提供的这些服务的己知漏洞就可进行攻击 原理 xff1a 当一个主机向远端一个服
  • HTML_移动端界面

    homework8 移动端界面 注 点击图标放大 点击图片旋转180度 ydd html span class token doctype lt DOCTYPE html gt span span class token tag span
  • Windows11安装与使用初体验

    Windows11安装 因为下载的是美国镜像 xff0c 所以系统语言是英文的 xff0c 但是这么多年的使用 xff0c 还是能够看懂一二的 xff0c 一步步操作就好了呗 xff0c 随缘点击 xff0c 无脑下一步 不知是我没有选择对
  • 基于51单片机的智能窗帘仿真方案原理图设计

    系统总体方案 xff08 附文件 xff09 通过上述对各个模块介绍 xff0c 我们最终选择了采用STC89C52作为的主控芯片 xff0c 采用光敏电阻采集环境光强通过ADC0832转换成数字信息然后由单片机处理得出环境光强的情况 xf
  • 基于RNN-LSTM模型的诗词生成/TensorFlow

    1 研究任务一介绍 1 1 研究任务 给定诗词数据集poems xff0c 采用基于循环神经网络 xff08 RNN xff09 的LSTM模型实现古诗词自动生成 xff0c 调整参数实现五言诗 七言诗 五言藏头诗 七言藏头诗和词的自动生成
  • PX4飞控学习与开发(三)-PX4+ROS开发环境搭建

    PX4开发环境搭建 主要步骤如下 xff1a 第一步 xff0c 设置用户组 在终端输入命令 xff1a sudo usermod a G dialout USER xff0c 然后登出 xff0c 重启 xff1b 第二步 xff0c P
  • PX4飞控学习与开发(五)-Pixhawk固件Firmware源码结构分析

    Pixhawk固件Firmware源码结构分析 Pixhawk源码Firmware是一个内容庞大的文件夹 xff0c 里面有许多的子文夹 xff0c 代表着不同的功能模块 文件夹结构如下图所示 xff1a 图1 Firmware源码结构 图
  • Latex的一些排版技巧

    Latex是科研论文写作的必备工具之一 xff0c 学会一些常用的排版指令有助于快速提高论文的排版质量 本篇博客的主要内容就是总结一些排版技巧 xff0c 方便后续查找使用 当然 xff0c 随着latex排版相关知识的进一步学习和使用 x
  • PX4飞控学习与开发(六)-利用 VScode 修改源码

    努力学习 xff0c 珍惜时间 xff1b 全力以赴 xff0c 创造未来 克制欲望 xff0c 摒除心魔 xff1b 心向何处 xff0c 往来圣贤 功崇惟志 xff0c 业广惟勤 xff1b 惟克果断 xff0c 乃罔后艰 面临困难 x
  • 基于VSCode软件的markdown笔记环境配置

    前期在CSDN上用markdown写了一些博客 xff0c 使用时还是觉得不太方便 xff0c 尤其是在编写公式时 xff0c 效率十分低下 但Markdown本身还是一款非常不错的笔记撰写工具 xff0c 所以一直琢磨着怎么改善其使用体验
  • Ubuntu 主机单系统 安装

    首先是安装系统 xff0c 启动盘是USB HDD模式 xff0c 其他基本和下面这篇文章一样 xff0c 除了安装时候没有Install 然后按e什么的 xff0c 应该是因为我的是20 04吧 史上最全Ubuntu18 04单系统安装教
  • 竞拍算法(Auction Algorithm)原理及工作过程分析

    这几天因一些项目工作 xff0c 需要对竞拍算法进行学习 但百度了大部分资料都未找到一篇文章对此算法有着较为深入的介绍 在一番努力之下 xff0c 终于找到了最初提出该算法的论文 xff0c 本文内容主要结合该论文对竞拍算法进行分析 竞拍算
  • PX4飞控学习与开发(七)-Pixhawk源码中的功能模块分析

    本篇博客主要介绍Firmware固件中各功能模块的基本结构 功能模块的编译 从上篇博客内容中的demo我们可以发现 xff0c 如果我们需要给Pixhawk模块新增一个功能模块 xff0c 一般的做法是新建一个文件夹 xff0c 所有这个功
  • XBee模块实现QGC与PX4飞控的组网通信连接

    本篇博客介绍如何利用XBee模块实现QGC地面站与飞控的通信 一 问题的提出 正如 上一篇博客 指出 xff0c PX4飞控原装数传模块 xff08 3DR Radio xff09 只能一对一通信 xff0c 并不能实现多机组网通信 xff
  • 基于PX4飞控的双机领航-跟踪的理论分析与实验验证

    双机领航 跟踪是最简单的无人机分布式控制 xff0c 是实现大规模集群分布式控制的基础 xff0c 本文主要记录对如何实现双机跟踪护航控制的思考以及验证实验 文章目录 一 理论基础二 仿真实验三 实飞实验 一 理论基础 无人机的位置控制模型