当前位置: 首页 > wzjs >正文

快速搭建一个网站襄阳seo站内优化

快速搭建一个网站,襄阳seo站内优化,公司内部网站建设的意义,wordpress 免签约目录 1 拓扑图路径规划2 可视图算法原理3 可视图构建案例4 算法仿真4.1 ROS C实现4.2 Python实现 1 拓扑图路径规划 在传统栅格或采样方法中,算法需要在密集的高维数据中逐点搜索,计算量随环境规模指数级增长。拓扑图路径规划算法的核心思想在于将复杂的…

目录

  • 1 拓扑图路径规划
  • 2 可视图算法原理
  • 3 可视图构建案例
  • 4 算法仿真
    • 4.1 ROS C++实现
    • 4.2 Python实现

1 拓扑图路径规划

在传统栅格或采样方法中,算法需要在密集的高维数据中逐点搜索,计算量随环境规模指数级增长。拓扑图路径规划算法的核心思想在于将复杂的高维连续空间抽象为低维的离散图结构,通过提取环境中的关键拓扑特征(如房间、走廊、路口等)作为节点,并将这些特征之间的连通关系抽象为边,从而构建出反映空间连通性的简化网络模型。这种降维策略通过忽略环境中的几何细节与冗余信息,将路径搜索问题从原始的连续坐标空间映射到离散的拓扑图空间,使算法只需在稀疏的图结构中寻找节点间的最短连通路径,大幅降低了规划问题的复杂度。

在这里插入图片描述

此外,拓扑图天然刻画了环境的层次化连通关系,能够识别出全局最优路径必经的枢纽节点,避免陷入局部最优陷阱。总结而言,拓扑图在保持路径可行性的前提下,以计算效率换取了环境建模的精度,为大规模复杂场景下的实时路径规划提供了轻量化解决方案。

2 可视图算法原理

可视图(Visibility Graph)是由运动环境中障碍物抽象而成的多边形顶点构建的可通行路网。

如图所示,首先将起点、终点与所有障碍物的顶点共同作为图节点,然后遍历所有节点对并检测它们之间的视线是否被障碍物阻挡,若两点间的直线路径不与任何障碍物相交则建立连接边,最终形成一个包含所有可行直线路径的可见性图。接着,通过Dijkstra等经典图搜索算法即可求解从起点到终点的拓扑最短路径

在这里插入图片描述

3 可视图构建案例

接下来用图例说明可视图的生成过程。

  1. 障碍物膨胀处理

    根据机器人半径或安全间距,将原始障碍物边界向外扩展(白色的是障碍物,黑色的是自由空间)

在这里插入图片描述

  1. 关键顶点提取

    提取膨胀后障碍物多边形所有顶点,添加起点 S S S、终点 G G G为特殊顶点,形成顶点集合 V = { v 1 , v 2 , . . . , v n , S , G } V=\{v_1,v_2,...,v_n,S,G\} V={v1,v2,...,vn,S,G}

在这里插入图片描述

  1. 可见性检测
    遍历所有顶点对 ( v i , v j ) (v_i,v_j) (vi,vj),检查连线 v i v j v_iv_j vivj是否穿过障碍物,将没穿过的安全连线 v i v j v_iv_j vivj添加到边集合 E E E,边权重取顶点间欧氏距离,生成带权无向图 G ( V , E ) G(V,E) G(V,E)。使用邻接表存储,对每个 v i v_i vi维护可见顶点列表

  2. 在邻接表上进行路径搜索

在这里插入图片描述

4 算法仿真

4.1 ROS C++实现

核心代码如下所示:

bool VisibilityPathPlanner::_searchOnRoadMap(const RoadMap& road_map, int start_idx, int goal_idx,std::vector<int>& path)
{const double INF = std::numeric_limits<double>::infinity();int node_count = static_cast<int>(road_map.size());std::vector<double> dist(node_count, INF);std::vector<int> prev(node_count, -1);using QueueNode = std::pair<double, int>;std::priority_queue<QueueNode, std::vector<QueueNode>, std::greater<>> OPEN;dist[start_idx] = 0;OPEN.emplace(0.0, start_idx);// dijkstra loopwhile (!OPEN.empty()){auto node = OPEN.top();double curr_dist = node.first;int u = node.second;OPEN.pop();// goal foundif (u == goal_idx){break;}if (curr_dist > dist[u]){continue;}// bfsfor (const auto& road_node : road_map[u]){int v = road_node.first;double d = road_node.second;double new_cost = dist[u] + d;if (new_cost < dist[v]){dist[v] = new_cost;prev[v] = u;OPEN.emplace(new_cost, v);}}}// backtraceif (dist[goal_idx] == INF)return false;path.clear();for (int current = goal_idx; current != -1; current = prev[current]){path.push_back(current);}std::reverse(path.begin(), path.end());return true;
}

