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
Post a Comment