C3PO – Auto Programm 1

Natürlich muss das Automatische Programm für die Fahrzeugsteuerung zum Autonomen Fahren des Roboters auch für die Vier-Rad Steuerung laufen.

Wie schon beim 2-Rad R2D2 Robot verwende ich dieselben Klassen der Motorsteuerung auch für den C3PO Roboter.

Die Akkus habe ich nun doch getauscht. Das Gewicht von den 8×1.5 Volt Batterien plus Akku Pack ist im Vergleich zu den 2×3,7 V Lithium-Ionen Akkus ungleich höher.

# car_test.py

from robotbench.automation.automation import Automation
from robotbench.automation.automation_programs import AutomationPrograms
from robotbench.car.autocar import AutoCar
from robotbench.motor.four_wheels_motor import FourWheelsMotorController
from robotbench.sensors.ultrasonic import UltraSonic

sensor_object = UltraSonic()
programs = AutomationPrograms()
selfDriving = Automation(programs)
selfDriving.add_sensor("UltraSonic", sensor_object)

motorcontroller = FourWheelsMotorController(debug=True, default_speed=40)

motorcontroller.add_motor("LEFT_FRONT", 10, 24, front=True, left=True)
motorcontroller.add_motor("RIGHT_FRONT", 27, 17, front=True, left=False)
motorcontroller.add_motor("LEFT_BACK", 9, 11, front=False, left=True)
motorcontroller.add_motor("RIGHT_BACK", 13, 6, front=False, left=False)

newcar = AutoCar("C3PO Car", motorcontroller, None, selfDriving)

newcar.start()
newcar.drive("autoprogram_one")

YouTube player
C3PO – Roboter Testlauf

Das automatische Programm ist denkbar einfach:

# autoprogram_one.py
from robotbench.automation.automation_events import AutomationEvents

class AutomationPrograms:

    def __init__(self):
        self._car = None

    def set_car(self, car):
        self._car = car

    def get_car(self):
        return self._car

    def set_event_controller(self, event_controller: AutomationEvents):
        self._event_controller = event_controller

    def get_event_controller(self):
        return self._event_controller

    def get_sensors(self):
        return self.get_car().get_sensors()

    def program_one(self):
        result = {}
        sensors = self.get_sensors()
        eventcontroller = self._event_controller
        
        for sensor_name in sensors:
            sensor_result = sensors[sensor_name].read_two()
            result[sensor_name] = sensor_result
        
        event = eventcontroller.find_event("FORWARD", "MOVE")
        try:
            if result["UltraSonic"]["front"] >= 35:
                event = eventcontroller.find_event("FORWARD", "MOVE")
            elif result["UltraSonic"]["front"] < 35:
                event = eventcontroller.find_event("KOLLISIONFRONT", "OBSTACLE")
            elif result["UltraSonic"]["rear"] >= 45:
                event = eventcontroller.find_event("BACKWARD", "MOVE")
            elif result["UltraSonic"]["rear"] < 45:
                event = eventcontroller.find_event("KOLLISIONBACK", "OBSTACLE")
        except:
            pass

        result = event
        # result["events"] = eventcontroller.get_events()

        return result

Einkaufsliste / Affiliate Links:

Diese Seite verwendet Cookies, um die Nutzerfreundlichkeit zu verbessern. Mit der weiteren Verwendung stimmen Sie dem zu.

Datenschutzerklärung