Python和Pygame绘制自动驾驶和移动机器本地规划器算法

可视化自动驾驶车辆路径规划和移动机器人中使用的众多不同的本地规划器算法。 该应用程序提供可定制的参数,以更好地了解每种算法的内部工作原理并探索它们的优点和缺点。 它是用 Python 编写的,并使用 Pygame 来渲染可视化。

基类

import sys
import threadingimport pygame, random, pygame_gui
from pygame.locals import *
from planners.planners import ProbabilisticRoadmap, Color, RRT, PotentialField, CircularObstacle
from search.search import Dijkstra, AStar, GreedyBFSclass State:PRM = 0RRT = 1PF = 2def sample_envir(map_pos, map_dim, obs_dim):sx = map_pos[0]sy = map_pos[1]ex = sx + map_dim[0] - obs_dim[0]ey = sy + map_dim[1] - obs_dim[1]x = int(random.uniform(sx, ex))y = int(random.uniform(sy, ey))return (x, y)def localize(map, pos):return pos[0] - map[0], pos[1] - map[1]def generate_obs(num_obstacles, map_pos, map_dim, obs_dim):obs = []for i in range(num_obstacles):rect = Nonecollision = Truewhile collision:pos = sample_envir(map_pos, map_dim, obs_dim)size = (int(random.uniform(10, obs_dim[0])), int(random.uniform(10, obs_dim[1])))rect = pygame.Rect(pos, size)collision = Falsefor obj in obs:if rect.colliderect(obj):collision = Truebreakobs.append(rect)return obsdef generate_circle_obs(num_obstacles, map_pos, map_size, circle_obs_dim, goal_pose):obs = []for i in range(num_obstacles):collision = Truewhile collision:pos = sample_envir(map_pos, map_size, (circle_obs_dim,circle_obs_dim))rad = int(random.uniform(10, circle_obs_dim))circle = CircularObstacle(*pos,rad)collision = circle.collidepoint(goal_pose)obs.append(circle)return obs
...

多种局部规划算法

概率路线图

快速探索随机树

势场

多图搜索算法

迪杰斯特拉的最短路径

A* 搜索

贪心最佳优先搜索

图搜索可视化

随机生成障碍物并可自定义障碍物数量

拖放障碍物生成

拖放可定制的开始/结束姿势

每个规划器算法的可定制参数

概率路线图

快速探索随机树

势场

源代码

参阅 - 亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196671.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0到1 手把手搭建spring cloud alibaba(二十二)neo4j 优势,原理,使用场景以及案例介绍

1 什么是图数据库 1.1 图关系数据库的背景,为什么会出现图数据库 上世纪80年代,随着关系型数据库的发展,越来越多的应用程序应运而生,项目的增多也伴随着需求场景的增多 应用的数据库关联都只能靠表与表的外键定义,当关系复杂度达到一定数量的时候,关联某些表的某些属性…

tanstack/react-query使用手册

1. useQuery useQuery的使用一、data是后端成功返回的数据, 第一次的值为undefined 二、isLoading是指数据是否正在加载的状态,通常用于判断请求是否还在进行中。当isLoading为true时,表示数据正在加载中,当isLoading为false时&a…

BGP基本配置

一、知识补充 1、BGP BGP是Border Gateway Protocol(边界网关协议)的缩写。它是用于在互联网中交换路由信息的一种协议。BGP被广泛应用于大规模的自治系统(AS)之间,用于实现跨网络的路由选择和交换。 BGP的主要功能…

基于Cocos2D-X框架闯关游戏的设计

摘 要 随着智能设备平台的普及、用户数量的增多,智能平台的应用,尤其是游戏异常火爆,从植物大战僵尸到愤怒的小鸟,移动平台游戏的开发进入了新的阶段。但是另一方面,平台的多样性也给开发者带来诸多不便,怎…

单片机第三季-第四课:STM32下载、MDK和调试器

目录 1,扩展板使用的STM32芯片类型 2,使用普中科技软件下载程序 3,keil介绍 4,JLINK调试器介绍 5,使用普中的调试器进行debug 6,使用Simulator仿真 1,扩展板使用的STM32芯片类型 扩展版…

什么是网络可视化?网络可视化工具有用吗

网络可视化定义是自我描述的,因为它在单个屏幕上重新创建网络布局,以图形和图表的形式显示有关网络设备、网络指标和数据流的信息,为 IT 运营团队提供一目了然的理解和决策。 网络是复杂的实体,倾向于持续进化,随着业…

应急电源控制系统的研究与设计

