qbrobotics_research_api.h
Go to the documentation of this file.
1 
31 #ifndef QBROBOTICS_DRIVER_QBROBOTICS_RESEARCH_API_H
32 #define QBROBOTICS_DRIVER_QBROBOTICS_RESEARCH_API_H
33 
34 // standard libraries
35 #include <iomanip>
36 #include <map>
37 #include <memory>
38 #include <thread>
39 #include <vector>
40 // project libraries
41 #include <serial/serial.h>
43 
44 namespace qbrobotics_research_api {
45 
51  public:
57  uint8_t id {0};
58  std::string serial_number {};
59  std::string type {};
60  std::string sub_type {};
61  };
62 
63  Communication();
64  explicit Communication(uint32_t baud_rate);
65  explicit Communication(const serial::Serial::Timeout &timeout);
66  explicit Communication(uint32_t baud_rate, const serial::Serial::Timeout &timeout);
67  virtual ~Communication() = default;
68 
69  virtual int listConnectedDevices();
77  virtual int listConnectedDevices(const std::string &serial_port_name, std::vector<ConnectedDeviceInfo> &device_ids);
84  virtual int listSerialPorts(std::vector<serial::PortInfo> &serial_ports_info);
85 
92  virtual int closeSerialPort(const std::string &serial_port_name);
93 
100  virtual int createSerialPort(const std::string &serial_port_name);
101 
109  virtual int createSerialPort(const std::string &serial_port_name, uint32_t baud_rate);
110 
118  virtual int createSerialPort(const std::string &serial_port_name, const serial::Serial::Timeout &timeout);
119 
127  virtual int createSerialPort(const std::string &serial_port_name, uint32_t baud_rate, const serial::Serial::Timeout &timeout);
128 
134  virtual int openSerialPort(const std::string &serial_port_name);
135 
142  virtual int openSerialPort(const std::string &serial_port_name, uint32_t baud_rate);
143 
150  virtual int openSerialPort(const std::string &serial_port_name, serial::Serial::Timeout &timeout);
151 
159  virtual int openSerialPort(const std::string &serial_port_name, uint32_t baud_rate, serial::Serial::Timeout &timeout);
160 
161  /*
162  -----------------
163  parse package, send commands and other utilities to control qbrobotics devices
164  -----------------
165  */
166 
167  virtual int parsePackage(const std::string &serial_port_name, uint8_t device_id, uint8_t command);
168  virtual int parsePackage(const std::string &serial_port_name, uint8_t device_id, uint8_t command, std::vector<int8_t> &data_in);
169  virtual int sendCommand(const std::string &serial_port_name, uint8_t device_id, uint8_t command);
170  virtual int sendCommand(const std::string &serial_port_name, uint8_t device_id, uint8_t command, const std::vector<int8_t> &data_out);
171  virtual int sendCommandAndParse(const std::string &serial_port_name, uint8_t device_id, uint8_t command);
172  virtual int sendCommandAndParse(const std::string &serial_port_name, uint8_t device_id, uint8_t command, uint8_t max_repeats);
173  virtual int sendCommandAndParse(const std::string &serial_port_name, uint8_t device_id, uint8_t command, std::vector<int8_t> &data_in);
174  virtual int sendCommandAndParse(const std::string &serial_port_name, uint8_t device_id, uint8_t command, uint8_t max_repeats, std::vector<int8_t> &data_in);
175  virtual int sendCommandAndParse(const std::string &serial_port_name, uint8_t device_id, uint8_t command, const std::vector<int8_t> &data_out);
176  virtual int sendCommandAndParse(const std::string &serial_port_name, uint8_t device_id, uint8_t command, uint8_t max_repeats, const std::vector<int8_t> &data_out);
177  virtual int sendCommandAndParse(const std::string &serial_port_name, uint8_t device_id, uint8_t command, const std::vector<int8_t> &data_out, std::vector<int8_t> &data_in);
178  virtual int sendCommandAndParse(const std::string &serial_port_name, uint8_t device_id, uint8_t command, uint8_t max_repeats, const std::vector<int8_t> &data_out, std::vector<int8_t> &data_in);
179  virtual int sendCommandBroadcast(const std::string &serial_port_name, uint8_t command);
180  virtual int sendCommandBroadcast(const std::string &serial_port_name, uint8_t command, const std::vector<int8_t> &data_out);
181  //WARN: broadcast should be used only for non-returning methods (it is unreliable for returning methods)
182 
183  virtual int deserializePackage(const std::vector<uint8_t> &package_in, uint8_t &device_id, uint8_t &command);
184  virtual int deserializePackage(const std::vector<uint8_t> &package_in, uint8_t &device_id, uint8_t &command, std::vector<int8_t> &data);
185  virtual int readPackage(const std::string &serial_port_name, std::vector<uint8_t> &package_in);
186  virtual int readPackage(const std::string &serial_port_name, uint8_t &device_id, uint8_t &command);
187  virtual int readPackage(const std::string &serial_port_name, uint8_t &device_id, uint8_t &command, std::vector<int8_t> &data);
188  virtual int serializePackage(uint8_t device_id, uint8_t command, std::vector<uint8_t> &package_out);
189  virtual int serializePackage(uint8_t device_id, uint8_t command, const std::vector<int8_t> &data, std::vector<uint8_t> &package_out);
190  virtual int writePackage(const std::string &serial_port_name, const std::vector<uint8_t> &package_out);
191  virtual int writePackage(const std::string &serial_port_name, uint8_t device_id, uint8_t command);
192  virtual int writePackage(const std::string &serial_port_name, uint8_t device_id, uint8_t command, const std::vector<int8_t> &data);
193 
194  virtual uint8_t checksum(const std::vector<uint8_t> &data, uint32_t size);
195 
196  template<class T>
197  static void swapBytes(T &x) {
198  auto a = reinterpret_cast<uint8_t*>(std::addressof(x));
199  for(auto b = a+sizeof(T)-1; a<b; ++a,--b) {
200  std::swap(*a, *b);
201  }
202  }
203  template<class T>
204  static void swapBytes(std::vector<T> &vector) {
205  for (auto &&item : vector) { // auto && is required by std::vector<bool> which returns a prvalueL
206  swapBytes(item);
207  }
208  }
209  template<class S, class T>
210  static std::vector<S> vectorCast(std::vector<T> vector) {
211  auto data_in = reinterpret_cast<S*>(vector.data());
212  std::vector<S> data_out(data_in, data_in+vector.size()*sizeof(T)/sizeof(S));
213  return data_out;
214  }
215  template<class S, class T>
216  static std::vector<S> vectorCastAndSwap(std::vector<T> vector) {
217  auto data_out = vectorCast<S>(vector);
218  swapBytes(data_out);
219  return data_out;
220  }
221  template<class S, class T>
222  static std::vector<S> vectorSwapAndCast(std::vector<T> vector) {
223  swapBytes(vector);
224  return vectorCast<S>(vector);
225  }
226 
227  std::map<std::string, std::shared_ptr<serial::Serial>> getSerialPorts() { return serial_ports_; }
228 
229  protected:
230  explicit Communication(const Communication &communication);
231  explicit Communication(const Communication &communication, const serial::Serial::Timeout &timeout);
232 
233  std::map<std::string, std::vector<ConnectedDeviceInfo>> connected_devices_;
234  std::map<std::string, serial::PortInfo> serial_ports_info_;
235  std::map<std::string, std::shared_ptr<serial::Serial>> serial_ports_;
236 
239 
240  bool isInSerialPorts(const std::string &serial_port_name);
241  bool isInSerialPortsInfo(const std::string &serial_port_name);
242 };
243 
249  public:
250  CommunicationLegacy() = default;
251  explicit CommunicationLegacy(const Communication &communication);
252  explicit CommunicationLegacy(const Communication &communication, const serial::Serial::Timeout &timeout);
253  virtual ~CommunicationLegacy() = default;
254 
255  int parsePackage(const std::string &serial_port_name, uint8_t device_id, uint8_t command, std::vector<int8_t> &data_in) override;
256  int sendCommandAndParse(const std::string &serial_port_name, uint8_t device_id, uint8_t command, uint8_t max_repeats, const std::vector<int8_t> &data_out, std::vector<int8_t> &data_in) override;
257 
258  int deserializePackage(const std::vector<uint8_t> &package_in, uint8_t &device_id, uint8_t &command, std::vector<int8_t> &data) override;
259  int readLongPackage(const std::string &serial_port_name, std::vector<uint8_t> &package_in);
260  int readPackage(const std::string &serial_port_name, uint8_t &device_id, uint8_t &command, std::vector<int8_t> &data) override;
261  int readPackage(const std::string &serial_port_name, std::vector<uint8_t> &package_in) override;
262 };
263 
268 class Device {
269  public:
274  class Params {
275  public:
276  Params() = default;
277  virtual ~Params() = default;
278 
279  virtual void initParams(const std::vector<int8_t> &param_buffer);
280 
281  template<class T>
282  static void getParameter(uint8_t param_id, const std::vector<int8_t> &param_buffer, std::vector<T> &param_vector) {
283  auto number_of_values = static_cast<uint8_t>(param_buffer.at((param_id-1)*PARAM_BYTE_SLOT + 2));
284  auto param_iter = param_buffer.begin() + (param_id-1)*PARAM_BYTE_SLOT + 3;
285  std::vector<int8_t> param_bytes(param_iter, param_iter + number_of_values*sizeof(T));
286  param_vector = Communication::vectorCastAndSwap<T>(param_bytes);
287  }
288  template<class T>
289  static void getParameter(uint8_t param_id, const std::vector<int8_t> &param_buffer, T &param) {
290  std::vector<T> param_vector;
291  getParameter(param_id, param_buffer, param_vector);
292  param = param_vector.front();
293  }
294 
295  std::string serial_number {};
296  std::string type {};
297  std::string sub_type {};
298 
299  uint8_t id {0};
300  std::vector<float> position_pid;
301  std::vector<float> current_pid;
302  uint8_t startup_activation {false}; // should be bool
303  uint8_t input_mode {0};
304  uint8_t control_mode {0};
305  std::vector<uint8_t> encoder_resolutions;
306  std::vector<int16_t> encoder_offsets;
307  std::vector<float> encoder_multipliers;
308  uint8_t use_position_limits {false}; // should be bool
309  std::vector<int32_t> position_limits;
310  std::vector<int32_t> position_max_steps;
311  int16_t current_limit {0};
312  uint8_t rate_limiter {0}; // param id after softhand params
313  };
314 
315  explicit Device(std::shared_ptr<Communication> communication, std::string name, std::string serial_port, uint8_t id);
316  explicit Device(std::shared_ptr<Communication> communication, std::string name, std::string serial_port, uint8_t id, bool init_params);
317  explicit Device(std::shared_ptr<Communication> communication, std::string name, std::string serial_port, uint8_t id, bool init_params, std::unique_ptr<Params> params);
318  virtual ~Device() = default;
319 
320  virtual int ping();
321 
328  virtual int getControlReferences(std::vector<int16_t> &control_references);
329 
336  virtual int getCurrents(std::vector<int16_t> &currents);
337 
345  virtual int getCurrentsAndPositions(std::vector<int16_t> &currents, std::vector<int16_t> &positions);
346 
353  virtual int getPositions(std::vector<int16_t> &positions);
354 
361  virtual int getVelocities(std::vector<int16_t> &velocities);
362 
369  virtual int getAccelerations(std::vector<int16_t> &accelerations);
370 
377  virtual int getMotorStates(bool &motor_state);
378  virtual int getCycleTime(int16_t &cycle_time);
379 
386  virtual int setControlReferences(const std::vector<int16_t> &control_references);
387 
394  virtual int setControlReferencesAndWait(const std::vector<int16_t> &control_references);
395 
402  virtual int setMotorStates(bool motor_state);
403 
410  virtual int getInfo(std::string &info);
411 
419  virtual int getInfo(uint16_t info_type, std::string &info);
420 
427  virtual int getParameters(std::vector<int8_t> &param_buffer);
428 
438  virtual int getParameters(uint8_t id, std::vector<int8_t> &param_buffer);
439 
445  virtual int getParamId();
446 
455  virtual int getParamId(uint8_t &id);
456 
462  virtual int getParamPositionPID();
463 
470  virtual int getParamPositionPID(std::vector<float> &position_pid);
471 
477  virtual int getParamCurrentPID();
478 
485  virtual int getParamCurrentPID(std::vector<float> &current_pid);
486 
492  virtual int getParamStartupActivation();
493 
500  virtual int getParamStartupActivation(uint8_t &startup_activation);
501 
513  virtual int getParamInputMode();
514 
527  virtual int getParamInputMode(uint8_t &input_mode);
528 
539  virtual int getParamControlMode();
540 
553  virtual int getParamControlMode(uint8_t &control_mode);
554 
560  virtual int getParamEncoderResolutions();
561 
568  virtual int getParamEncoderResolutions(std::vector<uint8_t> &encoder_resolutions);
569 
575  virtual int getParamEncoderOffsets();
576 
583  virtual int getParamEncoderOffsets(std::vector<int16_t> &encoder_offsets);
584 
590  virtual int getParamEncoderMultipliers();
591 
598  virtual int getParamEncoderMultipliers(std::vector<float> &encoder_multipliers);
599 
605  virtual int getParamUsePositionLimits();
606 
613  virtual int getParamUsePositionLimits(uint8_t &use_position_limits);
614 
620  virtual int getParamPositionLimits();
621 
628  virtual int getParamPositionLimits(std::vector<int32_t> &position_limits);
629 
635  virtual int getParamPositionMaxSteps();
636 
643  virtual int getParamPositionMaxSteps(std::vector<int32_t> &position_max_steps);
644 
650  virtual int getParamCurrentLimit();
651 
658  virtual int getParamCurrentLimit(int16_t &current_limit);
659 
668  virtual int setParameter(uint16_t param_type, const std::vector<int8_t> &param_data);
669 
676  virtual int setParamId(uint8_t id);
677 
685  virtual int setParamPositionPID(const std::vector<float> &position_pid);
686 
694  virtual int setParamCurrentPID(const std::vector<float> &current_pid);
695 
702  virtual int setParamStartupActivation(bool startup_activation);
703 
711  virtual int setParamInputMode(uint8_t input_mode);
712 
720  virtual int setParamControlMode(uint8_t control_mode);
721 
729  virtual int setParamEncoderResolutions(const std::vector<uint8_t> &encoder_resolutions);
730 
738  virtual int setParamEncoderOffsets(const std::vector<int16_t> &encoder_offsets);
739 
747  virtual int setParamEncoderMultipliers(const std::vector<float> &encoder_multipliers);
748 
756  virtual int setParamUsePositionLimits(bool use_position_limits);
757 
765  virtual int setParamPositionLimits(const std::vector<int32_t> &position_limits);
766 
774  virtual int setParamPositionMaxSteps(const std::vector<int32_t> &position_max_steps);
775 
783  virtual int setParamCurrentLimit(int16_t current_limit);
784 
790  virtual int setParamZeros();
791 
799  virtual int setParamBaudrate(uint8_t prescaler_divider);
800 
807  virtual int restoreFactoryDataMemory();
808 
816  virtual int restoreUserDataMemory();
817 
825  virtual int storeFactoryDataMemory();
826 
834  virtual int storeUserDataMemory();
835 
842  virtual int setBootloaderMode();
843 
844  std::shared_ptr<Params> getParams() { return params_; }
845  bool isQbmove() { return params_->type == "001"; }
846  bool isSHPRO() { return params_->type == "006" && params_->sub_type == "001"; }
847  bool isSH2M() { return params_->type == "006" && params_->sub_type == "020"; }
848 
849  protected:
850  std::string name_;
851  std::string serial_port_;
852  std::shared_ptr<Params> params_;
853  std::shared_ptr<Communication> communication_;
854 };
855 
856 } // namespace qbrobotics_research_api
857 
858 #endif // QBROBOTICS_DRIVER_QBROBOTICS_RESEARCH_API_H
qbrobotics_research_api::Communication::closeSerialPort
virtual int closeSerialPort(const std::string &serial_port_name)
Close the serial port if it belongs to the opened port set.
Definition: qbrobotics_research_api.cpp:149
qbrobotics_research_api::Device::setParameter
virtual int setParameter(uint16_t param_type, const std::vector< int8_t > &param_data)
Set the Parameter specified by param_type with the values stored in param_data.
Definition: qbrobotics_research_api.cpp:941
qbrobotics_research_api::CommunicationLegacy::sendCommandAndParse
int sendCommandAndParse(const std::string &serial_port_name, uint8_t device_id, uint8_t command, uint8_t max_repeats, const std::vector< int8_t > &data_out, std::vector< int8_t > &data_in) override
Definition: qbrobotics_research_api.cpp:505
qbrobotics_research_api::Device::getParamEncoderResolutions
virtual int getParamEncoderResolutions()
Update the device encoder resolutions in the class variable param_.
Definition: qbrobotics_research_api.cpp:850
qbrobotics_research_api::Communication::serial_ports_
std::map< std::string, std::shared_ptr< serial::Serial > > serial_ports_
Definition: qbrobotics_research_api.h:235
qbrobotics_research_api::Device::getParamId
virtual int getParamId()
Update the device ID in the class variable param_.
Definition: qbrobotics_research_api.cpp:772
qbrobotics_research_api::Communication::writePackage
virtual int writePackage(const std::string &serial_port_name, const std::vector< uint8_t > &package_out)
Definition: qbrobotics_research_api.cpp:442
qbrobotics_research_api::Communication::deserializePackage
virtual int deserializePackage(const std::vector< uint8_t > &package_in, uint8_t &device_id, uint8_t &command)
Definition: qbrobotics_research_api.cpp:337
qbrobotics_research_api::Device::getParameters
virtual int getParameters(std::vector< int8_t > &param_buffer)
Get the parameters from the device.
Definition: qbrobotics_research_api.cpp:759
qbrobotics_research_api::CommunicationLegacy::readLongPackage
int readLongPackage(const std::string &serial_port_name, std::vector< uint8_t > &package_in)
Definition: qbrobotics_research_api.cpp:574
qbrobotics_research_api::Communication::openSerialPort
virtual int openSerialPort(const std::string &serial_port_name)
Open the serial communication on the given serial port.
Definition: qbrobotics_research_api.cpp:188
qbrobotics_research_api::Device::Params::getParameter
static void getParameter(uint8_t param_id, const std::vector< int8_t > &param_buffer, std::vector< T > &param_vector)
Definition: qbrobotics_research_api.h:282
qbrobotics_research_api::Device::Params::position_limits
std::vector< int32_t > position_limits
Definition: qbrobotics_research_api.h:309
qbrobotics_research_api::Communication::connected_devices_
std::map< std::string, std::vector< ConnectedDeviceInfo > > connected_devices_
Definition: qbrobotics_research_api.h:233
qbrobotics_research_api::Device::Params::position_max_steps
std::vector< int32_t > position_max_steps
Definition: qbrobotics_research_api.h:310
qbrobotics_research_api::Device::params_
std::shared_ptr< Params > params_
Definition: qbrobotics_research_api.h:852
qbrobotics_research_api::Device::Params::use_position_limits
uint8_t use_position_limits
Definition: qbrobotics_research_api.h:308
qbrobotics_research_api::Device::ping
virtual int ping()
Definition: qbrobotics_research_api.cpp:635
qbrobotics_research_api::Device::~Device
virtual ~Device()=default
qbrobotics_research_api::Device::Params::current_pid
std::vector< float > current_pid
Definition: qbrobotics_research_api.h:301
qbrobotics_research_api::CommunicationLegacy
Communication class with a few fix for 6.X.X firmware devices.
Definition: qbrobotics_research_api.h:248
qbrobotics_research_api::Device::setParamEncoderResolutions
virtual int setParamEncoderResolutions(const std::vector< uint8_t > &encoder_resolutions)
Set the encoder resolutions parameters of the device.
Definition: qbrobotics_research_api.cpp:1007
qbrobotics_research_api::Device::name_
std::string name_
Definition: qbrobotics_research_api.h:850
command
ROSLIB_DECL std::string command(const std::string &cmd)
qbrobotics_research_commands.h
qbrobotics_research_api::Device::getCycleTime
virtual int getCycleTime(int16_t &cycle_time)
Definition: qbrobotics_research_api.cpp:708
qbrobotics_research_api::Communication::ConnectedDeviceInfo
Structure containing information about the type of device connected.
Definition: qbrobotics_research_api.h:56
serial::Serial::Timeout
Definition: serial.h:101
qbrobotics_research_api::Device::getParamControlMode
virtual int getParamControlMode()
Update the device control mode in the class variable param_.
Definition: qbrobotics_research_api.cpp:837
qbrobotics_research_api::Communication::vectorCastAndSwap
static std::vector< S > vectorCastAndSwap(std::vector< T > vector)
Definition: qbrobotics_research_api.h:216
qbrobotics_research_api::Device::setParamEncoderOffsets
virtual int setParamEncoderOffsets(const std::vector< int16_t > &encoder_offsets)
Set the encoder offsets parameters of the device.
Definition: qbrobotics_research_api.cpp:1015
qbrobotics_research_api::Device::setBootloaderMode
virtual int setBootloaderMode()
Set the bootloader mode.
Definition: qbrobotics_research_api.cpp:1146
qbrobotics_research_api::Device::getParams
std::shared_ptr< Params > getParams()
Definition: qbrobotics_research_api.h:844
qbrobotics_research_api::Device::isSH2M
bool isSH2M()
Definition: qbrobotics_research_api.h:847
qbrobotics_research_api::Device::Params::control_mode
uint8_t control_mode
Definition: qbrobotics_research_api.h:304
qbrobotics_research_api::Device::Params::~Params
virtual ~Params()=default
qbrobotics_research_api::Device::Params::encoder_resolutions
std::vector< uint8_t > encoder_resolutions
Definition: qbrobotics_research_api.h:305
qbrobotics_research_api::Communication::serial_ports_baud_rate_
uint32_t serial_ports_baud_rate_
Definition: qbrobotics_research_api.h:237
qbrobotics_research_api::Communication::swapBytes
static void swapBytes(T &x)
Definition: qbrobotics_research_api.h:197
qbrobotics_research_api::Device::restoreFactoryDataMemory
virtual int restoreFactoryDataMemory()
Restore factory parameter on 7.X.X firmware devices.
Definition: qbrobotics_research_api.cpp:1096
qbrobotics_research_api::Communication::isInSerialPorts
bool isInSerialPorts(const std::string &serial_port_name)
Definition: qbrobotics_research_api.cpp:463
qbrobotics_research_api
Definition: qbmove_research_api.h:33
qbrobotics_research_api::CommunicationLegacy::parsePackage
int parsePackage(const std::string &serial_port_name, uint8_t device_id, uint8_t command, std::vector< int8_t > &data_in) override
Definition: qbrobotics_research_api.cpp:477
qbrobotics_research_api::Device::getParamPositionLimits
virtual int getParamPositionLimits()
Update the position limits parameters in the class variable param_.
Definition: qbrobotics_research_api.cpp:902
qbrobotics_research_api::Device::getParamInputMode
virtual int getParamInputMode()
Get the input mode parameter in the class variable param_.
Definition: qbrobotics_research_api.cpp:824
qbrobotics_research_api::Device::setMotorStates
virtual int setMotorStates(bool motor_state)
Activate or deactivate the motor(s)
Definition: qbrobotics_research_api.cpp:737
qbrobotics_research_api::Communication::ConnectedDeviceInfo::sub_type
std::string sub_type
Definition: qbrobotics_research_api.h:60
qbrobotics_research_api::Device::storeUserDataMemory
virtual int storeUserDataMemory()
Store the changed parameters on 7.X.X firmware devices in user memory.
Definition: qbrobotics_research_api.cpp:1124
qbrobotics_research_api::Device::Params::input_mode
uint8_t input_mode
Definition: qbrobotics_research_api.h:303
qbrobotics_research_api::Device::storeFactoryDataMemory
virtual int storeFactoryDataMemory()
Store the changed parameters on 7.X.X firmware devices in factory memory.
Definition: qbrobotics_research_api.cpp:1135
qbrobotics_research_api::Device::serial_port_
std::string serial_port_
Definition: qbrobotics_research_api.h:851
qbrobotics_research_api::Communication::ConnectedDeviceInfo::serial_number
std::string serial_number
Definition: qbrobotics_research_api.h:58
qbrobotics_research_api::Device::getParamPositionPID
virtual int getParamPositionPID()
Update the device position PID parameters in the class variable param_.
Definition: qbrobotics_research_api.cpp:785
qbrobotics_research_api::Device::setParamControlMode
virtual int setParamControlMode(uint8_t control_mode)
Set the control mode parameter of the device.
Definition: qbrobotics_research_api.cpp:999
qbrobotics_research_api::Communication::vectorCast
static std::vector< S > vectorCast(std::vector< T > vector)
Definition: qbrobotics_research_api.h:210
qbrobotics_research_api::Device::getParamEncoderOffsets
virtual int getParamEncoderOffsets()
Update the device encoder offsets in the class variable param_.
Definition: qbrobotics_research_api.cpp:863
qbrobotics_research_api::Device::Params::sub_type
std::string sub_type
Definition: qbrobotics_research_api.h:297
qbrobotics_research_api::Device
General class that allow to get/set parameters from/to qbrobotics devices.
Definition: qbrobotics_research_api.h:268
qbrobotics_research_api::Communication::sendCommand
virtual int sendCommand(const std::string &serial_port_name, uint8_t device_id, uint8_t command)
Definition: qbrobotics_research_api.cpp:254
qbrobotics_research_api::Communication::~Communication
virtual ~Communication()=default
qbrobotics_research_api::Device::getParamPositionMaxSteps
virtual int getParamPositionMaxSteps()
Update the max step position parameters in the class variable param_.
Definition: qbrobotics_research_api.cpp:915
qbrobotics_research_api::Device::setParamInputMode
virtual int setParamInputMode(uint8_t input_mode)
Set the input mode parameter of the device.
Definition: qbrobotics_research_api.cpp:991
qbrobotics_research_api::Device::getParamCurrentPID
virtual int getParamCurrentPID()
Update the device current PID parameters in the class variable param_.
Definition: qbrobotics_research_api.cpp:798
qbrobotics_research_api::Device::communication_
std::shared_ptr< Communication > communication_
Definition: qbrobotics_research_api.h:853
qbrobotics_research_api::Device::getParamUsePositionLimits
virtual int getParamUsePositionLimits()
Update the the use of position limits in the class variable param_.
Definition: qbrobotics_research_api.cpp:889
qbrobotics_research_api::Device::restoreUserDataMemory
virtual int restoreUserDataMemory()
Restore user parameter on 7.X.X firmware devices.
Definition: qbrobotics_research_api.cpp:1110
qbrobotics_research_api::Device::getControlReferences
virtual int getControlReferences(std::vector< int16_t > &control_references)
Get the reference command sent to the motor(s) of the device.
Definition: qbrobotics_research_api.cpp:639
qbrobotics_research_api::Device::getMotorStates
virtual int getMotorStates(bool &motor_state)
Get the device motor state.
Definition: qbrobotics_research_api.cpp:696
qbrobotics_research_api::Communication::isInSerialPortsInfo
bool isInSerialPortsInfo(const std::string &serial_port_name)
Definition: qbrobotics_research_api.cpp:467
qbrobotics_research_api::Device::isQbmove
bool isQbmove()
Definition: qbrobotics_research_api.h:845
qbrobotics_research_api::Device::setControlReferencesAndWait
virtual int setControlReferencesAndWait(const std::vector< int16_t > &control_references)
Set motor(s) control reference and wait for acknowledge - position[tick](only for legacy qbmoves)
Definition: qbrobotics_research_api.cpp:725
qbrobotics_research_api::Device::setParamCurrentPID
virtual int setParamCurrentPID(const std::vector< float > &current_pid)
Set the current PID parameters of the device.
Definition: qbrobotics_research_api.cpp:975
qbrobotics_research_api::Device::Params::type
std::string type
Definition: qbrobotics_research_api.h:296
qbrobotics_research_api::Device::getInfo
virtual int getInfo(std::string &info)
Get all system information.
Definition: qbrobotics_research_api.cpp:745
qbrobotics_research_api::Device::setParamPositionPID
virtual int setParamPositionPID(const std::vector< float > &position_pid)
Set the position PID parameters of the device.
Definition: qbrobotics_research_api.cpp:967
qbrobotics_research_api::Device::setParamEncoderMultipliers
virtual int setParamEncoderMultipliers(const std::vector< float > &encoder_multipliers)
Set the encoder multipliers parameters of the device.
Definition: qbrobotics_research_api.cpp:1023
qbrobotics_research_api::Device::getVelocities
virtual int getVelocities(std::vector< int16_t > &velocities)
Get the motor(s) velocitie(s)
Definition: qbrobotics_research_api.cpp:678
qbrobotics_research_api::Device::Params::rate_limiter
uint8_t rate_limiter
Definition: qbrobotics_research_api.h:312
qbrobotics_research_api::Communication::serial_ports_timeout_
serial::Serial::Timeout serial_ports_timeout_
Definition: qbrobotics_research_api.h:238
qbrobotics_research_api::Communication::sendCommandBroadcast
virtual int sendCommandBroadcast(const std::string &serial_port_name, uint8_t command)
Definition: qbrobotics_research_api.cpp:326
qbrobotics_research_api::Device::Device
Device(std::shared_ptr< Communication > communication, std::string name, std::string serial_port, uint8_t id)
Definition: qbrobotics_research_api.cpp:611
qbrobotics_research_api::Device::Params::encoder_offsets
std::vector< int16_t > encoder_offsets
Definition: qbrobotics_research_api.h:306
qbrobotics_research_api::Device::Params::getParameter
static void getParameter(uint8_t param_id, const std::vector< int8_t > &param_buffer, T &param)
Definition: qbrobotics_research_api.h:289
qbrobotics_research_api::Device::getAccelerations
virtual int getAccelerations(std::vector< int16_t > &accelerations)
Get the motor(s) acceleration(s)
Definition: qbrobotics_research_api.cpp:687
qbrobotics_research_api::Communication::serial_ports_info_
std::map< std::string, serial::PortInfo > serial_ports_info_
Definition: qbrobotics_research_api.h:234
qbrobotics_research_api::Device::setParamId
virtual int setParamId(uint8_t id)
Set the ID of the device.
Definition: qbrobotics_research_api.cpp:959
qbrobotics_research_api::CommunicationLegacy::deserializePackage
int deserializePackage(const std::vector< uint8_t > &package_in, uint8_t &device_id, uint8_t &command, std::vector< int8_t > &data) override
Definition: qbrobotics_research_api.cpp:548
qbrobotics_research_api::Device::setParamZeros
virtual int setParamZeros()
Set motor(s) zero(s) to actual encoder reading.
Definition: qbrobotics_research_api.cpp:1063
qbrobotics_research_api::Device::Params::startup_activation
uint8_t startup_activation
Definition: qbrobotics_research_api.h:302
qbrobotics_research_api::Device::getCurrents
virtual int getCurrents(std::vector< int16_t > &currents)
Get the device current(s) absorbed by the motor(s)
Definition: qbrobotics_research_api.cpp:648
qbrobotics_research_api::Device::setParamBaudrate
virtual int setParamBaudrate(uint8_t prescaler_divider)
Set the device baud rate.
Definition: qbrobotics_research_api.cpp:1071
qbrobotics_research_api::Device::getCurrentsAndPositions
virtual int getCurrentsAndPositions(std::vector< int16_t > &currents, std::vector< int16_t > &positions)
Get the device currents absorbed by the motor(s) and its/their position(s)
Definition: qbrobotics_research_api.cpp:657
qbrobotics_research_api::Communication::listSerialPorts
virtual int listSerialPorts(std::vector< serial::PortInfo > &serial_ports_info)
List all the serial ports with a qbrobotics device connected.
Definition: qbrobotics_research_api.cpp:59
qbrobotics_research_api::Device::Params
Manage qbrobotics devices parameters.
Definition: qbrobotics_research_api.h:274
serial.h
PARAM_BYTE_SLOT
#define PARAM_BYTE_SLOT
Definition: qbrobotics_research_commands.h:33
qbrobotics_research_api::Device::Params::encoder_multipliers
std::vector< float > encoder_multipliers
Definition: qbrobotics_research_api.h:307
qbrobotics_research_api::CommunicationLegacy::~CommunicationLegacy
virtual ~CommunicationLegacy()=default
qbrobotics_research_api::Communication::parsePackage
virtual int parsePackage(const std::string &serial_port_name, uint8_t device_id, uint8_t command)
Definition: qbrobotics_research_api.cpp:221
qbrobotics_research_api::Device::Params::initParams
virtual void initParams(const std::vector< int8_t > &param_buffer)
Definition: qbrobotics_research_api.cpp:1079
qbrobotics_research_api::CommunicationLegacy::CommunicationLegacy
CommunicationLegacy()=default
qbrobotics_research_api::Device::Params::Params
Params()=default
qbrobotics_research_api::Device::getPositions
virtual int getPositions(std::vector< int16_t > &positions)
Get the Positions given by the encoders mounted on the device.
Definition: qbrobotics_research_api.cpp:669
qbrobotics_research_api::Device::setParamUsePositionLimits
virtual int setParamUsePositionLimits(bool use_position_limits)
Enable or disable the use of position limits.
Definition: qbrobotics_research_api.cpp:1031
qbrobotics_research_api::Device::setParamCurrentLimit
virtual int setParamCurrentLimit(int16_t current_limit)
Set the cerrent limit parameter of the device.
Definition: qbrobotics_research_api.cpp:1055
qbrobotics_research_api::Communication::serializePackage
virtual int serializePackage(uint8_t device_id, uint8_t command, std::vector< uint8_t > &package_out)
Definition: qbrobotics_research_api.cpp:413
qbrobotics_research_api::Device::Params::position_pid
std::vector< float > position_pid
Definition: qbrobotics_research_api.h:300
qbrobotics_research_api::Communication::Communication
Communication()
Definition: qbrobotics_research_api.cpp:36
qbrobotics_research_api::Device::setParamStartupActivation
virtual int setParamStartupActivation(bool startup_activation)
Set the startup activation parameter of the device.
Definition: qbrobotics_research_api.cpp:983
qbrobotics_research_api::Communication::getSerialPorts
std::map< std::string, std::shared_ptr< serial::Serial > > getSerialPorts()
Definition: qbrobotics_research_api.h:227
param
T param(const std::string &param_name, const T &default_val)
qbrobotics_research_api::Device::getParamCurrentLimit
virtual int getParamCurrentLimit()
Update the current limits parameters in the class variable param_.
Definition: qbrobotics_research_api.cpp:928
qbrobotics_research_api::Communication::checksum
virtual uint8_t checksum(const std::vector< uint8_t > &data, uint32_t size)
Definition: qbrobotics_research_api.cpp:453
qbrobotics_research_api::Communication::ConnectedDeviceInfo::type
std::string type
Definition: qbrobotics_research_api.h:59
qbrobotics_research_api::Device::setParamPositionMaxSteps
virtual int setParamPositionMaxSteps(const std::vector< int32_t > &position_max_steps)
Set the position max steps parameters of the device.
Definition: qbrobotics_research_api.cpp:1047
qbrobotics_research_api::Device::isSHPRO
bool isSHPRO()
Definition: qbrobotics_research_api.h:846
qbrobotics_research_api::CommunicationLegacy::readPackage
int readPackage(const std::string &serial_port_name, uint8_t &device_id, uint8_t &command, std::vector< int8_t > &data) override
Definition: qbrobotics_research_api.cpp:584
qbrobotics_research_api::Communication::sendCommandAndParse
virtual int sendCommandAndParse(const std::string &serial_port_name, uint8_t device_id, uint8_t command)
Definition: qbrobotics_research_api.cpp:269
qbrobotics_research_api::Communication::swapBytes
static void swapBytes(std::vector< T > &vector)
Definition: qbrobotics_research_api.h:204
qbrobotics_research_api::Device::Params::current_limit
int16_t current_limit
Definition: qbrobotics_research_api.h:311
qbrobotics_research_api::Communication::listConnectedDevices
virtual int listConnectedDevices()
Definition: qbrobotics_research_api.cpp:95
qbrobotics_research_api::Device::getParamStartupActivation
virtual int getParamStartupActivation()
Update the startup activation parameter in the class variable param_.
Definition: qbrobotics_research_api.cpp:811
qbrobotics_research_api::Device::Params::serial_number
std::string serial_number
Definition: qbrobotics_research_api.h:295
qbrobotics_research_api::Device::setParamPositionLimits
virtual int setParamPositionLimits(const std::vector< int32_t > &position_limits)
Set the position limits parameters of the device.
Definition: qbrobotics_research_api.cpp:1039
qbrobotics_research_api::Communication::readPackage
virtual int readPackage(const std::string &serial_port_name, std::vector< uint8_t > &package_in)
Definition: qbrobotics_research_api.cpp:388
qbrobotics_research_api::Communication::vectorSwapAndCast
static std::vector< S > vectorSwapAndCast(std::vector< T > vector)
Definition: qbrobotics_research_api.h:222
qbrobotics_research_api::Communication::createSerialPort
virtual int createSerialPort(const std::string &serial_port_name)
put in the class map serial_ports_ a newly created shared pointer Serial class that provides a portab...
Definition: qbrobotics_research_api.cpp:163
qbrobotics_research_api::Device::setControlReferences
virtual int setControlReferences(const std::vector< int16_t > &control_references)
Set motor(s) control reference - position[tick].
Definition: qbrobotics_research_api.cpp:717
qbrobotics_research_api::Communication
Class that handles the communication with 7.X.X firmware devices.
Definition: qbrobotics_research_api.h:50
qbrobotics_research_api::Device::getParamEncoderMultipliers
virtual int getParamEncoderMultipliers()
Update the device encoder multipliers in the class variable param_.
Definition: qbrobotics_research_api.cpp:876


qb_device_driver
Author(s): qbroboticsĀ®
autogenerated on Thu Apr 27 2023 02:36:32