@@ -74,8 +74,12 @@ class ObjectTransitionBuilder
74
74
75
75
struct Parameters
76
76
{
77
- double linear_sigma;
78
- double angular_sigma;
77
+ double linear_sigma_x;
78
+ double linear_sigma_y;
79
+ double linear_sigma_z;
80
+ double angular_sigma_x;
81
+ double angular_sigma_y;
82
+ double angular_sigma_z;
79
83
double velocity_factor;
80
84
int part_count;
81
85
};
@@ -112,10 +116,17 @@ class ObjectTransitionBuilder
112
116
part_A.rightCols (6 ) *= param_.velocity_factor ;
113
117
114
118
part_B.setZero ();
115
- part_B.block (0 , 0 , 3 , 3 ) =
116
- Eigen::Matrix3d::Identity () * param_.linear_sigma ;
117
- part_B.block (3 , 3 , 3 , 3 ) =
118
- Eigen::Matrix3d::Identity () * param_.angular_sigma ;
119
+ part_B.block (0 , 0 , 3 , 3 ) = Eigen::DiagonalMatrix<double , 3 >(
120
+ param_.linear_sigma_x ,
121
+ param_.linear_sigma_y ,
122
+ param_.linear_sigma_z );
123
+ // Eigen::Matrix3d::Identity() * param_.linear_sigma;
124
+ part_B.block (3 , 3 , 3 , 3 ) = Eigen::DiagonalMatrix<double , 3 >(
125
+ param_.angular_sigma_x ,
126
+ param_.angular_sigma_y ,
127
+ param_.angular_sigma_z );
128
+
129
+ // Eigen::Matrix3d::Identity() * param_.angular_sigma;
119
130
part_B.bottomRows (6 ) = part_B.topRows (6 );
120
131
121
132
for (int i = 0 ; i < param_.part_count ; ++i)
@@ -131,55 +142,6 @@ class ObjectTransitionBuilder
131
142
return model;
132
143
}
133
144
134
- virtual DerivedModel build_crazy_model () const
135
- {
136
- int total_state_dim = param_.part_count * 12 ;
137
- int total_noise_dim = total_state_dim;
138
-
139
- auto model = DerivedModel (total_state_dim, total_noise_dim, 1 );
140
-
141
- auto A = model.create_dynamics_matrix ();
142
- auto B = model.create_noise_matrix ();
143
- auto C = model.create_input_matrix ();
144
-
145
- auto part_A = Eigen::Matrix<fl::Real, 12 , 12 >();
146
- auto part_B = Eigen::Matrix<fl::Real, 12 , 12 >();
147
-
148
- A.setIdentity ();
149
- B.setZero ();
150
- C.setZero ();
151
-
152
- part_A.setIdentity ();
153
- part_A.topRightCorner (6 , 6 ).setIdentity ();
154
- part_A.topRightCorner (6 , 6 ) *= 1 . / 30 .;
155
-
156
- auto part_part_B = Eigen::Matrix<fl::Real, 6 , 6 >();
157
- part_part_B.setIdentity ();
158
- part_part_B.bottomLeftCorner (3 , 3 ).setIdentity ();
159
- part_part_B.topLeftCorner (3 , 3 ) *= 1 . / (90 * std::sqrt (10 ));
160
- part_part_B.bottomLeftCorner (3 , 3 ) *= 1 . / (2 * std::sqrt (10 ));
161
- part_part_B.bottomRightCorner (3 , 3 ) *= 1 . / (2 * std::sqrt (30 ));
162
-
163
- part_B.setIdentity ();
164
- part_B.block (0 , 0 , 6 , 6 ) = part_part_B * param_.linear_sigma ;
165
- part_B.block (6 , 6 , 6 , 6 ) = part_part_B * param_.angular_sigma ;
166
-
167
- Eigen::MatrixXd tmp = part_B;
168
- part_B.middleRows (3 , 3 ) = tmp.middleRows (6 , 3 );
169
- part_B.middleRows (6 , 3 ) = tmp.middleRows (3 , 3 );
170
-
171
- for (int i = 0 ; i < param_.part_count ; ++i)
172
- {
173
- A.block (i * 12 , i * 12 , 12 , 12 ) = part_A;
174
- B.block (i * 12 , i * 12 , 12 , 12 ) = part_B;
175
- }
176
-
177
- model.dynamics_matrix (A);
178
- model.noise_matrix (B);
179
- model.input_matrix (C);
180
-
181
- return model;
182
- }
183
145
184
146
private:
185
147
Parameters param_;
0 commit comments