摘要 本设计基于STC89C52单片机设计得应急电源,以应急电源为研究对象,单片机设计为控制集成IC,ADC为模数转换控制模块,无源蜂鸣器作为报警电路。系统分为单片机设计最小系统,AD转换控制模块,电源电路&#…

【LeeCode】242.有效的字母异位词

给定两个字符串 *s* 和 *t* ,编写一个函数来判断 *t* 是否是 *s* 的字母异位词。 注意:若 *s* 和 *t* 中每个字符出现的次数都相同,则称 *s* 和 *t* 互为字母异位词。 示例 1: 输入: s "anagram", t "nagaram" 输出:…

【C++】异常处理 ⑧ ( 标准异常类 | 标准异常类继承结构 | 常用的标准异常类 | 自定义异常类继承 std::exception 基类 )

文章目录 一、抛出 / 捕获 多个类型异常对象1、标准异常类2、标准异常类继承结构3、常用的标准异常类 二、自定义异常类继承 std::exception 基类1、自定义异常类继承 std::exception 基类2、完整代码示例 - 自定义异常类继承 std::exception 基类 一、抛出 / 捕获 多个类型异常…

java常用知识点记忆

类的继承与多态 类的继承不支持多重继承非private 方法才可以被覆盖覆盖的方法要求,子类中的方法的名字,参数列表,返回类型与父类相同方法的重载是在一个类中定义方法名字相同,但是参数列表不同的方法要是在子类中定义了与父类名字…

【Windows】使用SeaFile搭建本地私有云盘并结合内网穿透实现远程访问

1. 前言 现在我们身边的只能设备越来越多,各种智能手机、平板、智能手表和数码相机充斥身边,需要存储的数据也越来越大,一张手机拍摄的照片都可能有十多M,电影和视频更是按G计算。而智能设备的存储空间也用的捉襟见肘。能存储大量…

Google Protocol Buffers (proto3) 中的 DoubleValue 类型用法总结

文章目录 前言DoubleValue 的作用如何使用 DoubleValue1. 定义 .proto 文件2. 设置 DoubleValue 字段的值3. 检查字段值是否为空,并获取值3. demo示例 前言 这两天在做相关工作的时候,遇到了一个需要定义optional double 类型的proto字段,因…

JDBC常见的几种连接池使用(C3P0、Druid、HikariCP 、DBCP)(附上代码详细讲解)

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍JDBC常见的几种连接池使用(C3P0、Druid、HikariCP 、DBCP)以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学…

基于Java SSM酒店客房管理系统

酒店需要一个客房信息管理系统对旅客住宿情况进行管理。系统需要维护所有客房的详细信息,登记入住旅客信息,并实现各种相关的查询、统计功能。系统涉及的数据及操作有: 客房:房号、面积、类型(单人间、标准间、高级标间、三人间、…

开启全新消费革命——消费增值,让每一笔消费变成财富!

你是否厌倦了仅仅购买物品或享受服务后便一无所有的消费方式?现在,消费增值的概念将彻底改变你的消费观念!通过参与消费增值,你的每一笔消费都将变得更有价值! 消费增值是一种全新的消费理念,它让你在购物的…

最新搭建彩虹易支付平台

1、购买服务器并解析域名 Cloudflare域名解析:【点击进入】 2、SSH连接服务器并放行端口 SSH连接工具Finalshell:【点击进入】 放行端口(根据实际情况来放行,大部分的云平台都可以在控制台操作,Vultr需要单独放行&…

tex中的边框

文章目录 利用tcolorbox宏包给公式加框 利用tcolorbox宏包 tcolorbox可以创建一个盒子的环境,例如: \documentclass{article} \usepackage{tcolorbox} \begin{document}\begin{tcolorbox}[left1cm, right1cm, top0.5cm, bottom0.5cm,colbackblue!10!wh…

Schedu,Quartz,Timer 三种定时任务

1. Schedu(基于ScheduledExecutorService的定时任务) 特点: 基于线程池: ScheduledExecutorService 是基于线程池的定时任务调度器。这使得它能够有效地管理和重用线程,减少了线程创建和销毁的开销。 可调度多个任务…

CSRF之pikachu靶场DW

1,登录皮卡丘靶场,get请求; 2,抓包并修改标记后的个人信息 最后放通一下,发现账号信息被修改 2,post请求 1提交post数据并使用bp抓包 2.利用工具改包,并生成url 3,点击提交后&#…

SpringBoot自定义异常处理机制

说明:在完整的项目结构中,我们通常会创建一个自定义的异常处理机制,在系统可能出现异常的地方手动抛出这些异常,可以快速定位到异常代码片段,提供项目的可维护性。 本文介绍在SpringBoot项目中,搭建一套自…