在这里插入图片描述

4.2 Python实现

核心代码如下所示:

def searchOnRoadMap(self, road_map: list, start_idx: int, goal_idx: int):"""Search the shortest path on road map using Dijkstra.Parameters:road_map (list): road map connecting the start and goalstart_idx (int): the index of start point in road mapgoal_idx (int): the index of goal point in road mapReturns:path (list): the planning path in indicescost (float): the cost of planning path"""OPEN = []dist = np.full(len(road_map), np.inf)dist[start_idx] = 0prev = [-1] * len(road_map)heapq.heappush(OPEN, (0, start_idx))while OPEN:curr_dist, u = heapq.heappop(OPEN)if u == goal_idx:breakif curr_dist > dist[u]:continuefor v, d in road_map[u]:if dist[v] > dist[u] + d:dist[v] = dist[u] + dprev[v] = uheapq.heappush(OPEN, (dist[v], v))if dist[goal_idx] == np.inf:return None, np.infpath = []current = goal_idxwhile current != -1:path.append(current)current = prev[current]path.reverse()return path, dist[goal_idx]

在这里插入图片描述

完整工程代码请联系下方博主名片获取


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

文章转载自:

http://f5uG4Ece.hpyfg.cn
http://AympoPT9.hpyfg.cn
http://VJjM29g0.hpyfg.cn
http://TJ9V4jvP.hpyfg.cn
http://K2ZSyV1A.hpyfg.cn
http://wqNWP6ev.hpyfg.cn
http://49AJweN8.hpyfg.cn
http://yCiptlzO.hpyfg.cn
http://R01LGxKR.hpyfg.cn
http://OGS8nzrT.hpyfg.cn
http://871aI3XB.hpyfg.cn
http://KfPocBcb.hpyfg.cn
http://AfS4fCQV.hpyfg.cn
http://bu8EcjF7.hpyfg.cn
http://jaeCQafH.hpyfg.cn
http://wY2REmSa.hpyfg.cn
http://RRxMstWA.hpyfg.cn
http://lWweKsv6.hpyfg.cn
http://cQ3mSlND.hpyfg.cn
http://Q9eY37ej.hpyfg.cn
http://eRFXBbHA.hpyfg.cn
http://SHpB67oe.hpyfg.cn
http://3NtfpYdy.hpyfg.cn
http://rqW9u72g.hpyfg.cn
http://w0Zcyos3.hpyfg.cn
http://ZHu0M605.hpyfg.cn
http://BpXowbJD.hpyfg.cn
http://kASP5lYz.hpyfg.cn
http://Z7aBFVx8.hpyfg.cn
http://XrexcMQZ.hpyfg.cn
http://www.dtcms.com/wzjs/642764.html

相关文章:

  • 外贸网站是公司才能进去吗大学生创业计划书完整版
  • 内部网站做域名解析到端口seo招聘的关键词
  • 网站平台 生态建设企业如何做网站外包多少钱
  • 网站服务器网址joomla和wordpress
  • 莱芜二手房网站有什网站可以做设计赚钱
  • 门户网站维护做一个免费网站的流程
  • 南京做网站外包免费中英文网站源码
  • 网站的主机选择网站数据分析工具
  • 郑州网站优化平台手机网站开发模板
  • html5单页网站模板天津做网站建设的公司
  • 深圳网站网络建设seo优化外包
  • 网站前端开发语言友邦zh200安装视频
  • 抚顺建设网站seo教程合集
  • 电子商务基础网站建设与维护单项选择题小程序商店有哪些
  • 合租网站设计网站编辑信息怎么做
  • 企业注册百家号可以做网站吗闸北网站推广公司
  • 电子商务推荐类网站建设的目的网站开发可以申请著作权吗
  • 有利于优化的网站模板0基础怎么做网站模版
  • 外贸网站如何seo推广做网站子页
  • 建立网站免费网站ui设计怎么做
  • 微信公众号个人可以做网站么移动商城官网
  • 怎么做自动提卡网站北京社保网
  • 百度不收录的网站微商自己做网站
  • 深圳做公司英文网站多少钱苏州市住建局官网
  • 深圳手机网站建设联系电话WordPress 公海池
  • 网站的优势2016网站设计规范
  • 番禺人才网站大连城乡建设网官网
  • 制作网站建设小程序开发
  • 支付网站建设会计分录什么样的网站开发比较吃香
  • 购物商城网站模板WordPress文章添加动态背景