HEBI C++ API  3.4.0
group_command.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "hebi.h"
4 
5 #include <vector>
6 
7 #include "Eigen/Eigen"
8 #include "command.hpp"
9 #include "util.hpp"
10 
11 namespace hebi {
12 
17 class GroupCommand final {
18 public:
19 #ifndef DOXYGEN_OMIT_INTERNAL
20 
24  HebiGroupCommandPtr internal_;
25 #endif // DOXYGEN_OMIT_INTERNAL
26 
27 private:
31  const size_t number_of_modules_;
35  std::vector<Command> commands_;
36 
37 public:
41  GroupCommand(size_t number_of_modules);
42 
46  ~GroupCommand() noexcept; /* annotating specified destructor as noexcept is best-practice */
47 
51  size_t size() const;
52 
56  Command& operator[](size_t index);
57 
61  const Command& operator[](size_t index) const;
62 
67  void clear();
68 
73  bool readGains(const std::string& file);
74 
79  bool writeGains(const std::string& file) const;
80 
85  FunctionCallResult readSafetyParameters(const std::string& file) {
86  auto res = hebiGroupCommandReadSafetyParameters(internal_, file.c_str()) == HebiStatusSuccess;
87  if (res) {
88  return FunctionCallResult{true};
89  }
90  return FunctionCallResult{false, std::string{hebiSafetyParametersGetLastError()}};
91  }
92 
97  FunctionCallResult writeSafetyParameters(const std::string& file) const {
98  auto res = hebiGroupCommandWriteSafetyParameters(internal_, file.c_str()) == HebiStatusSuccess;
99  if (res) {
100  return FunctionCallResult{true};
101  }
102  return FunctionCallResult{false, std::string{hebiSafetyParametersGetLastError()}};
103  }
104 
111  void setPosition(const Eigen::VectorXd& position);
118  void setVelocity(const Eigen::VectorXd& velocity);
125  void setEffort(const Eigen::VectorXd& effort);
132  void setSpringConstant(const Eigen::VectorXd& springConstant);
133 
137  Eigen::VectorXd getPosition() const;
141  Eigen::VectorXd getVelocity() const;
145  Eigen::VectorXd getEffort() const;
149  Eigen::VectorXd getSpringConstant() const;
150 
154  void getPosition(Eigen::VectorXd& out) const;
158  void getVelocity(Eigen::VectorXd& out) const;
162  void getEffort(Eigen::VectorXd& out) const;
166  void getSpringConstant(Eigen::VectorXd& out) const;
167 };
168 
169 } // namespace hebi
GroupCommand(size_t number_of_modules)
Create a group command with the specified number of modules.
Definition: group_command.cpp:5
Eigen::VectorXd getPosition() const
Convenience function for returning commanded position values.
Definition: group_command.cpp:58
Command objects have various fields that can be set; when sent to the module, these fields control in...
Definition: command.hpp:33
Definition: arm.cpp:5
bool writeGains(const std::string &file) const
Export the gains from this GroupCommand object into a file, creating it as necessary.
Definition: group_command.cpp:28
FunctionCallResult readSafetyParameters(const std::string &file)
Import the safety parameters from a file into this GroupCommand object.
Definition: group_command.hpp:85
~GroupCommand() noexcept
Destructor cleans up group command object as necessary.
Definition: group_command.cpp:11
Eigen::VectorXd getSpringConstant() const
Convenience function for returning commanded spring constant values.
Definition: group_command.cpp:82
Eigen::VectorXd getEffort() const
Convenience function for returning commanded effort values.
Definition: group_command.cpp:74
size_t size() const
Returns the number of module commands in this group command.
Definition: group_command.cpp:16
bool readGains(const std::string &file)
Import the gains from a file into this GroupCommand object.
Definition: group_command.cpp:24
Command & operator[](size_t index)
Access the command for an individual module.
Definition: group_command.cpp:18
Used as a return.
Definition: util.hpp:28
A list of Command objects appropriate for sending to a Group of modules; the size() must match the nu...
Definition: group_command.hpp:17
FunctionCallResult writeSafetyParameters(const std::string &file) const
Export the safety parameters from this GroupCommand object into a file, creating it as necessary.
Definition: group_command.hpp:97
void setVelocity(const Eigen::VectorXd &velocity)
Convenience function for setting velocity commands from Eigen vectors.
Definition: group_command.cpp:38
void setSpringConstant(const Eigen::VectorXd &springConstant)
Convenience function for setting spring constant commands from Eigen vectors.
Definition: group_command.cpp:51
void setPosition(const Eigen::VectorXd &position)
Convenience function for setting position commands from Eigen vectors.
Definition: group_command.cpp:32
void setEffort(const Eigen::VectorXd &effort)
Convenience function for setting effort commands from Eigen vectors.
Definition: group_command.cpp:44
void clear()
Clears all data in this GroupCommand object; this returns to the state the GroupCommand was at time o...
Definition: group_command.cpp:22
Eigen::VectorXd getVelocity() const
Convenience function for returning commanded velocity values.
Definition: group_command.cpp:66