robot cleaner python code:

import RPi.GPIO as GPIO

import time


# Ultrasonic sensor pins

TRIG = 23

ECHO = 24


# Motor pins

LEFT_FORWARD = 17

LEFT_BACKWARD = 18

RIGHT_FORWARD = 27

RIGHT_BACKWARD = 22


# Set GPIO mode and pins

GPIO.setmode(GPIO.BCM)

GPIO.setup(TRIG, GPIO.OUT)

GPIO.setup(ECHO, GPIO.IN)

GPIO.setup(LEFT_FORWARD, GPIO.OUT)

GPIO.setup(LEFT_BACKWARD, GPIO.OUT)

GPIO.setup(RIGHT_FORWARD, GPIO.OUT)

GPIO.setup(RIGHT_BACKWARD, GPIO.OUT)


# Function to measure distance from ultrasonic sensor

def measure_distance():

    GPIO.output(TRIG, True)

    time.sleep(0.00001)

    GPIO.output(TRIG, False)

    

    start_time = time.time()

    stop_time = time.time()

    

    while GPIO.input(ECHO) == 0:

        start_time = time.time()

    

    while GPIO.input(ECHO) == 1:

        stop_time = time.time()

        

    elapsed_time = stop_time - start_time

    distance = (elapsed_time * 34300) / 2

    

    return distance


# Function to move robot forward

def move_forward():

    GPIO.output(LEFT_FORWARD, GPIO.HIGH)

    GPIO.output(LEFT_BACKWARD, GPIO.LOW)

    GPIO.output(RIGHT_FORWARD, GPIO.HIGH)

    GPIO.output(RIGHT_BACKWARD, GPIO.LOW)


# Function to stop robot

def stop_robot():

    GPIO.output(LEFT_FORWARD, GPIO.LOW)

    GPIO.output(LEFT_BACKWARD, GPIO.LOW)

    GPIO.output(RIGHT_FORWARD, GPIO.LOW)

    GPIO.output(RIGHT_BACKWARD, GPIO.LOW)


try:

    while True:

        distance = measure_distance()

        print("Distance: {:.2f} cm".format(distance))

        

        if distance < 20:  # Adjust threshold as needed

            # Obstacle detected, stop and turn

            stop_robot()

            time.sleep(1)

            # Turn right

            GPIO.output(LEFT_FORWARD, GPIO.HIGH)

            GPIO.output(RIGHT_FORWARD, GPIO.LOW)

            time.sleep(1)

        else:

            # Move forward

            move_forward()


except KeyboardInterrupt:

    GPIO.cleanup()

Creating a complex project like an AI cleaning robot involves multiple components and functionalities. Below are the main components and corresponding Python code snippets for each aspect of the project:

hardware initilization

import RPi.GPIO as GPIO

import time


# Define GPIO pins for motors

LEFT_FORWARD_PIN = 17

LEFT_BACKWARD_PIN = 18

RIGHT_FORWARD_PIN = 27

RIGHT_BACKWARD_PIN = 22


# Initialize GPIO pins

GPIO.setmode(GPIO.BCM)

GPIO.setup(LEFT_FORWARD_PIN, GPIO.OUT)

GPIO.setup(LEFT_BACKWARD_PIN, GPIO.OUT)

GPIO.setup(RIGHT_FORWARD_PIN, GPIO.OUT)

GPIO.setup(RIGHT_BACKWARD_PIN, GPIO.OUT)

motor control functions

def move_forward():

    GPIO.output(LEFT_FORWARD_PIN, GPIO.HIGH)

    GPIO.output(LEFT_BACKWARD_PIN, GPIO.LOW)

    GPIO.output(RIGHT_FORWARD_PIN, GPIO.HIGH)

    GPIO.output(RIGHT_BACKWARD_PIN, GPIO.LOW)


def move_backward():

    GPIO.output(LEFT_FORWARD_PIN, GPIO.LOW)

    GPIO.output(LEFT_BACKWARD_PIN, GPIO.HIGH)

    GPIO.output(RIGHT_FORWARD_PIN, GPIO.LOW)

    GPIO.output(RIGHT_BACKWARD_PIN, GPIO.HIGH)


def turn_left():

    GPIO.output(LEFT_FORWARD_PIN, GPIO.LOW)

    GPIO.output(LEFT_BACKWARD_PIN, GPIO.LOW)

    GPIO.output(RIGHT_FORWARD_PIN, GPIO.HIGH)

    GPIO.output(RIGHT_BACKWARD_PIN, GPIO.LOW)


def turn_right():

    GPIO.output(LEFT_FORWARD_PIN, GPIO.HIGH)

    GPIO.output(LEFT_BACKWARD_PIN, GPIO.LOW)

    GPIO.output(RIGHT_FORWARD_PIN, GPIO.LOW)

    GPIO.output(RIGHT_BACKWARD_PIN, GPIO.LOW)


def stop():

    GPIO.output(LEFT_FORWARD_PIN, GPIO.LOW)

    GPIO.output(LEFT_BACKWARD_PIN, GPIO.LOW)

    GPIO.output(RIGHT_FORWARD_PIN, GPIO.LOW)

    GPIO.output(RIGHT_BACKWARD_PIN, GPIO.LOW)

ultra sonic sensor interaction

TRIG_PIN = 23

ECHO_PIN = 24


def measure_distance():

    GPIO.output(TRIG_PIN, GPIO.HIGH)

    time.sleep(0.00001)

    GPIO.output(TRIG_PIN, GPIO.LOW)


    while GPIO.input(ECHO_PIN) == GPIO.LOW:

        pulse_start = time.time()


    while GPIO.input(ECHO_PIN) == GPIO.HIGH:

        pulse_end = time.time()


    pulse_duration = pulse_end - pulse_start

    distance = pulse_duration * 17150

    distance = round(distance, 2)

    return distance

main control loop

try:

    while True:

        distance = measure_distance()

        print("Distance:", distance, "cm")


        if distance < 10:

            stop()

            time.sleep(1)

            turn_right()

            time.sleep(1)

        else:

            move_forward()


except KeyboardInterrupt:

    GPIO.cleanup()

Certainly! Below, I'll provide Python code snippets for obstacle avoidance, mapping, and intelligent decision-making using AI frameworks like TensorFlow and OpenCV:

def obstacle_avoidance():

    while True:

        distance = measure_distance()


        if distance < 10:

            stop()

            time.sleep(1)

            turn_right()

            time.sleep(1)

        else:

            move_forward()

Mapping (Basic):

def create_map():

    obstacle_map = [[0 for _ in range(10)] for _ in range(10)]  # Assuming a 10x10 grid

    return obstacle_map


def update_map(obstacle_map, position):

    x, y = position

    obstacle_map[x][y] = 1  # Mark obstacle at current position

    return obstacle_map

Intelligent Decision-Making (Using TensorFlow for Object Detection):

import tensorflow as tf

import cv2


# Load TensorFlow model for object detection

model = tf.keras.models.load_model('object_detection_model.h5')


def detect_objects(image):

    # Preprocess image

    # image = preprocess_image(image)


    # Perform object detection

    predictions = model.predict(image)


    # Process predictions

    # process_predictions(predictions)


    return predictions


def preprocess_image(image):

    # Resize image

    image = cv2.resize(image, (300, 300))

    # Convert image to RGB

    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

    # Normalize image

    image = image / 255.0

    # Expand dimensions to match model input shape

    image = tf.expand_dims(image, axis=0)

    return image


Comments

Popular posts from this blog