Mục lục:

Localino Theo dõi Roomba IRobot, Lập bản đồ Môi trường và Cho phép Kiểm soát.: 4 bước
Localino Theo dõi Roomba IRobot, Lập bản đồ Môi trường và Cho phép Kiểm soát.: 4 bước

Video: Localino Theo dõi Roomba IRobot, Lập bản đồ Môi trường và Cho phép Kiểm soát.: 4 bước

Video: Localino Theo dõi Roomba IRobot, Lập bản đồ Môi trường và Cho phép Kiểm soát.: 4 bước
Video: Level1 News February 5 2019: Hello From The Robot Side, I Will Call A Thousand Times 2024, Tháng mười một
Anonim
Image
Image

Để xây dựng cầu nối WiFi-UART, bạn có thể xem repo github này:

Nó có một cơ sở tốt để bắt đầu. Hãy chắc chắn rằng bạn đọc kỹ hướng dẫn, vì Roomba VCC trong quá trình sạc sẽ tăng lên đến 20 Volts! Nếu bạn thêm ESP8266 mà không có bộ chuyển đổi buck thích hợp hoạt động ngay cả khi lên đến 20V và chuyển đổi xuống 3,3V, bạn sẽ làm hỏng ESP của mình.

Ngoài ra, hãy đảm bảo sử dụng bộ chuyển mức (ví dụ: sử dụng bộ chia điện áp) để chuyển các mức logic 5V UART từ Roomba sang 3,3V, được sử dụng bởi ESP.

Một chi tiết quan trọng khác là bộ chuyển đổi buck nên có 300mA, nhưng không nhiều hơn hoặc ít hơn nhiều (tùy thuộc vào chính bộ chuyển đổi buck). Có một số thiết bị có thể tạo ra nhiều dòng điện hơn, nhưng khiến Roomba bị hỏng vì chúng hút quá nhiều dòng điện trong quá trình khởi động. Chúng tôi phát hiện ra rằng Bộ điều chỉnh điện áp bước xuống Pololu 3.3V, 300mA (D24V3F3) hoạt động hoàn hảo. Các phiên bản thay thế có 500mA / 600mA đã gây ra sự cố giao diện Roomba UART. Về cơ bản, Roomba phản ứng khi nhấn nút, nhưng không phản ứng với các lệnh thông qua giao diện UART. Khi điều này xảy ra, chúng tôi phải tháo pin Roomba và khởi động lại Roomba với cầu nối WiFi-UART được gắn vào. Tuy nhiên, chỉ có D24V3F3 hoạt động tốt.

Ngoài chi tiết kỹ thuật đó, bạn phải thêm các lệnh bổ sung vào mã mà bạn có thể tìm thấy trong thông số kỹ thuật giao diện mở Roomba. Bạn sẽ cần thêm tất cả các lệnh mà bạn muốn roomba của mình phản ứng (ví dụ: lùi, tiến, tốc độ, v.v.).

ví dụ trong arduino IDE:

