Trong cuộc sống hiện đại, chắc hẳn bạn đã bắt gặp đâu đó những chú robot hút bụi, robot quét nhà, lau sàn. Những robot này hoạt động mà không cần sự can thiệp hoặc tác động trực tiếp từ con người. Một số robot thậm chí còn có khả năng giao tiếp với con người. Python là ngôn ngữ lập trình bậc cao được sử dụng rộng rãi trong lĩnh vực robot. Lập trình viên sử dụng Python để thu thập, xử lý dữ liệu, kiểm soát phần cứng cấp thấp thông qua hệ điều hành robot (ROS - Robotic Operating System) và các framework như OpenCV và TensorFlow.
Hầu hết quy trình chế tạo, lập trình robot bằng Python sẽ theo ba bước cơ bản như sau:
Hiểu một cách đơn giản, khả năng nhận thức là khả năng “nhìn thấy” của robot. Trước khi đưa ra quyết định và hành động phù hợp, robot cần phải hiểu được môi trường mà nó tiếp xúc. Nhận thức của robot bao gồm việc xác định các dấu hiệu từ con người, đồ vật, cũng như nắm bắt tiến trình các sự kiện xung quanh nó. Hệ thống nhận thức của robot có cả phần cứng và phần mềm, gồm có:
Chúng ta hãy xem 1 đoạn code ví dụ sau:
import tensorflow_hub as hub
import cv2
import numpy
import pandas
import tensorflow as tf
import matplotlib.pyplot as plt
widget = 1028
height = 1028
# Load the image by OpenCV
image = cv2.imread('IMAGE_PATH')
# Resize the image to match the input size of the model
inp = cv2.resize(image, (widget, height))
# Convert the image to RGB from BGR
rgb = cv2.cvtColor(inp, cv2.COLOR_BGR2RGB)
# Converting to uint8
rgb_tensor = tf.convert_to_tensor(rgb, dtype=tf.uint8)
# Add the batch dimension
rgb_tensor = tf.expand_dims(rgb_tensor),
Thông qua ví dụ, bạn sẽ biết cách:
Lập kế hoạch và dự đoán hoạt động của robot là bước quan trọng, chiếm nhiều thời gian và lặp đi lặp lại trong suốt quá trình bạn phát triển robot. Giai đoạn này đóng vai trò là trung gian giữa dữ liệu được thu thập và hành động tương ứng mà robot sẽ thực hiện.
Sau khi dữ liệu được thu thập từ các cảm biến, phần hữu ích sẽ được trích xuất, tiếp theo dữ liệu sẽ được xử lý bằng kỹ thuật Machine Learning (ML) và Deep Learning (DL). Các thuật toán lập kế hoạch như A* và RRT (Rapidly-exploring random trees) cần sử dụng để xác định đường đi hoặc chuyển động của robot.
Chuyển động của robot sẽ bị giới hạn do các thiết lập mặc định ban đầu. Để mở rộng phạm vi hoạt động của robot, các lập trình viên sử dụng thuật toán dự đoán ML. Thuật toán ML cho phép robot tự động khám phá các quy tắc về cách thế giới vận hành. Ví dụ như hình ảnh được bạn thu thập từ camera được xử lý bằng OpenCV, sau đó đưa vào thuật toán được tạo bằng framework ML như TensorFlow để giúp robot xác định chính xác các đối tượng trong bất kỳ môi trường nào.
Đây là giai đoạn kiểm soát về thao tác của robot cũng như cách robot tương tác với các vật thể xung quanh chúng. Ví dụ, trong trường hợp cánh tay robot được lập trình gắp và đặt, có nghĩa thao tác của nó là nắm lấy một vật thể và đặt nó vào hộp.
Bộ điều khiển thông qua cơ chế điều khiển điện tử, để Robot thực hiện các nhiệm vụ bằng cách tương tác với môi trường của chúng. Vì các hạn chế về chuyển động và việc tối ưu hóa có thể có sẽ khác nhau tùy thuộc vào môi trường nên rất khó để lập trình một cách hiệu quả. Do đó, lập trình viên cần có các mô hình ML có khả năng thích ứng với những thay đổi trong khi vẫn đảm bảo tối ưu hóa chuyển động.
Để giúp bạn có được cái nhìn trực quan nhất, chúng ta sẽ tìm hiểu cách lập trình robot bằng Python để hiện thực hóa 1 robot hút bụi.
Ví dụ của chúng ta sẽ gồm:
Các bánh xe của robot phải được bố trí giống như trên một chiếc xe bình thường. Các cảm biến siêu âm được gắn ở cả phía trước và phía sau khung gầm của robot. Bạn nên gắn Camera ở vị trí cao ở phía trước khung máy và kết nối trực tiếp camera với bộ điều khiển. Các động cơ cũng cần phải được liên kết với một trình điều khiển động cơ.
Bạn cần chuẩn bị Raspberry Pi bằng cách cài đặt môi trường chạy lập trình robot. Các tập lệnh chính của Python phải nhập là modules máy ảnh, động cơ và sóng siêu âm. Đồng thời chúng ta cũng sử dụng mô hình Python-OpenCV để phát hiện các hình ảnh khác nhau. Khi phát hiện một vật thể, chức năng cảm biến tiệm cận (cảm biến siêu âm) sẽ được sử dụng để đo khoảng cách giữa vật thể và robot. Khi khoảng cách của robot với vật thể dưới ngưỡng an toàn đã xác định, robot sẽ dừng.
Thông qua camera, bạn có thể kiểm tra được khoảng cách của đối tượng được phát hiện. Từ đó bạn cần thực hiện các chuyển đổi cần thiết và tính toán khoảng cách mà robot cần di chuyển sang phải hoặc trái, dựa trên nguồn cấp dữ liệu hình ảnh từ camera. Nếu vật thể hoàn toàn nằm ngoài tầm nhìn của máy ảnh, thì lập trình hoạt động tiếp theo của di chuyển về phía trước.
Trong bài viết này, chúng ta đã cùng nhau tìm hiểu cách lập trình robot bằng Python đơn giản. Python là ngôn ngữ lập trình rất hữu ích trong công nghệ Robotics. Trong tương lai, hứa hẹn sẽ có nhiều robot được tạo ra bằng Python và giúp ích cho đời sống con người.
Nếu bạn đang quan tâm đến học lập trình Python thì hãy tham khảo ngay lộ trình học tại ICANTECH nhé
Nguồn ảnh: ICANTECH.