Skip to content

Commit a6cebd5

Browse files
Moved robot state estimation functions to cpp file
1 parent 9abab1b commit a6cebd5

File tree

2 files changed

+28
-22
lines changed

2 files changed

+28
-22
lines changed

include/franky/robot.hpp

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -450,30 +450,11 @@ class Robot : public franka::Robot {
450450
MotionGeneratorVariant motion_generator_{std::nullopt};
451451
bool motion_generator_running_{false};
452452

453-
RobotState convertState(const franka::RobotState &franka_robot_state, Vector7d ddq_est) const {
454-
auto ee_jacobian = model_->bodyJacobian(
455-
franka::Frame::kEndEffector,
456-
toEigenD(franka_robot_state.q),
457-
stdToAffine(franka_robot_state.F_T_EE),
458-
stdToAffine(franka_robot_state.EE_T_K));
459-
return RobotState::from_franka(franka_robot_state, ee_jacobian, ddq_est);
460-
}
453+
RobotState convertState(const franka::RobotState &franka_robot_state, Vector7d ddq_est) const;
461454

462-
RobotState initState(const franka::RobotState &franka_robot_state) const {
463-
// Use the desired joint accelerations as the initial joint accelerations
464-
return convertState(franka_robot_state, toEigenD(franka_robot_state.ddq_d));
465-
}
455+
RobotState initState(const franka::RobotState &franka_robot_state) const;
466456

467-
RobotState updateState(const RobotState &robot_state, const franka::RobotState &franka_robot_state) const {
468-
auto prev_ddq_est = robot_state.ddq_est.value();
469-
auto prev_dq = robot_state.dq;
470-
auto new_dq = toEigenD(franka_robot_state.dq);
471-
auto dt = franka_robot_state.time - robot_state.time;
472-
auto new_ddq_est = (new_dq - prev_dq) / dt.toSec();
473-
auto smooth_ddq_est = params_.joint_acceleration_estimator_decay * prev_ddq_est +
474-
(1.0 - params_.joint_acceleration_estimator_decay) * new_ddq_est;
475-
return convertState(franka_robot_state, smooth_ddq_est);
476-
}
457+
RobotState updateState(const RobotState &robot_state, const franka::RobotState &franka_robot_state) const;
477458

478459
[[nodiscard]] bool is_in_control_unsafe() const;
479460

src/robot.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,31 @@ Robot::Robot(const std::string &fci_hostname, const Params &params)
1717
setCollisionBehavior(params_.default_torque_threshold, params_.default_force_threshold);
1818
}
1919

20+
RobotState Robot::convertState(const franka::RobotState &franka_robot_state, Vector7d ddq_est) const {
21+
auto ee_jacobian = model_->bodyJacobian(
22+
franka::Frame::kEndEffector,
23+
toEigenD(franka_robot_state.q),
24+
stdToAffine(franka_robot_state.F_T_EE),
25+
stdToAffine(franka_robot_state.EE_T_K));
26+
return RobotState::from_franka(franka_robot_state, ee_jacobian, ddq_est);
27+
}
28+
29+
RobotState Robot::initState(const franka::RobotState &franka_robot_state) const {
30+
// Use the desired joint accelerations as the initial joint accelerations
31+
return convertState(franka_robot_state, toEigenD(franka_robot_state.ddq_d));
32+
}
33+
34+
RobotState Robot::updateState(const RobotState &robot_state, const franka::RobotState &franka_robot_state) const {
35+
auto prev_ddq_est = robot_state.ddq_est.value();
36+
auto prev_dq = robot_state.dq;
37+
auto new_dq = toEigenD(franka_robot_state.dq);
38+
auto dt = franka_robot_state.time - robot_state.time;
39+
auto new_ddq_est = (new_dq - prev_dq) / dt.toSec();
40+
auto smooth_ddq_est = params_.joint_acceleration_estimator_decay * prev_ddq_est +
41+
(1.0 - params_.joint_acceleration_estimator_decay) * new_ddq_est;
42+
return convertState(franka_robot_state, smooth_ddq_est);
43+
}
44+
2045
bool Robot::hasErrors() {
2146
return static_cast<bool>(state().current_errors);
2247
}

0 commit comments

Comments
 (0)