Merge branch 'main' of ssh://gitlab.fdmci.hva.nl/technische-informatica-sm3/ti-projectten/rooziinuubii79

This commit is contained in:
ishak jmilou.ishak
2024-11-04 14:06:28 +01:00
3 changed files with 29 additions and 7 deletions

View File

@@ -781,6 +781,22 @@ 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
}
std::this_thread::sleep_for(std::chrono::milliseconds(static_cast<int>(100)));
}
}
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,30 @@ 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 = "stop";
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;
} }
@@ -43,20 +47,21 @@ std::string readMQTT()
void parseMQTT(std::string message){ void parseMQTT(std::string message){
if(message == "up"){ if(message == "up"){
robot.forward(600); robot.forward(1024);
} }
else if(message == "left"){ else if(message == "left"){
robot.Rotate(90); robot.Rotate(45);
} }
else if(message == "right"){ else if(message == "right"){
robot.Rotate(-90); robot.Rotate(-45);
} }
else if(message == "down"){ else if(message == "down"){
robot.forward(600); robot.forward(-800);
} }
else if(message == "stop"){ else if(message == "stop"){
robot.sendNullMessage(); robot.sendNullMessage();
this_thread::sleep_for(chrono::milliseconds(1000));
} }
else{ else{
std::cout << "Invalid command" << std::endl; std::cout << "Invalid command" << std::endl;