TOPP
2020-01-19 14:35:44 nmssg1 阅读数 36

TOPP FOR RIGID-BODY MOTIONS

H. Nguyen, Q.-C. Pham. Time-optimal path parameterization of rigid-body motions: applications to spacecraft reorientation. Journal of Guidance, Control, and Dynamics, vol. 39(7), pp. 1665-1669, 2016

TOPP

Pham Q C. A general, fast, and robust implementation of the time-optimal path parameterization algorithm[J]. IEEE Transactions on Robotics, 2014, 30(6): 1533-1540.

容许速度传播

Pham Q C, Caron S, Lertkultanon P, et al. Admissible velocity propagation: Beyond quasi-static path planning for high-dimensional robots[J]. The International Journal of Robotics Research, 2017, 36(1): 44-67.

例子

请从tests/文件夹或复制粘贴测试用例中尝试测试文件

文档、教程……

参见wiki

MoveIt! Time Optimal Path Parameterization

TOPP-RA

文档和教程

Pham H, Pham Q C. A new approach to time-optimal path parameterization based on reachability analysis[J]. IEEE Transactions on Robotics, 2018, 34(3): 645-659.

 

2019-08-21 14:51:33 dbdxnuliba 阅读数 65

1)https://github.com/ros-planning/moveit/issues/160

As a side note, the algorithm described in "Time-Optimal Trajectory Generation for Path
Following with Bounded Acceleration and Velocity" by Tobias Kunz and Mike Stilman is available as C++ code at https://github.com/tobiaskunz/trajectories. It has no dependencies except Eigen and is thus very easy to integrate. I used it as alternative to IPTP and was very content with computation time and resulting trajectories.

2)https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.bisplrep.html#scipy.interpolate.bisplrep

B样条

 

 

2009-11-04 22:25:00 mach365 阅读数 6103

图层加载限制通过geoserver提供的图层组可以解决。

首先将图层分类。

我的图层分了4组图层组。

 

region组:

topp:bou2_4p,topp:shijie_region,topp:huposhuiku_region,topp:shuangxianhe_region,topp:lvdi_region,

topp:jumindi_region,topp:chengshijiequ_region,topp:jiaoqudiwu_region,topp:shiqudaolu_region,

topp:qitadaolu_region,topp:xianjie_region

 

polyline组:

topp:guihuadaolu_polyline,topp:gongyuanlu_polyline,topp:qitadaolu_polyline,topp:xiaolu_polyline,

topp:chengshijiequ_polyline,topp:shiqudaolu_polyline,topp:sijidaolu_polyline,topp:ccsanjidaolu_polyline,

topp:sanjidaolu_polyline,topp:erjidaolu_polyline,topp:yijidaolu_polyline,topp:huanchenglu_polyline,

topp:ccxianxiangdao_polyline,topp:xianxiangdao_polyline,topp:tielu_polyline,topp:guodao_polyline,

topp:shengdao_polyline,topp:zaijiangaosu_polyline,topp:gaosugonglu_polyline

 

point组:

topp:daolumingcheng_point,topp:xingzhengbiaoji_point,topp:jiaoqudiwu_font_point,

topp:jiaoqudiwu_point,topp:shiqudiwu_point,topp:qiao_point,topp:shanming_point

 

polyline组:(按功能把 水域 的图层分开了)

topp:suidao_polyline,topp:shuangxianhe_polyline,topp:huposhuiku_polyline,topp:danxianhe_polyline,

topp:chedu_polyline,topp:shuizhashuiba_polyline,topp:qiao_polyline,topp:ti_polyline

 

 

分完组后通过如下步骤增加图层组。

配置-->WMS-->内容1

 

创建图层组名称:jilin
基础地理图层:topp:bou2_4p,topp:shijie_region,topp:huposhuiku_region,topp:shuangxianhe_region,topp:lvdi_region,

topp:jumindi_region,topp:chengshijiequ_region,topp:jiaoqudiwu_region,topp:shiqudaolu_region,

topp:qitadaolu_region,topp:xianjie_region

点击生成按钮。

 

依次添加图层组。

2

 

3

 

 

配置完毕后,页面访问可以通过如下访问了。

2006-01-10 16:42:00 zzmicheal 阅读数 1264

前一本书大学的时候学习的并不认真,不过总算陪我考过了高程,又考上了研。看了有3遍。
后一本书为了应付考博,正在看。
一天狂看几十面,倒并没有因为贪多而难以消化,因为讲的不难,例程也很“平易近人”。

说C++数据结构这本书平易近人,倒并不是因为自己变强了。只是因为一直在用同样是OO思想的java编程,
而且又一直都以为data structure(以下简称DS)是多么的难学难学--我大学一年级考最差的一门就是这门。不过现在看的书,外国两个叫William的人编的,倒是感觉格外亲切,温和。

