28 std::vector<ModelState> model_states_;
40 requires std::constructible_from<T, U>
49 values_{std::forward<U>(
value)},
59 std::vector<double> times,
60 std::vector<T> values) :
63 times_{std::move(times)},
64 values_{std::move(values)}
66 OSC_ASSERT_ALWAYS(times_.size() == values_.size() &&
"The number of times/weights/values in an IK measurement sequence must be equal");
67 weights_.resize(times_.size(), 1.0);
76 std::vector<double> times,
77 std::vector<T> values,
78 std::vector<double> weights) :
81 times_{std::move(times)},
82 values_{std::move(values)},
83 weights_{std::move(weights)}
85 OSC_ASSERT_ALWAYS(times_.size() == values_.size() && values_.size() == weights_.size() &&
"The number of times/weights/values in an IK measurement sequence must be equal");
93 size_t size()
const {
return times_.size(); }
96 double time(
size_t i)
const {
return times_.at(i); }
99 const T&
value(
size_t i)
const {
return values_.at(i); }
102 double weight(
size_t i)
const {
return weights_.at(i); }
106 std::vector<double> times_;
107 std::vector<T> values_;
108 std::vector<double> weights_;
127 const std::optional<IKStationMeasurements>& station_measurements = {},
128 const std::optional<IKOrientationMeasurements>& orientation_measurements = {},
129 const std::optional<IKCoordinateMeasurements>& coordinate_measurements = {}
#define OSC_ASSERT_ALWAYS(expr)
Definition assertions.h:20
Definition inverse_kinematics.h:34
const Symbol & model_component() const
Definition inverse_kinematics.h:90
double weight(size_t i) const
Returns the weight of the ith measurement in the sequence.
Definition inverse_kinematics.h:102
IKMeasurements(const Symbol &model_component, std::vector< double > times, std::vector< T > values)
Definition inverse_kinematics.h:57
IKMeasurements(const Symbol &model_component, U &&value, double time=0.0, double weight=1.0)
Definition inverse_kinematics.h:41
double time(size_t i) const
Returns the measurement time of the ith measurement in the sequence.
Definition inverse_kinematics.h:96
IKMeasurements(const Symbol &model_component, std::vector< double > times, std::vector< T > values, std::vector< double > weights)
Definition inverse_kinematics.h:74
size_t size() const
Returns the number of measurements in the sequence.
Definition inverse_kinematics.h:93
const T & value(size_t i) const
Returns the value of the ith measurement in the sequence.
Definition inverse_kinematics.h:99
Represents the output of the inverse kinematics (IK) solver.
Definition inverse_kinematics.h:18
const ModelState & model_state(size_t i) const
Returns a reference to the ith ModelState in this result.
size_t num_states() const
Definition model_state.h:19
Definition component_registry.h:14
IKResult inverse_kinematics_solve(const Model &model, const std::optional< IKStationMeasurements > &station_measurements={}, const std::optional< IKOrientationMeasurements > &orientation_measurements={}, const std::optional< IKCoordinateMeasurements > &coordinate_measurements={})
Returns the result of running an IK solver on model for the provided measurements.