Mục lục:
- Bước 1: Các thành phần bắt buộc
- Bước 2: Lắp ráp Robot
- Bước 3: Tạo mê cung của riêng bạn - Tùy chọn
- Bước 4: Thiết lập môi trường
- Bước 5: Lập trình GiggleBot - Phần I
- Bước 6: Lập trình điều khiển từ xa - Phần II
- Bước 7: Thông dịch màn hình từ xa
Video: Tạo một robot có hướng dẫn bằng Lidar với GiggleBot: 8 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Trong hướng dẫn này, chúng tôi đang làm cho GiggleBot giải quyết những khó khăn của một mê cung.
Chúng tôi đang gắn một servo trên GiggleBot trên đó chúng tôi gắn một cảm biến khoảng cách. Trong khi chạy, servo sẽ quay qua lại để cảm biến khoảng cách có thể đo khoảng cách đến từng chướng ngại vật. Điều này hoạt động giống như một cảm biến LIDAR thường đắt hơn nhiều.
Đồng thời, GiggleBot đang gửi dữ liệu này tới một vi điều khiển BBC từ xa: bit hiển thị trên ma trận 5 x 5 đèn LED của nó vị trí tương đối của nó với các chướng ngại vật.
Công việc của bạn là có thể điều hướng GiggleBot chỉ bằng cách xem những gì nó được hiển thị trên micro BBC: bit khác. Để điều khiển GiggleBot, các nút trên micro: bit BBC từ xa được sử dụng.
Nghe có vẻ như thú vị! Chúng ta hãy đi xuống nó, phải không?
Bước 1: Các thành phần bắt buộc
Chúng tôi sẽ cần:
- Một GiggleBot.
- Một bộ pin cho BBC micro: bit. Nó đi kèm với một micro: bit BBC trong gói của nó.
- x3 pin AA cho GiggleBot.
- Cáp Grove để kết nối cảm biến khoảng cách với GiggleBot.
- Một bộ Servo từ DexterIndustries.
- x3 BBC vi mô: bit. Một cho GiggleBot và một dùng để điều khiển robot từ xa.
- Một cảm biến khoảng cách từ DexterIndustries.
Nhận robot GiggleBot cho BBC micro: bit tại đây!
Bước 2: Lắp ráp Robot
Để làm cho GiggleBot sẵn sàng được lập trình, chúng ta cần phải lắp ráp nó, mặc dù không cần phải làm gì nhiều.
Lắp 3 pin AA vào ngăn bên dưới GiggleBot.
Lắp ráp gói servo. Đối với cánh tay quay của servo, hãy sử dụng lỗ cuối cùng của nó để cố định servo vào các đầu nối phía trước của GiggleBot. Bạn có thể sử dụng vít và / hoặc một số dây để làm cho nó ổn định hơn ở vị trí của nó. Hoặc bạn có thể dán keo nóng vào bảng. Trong trường hợp của tôi, tôi đã sử dụng vít và dây ngắn để buộc cánh tay servo vào bảng GiggleBot.
Khi lắp cánh tay servo vào servo, hãy đảm bảo rằng servo đã được đặt ở vị trí 80. Bạn có thể thực hiện việc đó bằng cách gọi gigglebot.set_servo (gigglebot. RIGHT, 80). Bạn có thể đọc về điều ấy nhiều hơn tại đây.
Tiếp theo, đặt cảm biến khoảng cách ở mặt trước của gói servo và sửa nó như trong ví dụ trên.
Cuối cùng, kết nối cảm biến khoảng cách bằng cáp Grove với bất kỳ cổng nào trong số 2 cổng I2C và động cơ servo với cổng bên phải trên GiggleBot - cổng bên phải được đề cập trên đó.
Bước 3: Tạo mê cung của riêng bạn - Tùy chọn
Trong trường hợp này, tôi đã sử dụng một loạt các hộp để tạo một đường dẫn vòng kín, tương tự như một đường dẫn NASCAR.
Ở bước này, bạn có thể thực sự sáng tạo và làm cho nó xoắn như thế nào bạn muốn hoặc làm cho nó siêu dài vì điều đó thực sự tùy thuộc vào bạn.
Hoặc nếu bạn không muốn theo dõi, bạn có thể đặt GiggleBot trong nhà bếp hoặc phòng khách chẳng hạn - điều đó đủ tốt vì có rất nhiều bức tường và chướng ngại vật mà bạn vẫn cần phải tránh.
Bước 4: Thiết lập môi trường
Để bạn có thể lập trình BBC micro: bit trong MicroPython, bạn phải thiết lập một trình chỉnh sửa cho nó (Mu Editor) và đặt GiggleBot MicroPython Runtime làm thời gian chạy của nó. Đối với điều đó, bạn phải làm theo hướng dẫn trên trang này. Tại thời điểm này, phiên bản v0.4.0 của thời gian chạy được sử dụng.
Bước 5: Lập trình GiggleBot - Phần I
Đầu tiên, hãy thiết lập tập lệnh của GiggleBot. Tập lệnh này sẽ làm cho GiggleBot quay động cơ servo của nó 160 độ (mỗi hướng 80 độ) trong khi đồng thời lấy 10 giá trị đọc từ cảm biến khoảng cách mỗi lượt.
Khi được bật, GiggleBot sẽ ở chế độ chờ cho đến khi nhận được lệnh từ điều khiển từ xa. Chỉ có thể có 3 lệnh: di chuyển về phía trước, sang trái hoặc sang phải.
Lưu ý: Tập lệnh sau có thể thiếu khoảng trắng và điều này có vẻ là do một số vấn đề khi hiển thị GitHub Gists. Nhấp vào ý chính để đưa bạn đến trang GitHub nơi bạn có thể sao chép và dán mã.
GiggleBot dựa trên LIDAR được điều khiển từ xa
từ nhập gigglebot * |
from distance_sensor import DistanceSensor |
từ chế độ ngủ nhập microbit |
từ utime nhập ticks_us, sleep_us |
nhập khẩu |
nhập radio |
# dừng robot nếu nó đang di chuyển |
ngừng lại() |
# bật đài |
radio.on () |
# đối tượng cảm biến khoảng cách |
ds = DistanceSensor () |
ds.start_continuous () |
xoay_time = 0,7 # đo bằng giây |
xoay_span = 160 # đo bằng độ |
xoay_ bước = 10 |
overhead_compensation = 1,05 # được xác định theo tỷ lệ phần trăm |
time_per_step = 10 ** 6 * xoay_giờ / (xoay_bước * chi phí_phân_phục) |
last_read_time = 0 |
radar = bytearray (bước quay) |
servo_rotate_direction = 0 # 0 để đi lên (0-> 160) và 1 ngược lại |
radar_index = 0 |
set_servo (RIGHT, 0) |
whileTrue: |
# đọc từ radar |
nếu ticks_us () - last_read_time> time_per_step: |
# đọc từ cảm biến khoảng cách |
radar [radar_index] = int (ds.read_range_continuous () / 10) |
last_read_time = ticks_us () |
print (radar_index) |
# thực hiện logic để xoay servo từ trái sang phải |
nếu radar_index == xoay_ bước -1 và servo_rotate_direction == 0: |
set_servo (RIGHT, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0 và servo_rotate_direction == 1: |
set_servo (RIGHT, xoay_span) |
servo_rotate_direction = 0 |
khác: |
radar_index + = 1if servo_rotate_direction == 0else-1 |
# và gửi các giá trị radar |
radio.send_bytes (radar) |
cố gắng: |
# đọc lệnh rô bốt |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# và khởi động động cơ nếu có bất kỳ lệnh nào nhận được |
set_speed (lmotor, rmotor) |
lái xe() |
exceptionTypeError: |
đi qua |
xem rawgigglebot_lidar_robot.py được lưu trữ với ❤ bởi GitHub
Bước 6: Lập trình điều khiển từ xa - Phần II
Những gì còn lại phải làm là lập trình vi BBC thứ hai: bit hoạt động như một điều khiển từ xa.
Điều khiển từ xa được sử dụng để hiển thị trên màn hình 5 x 5 pixel của nó khoảng cách tương đối với chướng ngại vật. Tối đa, sẽ có 10 pixel được bật.
Đồng thời, điều khiển từ xa cung cấp cho bạn khả năng điều khiển GiggleBot từ xa bằng cách nhấn 2 nút của nó: di chuyển về phía trước, sang trái và sang phải.
Lưu ý: Tập lệnh sau có thể thiếu khoảng trắng và điều này có vẻ là do một số vấn đề khi hiển thị GitHub Gists. Nhấp vào ý chính để đưa bạn đến trang GitHub nơi bạn có thể sao chép và dán mã.
GiggleBot dựa trên LIDAR được điều khiển từ xa - Mã từ xa
từ chế độ ngủ nhập microbit, hiển thị, button_a, button_b |
nhập khẩu |
nhập radio |
nhập toán |
radio.on () |
xoay_ bước = 10 |
xoay_span = 160 # độ |
xoay_step = xoay_span / xoay_ bước |
max_distance = 50 # tính bằng cm |
side_length_leds = 3 # được đo bằng # pixel |
radar = bytearray (bước quay) |
xar = bytearray (bước quay) |
yar = bytearray (bước quay) |
save_xar = bytearray (bước quay) |
save_yar = bytearray (bước quay) |
motor_speed = 50 |
whileTrue: |
status = radio.receive_bytes_into (radar) |
nếu trạng thái isnotNone: |
# display.clear () |
đối với c, val inenumerate (radar): |
nếu radar [c] <= max_distance: |
# tính toán tọa độ 2d của mỗi khoảng cách |
angle = xoay_ bước / (xoay_ bước -1) * xoay_bước * c |
góc + = (180- xoay_sải) /2.0 |
x_c = math.cos (angle * math.pi /180.0) * radar [c] |
y_c = math.sin (angle * math.pi /180.0) * radar [c] |
# chia tỷ lệ khoảng cách để vừa với màn hình 5x5 microbit |
x_c = x_c * (side_length_leds -1) / max_distance |
y_c = y_c * (side_length_leds +1) / max_distance |
# tọa độ định vị lại |
x_c + = (side_length_leds -1) |
y_c = (side_length_leds +1) - y_c |
# vòng tọa độ chính xác nơi các đèn LED được tìm thấy |
nếu x_c - math.floor (x_c) <0,5: |
x_c = math.floor (x_c) |
khác: |
x_c = math.ceil (x_c) |
nếu y_c - math.floor (y_c) <0,5: |
y_c = math.floor (y_c) |
khác: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
khác: |
xar [c] = 0 |
yar [c] = 0 |
display.clear () |
cho x, y inzip (xar, yar): |
display.set_pixel (x, y, 9) |
# print (list (zip (xar, yar, radar))) |
stateA = button_a.is_pressed () |
stateB = button_b.is_pressed () |
nếu stateA và stateB: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
print ('chuyển tiếp') |
if stateA and not stateB: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
print ('left') |
ifnot stateA và stateB: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
print ('right') |
ifnot stateA andnot stateB: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
print ('stop') |
xem rawgigglebot_lidar_remote.py được lưu trữ với ❤ bởi GitHub
Bước 7: Thông dịch màn hình từ xa
"loading =" lazy "điều khiển GiggleBot, bạn có các tùy chọn sau:
- Nhấn nút A và nút B để di chuyển GiggleBot về phía trước.
- Nhấn nút A để quay GiggleBot sang trái.
- Nhấn nút B để quay GiggleBot sang phải.
Để xem các chướng ngại vật gần nhất được phát hiện ở hướng nào, chỉ cần nhìn trên màn hình của điều khiển từ xa (micro: bit BBC từ xa mà bạn đang cầm). Bạn sẽ có thể điều khiển GiggleBot từ xa mà không cần nhìn vào nó.
Đề xuất:
Làm thế nào để viết một hướng dẫn sử dụng các tài liệu hướng dẫn: 14 bước
Làm thế nào để viết một hướng dẫn bằng cách sử dụng các bảng hướng dẫn: Tài liệu này chỉ ra cách sử dụng các bảng hướng dẫn để viết một chỉ dẫn
Một robot có thể hướng dẫn với nhiều tính năng: 8 bước (có hình ảnh)
Một robot có thể hướng dẫn với nhiều tính năng: Xin chào các bạn, trong bài hướng dẫn này, tôi sẽ giới thiệu một robot tuyệt vời có thể thực hiện các nhiệm vụ sau: 1- Nó có thể di chuyển và việc điều khiển các chuyển động của nó được thực hiện bằng Bluetooth2- Nó có thể làm vệ sinh như một máy hút bụi3- Nó có thể phát các bài hát của Bluetoot
Biến một tiện ích bằng nhựa chung thành một thứ gì đó đẹp hơn một chút: 14 bước (có hình ảnh)
Biến một Tiện ích bằng nhựa Chung thành một thứ gì đó đẹp hơn một chút: Động lực: Trong suốt mùa hè, tôi đang lướt sóng hoặc làm việc với các dự án xung quanh khu vườn / trang trại nhỏ của chúng tôi. Mùa đông đang đến với chúng tôi ở Boston và tôi đã sẵn sàng để bắt đầu tấn công danh sách dài các dự án mà tôi đã hoãn lại trong 'những tháng trong nhà'. Tuy nhiên, tôi hav
Cách tạo một hình ảnh hoàn toàn tập trung từ một số tập trung một phần: 4 bước
Cách Tạo Một Hình Ảnh Tập Trung Hoàn Toàn Từ Một Số Tập Trung Một Phần: Tôi khuyên bạn nên sử dụng phần mềm Helicon Focus. Các phiên bản Windows và Mac có sẵn tại trang web của d-Stidio
Làm thế nào để tạo ra một robot tuyệt vời từ một chiếc ô tô RC: 11 bước
Làm thế nào để tạo ra một con robot tuyệt vời từ một chiếc ô tô RC: Dự án thú vị này dành cho học sinh trung học hoặc bất kỳ người có sở thích nào muốn tạo ra một con robot tuyệt vời. Tôi đã cố gắng tạo ra một con robot tương tác từ lâu nhưng việc tạo ra một con robot không hề dễ dàng nếu bạn không làm ' t biết bất kỳ thiết bị điện tử hoặc ngôn ngữ lập trình đặc biệt nào. Bây giờ