Skip to content

Commit 9053ca1

Browse files
committed
Integrated center_object_frame option
1 parent 3fd9182 commit 9053ca1

9 files changed

+41
-21
lines changed

source/dbot/builder/rbc_particle_filter_tracker_builder.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ class RbcParticleFilterTrackerBuilder
7171
int evaluation_count;
7272
double moving_average_update_rate;
7373
double max_kl_divergence;
74+
bool center_object_frame;
7475
};
7576

7677
public:
@@ -101,7 +102,8 @@ class RbcParticleFilterTrackerBuilder
101102
filter,
102103
object_model_,
103104
params_.evaluation_count,
104-
params_.moving_average_update_rate);
105+
params_.moving_average_update_rate,
106+
params_.center_object_frame);
105107

106108
return tracker;
107109
}

source/dbot/builder/rms_gaussian_filter_tracker_builder.cpp

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ RmsGaussianFilterTrackerBuilder::build()
4141
auto filter = create_filter(object_model);
4242

4343
auto tracker = std::make_shared<RmsGaussianFilterObjectTracker>(
44-
filter, object_model, param_.update_rate);
44+
filter,
45+
object_model,
46+
param_.moving_average_update_rate,
47+
param_.center_object_frame);
4548

4649
return tracker;
4750
}
@@ -52,14 +55,12 @@ auto RmsGaussianFilterTrackerBuilder::create_filter(
5255
/* ------------------------------ */
5356
/* - State transition model - */
5457
/* ------------------------------ */
55-
auto transition =
56-
create_object_transition(param_.object_transition);
58+
auto transition = create_object_transition(param_.object_transition);
5759

5860
/* ------------------------------ */
5961
/* - Observation model - */
6062
/* ------------------------------ */
61-
auto sensor =
62-
create_sensor(object_model, camera_data_, param_.observation);
63+
auto sensor = create_sensor(object_model, camera_data_, param_.observation);
6364

6465
/* ------------------------------ */
6566
/* - Quadrature - */
@@ -69,8 +70,8 @@ auto RmsGaussianFilterTrackerBuilder::create_filter(
6970
/* ------------------------------ */
7071
/* - Filter - */
7172
/* ------------------------------ */
72-
auto filter = std::shared_ptr<Filter>(
73-
new Filter(transition, sensor, quadrature));
73+
auto filter =
74+
std::shared_ptr<Filter>(new Filter(transition, sensor, quadrature));
7475

7576
return filter;
7677
}
@@ -103,14 +104,17 @@ RmsGaussianFilterTrackerBuilder::create_object_model(
103104
const ObjectResourceIdentifier& ori) const
104105
{
105106
auto object_model = std::make_shared<ObjectModel>(
106-
std::shared_ptr<ObjectModelLoader>(new SimpleWavefrontObjectModelLoader(ori)), true);
107+
std::shared_ptr<ObjectModelLoader>(
108+
new SimpleWavefrontObjectModelLoader(ori)),
109+
param_.center_object_frame);
107110

108111
return object_model;
109112
}
110113

