Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Pinoxchio
apollo
提交
913b1f25
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,发现更多精彩内容 >>
提交
913b1f25
编写于
8月 16, 2020
作者:
L
liuxu
提交者:
Liu Jiaming
8月 17, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
mpc_osqp: malloc judge nullptr
上级
b11046c0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
43 addition
and
34 deletion
+43
-34
modules/common/math/mpc_osqp.cc
modules/common/math/mpc_osqp.cc
+43
-34
未找到文件。
modules/common/math/mpc_osqp.cc
浏览文件 @
913b1f25
...
...
@@ -220,13 +220,17 @@ OSQPSettings *MpcOsqp::Settings() {
// default setting
OSQPSettings
*
settings
=
reinterpret_cast
<
OSQPSettings
*>
(
c_malloc
(
sizeof
(
OSQPSettings
)));
osqp_set_default_settings
(
settings
);
settings
->
polish
=
true
;
settings
->
scaled_termination
=
true
;
settings
->
verbose
=
false
;
settings
->
max_iter
=
max_iteration_
;
settings
->
eps_abs
=
eps_abs_
;
return
settings
;
if
(
settings
!=
nullptr
)
{
osqp_set_default_settings
(
settings
);
settings
->
polish
=
true
;
settings
->
scaled_termination
=
true
;
settings
->
verbose
=
false
;
settings
->
max_iter
=
max_iteration_
;
settings
->
eps_abs
=
eps_abs_
;
return
settings
;
}
else
{
return
nullptr
;
}
}
OSQPData
*
MpcOsqp
::
Data
()
{
...
...
@@ -234,33 +238,38 @@ OSQPData *MpcOsqp::Data() {
size_t
kernel_dim
=
state_dim_
*
(
horizon_
+
1
)
+
control_dim_
*
horizon_
;
size_t
num_affine_constraint
=
2
*
state_dim_
*
(
horizon_
+
1
)
+
control_dim_
*
horizon_
;
data
->
n
=
kernel_dim
;
data
->
m
=
num_affine_constraint
;
std
::
vector
<
c_float
>
P_data
;
std
::
vector
<
c_int
>
P_indices
;
std
::
vector
<
c_int
>
P_indptr
;
ADEBUG
<<
"before CalculateKernel"
;
CalculateKernel
(
&
P_data
,
&
P_indices
,
&
P_indptr
);
ADEBUG
<<
"CalculateKernel done"
;
data
->
P
=
csc_matrix
(
kernel_dim
,
kernel_dim
,
P_data
.
size
(),
CopyData
(
P_data
),
CopyData
(
P_indices
),
CopyData
(
P_indptr
));
ADEBUG
<<
"Get P matrix"
;
data
->
q
=
gradient_
.
data
();
ADEBUG
<<
"before CalculateEqualityConstraint"
;
std
::
vector
<
c_float
>
A_data
;
std
::
vector
<
c_int
>
A_indices
;
std
::
vector
<
c_int
>
A_indptr
;
CalculateEqualityConstraint
(
&
A_data
,
&
A_indices
,
&
A_indptr
);
ADEBUG
<<
"CalculateEqualityConstraint done"
;
data
->
A
=
csc_matrix
(
state_dim_
*
(
horizon_
+
1
)
+
state_dim_
*
(
horizon_
+
1
)
+
control_dim_
*
horizon_
,
kernel_dim
,
A_data
.
size
(),
CopyData
(
A_data
),
CopyData
(
A_indices
),
CopyData
(
A_indptr
));
ADEBUG
<<
"Get A matrix"
;
data
->
l
=
lowerBound_
.
data
();
data
->
u
=
upperBound_
.
data
();
return
data
;
if
(
data
!=
nullptr
)
{
data
->
n
=
kernel_dim
;
data
->
m
=
num_affine_constraint
;
std
::
vector
<
c_float
>
P_data
;
std
::
vector
<
c_int
>
P_indices
;
std
::
vector
<
c_int
>
P_indptr
;
ADEBUG
<<
"before CalculateKernel"
;
CalculateKernel
(
&
P_data
,
&
P_indices
,
&
P_indptr
);
ADEBUG
<<
"CalculateKernel done"
;
data
->
P
=
csc_matrix
(
kernel_dim
,
kernel_dim
,
P_data
.
size
(),
CopyData
(
P_data
),
CopyData
(
P_indices
),
CopyData
(
P_indptr
));
ADEBUG
<<
"Get P matrix"
;
data
->
q
=
gradient_
.
data
();
ADEBUG
<<
"before CalculateEqualityConstraint"
;
std
::
vector
<
c_float
>
A_data
;
std
::
vector
<
c_int
>
A_indices
;
std
::
vector
<
c_int
>
A_indptr
;
CalculateEqualityConstraint
(
&
A_data
,
&
A_indices
,
&
A_indptr
);
ADEBUG
<<
"CalculateEqualityConstraint done"
;
data
->
A
=
csc_matrix
(
state_dim_
*
(
horizon_
+
1
)
+
state_dim_
*
(
horizon_
+
1
)
+
control_dim_
*
horizon_
,
kernel_dim
,
A_data
.
size
(),
CopyData
(
A_data
),
CopyData
(
A_indices
),
CopyData
(
A_indptr
));
ADEBUG
<<
"Get A matrix"
;
data
->
l
=
lowerBound_
.
data
();
data
->
u
=
upperBound_
.
data
();
return
data
;
}
else
{
return
nullptr
;
}
}
void
MpcOsqp
::
FreeData
(
OSQPData
*
data
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录