多无人机动态避障路径规划研究:粒子群优化算法PSO求解复杂三维环境下多无人机动态避障路径规划问题MATLAB代码

简介: ✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。🔥 内容介绍一、背景(一)多无人机应用场景需求随着无人机技术的飞速发展,多无人机协同作业在诸多领域得到广泛应用。例如在搜索救援中,多架无人机可以快速覆盖大面积区域,提高救援效率;在农业植保方面,多无人机能够协同完成大面积农田的农药喷洒任务,提升作业效果。在这些应用

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真

🍎 往期回顾关注个人主页:Matlab科研工作室

👇 关注我领取海量matlab电子书和数学建模资料

🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信

🔥 内容介绍

一、背景

(一)多无人机应用场景需求

随着无人机技术的飞速发展,多无人机协同作业在诸多领域得到广泛应用。例如在搜索救援中,多架无人机可以快速覆盖大面积区域,提高救援效率;在农业植保方面,多无人机能够协同完成大面积农田的农药喷洒任务,提升作业效果。在这些应用场景中,无人机需要在复杂的三维环境中飞行,并且要实时避开动态变化的障碍物,如在城市环境中的高楼、移动的车辆,或者在野外环境中的树木、突然出现的动物等,因此高效的动态避障路径规划至关重要。

(二)复杂三维环境下路径规划挑战

复杂三维环境给无人机路径规划带来了诸多困难。首先,环境的复杂性使得空间建模难度加大,不仅要考虑地形地貌等静态障碍物,还要实时监测动态障碍物的位置和运动状态。其次,在三维空间中,无人机的飞行路径选择更加多样化,搜索空间呈指数级增长,传统的路径规划算法计算量过大,难以满足实时性要求。此外,多无人机之间需要协同规划路径,避免相互碰撞,这进一步增加了路径规划的复杂性。

(三)粒子群优化算法优势

粒子群优化算法(PSO)作为一种智能优化算法,在解决复杂的路径规划问题上具有独特优势。PSO 算法原理简单,易于实现,且具有较强的全局搜索能力。它通过模拟鸟群觅食行为,粒子之间相互协作、共享信息,能够在复杂的解空间中快速找到接近最优的解。对于多无人机动态避障路径规划问题,PSO 算法可以有效处理复杂的约束条件,通过不断迭代优化,为每架无人机找到安全、高效的飞行路径,同时满足多无人机协同飞行的要求。

二、原理

(一)粒子群优化算法基础

  1. 粒子表示:在多无人机动态避障路径规划中,将每架无人机的飞行路径看作一个粒子。粒子的位置表示无人机在三维空间中的一系列飞行点,例如一个粒子可以表示为


  2. (三)多无人机动态避障路径规划流程
  3. 环境建模与初始化:对复杂三维环境进行建模,包括标记静态障碍物的位置和形状,以及设定动态障碍物的运动模型(如速度、运动轨迹等)。根据实际需求自定义无人机数量 N 以及每架无人机的起始点。随机初始化粒子群中每个粒子(即每架无人机的初始路径)的位置和速度,位置在可行的飞行空间内随机生成,速度在一定范围内随机设定。同时,初始化每个粒子的个体最优位置 pbesti 为其初始位置,全局最优位置 gbest 为所有粒子初始位置中适应度值最优的位置。设置 PSO 算法的参数,如粒子群规模 N(与无人机数量一致)、惯性权重 ω、学习因子 c1c2、最大迭代次数 T 等。
  4. 适应度计算:对于每个粒子,将其代表的无人机路径代入适应度函数,计算适应度值。根据适应度值评估该路径在动态避障、路径长度以及多无人机协同方面的优劣。
  5. 更新粒子:根据速度更新公式和位置更新公式,更新每个粒子的速度和位置。在更新过程中,检查粒子的位置是否超出可行飞行空间或与障碍物发生碰撞,如果超出或碰撞,则进行相应的处理(如重新随机生成位置或调整位置以避开障碍物)。
  6. 更新最优位置:比较每个粒子的当前适应度值与其个体最优位置的适应度值,如果当前适应度更优,则更新个体最优位置 pbesti。然后,比较所有粒子的个体最优位置的适应度值,找出其中最优的位置,更新全局最优位置 gbest
  7. 动态障碍物处理:在每次迭代过程中,根据动态障碍物的运动模型更新其位置。对于可能与无人机路径产生冲突的动态障碍物,实时调整粒子的位置和速度,以避免碰撞。例如,如果检测到某个动态障碍物靠近无人机路径,可适当增大该无人机粒子向远离障碍物方向的速度分量。
  8. 终止判断:检查是否达到终止条件,如达到最大迭代次数 T 或全局最优位置的适应度值在连续多次迭代中变化小于某个阈值。如果满足终止条件,则输出全局最优位置所代表的多无人机飞行路径作为最终的路径规划结果;否则,返回步骤 2,继续进行迭代优化。
  9. 通过基于粒子群优化算法的多无人机动态避障路径规划方法,利用 PSO 算法的全局搜索能力和简单易实现的特点,能够在复杂三维环境下为多架无人机规划出安全、高效的飞行路径,满足多无人机协同作业的需求,为实际应用提供有力支持。

⛳️ 运行结果

📣 部分代码

function [opy,optimy]=copsoflowshop(pt,gennum,psize,e)

[m,n]=size(pt);

current_gen=1;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%初始化

newgen=zeros(psize,n+1);

pop=zeros(psize,n);

A=zeros(psize,n/5);

vel=zeros(psize,n/5);

optimy=ones(1,gennum);

newgen(1:psize,1:n)=rand(psize,n);%主种群初始化,0-1之间的随即数


subpop1=zeros(psize,n/5);  %子群初始化

subpop2=zeros(psize,n/5);

subpop3=zeros(psize,n/5);

subpop4=zeros(psize,n/5);

subpop5=zeros(psize,n/5);

newgen1=zeros(psize,n+1);

newgen2=zeros(psize,n+1);

newgen3=zeros(psize,n+1);

newgen4=zeros(psize,n+1);

newgen5=zeros(psize,n+1);

pop1=zeros(psize,n);

pop2=zeros(psize,n);

pop3=zeros(psize,n);

pop4=zeros(psize,n);

pop5=zeros(psize,n);

min1=zeros(psize,n/5); %子群最优粒子初始化

min2=zeros(psize,n/5);

min3=zeros(psize,n/5);

min4=zeros(psize,n/5);

min5=zeros(psize,n/5);

optimy1=ones(1,gennum);

optimy2=ones(1,gennum);

optimy3=ones(1,gennum);

optimy4=ones(1,gennum);

optimy5=ones(1,gennum);

optt1=ones(psize,1);

optt2=ones(psize,1);

optt3=ones(psize,1);

optt4=ones(psize,1);

optt5=ones(psize,1);

vel1=vel;                %子群速度初始化

vel2=vel;

vel3=vel;

vel4=vel;

vel5=vel;

subpop1=newgen(:,1:n/5);               %将主群newgen分成5个子群,想分成几个就几个,可以有更好的方法!

subpop2=newgen(:,n/5+1:2*n/5);

subpop3=newgen(:,2*n/5+1:3*n/5);

subpop4=newgen(:,3*n/5+1:4*n/5);

subpop5=newgen(:,4*n/5+1:n);

xmin1=subpop1(1,:);         %子群的最优位置,初始位置随便定

xmin2=subpop2(1,:);

xmin3=subpop3(1,:);

xmin4=subpop4(1,:);

xmin5=subpop5(1,:);


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

for i=1:psize

   min1(i,:)=xmin1;

   min2(i,:)=xmin2;

   min3(i,:)=xmin3;

   min4(i,:)=xmin4;

   min5(i,:)=xmin5;

end


newgen1=[subpop1,min2,min3,min4,min5,optt1];%将子群1与其它子群的最优粒子组成完整的一个种群,optt放适应度的值

for i=1:psize

   [Ya,pop1(i,1:n)]=sort(newgen1(i,1:n)); %将实数编码通过排序转换为自然数编码

   newgen1(i,n+1)=minmakespan(pop1(i,1:n),n,m,pt);%计算适应度

   optt1(i)=newgen1(i,n+1);

end


[Ya,Ia]=sort(optt1);                  %将计算结果从小到大排序

optimy1(current_gen)=newgen1(Ia(1),n+1);  %适应度最好的值

newgenp1=newgen1(1:psize,:);    %子群1中的局部最优粒子,第1代定义为其本身

xmin1=newgen1(Ia(1),1:n/5);     %子群1中的全局最优粒子

for i=1:psize

   min1(i,:)=xmin1;

end

newgen2=[min1,subpop2,min3,min4,min5,optt2];

for i=1:psize

   [Ya,pop2(i,1:n)]=sort(newgen2(i,1:n));

   newgen2(i,n+1)=minmakespan(pop2(i,1:n),n,m,pt);

   optt2(i)=newgen2(i,n+1);

end


[Ya,Ia]=sort(optt2);

optimy2(current_gen)=newgen2(Ia(1),n+1);

newgenp2=newgen2(1:psize,:);

xmin2=newgen2(Ia(1),n/5+1:2*n/5);

for i=1:psize

   min2(i,:)=xmin2;

end

newgen3=[min1,min2,subpop3,min4,min5,optt3];

for i=1:psize

   [Ya,pop3(i,1:n)]=sort(newgen3(i,1:n));

   newgen3(i,n+1)=minmakespan(pop3(i,1:n),n,m,pt);

   optt3(i)=newgen3(i,n+1);

end


[Ya,Ia]=sort(optt3);

optimy3(current_gen)=newgen3(Ia(1),n+1);

newgenp3=newgen3(1:psize,:);

xmin3=newgen3(Ia(1),2*n/5+1:3*n/5);

for i=1:psize

   min3(i,:)=xmin3;

end

newgen4=[min1,min2,min3,subpop4,min5,optt4];

for i=1:psize

   [Ya,pop4(i,1:n)]=sort(newgen4(i,1:n));

   newgen4(i,n+1)=minmakespan(pop4(i,1:n),n,m,pt);

   optt4(i)=newgen4(i,n+1);

end


[Ya,Ia]=sort(optt4);

optimy4(current_gen)=newgen4(Ia(1),n+1);

newgenp4=newgen4(1:psize,:);

xmin4=newgen4(Ia(1),3*n/5+1:4*n/5);

for i=1:psize

   min4(i,:)=xmin4;

end

newgen5=[min1,min2,min3,min4,subpop5,optt5];

for i=1:psize

   [Ya,pop5(i,1:n)]=sort(newgen5(i,1:n));

   newgen5(i,n+1)=minmakespan(pop5(i,1:n),n,m,pt);

   optt5(i)=newgen5(i,n+1);

end


[Ya,Ia]=sort(optt5);

optimy5(current_gen)=newgen5(Ia(1),n+1);

newgenp5=newgen5(1:psize,:);

xmin5=newgen5(Ia(1),4*n/5+1:n);

for i=1:psize

   min5(i,:)=xmin5;

end

a=[optimy1(1),optimy2(1),optimy3(1),optimy4(1),optimy5(1)];  %选出全局最优适应值

optimy(1)=min(a);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%循环迭代

while (current_gen<gennum)

     current_gen=current_gen+1;

     optimy1(current_gen)=optimy1(current_gen-1);    %各子群得全局最优适应值

     optimy2(current_gen)=optimy2(current_gen-1);

     optimy3(current_gen)=optimy3(current_gen-1);

     optimy4(current_gen)=optimy4(current_gen-1);

     optimy5(current_gen)=optimy5(current_gen-1);

     

%%%%%%%子群1      

     for i=1:psize

         A(i,:)=xmin1;

     end  

   R1 = rand(psize,n/5);

   R2 = rand(psize,n/5);

   vel1=e*vel1+2*R1.*(newgenp1(1:psize,1:n/5)-subpop1)+ 2*R2.*(A-subpop1);    %粒子速度的更新

   subpop1=subpop1+vel1;   %粒子位置的更新  

   newgen1=[subpop1,min2,min3,min4,min5,optt1];   %更新后组成新的种群

   % Evaluate the new swarm

   for i=1:psize

       [Ya,pop1(i,1:n)]=sort(newgen1(i,1:n));

       newgen1(i,n+1)=minmakespan(pop1(i,1:n),n,m,pt);  %计算新的适应值

       optt1(i)=newgen1(i,n+1);

       if newgen1(i,n+1)<=optimy1(current_gen)

          optimy1(current_gen)=newgen1(i,n+1);

          xmin1=newgen1(i,1:n/5);     %更新子群的全局最优值

       end

   end  

   % Updating the best position for each particle

   changeColumns=newgen1(:,n+1)<newgenp1(:,n+1);    

   newgenp1(find(changeColumns),:)=newgen1(find(changeColumns),:); %更新局部最优值

   r=fix(rand(1,1)*psize)+1;

    newgen1(r,1:n/5)=xmin1;

    subpop1=newgen1(:,1:n/5);

  for i=1:psize

   min1(i,:)=xmin1;

  end

%%%%%%%%%%%子群2  

     for i=1:psize

         A(i,:)=xmin2;

     end  

   R1 = rand(psize,n/5);

   R2 = rand(psize,n/5);

   vel2=e*vel2+2*R1.*(newgenp2(1:psize,n/5+1:2*n/5)-subpop2)+ 2*R2.*(A-subpop2);

   subpop2=subpop2+vel2;

   newgen2=[min1,subpop2,min3,min4,min5,optt2];

   % Evaluate the new swarm

   for i=1:psize

       [Ya,pop2(i,1:n)]=sort(newgen2(i,1:n));

       newgen2(i,n+1)=minmakespan(pop2(i,1:n),n,m,pt);

       optt2(i)=newgen2(i,n+1);

       if newgen2(i,n+1)<=optimy2(current_gen)

          optimy2(current_gen)=newgen2(i,n+1);

          xmin2=newgen2(i,n/5+1:2*n/5);

       end

   end  

   % Updating the best position for each particle

   changeColumns=newgen2(:,n+1)<newgenp2(:,n+1);    

   newgenp2(find(changeColumns),:)=newgen2(find(changeColumns),:);  

   r=fix(rand(1,1)*psize)+1;

   newgen2(r,n/5+1:2*n/5)=xmin2;

   subpop2=newgen2(:,n/5+1:2*n/5);

  for i=1:psize

   min2(i,:)=xmin2;

  end

%%%%%%%%%%%子群3  

     for i=1:psize

         A(i,:)=xmin3;

     end  

   R1 = rand(psize,n/5);

   R2 = rand(psize,n/5);

   vel3=e*vel3+2*R1.*(newgenp3(1:psize,2*n/5+1:3*n/5)-subpop3)+ 2*R2.*(A-subpop3); %( +a*)+R3.*()+)

   subpop3=subpop3+vel3;

   newgen3=[min1,min2,subpop3,min4,min5,optt3];

   % Evaluate the new swarm

   for i=1:psize

       [Ya,pop3(i,1:n)]=sort(newgen3(i,1:n));

       newgen3(i,n+1)=minmakespan(pop3(i,1:n),n,m,pt);

       optt3(i)=newgen3(i,n+1);

       if newgen3(i,n+1)<=optimy3(current_gen)

          optimy3(current_gen)=newgen3(i,n+1);

          xmin3=newgen3(i,2*n/5+1:3*n/5);

       end

   end  

   % Updating the best position for each particle

   changeColumns=newgen3(:,n+1)<newgenp3(:,n+1);    

   newgenp3(find(changeColumns),:)=newgen3(find(changeColumns),:);  

   r=fix(rand(1,1)*psize)+1;

    newgen3(r,2*n/5+1:3*n/5)=xmin3;

    subpop3=newgen3(:,2*n/5+1:3*n/5);

  for i=1:psize

   min3(i,:)=xmin3;

  end

%%%%%%%%%%%子群4

     for i=1:psize

         A(i,:)=xmin4;

     end  

   R1 = rand(psize,n/5);

   R2 = rand(psize,n/5);

   vel4=e*vel4+2*R1.*(newgenp4(1:psize,3*n/5+1:4*n/5)-subpop4)+ 2*R2.*(A-subpop4); %( +a*)+R3.*()+)

   subpop4=subpop4+vel4;

   newgen4=[min1,min2,min3,subpop4,min5,optt4];

   % Evaluate the new swarm

   for i=1:psize

       [Ya,pop4(i,1:n)]=sort(newgen4(i,1:n));

       newgen4(i,n+1)=minmakespan(pop4(i,1:n),n,m,pt);

       optt4(i)=newgen4(i,n+1);

       if newgen4(i,n+1)<=optimy4(current_gen)

          optimy4(current_gen)=newgen4(i,n+1);

          xmin4=newgen4(i,3*n/5+1:4*n/5);

       end

   end  

   % Updating the best position for each particle

   changeColumns=newgen4(:,n+1)<newgenp4(:,n+1);    

   newgenp4(find(changeColumns),:)=newgen4(find(changeColumns),:);  

   r=fix(rand(1,1)*psize)+1;

    newgen4(r,3*n/5+1:4*n/5)=xmin4;

    subpop4=newgen4(:,3*n/5+1:4*n/5);

  for i=1:psize

   min4(i,:)=xmin4;

  end

 %%%%%%%%%%%子群5

     for i=1:psize

         A(i,:)=xmin5;

     end  

   R1 = rand(psize,n/5);

   R2 = rand(psize,n/5);

   vel5=e*vel5+2*R1.*(newgenp5(1:psize,4*n/5+1:n)-subpop5)+ 2*R2.*(A-subpop5); %( +a*)+R3.*()+)

   subpop5=subpop5+vel5;

   newgen5=[min1,min2,min3,min4,subpop5,optt5];

   % Evaluate the new swarm

   for i=1:psize

       [Ya,pop5(i,1:n)]=sort(newgen5(i,1:n));

       newgen5(i,n+1)=minmakespan(pop5(i,1:n),n,m,pt);

       optt5(i)=newgen5(i,n+1);

       if newgen5(i,n+1)<=optimy5(current_gen)

          optimy5(current_gen)=newgen5(i,n+1);

          xmin5=newgen5(i,4*n/5+1:n);

       end

   end  

   % Updating the best position for each particle

   changeColumns=newgen5(:,n+1)<newgenp5(:,n+1);    

   newgenp5(find(changeColumns),:)=newgen5(find(changeColumns),:);  

   r=fix(rand(1,1)*psize)+1;

    newgen5(r,4*n/5+1:n)=xmin5;

    subpop5=newgen5(:,4*n/5+1:n);

  for i=1:psize

   min5(i,:)=xmin5;

  end

 a=[optimy1(current_gen),optimy2(current_gen),optimy3(current_gen),optimy4(current_gen),optimy5(current_gen)];

 optimy(current_gen)=min(a);

end

opy=optimy(1,current_gen); %返回全局最优适应值

🔗 参考文献

[1] 邵壮.多无人机编队路径规划与队形控制技术研究[D].西北工业大学[2026-03-14].DOI:CNKI:CDMD:1.1018.791682.

[2] 李波,屈原,徐静.复杂动态环境下基于DMPC-PSO的多无人机在线航迹规划[J].内蒙古师范大学学报:自然科学汉文版, 2018, 47(6):8.DOI:CNKI:SUN:NMSB.0.2018-06-007.

[3] 王彤彤.动态环境下移动机器人路径规划方法研究[D].哈尔滨工程大学[2026-03-14].

🍅往期回顾扫扫下方二维码

相关文章
|
13天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
20063 111
|
6天前
|
人工智能 安全 Linux
【OpenClaw保姆级图文教程】阿里云/本地部署集成模型Ollama/Qwen3.5/百炼 API 步骤流程及避坑指南
2026年,AI代理工具的部署逻辑已从“单一云端依赖”转向“云端+本地双轨模式”。OpenClaw(曾用名Clawdbot)作为开源AI代理框架,既支持对接阿里云百炼等云端免费API,也能通过Ollama部署本地大模型,完美解决两类核心需求:一是担心云端API泄露核心数据的隐私安全诉求;二是频繁调用导致token消耗过高的成本控制需求。
4362 7
|
8天前
|
人工智能 安全 API
OpenClaw“小龙虾”进阶保姆级攻略!阿里云/本地部署+百炼API配置+4种Skills安装方法
很多用户成功部署OpenClaw(昵称“小龙虾”)后,都会陷入“看似能用却不好用”的困境——默认状态下的OpenClaw更像一个聊天机器人,缺乏连接外部工具、执行实际任务的能力。而Skills(技能插件)作为OpenClaw的“动手能力核心”,正是打破这一局限的关键:装对Skills,它能帮你自动化处理流程、检索全网资源、管理平台账号,真正变身“能做事的AI管家”。
5127 7
|
9天前
|
人工智能 API 网络安全
Mac mini × OpenClaw 保姆级配置教程(附阿里云/本地部署OpenClaw配置百炼API图文指南)
Mac mini凭借小巧机身、低功耗和稳定性能,成为OpenClaw(原Clawdbot)本地部署的首选设备——既能作为家用AI节点实现7×24小时运行,又能通过本地存储保障数据隐私,搭配阿里云部署方案,可灵活满足“长期值守”与“隐私优先”的双重需求。对新手而言,无需复杂命令行操作,无需专业技术储备,按本文步骤复制粘贴代码,即可完成OpenClaw的全流程配置,同时接入阿里云百炼API,解锁更强的AI任务执行能力。
6398 2
|
10天前
|
人工智能 安全 前端开发
Team 版 OpenClaw:HiClaw 开源,5 分钟完成本地安装
HiClaw 基于 OpenClaw、Higress AI Gateway、Element IM 客户端+Tuwunel IM 服务器(均基于 Matrix 实时通信协议)、MinIO 共享文件系统打造。
7768 6
|
12天前
|
人工智能 JSON API
保姆级教程:OpenClaw阿里云及本地部署+模型切换流程+GLM5.0/Seedance2.0/MiniMax M2.5接入指南
2026年,GLM5.0、Seedance2.0、MiniMax M2.5等旗舰大模型相继发布,凭借出色的性能与极具竞争力的成本优势,成为AI工具的热门选择。OpenClaw作为灵活的AI Agent平台,支持无缝接入这些主流模型,通过简单配置即可实现“永久切换、快速切换、主备切换”三种模式,让不同场景下的任务执行更高效、更稳定。
7181 4
|
11天前
|
人工智能 JavaScript API
保姆级教程:OpenClaw阿里云/本地部署配置Tavily Search skill 实时联网,让OpenClaw“睁眼看世界”
默认状态下的OpenClaw如同“闭门造车”的隐士,仅能依赖模型训练数据回答问题,无法获取实时新闻、最新数据或训练截止日期后的新信息。2026年,激活其联网能力的最优方案是配置Tavily Search技能——无需科学上网、无需信用卡验证,每月1000次免费搜索额度完全满足个人需求,搭配ClawHub技能市场,还能一键拓展天气查询、邮件管理等实用功能。
7205 5
|
18天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
19224 116

热门文章

最新文章