Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Pinoxchio
apollo
提交
55c41cdf
A
apollo
项目概览
Pinoxchio
/
apollo
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apollo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
55c41cdf
编写于
8月 25, 2017
作者:
Z
Zhang Liangliang
提交者:
lianglia-apollo
8月 25, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Planning: added check point in boundary function.
上级
7fe9e508
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
20 addition
and
5 deletion
+20
-5
modules/planning/common/speed/st_boundary.cc
modules/planning/common/speed/st_boundary.cc
+20
-5
未找到文件。
modules/planning/common/speed/st_boundary.cc
浏览文件 @
55c41cdf
...
...
@@ -23,6 +23,7 @@
#include <algorithm>
#include "modules/common/log.h"
#include "modules/common/math/math_utils.h"
namespace
apollo
{
namespace
planning
{
...
...
@@ -38,8 +39,10 @@ StBoundary::StBoundary(
"1] should have larger t than points in pair[i]"
;
for
(
size_t
i
=
0
;
i
<
point_pairs
.
size
();
++
i
)
{
lower_points_
.
emplace_back
(
point_pairs
[
i
].
first
);
upper_points_
.
emplace_back
(
point_pairs
[
i
].
second
);
// use same t for both points
const
double
t
=
point_pairs
[
i
].
first
.
t
();
lower_points_
.
emplace_back
(
point_pairs
[
i
].
first
.
s
(),
t
);
upper_points_
.
emplace_back
(
point_pairs
[
i
].
second
.
s
(),
t
);
}
for
(
auto
it
=
lower_points_
.
begin
();
it
!=
lower_points_
.
end
();
++
it
)
{
...
...
@@ -58,8 +61,8 @@ StBoundary::StBoundary(
for
(
const
auto
&
point
:
upper_points_
)
{
max_s_
=
std
::
fmax
(
max_s_
,
point
.
s
());
}
min_t_
=
std
::
fmin
(
lower_points_
.
front
().
t
(),
upper_points_
.
front
().
t
()
);
max_t_
=
std
::
fmax
(
lower_points_
.
back
().
t
(),
upper_points_
.
back
().
t
()
);
min_t_
=
lower_points_
.
front
().
t
(
);
max_t_
=
lower_points_
.
back
().
t
(
);
}
bool
StBoundary
::
IsValid
(
...
...
@@ -111,7 +114,19 @@ bool StBoundary::IsPointInBoundary(const STPoint& st_point) const {
return
false
;
}
return
IsPointIn
(
st_point
);
auto
comp
=
[](
const
double
t
,
const
STPoint
&
p
)
{
return
t
<
p
.
t
();
};
auto
first_gt
=
std
::
upper_bound
(
lower_points_
.
begin
(),
lower_points_
.
end
(),
st_point
.
t
(),
comp
);
auto
index
=
std
::
distance
(
lower_points_
.
begin
(),
first_gt
)
-
1
;
const
double
check_upper
=
common
::
math
::
CrossProd
(
st_point
,
upper_points_
[
index
],
upper_points_
[
index
+
1
]);
const
double
check_lower
=
common
::
math
::
CrossProd
(
st_point
,
lower_points_
[
index
],
lower_points_
[
index
+
1
]);
return
(
check_upper
*
check_lower
<=
0
);
}
STPoint
StBoundary
::
BottomLeftPoint
()
const
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录