Skip to content

Commit d52be11

Browse files
committed
noise sigmas can now be set indivicually for each axis
1 parent 203f02b commit d52be11

File tree

1 file changed

+17
-55
lines changed

1 file changed

+17
-55
lines changed

source/dbot/builder/object_transition_builder.hpp

Lines changed: 17 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,12 @@ class ObjectTransitionBuilder
7474

7575
struct Parameters
7676
{
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;
7983
double velocity_factor;
8084
int part_count;
8185
};
@@ -112,10 +116,17 @@ class ObjectTransitionBuilder
112116
part_A.rightCols(6) *= param_.velocity_factor;
113117

114118
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;
119130
part_B.bottomRows(6) = part_B.topRows(6);
120131

121132
for (int i = 0; i < param_.part_count; ++i)
@@ -131,55 +142,6 @@ class ObjectTransitionBuilder
131142
return model;
132143
}
133144

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-
}
183145

184146
private:
185147
Parameters param_;

0 commit comments

Comments
 (0)