稀疏稳定树规划器

sparse-rrt的Python项目详细描述


#sparse rrt planner的python绑定

此软件包基于sparse rrt项目https://bitbucket.org/pracsys/sparse-rrt/
此工作的主要目的是允许在python环境中运行sparse rrt planner。主要的贡献在于:原始包的
C++实验是从Python中执行的,在保持速度的同时,SVG可视化和统计
可控制的规划师系统可以完全用Python编写,而规划师则在C++中执行。这并不像它所说的那么慢——平均减速仅为系统传播的2-3x。规划师、公用事业和系统的
C++代码使用MODER C++ 11特性进行了大量的重构。Python绑定是使用PyBID11
C++实现的规划师、实用工具和系统,它们包含许多内存泄漏,从而防止多次运行计划。这在当前的实现中是固定的。

r/>
标准实验
在没有可视化的情况下运行标准预打包实验:
``python
来自稀疏rrt。实验导入运行标准实验
运行标准实验('sst汽车',可视化=false)
```

AR系统,用C++实现,打印输出统计。BR/>现在,统计的是迭代次数BR/>执行,节点的存储数量,以及在BR/>秒中的解长度。运行以下命令以获取它们的列表:
``python
from sparse_rrt.experiments import run_standard_experiment
for exp in available_standard_experiments():
print(exp)
````

visualization

可以在独立窗口中显示实现图像。本项目继承了基于原始C++代码库的SVG可视化。很少有方便的函数可以显示SVG图像、将其转换为RGB numpy数组或在窗口中显示它们。
可视化依赖项不包括在包依赖项中以便于安装。
以下是运行可视化可能需要安装的软件包:
-`pyside`或`cairosvg`-在python中呈现svg。` pyside的速度要快得多(安装时运行pip install pyside或pip install cairosvg)
-`pyside'或`python opencv`-打开窗口并显示numpy图像(`show_image`函数)。要安装opencv,可以按照https://www.learnopencv.com/install-opencv3-on-ubuntu/
-`svg write`-从python编写svg文件。只有在使用python编写的系统可视化时(安装run'pip install svgwrite`)


最简单的选项是只安装"pyside"。下面是如何使用可视化运行标准实验的方法。
``python
来自sparse-rrt。experiments import run-run-standard-experiment
run-standard-experiment('sst-car',visualization=true)
````

配置。配置示例可以在"实验"文件夹中找到。
您可以通过创建自己的配置来运行自定义实验。例如,下面将运行带有自定义目标点的点系统的RRT计划器:

``python
from sparse_rrt.experiment s.experiment_utils import run_config
point_config=dict(
system='point',
planner='rrt',
start_state=[9.,9.],
goal_state=[-9,9.],
目标半径=0.5,
随机种子=100,
积分步长=0.02,
最小时间步长=2,
最大时间步长=20,
个数运算量=300000,
显示类型='tree'

运行配置(点配置)
````

ath.
-`'nodes`:image windo显示树中每个节点的成本。较暗的节点表示成本较低(更好),而较浅的节点表示成本较高。


system_interface.issystem` interface。
要实现的主要功能是"propagate",负责系统动力学和碰撞检测。
有关详细文档,请参阅docstrings。提供了一个助手基类"sparse_rrt.systems.system_interface.basesystem",以便轻松创建最常见的系统。这里是2d中自由点的最简单示例:
``python
import numpy as np
from sparse\rrt.systems.system\u interface import basesystem


class free point(basesystem):
'
一个实现2d点的简单系统。它的控制包括速度和方向。
'
一个点的最小x,最大x=-10,10最小和最大x坐标
一个点的最小y,最大y=-10,10最小和最大y坐标
最小v,最大v=0,10。#最小和最大控制速度集成的开始状态
:param control:numpy数组,在集成过程中应用常量控件
:param num步骤:要集成的步骤数
:param integration步骤:集成的dt
:返回:系统的新状态
'
控制v=np.array([control[0]*np.cos(control[1]),控制[0]*np.sin(control[1]))
轨迹=开始状态+np.arange(步数)[:,无]*积分步数*控制v
状态=np.clip(轨迹[-1],[self.min-x,self.min-y],[self.max-x,self.max-y])
返回state

def visualize廑point(self,state):
'
将状态空间点投影到二维可视化平面
:参数state:状态点的numpy数组
:返回此状态点的可视化坐标的x,y
''
x=(state[0]-self.min_x)/(self.max_x-self.min_x)
y=(state[1]-self.min_y)/(self.max_y-self.min_y)
返回x,y

def get_u state_u bounds(self):
'
返回状态空间的界限
:返回(min,m)列表ax)状态空间中每个坐标的界限
'
返回[(self.min_x,self.max_x),
(self.min_y,self.max_y)]


def get_u control_x界限(self):
'
返回控制空间的界限
:返回:列表(min,max)控制空间中每个坐标的界限
'
返回[(self.min_v,self.max_v),
(self.min_theta,self.max_theta)]


def是圆形拓扑(self):
'
指示状态系统是否具有平面或圆形顶部logy
:return:每个坐标的布尔标志(平面拓扑为false)
'
return[false,false]
```

OM模拟完全从头开始:
`` python
从稀疏资源导入sst


system=freepoint()
目标半径=0.5,
随机种子=0,
sstδu近=0.4,
sstδu漏=0.2


==0:
solution=planner.get_solution()
打印("解决方案:%s,节点数:%s"%(planner.get_solution(),planner.get_nodes()))

```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用MongoDB进行java漏斗分析?   java如何重构此代码以仅执行一次方法logViolation(),并在单个字符串中获取字符串变量(speedType)的所有值   java如何将方向向量转换为角度?   Java中json文件中的股票价格   java有没有一种方法可以查看网站中的哪些资源加载了selenium?   java文件定位器可以指向不同文件服务器上的目录吗?   java GWT等待SetVisibleRange和ClearData完成   macos Java Applet无法在Mac OS下接收鼠标输入   java BottomNavigationView不支持单次单击必须单击两次   MS SQL Server 2012中的java:我的数据库名称是J.3.0.0\u DEV我无法在Oracle SQL Developer IDE中连接它?   java对JFileChooser的修改,只显示文件夹内容   java如何将动态对象查询更改为criteria builder或更好的性能   java中的swing新字体类型   java Hibernate。删除未使用的条目   上载CSV文件并将其转换为Java模型对象   java如何将信息添加到库的日志消息中?   JavaEclipseGit:使用egit从另一个分支、标记或引用打开版本   使用Firebase控制台消息的java开放视频