Skip to content

Commit cbec891

Browse files
committed
WIP: validate Ruckig input
1 parent 3ec4a18 commit cbec891

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

moveit_core/online_signal_smoothing/src/ruckig_filter.cpp

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,12 @@ bool RuckigFilterPlugin::initialize(rclcpp::Node::SharedPtr node, moveit::core::
6868
ruckig_input.max_acceleration = joint_acceleration_bounds_;
6969
ruckig_input.current_position = std::vector<double>(num_joints_, 0.0);
7070
ruckig_input.current_velocity = std::vector<double>(num_joints_, 0.0);
71-
ruckig_input.current_acceleration = std::vector<double>(num_joints_, 0.0);
7271

7372
// These quantities can be omitted if jerk limits are not applied
7473
if (joint_jerk_bounds_)
7574
{
7675
ruckig_input.max_jerk = *joint_jerk_bounds_;
77-
}
78-
else
79-
{
80-
ruckig_input.max_jerk = std::vector<double>(num_joints_, 0.0);
76+
ruckig_input.current_acceleration = std::vector<double>(num_joints_, 0.0);
8177
}
8278

8379
ruckig_input_ = ruckig_input;
@@ -104,23 +100,30 @@ bool RuckigFilterPlugin::doSmoothing(Eigen::VectorXd& positions, Eigen::VectorXd
104100
ruckig_input_->current_velocity = ruckig_output_->new_velocity;
105101
}
106102
}
107-
else
108-
{
109-
// TODO
110-
;
111-
}
112103

113104
// Update Ruckig target state
114105
// This assumes stationary at the target (zero vel, zero accel)
115106
ruckig_input_->target_position = std::vector<double>(positions.data(), positions.data() + positions.size());
116107
ruckig_input_->target_velocity = std::vector<double>(num_joints_, 0);
117-
ruckig_input_->target_acceleration = std::vector<double>(num_joints_, 0);
118108
if (!joint_jerk_bounds_)
119109
{
110+
ruckig_input_->target_acceleration = std::vector<double>(num_joints_, 0);
120111
ruckig_input_->current_acceleration = std::vector<double>(num_joints_, 0.0);
121112
}
122113

123114
// Call the Ruckig algorithm
115+
try
116+
{
117+
ruckig_->validate_input(*ruckig_input_, true, true);
118+
}
119+
catch (const std::runtime_error& error)
120+
{
121+
RCLCPP_ERROR_STREAM(getLogger(), "Invalid Ruckig input. " << error.what() << std::endl);
122+
}
123+
if (!ruckig_->validate_input(*ruckig_input_, true, true))
124+
{
125+
std::cerr << "Invalid input!" << std::endl;
126+
}
124127
ruckig::Result ruckig_result = ruckig_->update(*ruckig_input_, *ruckig_output_);
125128

126129
// Finished means the target state can be reached in this timestep.

0 commit comments

Comments
 (0)