以前学DS,收获是会做题,考试。
现在才感觉能联系一下实际,解决一些问题。搞一些抽象数据类型出来,也算抽象到了一定“高度”。

害怕考博考的不好,严老师编的书也得看,第遍。

2019-02-19 20:05:44 weixin_42053726 阅读数 201

一、其他相关的路径规划:

1. OMPL:C++代码写的结果怎样没有尝试!

The Open Motion Planning Library (OMPL)

Linux / macOS Build Status Windows Build status

2. TOPP-RA:(Python3)这个包试验了没什么用!但是学会了安装包的方法

这个包在github上下载:https://github.com/hungpham2511/toppra

不能使用pip安装了 :安装方法参考:https://blog.csdn.net/taogeanton/article/details/80021831

## 详细安装方法

1、假设已经通过git命令的项目 clone 下来,或者直接下载zip文件并解压到目录A。
2. 目录A下有setup等文件。

2、如果是windows系统,在目录A下,再选择任何文件的情况下(可以先左键单击空白处),按住Shift的同时在空白处单击右键,调出菜单
,此时菜单中会出现【在此处打开命令窗口】的选项,打开。

3、在弹出的命令窗口中输入:

>python setup.py install

回车执行即可。大笑大笑大笑
(如果是Linux系统,右键打开终端,输入同样命令。) 

2.1 安装:

$ python setup.py install  #失败了,

最后三行显示:

Reading https://pypi.python.org/simple/
No local packages or working download links found for pytest-cov
error: Could not find suitable distribution for Requirement.parse('pytest-cov')

解决方案:

$ pip  install pytest-cov

曾经尝试使用apt-get install 安装--失败了

再次 $ python setup.py install  #成功

3 . RRT算法的规划--静态的--没有尝试

https://github.com/iamprem/rmp

 

二、omg-tools安装:

安装以及github地址:

https://github.com/meco-group/omg-tools

安装环境:anaconda2--Python2.7环境

omgtools包的安装 pip install omg-tools
还要安装 conda install -c conda-forge ipopt  这个插件   才能运行程序
{
	用豆瓣网下载安装包,很快
	pip install xxxx -i https://pypi.douban.com/simple

	omgtools 这个包Ubuntu16.04 下anaconda2无法安装
	zjw@zjw-GL553VD:~$ pip install omgtools -i https://pypi.douban.com/simple
	Looking in indexes: https://pypi.douban.com/simple
	Collecting omgtools
	  Could not find a version that satisfies the requirement omgtools (from versions: )
	No matching distribution found for omgtools

	Windows下的anaconda2却可以安装
	,包命打错了,安装时候应该pip install omg-tools正确安装姿势,而我打成了omgtools,
	导入的时候是import omgtools,装包的时候加上 - 

	运行程序时候报错  
	RuntimeError:  on line 369 of file "/home/travis/build/casadi/binaries/casadi/casadi/core/function/plugin_interface.hpp"
	Plugin 'ipopt' is not found.

	感觉应该安装ipopt这个插件  (没错就是安装这个才能运行程序)
	conda install -c conda-forge ipopt

}
安装serial  ./ 意思是进入anaconda3使用pip安装,要不就用anaconda2 安装了
./pip install serial

 

 

 

 

三、代码详解:

1、主文件代码1:

###########################################1,创建交通工具

N = 2
vehicles = [Holonomic() for k in range(N)]
2,赋值,初始位置和目标位置
for k, vehicle in enumerate(vehicles):

    vehicle.set_initial_conditions([1.5*np.cos((k*2.*np.pi)/N), 1.5*np.sin((k*2.*np.pi)/N)])
    vehicle.set_terminal_conditions([-1.5*np.cos((k*2.*np.pi)/N), -1.5*np.sin((k*2.*np.pi)/N)])

# create vehicle
vehicle = Holonomic() #这个交通工具就是个圆
vehicle.set_options({'safety_distance': 0.2}) #设置安全距离
vehicle.set_options({'ideal_prediction': False})  #这一行注释了好像没问题
# create vehicle
自定义创建交通工具的大小为半径0.2的圆
vehicle = Holonomic(shapes=Circle(0.2), options={'syslimit': 'norm_2'})
vehicle.define_knots(knot_intervals=10)

××××××××××××××××××××××××××××××××××
这个交通工具一个圆里面有三个点,不知道是什么
vehicle = Dubins(bounds={'vmax': 1.5, 'wmax': np.pi/3., 'wmin': -np.pi/3.}, # in rad/s
                 options={'substitution': True})
