Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Pinoxchio
apollo
提交
a896368e
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,体验更适合开发者的 AI 搜索 >>
提交
a896368e
编写于
9月 11, 2017
作者:
Z
Zhang Liangliang
提交者:
Jiangtao Hu
9月 11, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Planning: implemented second and third order derivative kernel in piecewise linear kernel.
上级
d395681f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
77 addition
and
5 deletion
+77
-5
modules/planning/math/smoothing_spline/piecewise_linear_generator.cc
...nning/math/smoothing_spline/piecewise_linear_generator.cc
+1
-1
modules/planning/math/smoothing_spline/piecewise_linear_kernel.cc
...planning/math/smoothing_spline/piecewise_linear_kernel.cc
+74
-3
modules/planning/math/smoothing_spline/piecewise_linear_kernel.h
.../planning/math/smoothing_spline/piecewise_linear_kernel.h
+2
-1
未找到文件。
modules/planning/math/smoothing_spline/piecewise_linear_generator.cc
浏览文件 @
a896368e
...
...
@@ -35,7 +35,7 @@ PiecewiseLinearGenerator::PiecewiseLinearGenerator(
unit_segment_
(
unit_segment
),
total_t_
(
num_of_segments
*
unit_segment
),
constraint_
(
num_of_segments
+
1
,
unit_segment
),
kernel_
(
num_of_segments
+
1
)
{
kernel_
(
num_of_segments
+
1
,
unit_segment
)
{
CHECK_GE
(
num_of_segments
,
3
);
}
...
...
modules/planning/math/smoothing_spline/piecewise_linear_kernel.cc
浏览文件 @
a896368e
...
...
@@ -24,8 +24,10 @@
namespace
apollo
{
namespace
planning
{
PiecewiseLinearKernel
::
PiecewiseLinearKernel
(
const
uint32_t
dimension
)
PiecewiseLinearKernel
::
PiecewiseLinearKernel
(
const
uint32_t
dimension
,
const
double
unit_segment
)
:
dimension_
(
dimension
),
unit_segment_
(
unit_segment
),
kernel_matrix_
(
Eigen
::
MatrixXd
::
Zero
(
dimension_
,
dimension_
)),
offset_matrix_
(
Eigen
::
MatrixXd
::
Zero
(
dimension_
,
1
))
{}
...
...
@@ -49,11 +51,80 @@ void PiecewiseLinearKernel::AddDerivativeKernelMatrix(const double weight) {
void
PiecewiseLinearKernel
::
AddSecondOrderDerivativeMatrix
(
const
double
weight
)
{
// TODO(Liangliang): Implement this function.
Eigen
::
MatrixXd
second_derivative_matrix
=
Eigen
::
MatrixXd
::
Zero
(
dimension_
,
dimension_
);
for
(
std
::
size_t
i
=
1
;
i
<
dimension_
;
++
i
)
{
if
(
i
==
1
)
{
second_derivative_matrix
(
i
,
i
)
+=
1.0
;
}
else
if
(
i
==
2
)
{
second_derivative_matrix
(
i
,
i
)
+=
1.0
;
second_derivative_matrix
(
i
-
1
,
i
-
1
)
+=
4.0
;
second_derivative_matrix
(
i
-
1
,
i
)
+=
-
2.0
;
second_derivative_matrix
(
i
,
i
-
1
)
+=
-
2.0
;
}
else
{
second_derivative_matrix
(
i
,
i
)
+=
1.0
;
second_derivative_matrix
(
i
-
1
,
i
-
1
)
+=
4.0
;
second_derivative_matrix
(
i
-
2
,
i
-
2
)
+=
1.0
;
second_derivative_matrix
(
i
-
1
,
i
)
+=
-
2.0
;
second_derivative_matrix
(
i
,
i
-
1
)
+=
-
2.0
;
second_derivative_matrix
(
i
-
2
,
i
-
1
)
+=
-
2.0
;
second_derivative_matrix
(
i
-
1
,
i
-
2
)
+=
-
2.0
;
second_derivative_matrix
(
i
,
i
-
2
)
+=
1.0
;
second_derivative_matrix
(
i
-
2
,
i
)
+=
1.0
;
}
}
second_derivative_matrix
*=
2.0
*
weight
/
std
::
pow
(
unit_segment_
,
4
);
kernel_matrix_
+=
second_derivative_matrix
;
}
void
PiecewiseLinearKernel
::
AddThirdOrderDerivativeMatrix
(
const
double
weight
)
{
// TODO(Liangliang): Implement this function.
Eigen
::
MatrixXd
jerk_matrix
=
Eigen
::
MatrixXd
::
Zero
(
dimension_
,
dimension_
);
for
(
std
::
size_t
i
=
0
;
i
<
dimension_
;
++
i
)
{
if
(
i
==
1
)
{
jerk_matrix
(
i
,
i
)
+=
1.0
;
}
else
if
(
i
==
2
)
{
jerk_matrix
(
i
-
1
,
i
-
1
)
+=
9.0
;
jerk_matrix
(
i
,
i
)
+=
1.0
;
jerk_matrix
(
i
-
1
,
i
)
+=
-
3.0
;
jerk_matrix
(
i
,
i
-
1
)
+=
-
3.0
;
}
else
if
(
i
==
3
)
{
jerk_matrix
(
i
-
2
,
i
-
2
)
+=
9.0
;
jerk_matrix
(
i
-
1
,
i
-
1
)
+=
9.0
;
jerk_matrix
(
i
,
i
)
+=
1.0
;
jerk_matrix
(
i
-
1
,
i
)
+=
-
3.0
;
jerk_matrix
(
i
,
i
-
1
)
+=
-
3.0
;
jerk_matrix
(
i
-
2
,
i
)
+=
3.0
;
jerk_matrix
(
i
,
i
-
2
)
+=
3.0
;
jerk_matrix
(
i
-
2
,
i
-
1
)
+=
-
9.0
;
jerk_matrix
(
i
-
1
,
i
-
2
)
+=
-
9.0
;
}
else
{
jerk_matrix
(
i
-
3
,
i
-
3
)
+=
1.0
;
jerk_matrix
(
i
-
2
,
i
-
2
)
+=
9.0
;
jerk_matrix
(
i
-
1
,
i
-
1
)
+=
9.0
;
jerk_matrix
(
i
,
i
)
+=
1.0
;
jerk_matrix
(
i
-
1
,
i
)
+=
-
3.0
;
jerk_matrix
(
i
,
i
-
1
)
+=
-
3.0
;
jerk_matrix
(
i
-
2
,
i
)
+=
3.0
;
jerk_matrix
(
i
,
i
-
2
)
+=
3.0
;
jerk_matrix
(
i
-
3
,
i
)
+=
-
1.0
;
jerk_matrix
(
i
,
i
-
3
)
+=
-
1.0
;
jerk_matrix
(
i
-
2
,
i
-
1
)
+=
-
9.0
;
jerk_matrix
(
i
-
1
,
i
-
2
)
+=
-
9.0
;
jerk_matrix
(
i
-
3
,
i
-
1
)
+=
3.0
;
jerk_matrix
(
i
-
1
,
i
-
3
)
+=
3.0
;
jerk_matrix
(
i
-
3
,
i
-
2
)
+=
-
3.0
;
jerk_matrix
(
i
-
2
,
i
-
3
)
+=
-
3.0
;
}
}
jerk_matrix
*=
2.0
*
weight
/
std
::
pow
(
unit_segment_
,
4
);
kernel_matrix_
+=
jerk_matrix
;
}
// reference line kernel
...
...
modules/planning/math/smoothing_spline/piecewise_linear_kernel.h
浏览文件 @
a896368e
...
...
@@ -31,7 +31,7 @@ namespace planning {
class
PiecewiseLinearKernel
{
public:
explicit
PiecewiseLinearKernel
(
const
uint32_t
dimension
);
PiecewiseLinearKernel
(
const
uint32_t
dimension
,
const
double
unit_segment
);
void
AddRegularization
(
const
double
regularized_param
);
...
...
@@ -49,6 +49,7 @@ class PiecewiseLinearKernel {
private:
const
uint32_t
dimension_
;
const
double
unit_segment_
;
Eigen
::
MatrixXd
kernel_matrix_
;
Eigen
::
MatrixXd
offset_matrix_
;
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录