空地多无人平台协同路径规划复现:从建模到Matlab仿真全解析

空地多无人平台协同路径规划Matlab复现:从RRT*到混合A*的完整实现 多智能体协同路径规划是机器人领域的研究热点,其核心挑战在于异构平台的能力差异与任务约束。空地协同通过无人机的高空全局感知与无人车的地面精细执行,形成优势互补,显著提升复杂环境下的任务效率。在技术实现上,无人机常采用RRT*算法进行三维路径搜索,并通过B样条平滑生成可飞航迹;无人车则基于运动学约束采用混合A*算法规划可执行路径。两者通过主从式架构与时间协同机制实现信息融合,完成动态避障与任务协作。该方法在灾害救援、区域巡检、物流配送等场景具有广泛应用价值。本文完整复现了空地协同路径规划流程,重点解析RRT*、 阅读详情

上周有朋友问我,论文里那些空地协同路径规划的仿真图到底是怎么画出来的,是不是找作者要的代码?其实哪有人给,大部分都是自己一行行复现出来的。他问的这篇题目是《空地多无人平台协同路径规划技术研究》,听起来很唬人,说白了就是让几架无人机和几辆无人车在一个任务区域里,各走各的路,又能互相配合把任务做完。我花了一周时间用Matlab把整套代码跑通,今天就把复现过程里最关键的东西拆开讲,从建模到算法,再到代码实现和踩坑心得一次说清楚。

这篇文章适合正在做无人机、无人车路径规划相关课题的学生,也适合准备论文复现但不知道怎么下手的同学。我会先讲清楚问题本身是什么,然后给出模型和算法的复现思路,再贴出Matlab的代码结构设计,最后重点聊聊我在实际复现中遇到的那些坑。不整虚的,全程干货。

1. 空地协同路径规划到底在解决什么问题

1.1 从单平台规划到多平台协同的跨越

单一无人机路径规划大家都不陌生:给一张二维或三维地图,找一个从起点到终点的安全路径,避开障碍物,满足飞行约束。但空地多无人平台协同路径规划完全不是一个维度的事——它同时包含多个无人机和多个地面无人车,不仅要各自规划出路径,还要保证平台之间不碰撞、任务分配合理、时间上能协同起来。

之所以要研究空地协同,根本原因是无人机和无人车有很强的互补性。无人机视野好,居高临下,能快速掠过障碍物,但续航短、载重小;无人车续航长、可以搭载更多设备,但只能在地面走,受地形限制大。很多任务场景,比如目标搜索、物资转运、区域巡逻,单靠任何一种平台都不够高效。无人机先飞到目标区域上空做探测,把信息传回给无人车,无人车再按照更经济的路径抵达目标点,这种异构协同比单纯无人机编队或者单机器人路径规划都更有实用价值。

在复现论文的时候,我一开始就想当然地以为只是把多架无人机路径规划叠加起来,后来发现完全不是。多平台协同规划的核心不是“多对路径的集合”,而是“路径与路径之间的约束关系”。比如两辆车同时要经过同一个狭窄通道,如果各规划各的,时间上撞了,就必须重新调度;又比如无人机和无人车的速度快慢不一样,如果要求在某一个时间点同时到达目标区域,就需要把速度规划也放进协同变量里。

1.2 异构平台的数学模型差异

把无人机和无人车放在同一个规划框架里,首先得给它们建数学描述。无人机在三维空间运动,一般简化为质点运动学模型,状态量是位置(x, y, z)和速度偏航角;无人车在地面运动,简化为非完整约束模型,状态量是位置(x, y)和航向角,转弯半径、最小转弯速度都是约束。

这两类模型直接混合在一起计算会出问题。无人机有高度自由度,可以越过河流、矮墙、小土坡;无人车只能在地面上走,这地形能不能通行需要单独建立代价地图。我在复现时采用的不是统一的3D路径搜索,而是把地图分成两层:一层是空中的2.5D高程图,无人机规划时主要避让高楼、高压线等高大障碍;另一层是地面的2D栅格图,无人车规划时还要额外叠加地表粗糙度、坡度信息。

这里有个新手常犯的错误:直接把无人机三维路径规划的代码拿来给无人车用。无人机可以走直线跨越障碍,但地面无人车这样走可能直接撞墙。必须针对平台特性分别设定不同的障碍物膨胀半径和约束条件。论文里通常不会说这么细,但复现时一定要自己意识到这个差异,否则仿真结果会非常假。

2. 复现论文前必须搞懂的问题建模

2.1 环境地图怎么建才适合空地协同

路径规划的地图建模有很多种方式,栅格地图、路点图、拓扑地图各有适用场景。我在复现这篇论文时选择了栅格地图,原因有三点:第一,栅格地图和Matlab的矩阵天然契合,处理障碍物探测非常方便;第二,论文里给出的结果图基本都是栅格形式,方便对照复现;第三,航空影像或者高程数据转换成栅格地图的预处理流程很成熟。

但空地协同的栅格地图不能只做一层。我的做法是生成两个矩阵: map_air 表示空中障碍物分布, map_ground 表示地面可通行区域。 map_air 里每个栅格的值代表该区域是否有高大障碍物,无人机不能穿过; map_ground 里则把水塘、陡坡、建筑区都标为障碍。两个矩阵的分辨率要保持一致,这样统一坐标系的转换会很方便。

为了更贴近论文,我还加入了“热点区域”的概念。任务区域内会有多个需要覆盖的目标点,这些点不是单纯的最短路径终点,而是可以动态生成和分配的。地图初始化时,我会随机生成若干个目标区域,并给定每个目标区域的优先级权重。这个优先级权重直接影响后续的任务分配结果,也是衡量协同策略好坏的一个重要变量。

2.2 约束条件与优化目标设计

空地多无人平台协同路径规划本质上是一个带约束的多目标优化问题。我先列出我在

多无人机协同路径规划:B样条曲线与分布式算法实践 路径规划是无人机自主导航的核心技术,其本质是通过算法在复杂环境中生成安全高效的移动轨迹。B样条曲线因其局部可控性和平滑特性,成为解决无人机路径优化问题的理想工具,特别适合需要动态避障的农业植保、物流配送等场景。分布式协同算法则通过任务分配和冲突消解机制,实现多无人系统的并行作业,显著提升作业效率。本文以农业植保无人机集群为例,详细解析了如何结合B样条曲线优化和CBBA分布式算法,解决多机协同中的实时避障、异构平台统一建模等关键技术挑战,并通过Matlab仿真验证了算法在缩短任务时间、降低碰撞风险方面的显著效 阅读详情

相关推荐

基于Q-Learning的AGV多车协同路径规划Matlab仿真实践

强化学习作为机器学习的重要分支,其核心原理是智能体通过与环境的持续交互,根据获得的奖励或惩罚来学习最优行为策略。Q-Learning作为经典的强化学习算法,通过维护一个Q值表来评估在特定状态下采取不同动作的长期价值,在解决序列决策问题上展现出巨大潜力。其技术价值在于能够处理动态、不确定的环境,实现自主学习和优化,而无需依赖精确的环境模型。在机器人控制、游戏AI、自动驾驶等应用场景中,Q-Learning被广泛用于路径规划与决策制定。本文聚焦于智能仓储物流领域,探讨如何将Q-Learning应用于多台自动导引

weixin_33984032的博客 363

无人机5G空中基站:Matlab仿真实现与协同组网技术详解

无线通信网络正朝着空天地一体化方向演进,其核心原理是通过动态部署空中节点来增强地面网络的覆盖与容量。5G技术凭借其高带宽、低时延特性,为这一构想提供了技术基础。在工程实践中,利用无人机作为空中基站,能够快速响应热点区域通信需求或应急场景下的网络恢复,具有极高的应用价值。本项目通过Matlab仿真,系统实现了多无人机协同构建5G网络的完整流程,涵盖了信道建模、资源分配与路径规划等关键技术。其中,强化学习和比例公平调度等算法的应用,为解决动态环境下的网络优化问题提供了有效方案,为通信工程与无人机应用开发领域的实

