re-added robotsafety

This commit is contained in:
2024-11-04 13:05:11 +01:00
parent 7cc2fbd8ec
commit b90bca0060
3 changed files with 21 additions and 3 deletions

View File

@@ -781,6 +781,20 @@ void CKobuki::Rotate(int degrees) {
} }
void CKobuki::robotSafety(std::string *pointerToMessage) {
while (true) {
if (parser.data.BumperCenter || parser.data.BumperLeft || parser.data.BumperRight ||
parser.data.CliffLeft || parser.data.CliffCenter || parser.data.CliffRight) {
std::cout << "Safety condition triggered!" << std::endl; // Debug print
*pointerToMessage = "stop";
forward(-100); // reverse the robot
}
}
}
void CKobuki::robotSafety() { void CKobuki::robotSafety() {
while (true) { while (true) {

View File

@@ -76,7 +76,8 @@ public:
void goToXy(long double xx, long double yy); void goToXy(long double xx, long double yy);
void Rotate(int degrees); void Rotate(int degrees);
std::ofstream odometry_log; std::ofstream odometry_log;
void robotSafety(); void robotSafety(std::string *pointerToMessage);
void robotSafety(); //overload
void sendNullMessage(); void sendNullMessage();
KobukiParser parser; KobukiParser parser;

View File

@@ -12,26 +12,29 @@ int movement();
std::string readMQTT(); std::string readMQTT();
void parseMQTT(std::string message); void parseMQTT(std::string message);
MqttClient client("mqtt://145.92.224.21:1883", "KobukiRPI", "ishak", "kobuki"); //create a client object MqttClient client("mqtt://145.92.224.21:1883", "KobukiRPI", "ishak", "kobuki"); //create a client object
std::string message;
void setup(){ void setup(){
unsigned char *null_ptr(0); unsigned char *null_ptr(0);
robot.startCommunication("/dev/ttyUSB0", true, null_ptr); robot.startCommunication("/dev/ttyUSB0", true, null_ptr);
client.connect(); client.connect();
client.subscribe("home/commands"); client.subscribe("home/commands");
} }
int main(){ int main(){
setup(); setup();
std::thread safety([&]() { robot.robotSafety(&message); });
while(true){ while(true){
parseMQTT(readMQTT()); parseMQTT(readMQTT());
} }
safety.join();
return 0; return 0;
} }
std::string readMQTT() std::string readMQTT()
{ {
std::string message = client.getLastMessage(); message = client.getLastMessage();
if (!message.empty()) { if (!message.empty()) {
std::cout << "MQTT Message: " << message << std::endl; std::cout << "MQTT Message: " << message << std::endl;
} }