111114
auto RmsGaussianFilterTrackerBuilder::create_object_transition(
112-
const ObjectTransitionBuilder<RmsGaussianFilterTrackerBuilder::State>::
113-
Parameters& param) const -> Transition
115+
const ObjectTransitionBuilder<
116+
RmsGaussianFilterTrackerBuilder::State>::Parameters& param) const
117+
-> Transition
114118
{
115119
ObjectTransitionBuilder<State> process_builder(param);
116120
auto process = process_builder.build_model();

source/dbot/builder/rms_gaussian_filter_tracker_builder.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ class RmsGaussianFilterTrackerBuilder
5656
struct Parameters
5757
{
5858
double ut_alpha;
59-
double update_rate;
59+
double moving_average_update_rate;
60+
bool center_object_frame;
6061

6162
struct Observation
6263
{

source/dbot/tracker/object_tracker.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@
1717
namespace dbot
1818
{
1919
ObjectTracker::ObjectTracker(const std::shared_ptr<ObjectModel> &object_model,
20-
double update_rate)
20+
double update_rate,
21+
bool center_object_frame)
2122
: object_model_(object_model),
2223
update_rate_(update_rate),
24+
center_object_frame_(center_object_frame),
2325
moving_average_(object_model_->count_parts())
2426
{
2527
}
@@ -80,6 +82,8 @@ auto ObjectTracker::track(const Obsrv& image) -> State
8082
auto ObjectTracker::to_center_coordinate_system(
8183
const ObjectTracker::State& state) -> State
8284
{
85+
if (!center_object_frame_) return state;
86+
8387
State centered_state = state;
8488
for (size_t j = 0; j < state.count(); j++)
8589
{
@@ -90,10 +94,13 @@ auto ObjectTracker::to_center_coordinate_system(
9094

9195
return centered_state;
9296
}
97+
9398

9499
auto ObjectTracker::to_model_coordinate_system(
95100
const ObjectTracker::State& state) -> State
96101
{
102+
if (!center_object_frame_) return state;
103+
97104
State model_state = state;
98105
for (size_t j = 0; j < state.count(); j++)
99106
{

source/dbot/tracker/object_tracker.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ class ObjectTracker
5858
* Moving average update rate
5959
*/
6060
ObjectTracker(const std::shared_ptr<ObjectModel>& object_model,
61-
double update_rate);
61+
double update_rate,
62+
bool center_object_frame);
6263

6364
virtual ~ObjectTracker() { }
6465

@@ -132,6 +133,7 @@ class ObjectTracker
132133
std::shared_ptr<ObjectModel> object_model_;
133134
State moving_average_;
134135
double update_rate_;
136+
bool center_object_frame_;
135137
std::mutex mutex_;
136138
};
137139
}

source/dbot/tracker/rbc_particle_filter_object_tracker.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ RbcParticleFilterObjectTracker::RbcParticleFilterObjectTracker(
2929
const std::shared_ptr<Filter>& filter,
3030
const std::shared_ptr<ObjectModel>& object_model,
3131
int evaluation_count,
32-
double update_rate)
33-
: ObjectTracker(object_model, update_rate),
32+
double update_rate,
33+
bool center_object_frame)
34+
: ObjectTracker(object_model, update_rate, center_object_frame),
3435
filter_(filter),
3536
evaluation_count_(evaluation_count)
3637
{
@@ -40,7 +41,6 @@ auto RbcParticleFilterObjectTracker::on_initialize(
4041
const std::vector<State>& initial_states) -> State
4142
{
4243
filter_->set_particles(initial_states);
43-
// filter_->filter(camera_data_->depth_image_vector(), zero_input());
4444
filter_->resample(evaluation_count_ / object_model_->count_parts());
4545

4646
State delta_mean = filter_->belief().mean();

source/dbot/tracker/rbc_particle_filter_object_tracker.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ class RbcParticleFilterObjectTracker : public ObjectTracker
6666
const std::shared_ptr<Filter>& filter,
6767
const std::shared_ptr<ObjectModel>& object_model,
6868
int evaluation_count,
69-
double update_rate);
69+
double update_rate,
70+
bool center_object_frame);
71+
7072

7173
virtual ~RbcParticleFilterObjectTracker() { }
7274

source/dbot/tracker/rms_gaussian_filter_object_tracker.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ namespace dbot
2828
RmsGaussianFilterObjectTracker::RmsGaussianFilterObjectTracker(
2929
const std::shared_ptr<Filter>& filter,
3030
const std::shared_ptr<ObjectModel>& object_model,
31-
double update_rate)
32-
: ObjectTracker(object_model, update_rate),
31+
double update_rate,
32+
bool center_object_frame)
33+
: ObjectTracker(object_model, update_rate, center_object_frame),
3334
filter_(filter),
3435
belief_(filter_->create_belief())
3536
{

source/dbot/tracker/rms_gaussian_filter_object_tracker.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ class RmsGaussianFilterObjectTracker : public ObjectTracker
9494
RmsGaussianFilterObjectTracker(
9595
const std::shared_ptr<Filter>& filter,
9696
const std::shared_ptr<ObjectModel>& object_model,
97-
double update_rate);
97+
double update_rate,
98+
bool center_object_frame);
9899

99100
/**
100101
* \brief perform a single filter step

0 commit comments

Comments
 (0)