Skip to content

Commit 64df004

Browse files
committed
state space getters A(), B() .. are implemented.
1 parent 9a32bc2 commit 64df004

File tree

3 files changed

+78
-38
lines changed

3 files changed

+78
-38
lines changed

control/autoware_control_toolbox/include/utils_act/state_space.hpp

+40
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,46 @@ namespace ns_control_toolbox
7979

8080
[[nodiscard]] ss_system get_ssABCD_discrete() const;
8181

82+
[[nodiscard]] Eigen::MatrixXd Ad() const
83+
{
84+
return Ad_;
85+
}
86+
87+
[[nodiscard]] Eigen::MatrixXd Bd() const
88+
{
89+
return Bd_;
90+
}
91+
92+
[[nodiscard]] Eigen::MatrixXd Cd() const
93+
{
94+
return Cd_;
95+
}
96+
97+
[[nodiscard]] Eigen::MatrixXd Dd() const
98+
{
99+
return Dd_;
100+
}
101+
102+
[[nodiscard]] Eigen::MatrixXd A() const
103+
{
104+
return A_;
105+
}
106+
107+
[[nodiscard]] Eigen::MatrixXd B() const
108+
{
109+
return B_;
110+
}
111+
112+
[[nodiscard]] Eigen::MatrixXd C() const
113+
{
114+
return C_;
115+
}
116+
117+
[[nodiscard]] Eigen::MatrixXd D() const
118+
{
119+
return D_;
120+
}
121+
82122

83123
private:
84124

control/autoware_control_toolbox/usage_examples/main_balance.cpp

+36-36
Original file line numberDiff line numberDiff line change
@@ -5,43 +5,43 @@
55
#include <vector>
66

77
int main()
8-
{
9-
10-
double Td = 0.11; // time delay in seconds.
11-
size_t order = 3; // order of the Pade approximation.
12-
13-
auto tf_delay = ns_control_toolbox::pade(Td, order);
14-
tf_delay.print();
15-
16-
// Define Ts
17-
double Ts{ 0.1 };
18-
auto ss_sys = ns_control_toolbox::tf2ss(tf_delay);
19-
ss_sys.print();
20-
21-
// Test discretization and compare with Matlab.
22-
23-
ss_sys.discretisize(Ts);
24-
ss_sys.print_discrete_system();
8+
{
9+
10+
double Td = 0.11; // time delay in seconds.
11+
size_t order = 3; // order of the Pade approximation.
12+
13+
auto tf_delay = ns_control_toolbox::pade(Td, order);
14+
tf_delay.print();
15+
16+
// Define Ts
17+
double Ts{ 0.1 };
18+
auto ss_sys = ns_control_toolbox::tf2ss(tf_delay);
19+
ss_sys.print();
20+
21+
// Test discretization and compare with Matlab.
22+
23+
ss_sys.discretisize(Ts);
24+
ss_sys.print_discrete_system();
2525

2626
// ns_control_toolbox::balance(ss_sys.A_);
2727
// ns_utils::print("Balanced matrix A_");
2828
// ns_eigen_utils::printEigenMat(ss_sys.A_);
29-
30-
// Concat
31-
auto AB = ns_eigen_utils::hstack<double>(ss_sys.A_, ss_sys.B_);
32-
auto CD = ns_eigen_utils::hstack<double>(ss_sys.C_, ss_sys.D_);
33-
auto ss_system = ns_eigen_utils::vstack<double>(AB, CD);
34-
35-
ns_utils::print("Matrix to be balanced ");
36-
ns_eigen_utils::printEigenMat(ss_system);
37-
38-
ns_utils::print("Balanced matrix for the system ");
39-
ns_control_toolbox::balance(ss_system);
40-
ns_eigen_utils::printEigenMat(ss_system);
41-
42-
// PERMUTATION TEST
43-
44-
45-
46-
return 0;
47-
}
29+
30+
// Concat
31+
auto AB = ns_eigen_utils::hstack<double>(ss_sys.A(), ss_sys.B());
32+
auto CD = ns_eigen_utils::hstack<double>(ss_sys.C(), ss_sys.D());
33+
auto ss_system = ns_eigen_utils::vstack<double>(AB, CD);
34+
35+
ns_utils::print("Matrix to be balanced ");
36+
ns_eigen_utils::printEigenMat(ss_system);
37+
38+
ns_utils::print("Balanced matrix for the system ");
39+
ns_control_toolbox::balance(ss_system);
40+
ns_eigen_utils::printEigenMat(ss_system);
41+
42+
// PERMUTATION TEST
43+
44+
45+
46+
return 0;
47+
}

control/autoware_control_toolbox/usage_examples/main_tf2ss.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ int main()
3535
sys_ss2.print();
3636

3737
ns_utils::print("SS.A \n");
38-
ns_eigen_utils::printEigenMat(sys_ss2.A_);
38+
ns_eigen_utils::printEigenMat(sys_ss2.A());
3939

4040
ns_utils::print("SS.Ad \n");
41-
ns_eigen_utils::printEigenMat(sys_ss2.Ad_);
41+
ns_eigen_utils::printEigenMat(sys_ss2.Ad());
4242

4343
// DISCRETIZATION : Note sstf2 automatically discretisize
4444
double Ts{ 0.1 };

0 commit comments

Comments
 (0)