&&&&&&&&&&&&&&&&&&&&还可以创建很多,比如自行车
#这些好像设置交通工具的基本属性比如最大转弯角度
vehicle.define_knots(knot_intervals=5)  # choose lower amount of knot intervals
vehicle.set_initial_conditions([0., 0., 0.])  # input orientation in rad
vehicle.set_terminal_conditions([3., 3., 0.])

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&创建舰队
vehicles = [Quadrotor(0.2) for l in range(N)]
fleet = Fleet(vehicles)
%%%%%%%%%%%%
创建AGV
vehicle = AGV(length=0.8, options={'plot_type': 'agv'})
AttributeError: 'Bicycle' object has no attribute 'trajectories'

##############################################2,创建环境
environment = Environment(room={'shape': Square(5.)})  #设置一个正方形square,5代表长和宽
rectangle = Rectangle(width=3., height=0.4) #这句话用来添加障碍物的,看下行
environment.add_obstacle(Obstacle({'position': [-2.1, -0.5]}, shape=rectangle))

×××××××××××××××××××××××××××××××××××××××
environment = Environment(room={'shape': Square(5.), 'position': [1.5, 1.5]})

trajectories = {'velocity': {'time': [0.5],
                             'values': [[0.25, 0.0]]}}
'values': [[0.25, 0.0]] :障碍物x轴方向的速度和y轴方向的速度;'time': [0.5]  不清楚好像越小则越快
environment.add_obstacle(Obstacle({'position': [1., 1.]}, shape=Circle(0.5),
                                  simulation={'trajectories': trajectories}))
#{'position': [1., 1.]} :障碍物初始位置的坐标;Circle(0.5) 障碍物是圆形半径0.5
#add_obstacle 这个函数加障碍物的,可以加很多

trajectories1 = {'velocity': {'time': [0, 4.5],
                             'values': [[0., 0.0], [0., 0.35]]}}
trajectories2 = {'velocity': {'time': [0, 5.],
                             'values': [[0., 0.0], [0, 0.25]]}}

[0, 0.25] :0 表示x方向的速度,0.25 : y方向的速度,因此这个往上去
[0., 0.0]  也是表示仿真速度,感觉也是,不光改变速度方向还决定了这个障碍物什么时候动,设为1后一开始就动,0 则过一会才开始动
#############################################3,创建问题
××××××××××××××创建点对点的问题
problem = Point2point(vehicles, environment, freeT=False)

#设置操作
problem.set_options({'inter_vehicle_avoidance': True})
#problem.set_options({'solver_options':
    {'ipopt': {'ipopt.hessian_approximation': 'limited-memory'}}})
*************
problem.init()

############################################4,创建仿真器,并运行
# create simulator
simulator = Simulator(problem)
problem.plot('scene')
vehicles[0].plot('input', knots=True, prediction=True, labels=['v_x (m/s)', 'v_y (m/s)'])
vehicles[1].plot('input', knots=True, prediction=True, labels=['v_x (m/s)', 'v_y (m/s)'])

# run it!
simulator.run()

############################################5,仿真影像
problem.save_movie('scene', format='gif', name='problemgif', number_of_frames=80, movie_time=4, axis=False)

2、主文件代码2

from omgtools import *

# create vehicle
N = 2
vehicles = [Holonomic() for k in range(N)]
#vehicles = [Dubins() for k in range(N)]  # 这么创建不行
# k = 0,1   vehicle = Holonomic()
for k, vehicle in enumerate(vehicles):
set_initial_conditions 的参数:也就是初始位置(x,y)这里第一个交通工具的点在(-1.5,0)
    vehicle.set_initial_conditions([1.5*np.cos((k*2.*np.pi)/N), 1.5*np.sin((k*2.*np.pi)/N)])
set_terminal_conditions 的参数:也就是目标点位置(x,y)这里第一个交通工具的点在(1.5,0)
    vehicle.set_terminal_conditions([-1.5*np.cos((k*2.*np.pi)/N), -1.5*np.sin((k*2.*np.pi)/N)])

# create environment
environment = Environment(room={'shape': Square(5.)}) #参数5代表图像界面为方形,长宽为5,从-2.5到2.5中心点为0,0
rectangle = Rectangle(width=3., height=0.2) # 改变3为30没有变化,这句话甚至注释掉都没问题

# create a point-to-point problem
problem = Point2point(vehicles, environment, freeT=False)
problem.set_options({'inter_vehicle_avoidance': True}) #这句话注释掉了就变成了不会躲避了沿着直线走
problem.init()

# create simulator
simulator = Simulator(problem)
problem.plot('scene')
vehicles[0].plot('input', knots=True, prediction=True, labels=['v_x (m/s)', 'v_y (m/s)'])
vehicles[1].plot('input', knots=True, prediction=True, labels=['v_x (m/s)', 'v_y (m/s)'])

# run it!
simulator.run()
print ''
没有更多推荐了,返回首页