7 namespace experimental {
16 virtual bool update(Eigen::VectorXd& aux_state) {
return true; }
18 virtual bool send() {
return true; }
24 template <
size_t AuxSize>
34 bool update(Eigen::VectorXd& aux_state)
override {
36 auto n = aux_state.size();
37 if (n != AuxSize && n != 0)
41 if (aux_state.size() == AuxSize)
43 for (
size_t i = 0; i < AuxSize; ++i)
45 if (!std::isnan(aux_state[i]))
67 return group_->sendCommandWithAcknowledgement(gains_cmd);
72 virtual void setCommand(
size_t index,
double value) = 0;
74 static std::shared_ptr<hebi::Group>
getGroup(
const std::vector<std::string>& families,
const std::vector<std::string>& names) {
77 if (!group || group->size() != AuxSize)
110 template <
size_t AuxSize>
115 static std::unique_ptr<EffortEndEffector>
create(
const std::string& family,
const std::string& name) {
116 return create(std::vector<std::string> { family }, std::vector<std::string> { name });
120 static std::unique_ptr<EffortEndEffector>
create(
const std::vector<std::string>& families,
const std::vector<std::string>& names) {
132 this->
command_[index].actuator().effort().set(value);