mrp2_serial.h
Go to the documentation of this file.
1 #ifndef MRP2_SERIAL_H
2 #define MRP2_SERIAL_H
3 
4 #include "serial_comm.h"
5 #include "usb_comm.h"
6 #include "time.h"
7 #include <sys/time.h>
8 #include <string>
9 #include <stdint.h>
10 #include <unistd.h>
11 #include <vector>
12 
13 using std::string;
14 
15 typedef enum {
23  }diag_t;
24 
26 {
27  public:
28  MRP2_Serial(std::string port_name, uint32_t baudrate = 38400, std::string mode = "8N1", bool simple = true);
29  MRP2_Serial(uint16_t vendor_id, uint16_t product_id, int ep_in_addr, int ep_out_addr, bool simple = true);
30  virtual ~MRP2_Serial ();
31  void set_speeds(int32_t left_speed, int32_t right_speed);
32  void set_speed_l(int32_t left_speed);
33  void set_speed_r(int32_t right_speed);
34  void set_param_pid(char side, char param, float value);
35  void set_param_imax(char side, uint32_t value);
36  void set_maxspeed_fwd(uint32_t value);
37  void set_maxspeed_rev(uint32_t value);
38  void set_max_accel(uint32_t value);
39  //BATT SET FUNCTIONS WILL BE HERE
40  void set_estop(bool value);
41  void clear_diag(int diag);
42  std::vector<int> get_speeds(bool update=false);
43  int get_speed_l(bool update=false);
44  int get_speed_r(bool update=false);
45  float get_param_pid(char side, char param, bool update=false);
46  std::vector<int> get_param_imax(char side, bool update=false);
47  int get_maxspeed_fwd(bool update=false);
48  int get_maxspeed_rev(bool update=false);
49  int get_maxaccel(bool update=false);
50  //BATT GET FUNCTIONS WILL BE HERE
51  int get_batt_volt(bool update=false);
52  int get_batt_current(bool update=false);
53  int get_batt_soc(bool update=false);
54  std::vector<int> get_positions(bool update=false);
55  int get_position_l(bool update=false);
56  int get_position_r(bool update=false);
57  std::vector<int> get_bumpers(bool update=false);
58  void reset_positions();
59  void reset_position_l();
60  void reset_position_r();
61  bool get_estop(bool update=false);
62  bool get_diag(int diag);
63  void update_diag();
64  int get_batt_cell_capacity(bool update=false);
65  void set_bumper_estop(bool value);
66  bool get_bumper_estop(bool update=false);
67  bool get_estop_button(bool update=false);
68  std::vector<int> get_sonars(bool update=false);
69  bool is_available();
70  void set_read_timeout(double timeout);
71  double get_read_timeout(void);
72 
73  void update();
74 
75  typedef enum {
76  setSPEEDS = 1,
94  setESTOP = 19,
95  clearDIAG = 20,
96  getSPEEDS = 21,
97  getSPEED_L = 22,
98  getSPEED_R = 23,
124  getESTOP = 50,
125  getDIAG = 51,
126  ACK = 52,
132  }serial_t;
133 
134  private:
135  void array_chopper(uint8_t *buf, int start, int end);
136  unsigned char checksum(int size);
137  bool checksum_match(uint8_t *buf, int size);
138  unsigned char checksum_check_array(uint8_t *arr, int size);
139  int first_validator(uint8_t *buf);
140  int second_validator(uint8_t *buf, int data_len);
141  int find_message_start(uint8_t *buf, int lastIndex);
142  int execute_command(uint8_t *buf);
143  void print_array(uint8_t *buf, int length);
144  int send_and_get_reply(uint8_t _command, uint8_t *send_array, int send_size, bool is_ack);
145  int read_serial(uint8_t _command_to_read);
146  int process(uint8_t *inData, int recievedData, uint8_t _command_to_read);
147  int process_simple (uint8_t *inData, int recievedData, uint8_t _command_to_read);
148  bool _get_ack(serial_t command);
149 
154  std::vector<int> _bumpers, _positions, _speeds, _imax, _sonars;
155 
156  int speeds[2];
157  char sendArray[20];
158  bool e_stop;
159  bool dir_left;
160  bool dir_right;
161 
162  int _port_nr;
164  std::string _port_name, _mode;
165  //char _mode[3];
166 
167  uint8_t tempData[10000];
168  uint8_t tempDataIndex;
169 
171  char startChar;
172  uint8_t _ack_data;
173 
174  double Kp,Ki,Kd,Kol;
176 
179 
182 
183  bool use_usb_;
184 
185  bool line_ok_;
186 
187  bool simple_;
188 };
189 
190 #endif
bool get_diag(int diag)
void set_estop(bool value)
void set_param_pid(char side, char param, float value)
uint16_t product_id_
Definition: mrp2_serial.h:180
bool param(const std::string &param_name, T &param_val, const T &default_val)
double read_timeout_
Definition: mrp2_serial.h:175
void set_param_imax(char side, uint32_t value)
int _maxspeed_fwd
Definition: mrp2_serial.h:150
void reset_position_r()
double Kol
Definition: mrp2_serial.h:174
void set_read_timeout(double timeout)
int send_and_get_reply(uint8_t _command, uint8_t *send_array, int send_size, bool is_ack)
void update_diag()
milvus::SerialComm serial_port
Definition: mrp2_serial.h:177
int get_batt_volt(bool update=false)
void clear_diag(int diag)
bool _diag_aux_lights_err
Definition: mrp2_serial.h:151
bool is_available()
uint16_t vendor_id_
Definition: mrp2_serial.h:180
int get_maxaccel(bool update=false)
std::vector< int > get_sonars(bool update=false)
void set_speed_l(int32_t left_speed)
Definition: mrp2_serial.cpp:87
int get_speed_r(bool update=false)
std::vector< int > _sonars
Definition: mrp2_serial.h:154
double _Ki_r
Definition: mrp2_serial.h:152
double _Kp_l
Definition: mrp2_serial.h:152
int get_batt_current(bool update=false)
void set_maxspeed_rev(uint32_t value)
int process_simple(uint8_t *inData, int recievedData, uint8_t _command_to_read)
std::string _port_name
Definition: mrp2_serial.h:164
int first_validator(uint8_t *buf)
void set_speed_r(int32_t right_speed)
bool get_estop(bool update=false)
void set_speeds(int32_t left_speed, int32_t right_speed)
Definition: mrp2_serial.cpp:51
bool checksum_match(uint8_t *buf, int size)
MRP2_Serial(std::string port_name, uint32_t baudrate=38400, std::string mode="8N1", bool simple=true)
Definition: mrp2_serial.cpp:6
double _Ki_l
Definition: mrp2_serial.h:152
bool _diag_motor_stall_l
Definition: mrp2_serial.h:151
int get_speed_l(bool update=false)
std::vector< int > get_positions(bool update=false)
bool dir_right
Definition: mrp2_serial.h:160
void array_chopper(uint8_t *buf, int start, int end)
int get_position_r(bool update=false)
int ep_out_addr_
Definition: mrp2_serial.h:181
void set_max_accel(uint32_t value)
void print_array(uint8_t *buf, int length)
void update()
Definition: mrp2_serial.cpp:46
diag_t
Definition: mrp2_serial.h:15
bool get_estop_button(bool update=false)
double get_read_timeout(void)
int execute_command(uint8_t *buf)
std::vector< int > _positions
Definition: mrp2_serial.h:154
uint8_t tempDataIndex
Definition: mrp2_serial.h:168
double _Kp_r
Definition: mrp2_serial.h:152
int process(uint8_t *inData, int recievedData, uint8_t _command_to_read)
bool get_bumper_estop(bool update=false)
bool _get_ack(serial_t command)
int second_validator(uint8_t *buf, int data_len)
int get_position_l(bool update=false)
int speeds[2]
Definition: mrp2_serial.h:156
int _bumper_estop
Definition: mrp2_serial.h:150
unsigned char checksum(int size)
int _maxspeed_rev
Definition: mrp2_serial.h:150
void set_bumper_estop(bool value)
std::vector< int > get_speeds(bool update=false)
int _batt_cell_capacity
Definition: mrp2_serial.h:150
int get_maxspeed_rev(bool update=false)
int get_batt_soc(bool update=false)
double _Kd_l
Definition: mrp2_serial.h:152
bool seekForChar
Definition: mrp2_serial.h:170
bool _diag_batt_high
Definition: mrp2_serial.h:151
std::vector< int > _bumpers
Definition: mrp2_serial.h:154
double _Kd_r
Definition: mrp2_serial.h:152
unsigned char checksum_check_array(uint8_t *arr, int size)
milvus::UsbComm usb_port
Definition: mrp2_serial.h:178
void reset_positions()
std::vector< int > _imax
Definition: mrp2_serial.h:154
bool _diag_batt_low
Definition: mrp2_serial.h:151
int read_serial(uint8_t _command_to_read)
bool _diag_motor_stall_r
Definition: mrp2_serial.h:151
int find_message_start(uint8_t *buf, int lastIndex)
int get_batt_cell_capacity(bool update=false)
std::vector< int > get_param_imax(char side, bool update=false)
bool _diag_motor_drvr_err
Definition: mrp2_serial.h:151
void set_maxspeed_fwd(uint32_t value)
virtual ~MRP2_Serial()
Definition: mrp2_serial.cpp:40
float get_param_pid(char side, char param, bool update=false)
int _batt_current
Definition: mrp2_serial.h:150
std::vector< int > get_bumpers(bool update=false)
void reset_position_l()
std::vector< int > _speeds
Definition: mrp2_serial.h:154
std::string _mode
Definition: mrp2_serial.h:164
uint8_t _ack_data
Definition: mrp2_serial.h:172
char sendArray[20]
Definition: mrp2_serial.h:157
char startChar
Definition: mrp2_serial.h:171
uint8_t tempData[10000]
Definition: mrp2_serial.h:167
int get_maxspeed_fwd(bool update=false)


mrp2_hardware
Author(s): Akif Hacinecipoglu
autogenerated on Mon Feb 28 2022 22:53:03