news 2026/4/18 1:30:17

直接上代码先来个势能场可视化。咱们在双车道环境里搞事情,先定义车道中心线斥力场。看这段核心函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
直接上代码先来个势能场可视化。咱们在双车道环境里搞事情,先定义车道中心线斥力场。看这段核心函数

人工势场法,可刀 人工势场法路径规划加避障,自己改编,定义双车道,车道中心线具有斥力势场,可设定不通过车道中心线,障碍物包含动态障碍物与静态障碍物,可输出势能图。 参数可自调

def lane_repulsion(x, y, lane_center): d = abs(y - lane_center) return 0.5/(d+0.1) if d < 3 else 0 # 横向距离越大斥力越小

这个骚操作让车辆自然避开车道中线,参数0.5控制斥力强度。当横向偏移超过3米时斥力归零,相当于允许变道但需要额外能量。加点matplotlib三维可视化:

X, Y = np.meshgrid(np.arange(0,100,1), np.arange(-5,5,0.2)) Z = np.array([lane_repulsion(x,y,0) for x,y in zip(X.flatten(), Y.flatten())]) plt.contourf(X, Y, Z.reshape(X.shape), alpha=0.6)

动态障碍物处理更带劲。咱们给障碍物类加个移动方法:

class DynamicObstacle: def __init__(self, x, y, vx): self.x = x self.y = y self.vx = vx # 横向速度 def move(self, dt): self.y += self.vx * dt # 横向蛇形走位 if abs(self.y) > 3.5: # 车道边界约束 self.vx *= -1

实测中发现当障碍物与车辆相对速度超过阈值时,传统势场法容易震荡。解决办法是给斥力场加个速度修正项:

def dynamic_repulsion(x_car, y_car, obstacle): dx = obstacle.x - x_car dy = obstacle.y - y_car distance = np.hypot(dx, dy) # 速度方向投影修正 relative_v = np.array([0, obstacle.vy]) # 假设车辆纵向匀速 proj_v = np.dot([dx, dy], relative_v) / (distance + 1e-5) return 1.0/(distance**2 + proj_v*0.1) # 运动方向势能修正

最后来个路径规划主循环。注意要处理局部极小值问题,这里用随机扰动法:

while np.hypot(target_x - car.x, target_y - car.y) > 1: # 计算合力 total_force = attraction_force() + sum(repulsion_forces()) # 随机扰动跳出局部极小 if np.linalg.norm(total_force) < 0.1: total_force += np.random.normal(0, 0.3, 2) # 更新位置 car.x += total_force[0] * dt car.y += total_force[1] * dt

实际跑起来发现,当动态障碍物突然变道时,参数调节需要权衡响应速度和平滑性。建议把斥力系数设为速度的函数:eta = min(2.0, 0.5 + abs(relative_v)*0.1)。这样高速接近障碍物时斥力更强,避免碰撞。

完整代码在Github仓库的dynamic_apf分支,调参时记得把势能场可视化打开,肉眼观察势能谷走向最靠谱。遇到路径震荡就调小时间步长,车开得太肉就加大引力系数。这玩意儿跟开车一样,参数调教才是灵魂。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 4:36:55

测试代码的可维护性与可读性

在软件测试领域&#xff0c;测试代码的可维护性与可读性不仅是技术细节&#xff0c;更是决定测试框架长期健康的关键因素。随着软件项目规模的扩大和迭代速度的加快&#xff0c;测试代码的质量直接影响测试的可靠性、团队的协作效率和项目的整体成功。对于软件测试从业者而言&a…

作者头像 李华
网站建设 2026/4/4 3:48:05

FaceFusion在房地产销售中的客户专属样板间形象植入

FaceFusion在房地产销售中的客户专属样板间形象植入从“看房子”到“看见自己住进去”&#xff1a;一场体验革命的开始 在传统售楼处&#xff0c;购房者面对的是精心布置却千篇一律的样板间。灯光考究、家具崭新&#xff0c;但总有一种疏离感——这不是“我的家”&#xff0c;而…

作者头像 李华
网站建设 2026/4/17 4:43:19

元创股份深交所上市:9个月营收11亿 市值52.7亿

雷递网 雷建平 12月18日元创科技股份有限公司&#xff08;简称&#xff1a;“元创股份”&#xff0c;证券代码&#xff1a;001325&#xff09;今日在深交所创业板上市。元创股份本次发行1960万股&#xff0c;发行价24.75元&#xff0c;募资4.85亿元。元创股份开盘价为79元&…

作者头像 李华
网站建设 2026/4/15 22:21:43

NPG-10KM 电机

NPG-10KM 电机的基本信息NPG-10KM 是一款直流减速电机&#xff0c;通常用于需要高扭矩和低速输出的应用场景。该型号电机结合了直流电机和减速箱的特点&#xff0c;适合工业自动化、机器人、医疗设备等领域。主要技术参数额定电压&#xff1a;通常为12V或24V&#xff0c;具体需…

作者头像 李华
网站建设 2026/4/16 0:27:36

为什么你的Open-AutoGLM总是适配失败?真相令人震惊

第一章&#xff1a;为什么你的Open-AutoGLM总是适配失败&#xff1f;真相令人震惊许多开发者在尝试集成 Open-AutoGLM 框架时&#xff0c;频繁遭遇模型适配失败的问题。表面上看是配置错误或版本不兼容&#xff0c;但深层原因往往被忽视。环境依赖未正确锁定 Open-AutoGLM 对底…

作者头像 李华
网站建设 2026/4/11 21:15:47

为什么知识库是RAG的灵魂?构建高质量知识库的完整指南!

简介 文章强调知识库是RAG系统的灵魂和基石&#xff0c;指出文档解析是构建高质量知识库的关键但常被忽视的环节。文档解析面临格式复杂、结构信息丢失等挑战&#xff0c;需要提取关键信息、保留文档结构、保证文本质量。不同业务场景需选择合适的文档处理方式和存储工具。好的…

作者头像 李华