weixin_34396902的博客 338

基于Matlab/Simulink的无人机5G空中基站系统仿真与源码解析

无人机通信与5G网络是当前无线通信领域的热点技术。无人机作为空中基站,通过搭载5G通信设备,能够快速构建临时或应急网络,其核心原理在于利用无人机的高机动性实现动态网络覆盖与资源优化。这项技术的价值在于能够解决地面基础设施覆盖不足或受损场景下的通信需求,广泛应用于应急救灾、大型活动保障、偏远地区覆盖等场景。本文聚焦于无人机5G空中基站系统的**Matlab仿真**与**源码实现**,详细解析了从系统架构设计、物理层链路仿真到多无人机协同干扰管理等关键技术模块,为相关领域的研究与工程实践提供了一套完整的仿真验证

weixin_34204722的博客 747

基于Matlab的无人机5G基站系统建模与仿真实践

5G网络作为新一代移动通信技术,其核心在于通过大规模天线阵列、高频谱利用和灵活网络架构,实现高速率、低时延和海量连接。其工作原理涉及复杂的物理层信号处理和无线资源调度。在工程实践中,系统仿真与建模是验证技术方案、优化网络性能的关键环节,尤其对于无人机基站等创新应用场景。无人机5G基站结合了移动通信与无人平台技术,适用于应急通信、临时热点覆盖等场景。本文聚焦于利用Matlab进行无人机5G通信系统的链路预算、信道建模及系统级性能评估,深入探讨了5G物理层算法仿真和覆盖容量分析,为相关工程研发提供了从理论到实践

weixin_33797791的博客 345

基于Q-Learning与MATLAB的路径规划仿真:从原理到实践

强化学习作为机器学习的重要分支,其核心在于智能体通过与环境的交互试错来学习最优策略。Q-Learning作为经典的强化学习算法,通过构建Q值表来评估状态-动作对的价值,其原理清晰,是理解时序差分学习与值迭代思想的理想起点。在机器人路径规划等任务中,Q-Learning的无模型特性使其能适应动态环境,技术价值在于将复杂的决策问题转化为可迭代优化的数值问题。本文聚焦于利用MATLAB实现一个离散栅格环境下的Q-Learning路径规划仿真系统,通过可视化学习过程、调试核心参数(如学习率、折扣因子),为初学者提供

weixin_34408717的博客 443

基于Q-Learning的AGV路径规划:Matlab仿真与强化学习实践

路径规划是机器人学和自动化领域的核心问题,旨在为移动机器人寻找从起点到目标点的最优或可行路径。其基本原理涉及对环境建模、定义状态与动作空间,并通过算法评估不同决策的代价。强化学习作为一种通过试错与环境交互来学习最优策略的机器学习方法,为路径规划提供了新的技术范式。它不依赖于精确的环境模型,而是通过奖励信号引导智能体学习,在动态、不确定性环境中展现出强大的适应性和泛化能力。Q-Learning作为强化学习的经典表格型算法,以其原理清晰、实现简单的特点,成为入门动态决策问题的理想选择。在工程实践中,结合Matl

weixin_33851177的博客 396

MySQL等保三级合规实践:如何安全配置root账户的本地与受信主机登录策略

本文详细介绍了MySQL在等保三级合规框架下如何安全配置root账户的本地与受信主机登录策略。通过分析root账户的特殊保护需求,提供三种安全加固方案,包括限制访问范围、限定登录IP和完全禁止远程登录,并指导创建安全的远程管理账户。文章还涵盖了密码策略强化、日志审计配置和网络层防护等关键合规要求,帮助用户实现MySQL的等保三级全面合规。

