| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> (九) carla中的全局路径规划 -> 正文阅读 |
|
[人工智能](九) carla中的全局路径规划 |
(九) carla中的全局路径规划前言从本节开始,学习并记录
c
a
r
l
a
carla
carla 中自带的车辆自主导航框架及算法研究。首先先学习规划模块。 全局路径规划,可以理解为实现自动驾驶汽车软件系统内部的导航功能,即在宏观层面上指导自动驾驶汽车软件系统的控制规划模块大致按照什么方向的道路走,从而引导车辆从起始点到达目标点。 行为决策规划可以简单地理解为自动驾驶汽车的“大脑”。全局路径规划模块产生的路径信息,直接被下游的行为决策规划模块所使用。行为决策规划模块接收到全局路径规划的结果,同时也接收感知、预测和地图信息,综合这些输入信息,行为决策规划模块决定车辆该如何行驶,比如正常跟车或者变道、在遇见红绿灯或者行人时等待避让以及在路口和其他车辆的交互等。 局部运动规划对无人车辆的行驶起着精确导航的作用,其任务就是在寻找到的全局最佳路径和最优行为策略的前提下,根据车辆当前的几何形状和动力学模型、实时所处环境的分布情况以及一个目标状态集,找到一系列的控制输入,驱动汽车从初始状态运动到目标状态集中的某一状态,并且在运动过程中避免和障碍物发生碰撞同时满足车辆的动力学约束。 全局路径规划程序讲解说明参考链接: link,这篇文章写的非常好。 程序详解在 a u t o m a t i c _ c o n t r o l . p y automatic\_control.py automatic_control.py 中,最重要的是 B e h a v i o r A g e n t BehaviorAgent BehaviorAgent 这个 c l a s s class class。它就像是大脑一样,一切指令由它下达,车辆只需要按照这个指令执行就行。 1. 初始化BehaviorAgent类在 m a i n main main 函数中,先实例化 B e h a v i o r A g e n t BehaviorAgent BehaviorAgent 类, B e h a v i o r A g e n t BehaviorAgent BehaviorAgent 在构建时需要两个输入,一个是属于 A c t o r c l a s s Actor class Actorclass 的 v e h i c l e vehicle vehicle,另一个就是车辆驾驶风格( s t r i n g t y p e string type stringtype ,默认为 n o r m a l normal normal)。
在 /CARLA/PythonAPI/carla/agents/navigation 文件夹下封装了跟车辆导航有关的代码。其中
B
e
h
a
v
i
o
r
A
g
e
n
t
BehaviorAgent
BehaviorAgent 这个类在 /CARLA/PythonAPI/carla/agents/navigation/ behavior_agent.py 这个文件中。
self.behavior参数定义了车辆的几种行为,详细的函数在 /CARLA/PythonAPI/carla/agents/navigation/types_behavior.py 文件中,可以看出有三种模式:缓慢、正常、激进。三种模式的主要差异在车辆的速度限制( m a x _ s p e e d max\_speed max_speed)、与前车保持的安全时间( s a f e t y _ t i m e safety\_time safety_time)、与前车的最小安全距离( b r a k i n g _ d i s t a n c e braking\_distance braking_distance)等相关参数。 2.全局路径规划首先随机生成一个位置点,如果随机选择的点不是车辆当前所在的点,则这个点就当做目标点;如果随机选择的点是车辆当前所在的点,则选择下一个点当做目标点。
然后进行全局路径规划。 a u t o m a t i c _ c o n t r o l . p y automatic\_control.py automatic_control.py 中只用了一行代码就完成了全局路径规划,如下面 s e t _ d e s t i n a t i o n set\_destination set_destination 函数所示,需要传进去三个参数:当前位置坐标、目的地坐标、是否清除以前保存的路径点:
但是深挖的话,里面还是有很多东西的。
发现先传入起始点坐标和目标点坐标,然后进入 B e h a v i o r A g e n t BehaviorAgent BehaviorAgent 这个类中的_trace_route(self.start_waypoint, self.end_waypoint) 函数。继续查看 _trace_route(self.start_waypoint, self.end_waypoint) 函数,具体实现如下:
这个函数中首先利用 G l o b a l R o u t e P l a n n e r D A O ( ) GlobalRoutePlannerDAO() GlobalRoutePlannerDAO() 类提取 c a r l a carla carla 地图的拓扑结构。然后利用 G l o b a l R o u t e P l a n n e r ( ) GlobalRoutePlanner() GlobalRoutePlanner() 进行全局路径规划。 2.1 拓扑地图提取
G
l
o
b
a
l
R
o
u
t
e
P
l
a
n
n
e
r
D
A
O
(
)
GlobalRoutePlannerDAO()
GlobalRoutePlannerDAO() 主要作用就是提取
c
a
r
l
a
carla
carla 地图的拓朴结构。 G l o b a l R o u t e P l a n n e r ( ) GlobalRoutePlanner() GlobalRoutePlanner() 在 /CARLA/PythonAPI/carla/agents/navigation/global_route_planner.py下。 在上述
_
t
r
a
c
e
_
r
o
u
t
e
\_trace\_route
_trace_route 函数中可以看出,实例化
G
l
o
b
a
l
R
o
u
t
e
P
l
a
n
n
e
r
D
A
O
(
)
GlobalRoutePlannerDAO()
GlobalRoutePlannerDAO() 和
G
l
o
b
a
l
R
o
u
t
e
P
l
a
n
n
e
r
(
)
GlobalRoutePlanner()
GlobalRoutePlanner() 后,主要是
.
s
e
t
u
p
(
)
.setup()
.setup() 函数。
首先利用 G l o b a l R o u t e P l a n n e r D A O ( ) GlobalRoutePlannerDAO() GlobalRoutePlannerDAO() 中 g e t _ t o p o l o g y ( ) get\_topology() get_topology() 函数获取拓扑地图,具体细节如下:
可以通过上述程序,明显看出:得到的
t
o
p
o
l
o
g
y
topology
topology 实际上是一个字典列表类型,每一个字典数据都是一段在
c
a
r
l
a
carla
carla 中提前定义好的道路片段。
e
n
t
r
y
entry
entry 和
e
x
i
t
exit
exit 是每一段道路片段的起始点和终止点。
p
a
t
h
path
path 是一个列表,里面存着起始点到终止点之间的道路节点,节点之间相距
s
a
m
p
l
i
n
g
r
e
s
o
l
u
t
i
o
n
_sampling_resolution
s?amplingr?esolution 米(默认
4.5
4.5
4.5 m)。 2.2 搜索 G r a p h Graph Graph 建立上面已经得到了
c
a
r
l
a
carla
carla 整个
m
a
p
map
map 的拓扑地图,这里利用得到的拓扑地图来构建道路的
g
r
a
p
h
graph
graph。
查看 _ b u i l d _ g r a p h ( ) \_build\_graph() _build_graph() 函数,具体如下:
_
b
u
i
l
d
_
g
r
a
p
h
(
)
\_build\_graph()
_build_graph() 函数最后返回三个变量,其中: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 6:14:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |