SVHController.h
Go to the documentation of this file.
1 //
3 // © Copyright 2022 SCHUNK Mobile Greifsysteme GmbH, Lauffen/Neckar Germany
4 // © Copyright 2022 FZI Forschungszentrum Informatik, Karlsruhe, Germany
5 //
6 // This file is part of the Schunk SVH Library.
7 //
8 // The Schunk SVH Library is free software: you can redistribute it and/or
9 // modify it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation, either version 3 of the License, or (at your
11 // option) any later version.
12 //
13 // The Schunk SVH Library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
16 // Public License for more details.
17 //
18 // You should have received a copy of the GNU General Public License along with
19 // the Schunk SVH Library. If not, see <https://www.gnu.org/licenses/>.
20 //
22 
23 
24 //----------------------------------------------------------------------
46 //----------------------------------------------------------------------
47 #ifndef DRIVER_SVH_SVH_CONTROLLER_H_INCLUDED
48 #define DRIVER_SVH_SVH_CONTROLLER_H_INCLUDED
49 
60 
61 namespace driver_svh {
62 
65 enum
66 {
67  SVH_ALL = -1, // this should be used with care as not all functions support it yet
78 } typedef SVHChannel;
79 
88 {
89 public:
91  SVHController();
92 
96  ~SVHController();
97 
103  bool connect(const std::string& dev_name);
104 
106  void disconnect();
107 
113  void setControllerTarget(const SVHChannel& channel, const int32_t& position);
114 
119  void setControllerTargetAllChannels(const std::vector<int32_t>& positions);
120 
121 
122  // Access functions
127  void enableChannel(const SVHChannel& channel);
128 
133  void disableChannel(const SVHChannel& channel);
134 
136  void requestControllerState();
137 
142  void requestControllerFeedback(const SVHChannel& channel);
143 
148  void requestPositionSettings(const SVHChannel& channel);
149 
155  void setPositionSettings(const SVHChannel& channel, const SVHPositionSettings& position_settings);
156 
161  void requestCurrentSettings(const SVHChannel& channel);
162 
168  void setCurrentSettings(const SVHChannel& channel, const SVHCurrentSettings& current_settings);
169 
173  void requestEncoderValues();
174 
179  void setEncoderValues(const SVHEncoderSettings& encoder_settings);
180 
181 
185  void requestFirmwareInfo();
186 
192  void receivedPacketCallback(const SVHSerialPacket& packet, unsigned int packet_count);
193 
205  bool getControllerFeedback(const SVHChannel& channel, SVHControllerFeedback& controller_feedback);
206 
213  bool getPositionSettings(const SVHChannel& channel, SVHPositionSettings& position_settings);
214 
221  bool getCurrentSettings(const SVHChannel& channel, SVHCurrentSettings& current_settings);
222 
227  SVHFirmwareInfo getFirmwareInfo();
228 
233  unsigned int getSentPackageCount();
234 
240  unsigned int getReceivedPackageCount();
241 
245  void resetPackageCounts();
246 
252  bool isEnabled(const SVHChannel& channel);
253 
255  static const char* m_channel_description[];
256 
258  static const float CHANNEL_EFFORT_CONSTANTS[9][2];
259 
261  void getControllerFeedbackAllChannels(SVHControllerFeedbackAllChannels& controller_feedback);
262 
263 private:
264  // Data Structures for holding configurations and feedback of the Controller
265 
267  std::vector<SVHCurrentSettings> m_current_settings;
268 
270  std::vector<SVHPositionSettings> m_position_settings;
271 
273  std::vector<SVHControllerFeedback> m_controller_feedback;
274 
277 
280 
283 
284  // Hardware control
285 
288 
290  uint16_t m_enable_mask;
291 
295 };
296 
297 } // namespace driver_svh
298 
299 #endif
SVHFirmwareInfo m_firmware_info
Latest firmware info.
std::vector< SVHCurrentSettings > m_current_settings
vector of current controller parameters for each finger
SVHEncoderSettings m_encoder_settings
Currently active encoder settings.
The SVHCurrentSettings save the current controller paramters for a single motor.
#define DRIVER_SVH_IMPORT_EXPORT
Definition: ImportExport.h:50
unsigned int m_received_package_count
std::vector< SVHControllerFeedback > m_controller_feedback
ControllerFeedback indicates current position and current per finger.
void receivedPacketCallback(const SVHSerialPacket &packet, unsigned int packet_count)
The SVHFirmwareInfo holds the data of a firmware response from the hardware.
The SVHControllerFeedback saves the feedback of a single motor.
std::vector< SVHPositionSettings > m_position_settings
vector of position controller parameters for each finger
This class controls the the SCHUNK five finger hand.
Definition: SVHController.h:87
SVHControllerState m_controller_state
Currently active controllerstate on the HW Controller (indicates if PWM active etc.)
The SVHPositionSettings save the position controller paramters for a single motor.
SVHSerialInterface * m_serial_interface
Serial interface for transmission and reveibing of data packets.
The SVHControllerState indicates the current state of the MeCoVis controller IC which is used in the ...
uint16_t m_enable_mask
Bitmask to tell which fingers are enabled.
The SVHControllerFeedbackAllChannes saves the feedback of a all motors.
Basic communication handler for the SCHUNK five finger hand.
The SVHEncoderSettings hold the settings for the encoder scaling of each channel. ...
The SerialPacket holds the (non generated) header and data of one message to the SVH-Hardware.


schunk_svh_library
Author(s): Georg Heppner, Lars Pfotzer, Felix Exner, Johannes Mangler, Stefan Scherzinger, Pascal Becker
autogenerated on Fri Apr 14 2023 02:26:23