weixin_42522964的博客 250

python爬虫入门教程(非常详细)

爬虫指的是一种自动化程序,能够模拟人类在互联网上的浏览行为,自动从互联网上抓取、预处理并保存所需要的信息。爬虫运行的过程一般是先制定规则(如指定要抓取的网址、要抓取的信息的类型等),紧接着获取该网址的HTML源代码,根据规则对源代码进行解析和抽取,最后进行处理和保存。爬虫在实际应用中广泛使用,如搜索引擎、大数据分析、交易数据采集等领域,都需要用到爬虫技术来实现信息的定向采集和处理。

工宗浩生财指南针 2万+

基于知识图谱的电影推荐系统——Neo4j&Python

也可直接从这里下载:链接: https://pan.baidu.com/s/1l6wjwcUzy5G_dIlVDbCkpw 提取码: pkq6。修改main.py中的driver,输入自己数据库的用户名与密码。系统会询问是否需要重新加载并创建知识图谱,在第一次时输入1。

weixin_46351593的博客 6349

python如何实现点云可视化交互——Open3D实例教程(获取所选点的信息)保姆级教学

python如何实现点云可视化交互——Open3D实例教程(获取所选点的信息)保姆级教学

qq_45912037的博客 1万+

STM32N6570-DK ISP调试

将下载线接入STLINK V3EC接口,将BOOT1拨码拨至右边,即将其置为H,上电或已经上电的按复位,打开STM32CubeProgrammer,设置start address:0x70000000。板子消耗电流较大,即使缩短数据线接了USB供电依然不能正常点亮显示屏,最终通过板上CN2端子加了外部5V供电,仍然需要560mA的外部电流。3.烧录bin文件:STM32N6_ISP_IQTune_App_revC01-v1.1.0-trusted.bin。

liu的博客 1056

ANSYS APDL 异类单元连接实战:MPC方法在壳-实体装配中的应用

本文详细介绍了在ANSYS APDL中使用MPC方法实现壳单元与实体单元高效连接的技术要点。通过分析工程仿真中的常见需求,阐述了MPC方法在解决异类单元连接问题上的优势,包括网格独立性、自由度耦合和载荷传递等特性,并提供了具体的APDL命令流操作示例和实用经验技巧。

weixin_33391446的博客 174

YOLOv8与UNetV2融合:一种面向目标检测与图像分割的混合方法【附核心代码】

我们提出了一种基于YOLOv8和UNetV2相结合的混合架构。该架构利用YOLOv8作为主干进行目标检测,同时在YOLOv8的特征提取过程中,引入UNetV2来进行图像分割任务的增强。在该架构中,YOLOv8负责大范围目标检测和位置预测,而UNetV2则在检测网络的特征图基础上,通过其高效的上下文信息提取和细节恢复能力,进一步优化分割任务。在本文中,我们提出了一种改进YOLOv8的方法,通过引入图像分割网络UNetV2来提高图像分割检测性能。

一键难忘的博客 3510

准备生日礼物

摘要: 题目要求统计某月份需要准备的员工生日礼物数量。输入包括目标月份、员工姓名列表和对应的生日列表(格式为Year/Month/Day)。需处理重复员工(以最后一次录入为准),统计该月生日的员工人数。示例1中5月有3名员工生日,输出3;示例2中10月有6名,输出6。解题关键在于使用哈希表去重(以员工姓名为键),拆分生日字符串提取月份进行匹配。代码实现(C++/Java/Python)均遵循以下步骤:读取输入、哈希去重、解析月份并统计目标月份人数。时间复杂度为O(n),空间复杂度O(n)。

面试高手的博客 290

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: Linux rsync Permission denied(13) 权限问题根因诊断指南
下一篇: 分治算法经典:最近点对问题全解析,O(n log n)高效解法与C++实现
半泽和莉娜
博客等级 码龄9年 40粉丝 9470原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值