void goForward () {char c = {137, 0x00, 0xc8, 0x80, 0x00}; // 0x00c8 == 200 Serial.print (c); }

void goBackward () {char c = {137, 0xff, 0x38, 0x80, 0x00}; // 0xff38 == -200 Serial.print (c); }

void spinLeft () {char c = {137, 0x00, 0xc8, 0x00, 0x01}; Serial.print (c); }

void spinRight () {char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serial.print (c); }

nếu bạn viết bằng lua, nó trông hơi khác một chút, một ví dụ cho lần lượt TRÁI sẽ trông như thế này:

if (_GET.pin == "LEFT") then print ('\ 137'); --VOR

tmr.delay (100);

print ('\ 00'); - Vận tốc = 200 = 0x00C8 -> 0 dưới 200

tmr.delay (100);

print ('\ 200'); - Vận tốc

tmr.delay (100);

print ('\ 254'); - Bán kính = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.delay (100);

print ('\ 12'); -- Xoay

kết thúc

Đảm bảo rằng bạn phải sửa mô tả giao diện mở cho Roomba của mình. Có sẵn ít nhất hai thông số kỹ thuật giao diện mở.

cho dòng Roomba 5xx:

cho loạt Roomba 6xx:

Khi bạn đã xây dựng cầu nối WiFi-UART của mình và thử nghiệm các lệnh mà bạn đã thực hiện thêm một bước lớn. Video này chứng minh rằng ứng dụng và cách tiếp cận hoạt động. Chúng tôi hơi lười biếng, giao diện web thiếu tất cả các lệnh điều khiển khác, như tiến, lùi, tốc độ, phải, trái, v.v., nhưng bạn có thể đưa ra các lệnh qua http. Nhưng dù sao, nó chỉ là một minh chứng rằng điều khiển từ xa của Roomba hoạt động với một phần cứng và phần mềm dễ dàng sử dụng ESP8266.

Giờ đây khi bạn có thể điều khiển Roomba của mình từ xa từ ứng dụng PC, điều duy nhất còn thiếu là bản địa hóa trong nhà. Chúng tôi cần điều này để đóng vòng phản hồi, vì mục tiêu của chúng tôi là điều khiển robot theo một hướng nhất định. Làm thôi nào.

Bước 3: Thiết lập hệ thống bản địa hóa trong nhà của bạn

Để đóng vòng phản hồi, chúng tôi sử dụng hệ thống bản địa hóa trong nhà. Chúng tôi sử dụng Localino cho việc này. Hệ thống Localino bao gồm "mỏ neo" và "thẻ". Các neo được định vị tại các vị trí cố định bên trong phòng và xác định vị trí của thẻ di chuyển (được đặt trên Roomba). Xử lý vị trí được thực hiện trong một ứng dụng PC. Đó là một lợi thế lớn, vì bạn cũng có thể điều khiển Roomba từ cùng một PC! Có sẵn mã nguồn miễn phí từ trang web Localino, nó được viết bằng python và cũng có một luồng thời gian thực cung cấp tọa độ XYZ của thẻ. Dòng dữ liệu có sẵn thông qua mạng UDP, nhưng bạn cũng có thể thêm MQTT hoặc bất kỳ thứ gì khác mà bạn thích. Nếu bạn biết Python, có rất nhiều thư viện giúp bạn.

Trong video này, bản địa hóa của Roomba được trình bày. Do đó, chúng tôi có 4 thiết lập neo trong phòng tại các vị trí cố định, cho phép định vị 3D của Roomba. Nói chung, chúng tôi sẽ chỉ yêu cầu 3 neo, vì Roomba có thể sẽ không di chuyển theo trục Z, do đó 2D là đủ. Nhưng vì các neo được đặt ở độ cao của phích cắm chính AC (cách mặt đất khoảng 30cm) nên thiết lập 2D sẽ gây ra ít lỗi ước tính vị trí. Vì vậy, chúng tôi quyết định có 4 neo và bản địa hóa ở dạng 3D.

Bây giờ khi chúng ta có vị trí của Roomba, bước tiếp theo của chúng ta là điều khiển Roomba từ cùng một ứng dụng. Ý tưởng là sử dụng sự thật cơ bản và ước tính một con đường làm sạch hoàn hảo cho robot. Với việc sử dụng Localino, chúng ta có thể đóng vòng phản hồi và điều khiển robot từ ứng dụng PC.

Nhận xét thiết lập

Định vị các neo Localino bên trong phòng ở các vị trí x, y khác nhau và ba trong số chúng ở cùng một vị trí z. Định vị một trong bốn neo ở độ cao khác z cho mỗi phòng. Đảm bảo rằng thẻ Localino được phủ sóng tốt, thẻ này sẽ di chuyển cùng với Roomba.

Tất cả các neo đều có một ID neo uniqe, được hiển thị trên mã vạch của Localino và có thể được đọc ra bằng công cụ “cấu hình localino”.

Lưu ý các vị trí trong X, Y, Z và các ID neo. Điều này là bắt buộc đối với Phần mềm Bộ xử lý Localino và phải được điều chỉnh trong tệp “localino.ini” trong thư mục “LocalinoProcessor”

Các mỏ neo phải hướng lên trên hoặc hướng xuống trong Z (khi vùng XY được bao phủ), nhưng không hướng về phía vùng được bao phủ. Các neo cũng không được bao phủ bởi kim loại hoặc bất kỳ vật liệu làm nhiễu tín hiệu không dây nào khác. Nếu điều này là không thể, thì giữa bất kỳ vật liệu nào và mỏ neo cũng phải có một khe hở không khí nhất định.

… Nhiều hơn nữa.

Bước 4: Điều chỉnh phần mềm Python

giữ nguyên. nhiều hơn nữa để đến.

Đề xuất: