尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

人工势场法(APF)路径规划 MATLAB

人工势场法(APF)路径规划 MATLAB
📅 发布时间:2026/6/19 20:58:11

人工势场法(APF)路径规划 MATLAB

  • 2D 平面移动机器人/无人车场景
  • 三连杆机械臂关节空间场景
  • 避障 + 目标吸引可视化
  • 可调 GUI(滑条实时改参数)
  • 常见陷阱(局部极小、振荡)与改进提示

一、2D 平面无人车 APF(精简易读版)

文件:apf_2d.m

function [path,iter] = apf_2d(start,goal,obs,k_att,k_rep,d0,step,maxIter)
% start,goal : [x y]
% obs        : N×3 [x y r]
% k_att,k_rep: 吸引/排斥增益
% d0         : 障碍物影响半径
% step       : 步长
% maxIter    : 最大迭代步
pos = start; path = pos; iter = 0;
while iter < maxIteriter = iter + 1;% 吸引力F_att = k_att*(goal - pos);% 排斥力F_rep = [0 0];for k = 1:size(obs,1)vec = pos - obs(k,1:2);dist = norm(vec) - obs(k,3);     % 到障碍物边缘if dist < d0 && dist>0F_rep = F_rep + k_rep*(1/dist - 1/d0)*(1/dist^2)*vec/norm(vec);endendF = F_att + F_rep;if norm(F) < 1e-3 || norm(pos-goal) < 0.2break;endpos = pos + step * F/norm(F);path = [path; pos];
end
end

调用示例 & 可视化

start = [0 0]; goal = [5 5];
obs   = [3 3 0.8; 2 4 0.6; 4 2 0.5];
[path,iter] = apf_2d(start,goal,obs,1,100,2,0.1,500);
figure; hold on
scatter(path(:,1),path(:,2),'b','filled')
rectangle('Position',[obs(1,1)-obs(1,3) obs(1,2)-obs(1,3) 2*obs(1,3) 2*obs(1,3)],'Curvature',1,'FaceColor',[0.8 0.2 0.2])
rectangle('Position',[obs(2,1)-obs(2,3) obs(2,2)-obs(2,3) 2*obs(2,3) 2*obs(2,3)],'Curvature',1,'FaceColor',[0.8 0.2 0.2])
plot(goal(1),goal(2),'g*','MarkerSize',15)
axis equal, grid on
title(sprintf('APF 路径 (%d 步)',iter))

二、三连杆机械臂关节空间 APF

文件:arm_apf.m(基于博客源码优化 )

function q_path = arm_apf(L,q0,q_goal,obs,k_att,k_rep,d0,alpha,lambda,maxIter)
% L       : [L1 L2 L3] 连杆长度
% q0      : 初始关节角 [3×1] (rad)
% q_goal  : 目标关节角 [3×1]
% obs     : [x y r] 障碍物(基座坐标系)
q = q0; q_path = q;
for iter = 1:maxIter% 末端位置x = L(1)*cos(q(1))+L(2)*cos(q(1)+q(2))+L(3)*cos(q(1)+q(2)+q(3));y = L(1)*sin(q(1))+L(2)*sin(q(1)+q(2))+L(3)*sin(q(1)+q(2)+q(3));pe = [x;y];% 吸引力xg = L(1)*cos(q_goal(1))+L(2)*cos(q_goal(1)+q_goal(2))+L(3)*cos(sum(q_goal));yg = L(1)*sin(q_goal(1))+L(2)*sin(q_goal(1)+q_goal(2))+L(3)*sin(sum(q_goal));pg = [xg;yg];F_att = k_att*(pg - pe);% 排斥力F_rep = [0;0];for k = 1:size(obs,1)vec = pe - obs(k,1:2);dist = norm(vec) - obs(k,3);if dist < d0 && dist>0F_rep = F_rep + k_rep*(1/dist - 1/d0)*(1/dist^2)*vec/norm(vec);endendF = F_att + F_rep;% 雅可比 & 伪逆J = zeros(2,3);c1=cos(q(1)); s1=sin(q(1)); c12=cos(q(1)+q(2)); s12=sin(q(1)+q(2));c123=cos(sum(q)); s123=sin(sum(q));J(1,1) = -L(1)*s1-L(2)*s12-L(3)*s123;J(1,2) = -L(2)*s12-L(3)*s123;J(1,3) = -L(3)*s123;J(2,1) =  L(1)*c1+L(2)*c12+L(3)*c123;J(2,2) =  L(2)*c12+L(3)*c123;J(2,3) =  L(3)*c123;dq = alpha * pinv(J'*J + lambda^2*eye(3))*J'*F;q = q + dq;q_path = [q_path,q];if norm(q-q_goal) < 0.02break;end
end
end

调用示例

L = [1 1 0.5]; q0 = [0 0 0]; q_goal = [pi/3 pi/4 -pi/6];
obs = [1.2 1.2 0.2];
q_path = arm_apf(L,q0,q_goal,obs,1,100,0.5,0.05,0.01,200);
figure; plot(q_path','LineWidth',2); grid on
legend('\theta_1','\theta_2','\theta_3'); xlabel('step')

三、GUI 实时调参(App Designer)

UWBGUI.mlapp 核心回调(简写):

% 滑条回调
function updateSim(app,event)k_att = app.K_attSlider.Value;k_rep = app.K_repSlider.Value;d0    = app.d0Slider.Value;[path,iter] = apf_2d(app.start,app.goal,app.obs,k_att,k_rep,d0,0.1,500);plot(app.UIAxes,path(:,1),path(:,2),'b','LineWidth',2);
end

参考代码 人工势场法 路径规划 matlab www.youwenfan.com/contentcnl/25960.html

四、常见问题与改进

现象 原因 对策
局部极小 合力≈0 ① 随机扰动 ② 虚拟目标 ③ 势场叠加
路径振荡 步长过大 减小 α 或加入阻尼 λ
无法到达 障碍物包围 增加斥力半径 d0 或改 RRT*
机械臂奇异 Jacobian 奇异 伪逆 + 阻尼 λ

相关新闻

  • MySQL--多表查询
  • 哈佛放屁都是香的?
  • 深入解析:李宏毅2025春季机器学习作业ML2025_Spring_HW4在kaggle上的实操笔记

最新新闻

  • 2026年6月,如何精准联系并选择知名的西安拓展夏令营? - 品牌鉴赏官2026
  • SQLi-Labs靶场从零搭建到通关全攻略(一):环境搭建与基础四关
  • AI搜索时代,深圳企业如何用“全意图GEO”抢占7亿用户的第一推荐位? - GEO优化
  • Page Assist终极指南:让本地AI模型成为你的网页浏览智能伴侣
  • 2026滨州漏水检测维修精选优质服务商TOP5推荐!卫生间漏水/厨房漏水/屋顶天花板漏水/阳台漏水/地下室漏水防水补漏检测维修-正规防水补漏公司优选口碑榜测评推荐 - 即刻修防水
  • Windows系统文件msvcp100d.dll丢失找不到问题解决

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号