PowerCubeCtrl.h
Go to the documentation of this file.
1 /*
2  * Copyright 2017 Fraunhofer Institute for Manufacturing Engineering and Automation (IPA)
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 
18 #ifndef __POWER_CUBE_CTRL_H_
19 #define __POWER_CUBE_CTRL_H_
20 
21 #define VERSION_ELECTR3_FIRST 0x3518
22 #define VERSION_ELECTR2_LAST 0x3000
23 #define VERSION_ELECTR2_FIRST 0x2518
24 
25 // standard includes
26 #include <iostream>
27 #include <sstream>
28 #include <string>
29 #include <deque>
30 #include <pthread.h>
31 
32 // own includes
36 
38 {
39 public:
42 
45 
46  typedef enum
47  {
53 
55  // Functions for initialization and close: //
57 
61  bool Init(PowerCubeCtrlParams* params);
62 
66  bool isInitialized() const
67  {
68  return m_Initialized;
69  }
70 
74  std::string getErrorMessage() const
75  {
76  return m_ErrorMessage;
77  }
78 
83  {
84  return m_pc_status;
85  }
86 
90  bool Close();
91 
93  // Functions for control: //
95 
99  bool MoveJointSpaceSync(const std::vector<double>& angles);
100 
104  bool MoveVel(const std::vector<double>& velocities);
105 
109  bool Stop();
110 
114  bool Recover();
115 
117  // functions to set parameters: //
119 
125  bool setMaxVelocity(double velocity);
126  bool setMaxVelocity(const std::vector<double>& velocities);
127 
133  bool setMaxAcceleration(double acceleration);
134  bool setMaxAcceleration(const std::vector<double>& accelerations);
135 
142  bool setHorizon(double horizon);
143 
150  double getHorizon();
151 
157  bool setSyncMotion();
158 
164  bool setASyncMotion();
165 
167  // Functions for getting state and monitoring: //
169 
173  bool updateStates();
174 
178  bool getStatus(PC_CTRL_STATUS& status, std::vector<std::string>& errorMessages);
179 
183  std::vector<unsigned long> getVersion();
184 
190  bool statusMoving();
191 
195  std::vector<double> getPositions();
196 
200  std::vector<double> getVelocities();
201 
205  std::vector<double> getAccelerations();
206 
210  bool getJointAngles(std::vector<double>& result);
211 
215  bool getJointVelocities(std::vector<double>& result);
216 
222  bool doHoming();
223 
224  void updateVelocities(std::vector<double> pos_temp, double delta_t);
225 
226 protected:
227  pthread_mutex_t m_mutex;
228 
232 
235 
236  std::vector<unsigned long> m_status;
237  std::vector<std::string> m_ModuleTypes;
238  std::vector<unsigned long> m_version;
239  std::vector<unsigned char> m_dios;
240  std::vector<double> m_positions;
241  std::deque< std::vector<double> > m_cached_pos;
242  std::vector<double> m_velocities;
243  std::vector<double> m_accelerations;
244 
245  double m_horizon;
246 
248 
249  std::string m_ErrorMessage;
250 
251  bool getPositionAndStatus(int module_id, unsigned long* state, unsigned char* dio, float* position);
252 };
253 
254 #endif
PowerCubeCtrl::m_positions
std::vector< double > m_positions
Definition: PowerCubeCtrl.h:240
PowerCubeCtrl::isInitialized
bool isInitialized() const
Checking if is initialized.
Definition: PowerCubeCtrl.h:66
PowerCubeCtrl::Recover
bool Recover()
Recovery after emergency stop or power supply failure.
Definition: PowerCubeCtrl.cpp:777
PowerCubeCtrl::PC_CTRL_POW_VOLT_ERR
@ PC_CTRL_POW_VOLT_ERR
Definition: PowerCubeCtrl.h:51
PowerCubeCtrl::setHorizon
bool setHorizon(double horizon)
Sets the horizon (sec).
Definition: PowerCubeCtrl.cpp:984
PowerCubeCtrl::MoveVel
bool MoveVel(const std::vector< double > &velocities)
Moves all cubes by the given velocities.
Definition: PowerCubeCtrl.cpp:496
PowerCubeCtrl::setSyncMotion
bool setSyncMotion()
Configure powercubes to start all movements synchronously.
Definition: PowerCubeCtrl.cpp:1007
PowerCubeCtrl::MoveJointSpaceSync
bool MoveJointSpaceSync(const std::vector< double > &angles)
Send position goals to powercubes, the final angles will be reached simultaneously.
Definition: PowerCubeCtrl.cpp:366
PowerCubeCtrl::m_CANDeviceOpened
bool m_CANDeviceOpened
Definition: PowerCubeCtrl.h:231
PowerCubeCtrl::Stop
bool Stop()
Stops the Manipulator immediately.
Definition: PowerCubeCtrl.cpp:732
PowerCubeCtrl::PC_CTRL_OK
@ PC_CTRL_OK
Definition: PowerCubeCtrl.h:48
PowerCubeCtrl::getJointVelocities
bool getJointVelocities(std::vector< double > &result)
get the current joint velocities (Rad/s)
Definition: PowerCubeCtrl.cpp:1305
PowerCubeCtrl::doHoming
bool doHoming()
Waits until all Modules are homed.
Definition: PowerCubeCtrl.cpp:1335
PowerCubeCtrl::PowerCubeCtrl
PowerCubeCtrl(PowerCubeCtrlParams *params)
Constructor.
Definition: PowerCubeCtrl.cpp:36
PowerCubeCtrl::m_params
PowerCubeCtrlParams * m_params
Definition: PowerCubeCtrl.h:233
PowerCubeCtrl::getHorizon
double getHorizon()
Gets the horizon (sec).
Definition: PowerCubeCtrl.cpp:997
PowerCubeCtrlParams
Parameters for cob_powercube_chain.
Definition: PowerCubeCtrlParams.h:26
PowerCubeCtrl::m_status
std::vector< unsigned long > m_status
Definition: PowerCubeCtrl.h:236
PowerCubeCtrl::getErrorMessage
std::string getErrorMessage() const
Get error message.
Definition: PowerCubeCtrl.h:74
PowerCubeCtrl::m_mutex
pthread_mutex_t m_mutex
Definition: PowerCubeCtrl.h:227
PowerCubeCtrl::getPC_Status
PC_CTRL_STATUS getPC_Status() const
Get PC_Status message.
Definition: PowerCubeCtrl.h:82
PowerCubeCtrl::setASyncMotion
bool setASyncMotion()
Configure powercubes to start all movements asynchronously.
Definition: PowerCubeCtrl.cpp:1046
PowerCubeCtrl::Close
bool Close()
Close.
Definition: PowerCubeCtrl.cpp:341
PowerCubeCtrl::PC_CTRL_STATUS
PC_CTRL_STATUS
Definition: PowerCubeCtrl.h:46
PowerCubeCtrl::getPositionAndStatus
bool getPositionAndStatus(int module_id, unsigned long *state, unsigned char *dio, float *position)
Definition: PowerCubeCtrl.cpp:1500
PowerCubeCtrl::setMaxAcceleration
bool setMaxAcceleration(double acceleration)
Sets the maximum angular velocity (rad/s) for the Joints, use with care!
Definition: PowerCubeCtrl.cpp:923
PowerCubeCtrl::m_DeviceHandle
int m_DeviceHandle
Definition: PowerCubeCtrl.h:229
PowerCubeCtrl::getVersion
std::vector< unsigned long > getVersion()
Gets the firmware version of the modules.
Definition: PowerCubeCtrl.cpp:1229
PowerCubeCtrl
Definition: PowerCubeCtrl.h:37
PowerCubeCtrl::m_pc_status
PC_CTRL_STATUS m_pc_status
Definition: PowerCubeCtrl.h:234
PowerCubeCtrl::m_velocities
std::vector< double > m_velocities
Definition: PowerCubeCtrl.h:242
PowerCubeCtrl::updateStates
bool updateStates()
Returns the state of all modules.
Definition: PowerCubeCtrl.cpp:1075
PowerCubeCtrl::m_cached_pos
std::deque< std::vector< double > > m_cached_pos
Definition: PowerCubeCtrl.h:241
PowerCubeCtrl::getVelocities
std::vector< double > getVelocities()
Gets the current velcities.
Definition: PowerCubeCtrl.cpp:1259
PowerCubeCtrl::m_version
std::vector< unsigned long > m_version
Definition: PowerCubeCtrl.h:238
PowerCubeCtrl::PC_CTRL_ERR
@ PC_CTRL_ERR
Definition: PowerCubeCtrl.h:50
PowerCubeCtrl::Init
bool Init(PowerCubeCtrlParams *params)
Initializing.
Definition: PowerCubeCtrl.cpp:75
PowerCubeCtrl::m_Initialized
bool m_Initialized
Definition: PowerCubeCtrl.h:230
PowerCubeCtrlParams.h
PowerCubeCtrl::m_accelerations
std::vector< double > m_accelerations
Definition: PowerCubeCtrl.h:243
PowerCubeCtrl::getJointAngles
bool getJointAngles(std::vector< double > &result)
get the current joint angles
Definition: PowerCubeCtrl.cpp:1277
ros::Time
PowerCubeCtrl::updateVelocities
void updateVelocities(std::vector< double > pos_temp, double delta_t)
Definition: PowerCubeCtrl.cpp:698
m5apiw32.h
PowerCubeCtrl::m_horizon
double m_horizon
Definition: PowerCubeCtrl.h:245
moveCommand.h
PowerCubeCtrl::getAccelerations
std::vector< double > getAccelerations()
Gets the current accelerations.
Definition: PowerCubeCtrl.cpp:1268
PowerCubeCtrl::~PowerCubeCtrl
~PowerCubeCtrl()
Destructor.
Definition: PowerCubeCtrl.cpp:55
PowerCubeCtrl::m_last_time_pub
ros::Time m_last_time_pub
Definition: PowerCubeCtrl.h:247
PowerCubeCtrl::m_ErrorMessage
std::string m_ErrorMessage
Definition: PowerCubeCtrl.h:249
PowerCubeCtrl::statusMoving
bool statusMoving()
Returns true if any of the Joints are still moving.
Definition: PowerCubeCtrl.cpp:1236
PowerCubeCtrl::m_ModuleTypes
std::vector< std::string > m_ModuleTypes
Definition: PowerCubeCtrl.h:237
PowerCubeCtrl::setMaxVelocity
bool setMaxVelocity(double velocity)
Sets the maximum angular velocity (rad/s) for the Joints, use with care!
Definition: PowerCubeCtrl.cpp:864
PowerCubeCtrl::getStatus
bool getStatus(PC_CTRL_STATUS &status, std::vector< std::string > &errorMessages)
Gets the status of the modules.
Definition: PowerCubeCtrl.cpp:1138
PowerCubeCtrl::getPositions
std::vector< double > getPositions()
Gets the current positions.
Definition: PowerCubeCtrl.cpp:1251
PowerCubeCtrl::PC_CTRL_NOT_HOMED
@ PC_CTRL_NOT_HOMED
Definition: PowerCubeCtrl.h:49
PowerCubeCtrl::m_dios
std::vector< unsigned char > m_dios
Definition: PowerCubeCtrl.h:239


schunk_powercube_chain
Author(s): Florian Weisshardt
autogenerated on Sat May 7 2022 02:17:15