feat: implement automatic reconnection for Kobuki when disconnected

This commit is contained in:
ishak jmilou.ishak
2025-01-21 12:29:03 +01:00
parent c74b9a8758
commit ec44cb955b
4 changed files with 82 additions and 4 deletions

View File

@@ -238,7 +238,7 @@ void CKobuki::setSound(int noteinHz, int duration) {
pocet = write(HCom, &message, 9);
}
void CKobuki::startCommunication(const char *portname, bool CommandsEnabled,
void CKobuki::startCommunication(char *portname, bool CommandsEnabled,
void *userDataL) {
if(connect(portname) != -1){
enableCommands(CommandsEnabled);

View File

@@ -59,7 +59,7 @@ public:
long loop(void *user_data, TKobukiData &Kobuki_data);
void startCommunication(const char *portname,bool CommandsEnabled,void *userDataL);
void startCommunication(char *portname,bool CommandsEnabled,void *userDataL);
int measure(); //thread function, contains an infinite loop and reads data
void setLed(int led1 = 0, int led2 = 0); //led1 green/red 2/1, //led2 green/red 2/1
void setTranslationSpeed(int mmpersec);

View File

@@ -39,7 +39,7 @@ void setup()
{
std::string port = findKobukiPort();
unsigned char *null_ptr(0);
robot.startCommunication((port.c_str()), true, null_ptr);
robot.startCommunication(const_cast<char*>(port.c_str()), true, null_ptr);
// connect mqtt server and sub to commands
client.connect();
client.subscribe("home/commands");
@@ -95,7 +95,7 @@ void checkKobukiConnection()
}
cout << "Attempting to reconnect Kobuki..." << endl;
robot.startCommunication((port.c_str()), true, nullptr);
robot.startCommunication(const_cast<char*>(port.c_str()), true, nullptr);
if (robot.isConnected()){
cout << "Kobuki reconnected successfully!" << endl;