Mục lục:

Robot Arduino Otto với máy trạng thái: 4 bước
Robot Arduino Otto với máy trạng thái: 4 bước

Video: Robot Arduino Otto với máy trạng thái: 4 bước

Video: Robot Arduino Otto với máy trạng thái: 4 bước
Video: Đồ án tốt nghiệp BKĐN | Cánh Tay Robot 4 Bậc Tự do phân loại sản phẩm theo màu sắc | Robot arm 4 dof 2024, Tháng mười một
Anonim
Image
Image

Tổng quan dự án

Trong dự án này, tôi muốn giới thiệu cho các bạn cách lập trình Robot Otto, một robot tự làm dựa trên Arduino. Sử dụng Công cụ Statechart YAKINDU (miễn phí cho phi thương mại), chúng ta có thể dễ dàng sử dụng các máy trạng thái để mô hình hóa hoạt động của Robot Otto bằng đồ thị và tạo mã C / C ++. Chúng tôi sẽ sử dụng một trong những ví dụ của họ để mở rộng hành vi theo ý thích của chúng tôi.

Đối với những người không biết máy trạng thái là gì và không muốn lục tung bài viết phức tạp trên Wikipedia, đây là một lời giải thích nhỏ:

Máy trạng thái chỉ là các nút và đường dẫn giữa các nút đó. Bạn có một nút bắt đầu và có thể đi đường dẫn đến các nút khác tùy thuộc vào các bảo vệ của chúng, có thể được biểu thị bằng các sự kiện. Những sự kiện này được tạo ra từ chính máy trạng thái hoặc từ bên ngoài (như một hàm, v.v.).

Bản thân công cụ này sử dụng giao diện kéo và thả và ngôn ngữ dành riêng cho miền. Tôi sẽ xem qua nó cho bạn, vì vậy bạn không cần phải tìm hiểu tài liệu của họ để thiết lập và chạy Otto của bạn. Việc thiết lập IDE không quá khó, vì tất cả các plugin, v.v. sẽ được cài đặt tự động.

Quân nhu

Robot Otto hoặc Robot Zowi

Cả hai robot này về cơ bản hoạt động giống nhau và sử dụng cùng một API. Robot Otto là một robot tự chế, với các bộ phận của nó trực tuyến, sẵn sàng được in bằng máy in 3D nếu bạn tình cờ có. Thay thế là Zowi Robot, có thể mua trực tuyến và sẵn sàng sử dụng.

Công cụ Statechart YAKINDU

Công cụ mà chúng ta sẽ sử dụng để lập mô hình máy trạng thái. Bạn có thể bắt đầu với bản dùng thử 30 ngày và sau đó sẽ nhận được giấy phép miễn phí cho mục đích sử dụng phi thương mại.

Eclipse C ++ IDE cho Plugin Arduino

Chúng tôi không phải tải xuống theo cách thủ công, vì IDE thực hiện việc đó cho chúng tôi. Tôi vẫn nghĩ sẽ rất hay nếu liệt kê nó ở đây.

Bước 1: Thiết lập mọi thứ

Hiểu cách giao diện với Otto
Hiểu cách giao diện với Otto

Sau khi cài đặt IDE, hãy chạy nó và thiết lập không gian làm việc ở bất kỳ đâu trên máy tính của bạn (thiết lập giống hệt như sử dụng Eclipse lần đầu tiên). Khi chương trình đã khởi động hoàn toàn, hãy nhấp vào trang chào mừng và nhấp vào 'Tệp -> Mới -> Ví dụ…' rồi chọn 'YAKINDU Statechart Examples', đợi một chút và tìm kiếm "Embedded Systems -> Zowi (C ++)" thí dụ.

QUAN TRỌNG: Nhấp vào nút trên cùng bên phải có tên 'Cài đặt phụ thuộc…'! Điều này cài đặt mọi thứ cho bạn, vì vậy bạn không phải lo lắng về Thư viện, Trình cắm và những thứ tương tự. Tải xuống ví dụ, làm theo hướng dẫn trong ví dụ "Hệ thống nhúng -> Zowi (C ++)" và sau đó tiếp tục với bước tiếp theo.

Bước 2: Tìm hiểu cách giao diện với Otto

Vào tệp ".sct" và chỉnh sửa trạng thái máy theo ý muốn của bạn. Bên phải là một menu với tất cả các món có sẵn. Chúng tôi chỉ quan tâm đến các trạng thái và quá trình chuyển đổi.

Trong hình, bạn có thể thấy, rằng tôi đã viết một số nội dung vào quá trình chuyển đổi; "after X s" khá dễ hiểu và "always" chỉ có nghĩa là nó sẽ đến đó ngay sau khi hoàn thành mã từ State. "Entry /" có nghĩa là mã phải được thực thi ngay sau khi nhập trạng thái.

IDE biên dịch máy trạng thái sang C ++, tương thích với Arduino. Để sử dụng các tính năng của Otto, chúng ta phải tự mình thực hiện một chút thao tác khi truy cập vào giao diện.

Các từ khóa sau có thể được sử dụng để xác định nội dung cho máy trạng thái sử dụng:

hằng số, giữ các giá trị và không thể thay đổi

các biến, giữ các giá trị và có thể được thay đổi

các hoạt động, sẽ được tạo cho các phương thức C ++ ảo để triển khai

giao diện:

const PIN_YL: integer = 2 const PIN_YR: integer = 3 const PIN_RL: integer = 4 const PIN_RR: integer = 5 const sound: integer = 2 const mouth_heart: integer = 13 const mouth_happy Mở: integer = 11 hoạt động zowi_init (YL: integer, YR: integer, RL: integer, RR: integer) hoạt động zowi_home () hoạt động zowi_putMouth (miệngType: số nguyên) hoạt động zowi_sing (songName: số nguyên) hoạt động zowi_walk (các bước: thực, T: số nguyên, dir: số nguyên) hoạt động zowi_shakeLeg ()

Mẹo chuyên nghiệp: nếu bạn không biết phải nhập gì ở một nơi nào đó hoặc có vẻ như có lỗi, hãy nhấn "ctrl + dấu cách" để nhận một số gợi ý về những gì bạn có thể nhập.

Ngoài ra, bạn nên xem xét các ví dụ, chúng cũng có một số mã trong đó! Bạn cũng có thể sử dụng chúng như một cấu trúc để chỉ chỉnh sửa mô hình, đây là phần duy nhất mà chúng tôi quan tâm đến thời điểm hiện tại.

Bước 3: Lấp đầy khoảng trống

Điền vào các khoảng trống
Điền vào các khoảng trống

Sau khi thay đổi mọi thứ trong mô hình, bạn có thể nhấp chuột phải vào "zowiSCT.sgen -> Tạo các phần mềm mã". Điều này tạo ra các hàm ảo trong C ++, được khai báo trong máy trạng thái vào thư mục "src-gen", sau đó chúng tôi thực hiện bằng cách sử dụng C ++ bình thường.

Chỉ cần tạo hai tệp này trong thư mục "src" để có được chức năng chúng tôi muốn từ Otto.

Đầu tiên là Impl.h

#ifndef SRC_IMPL_H_

#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" class Impl: public ZowiSCT:: DefaultSCI_OCB {public: Impl (); ảo ~ Impl (); void zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); void zowi_home (); void zowi_putMouth (sc_integer mouthType); void zowi_sing (sc_integer songName); void zowi_walk (bước sc_real, sc_integer T, sc_integer dir); void zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /

Sau đó, Impl.cpp

#include "Impl.h"

#include "../Zowi/Zowi.h" Zowi zowi = new Zowi (); Impl:: Impl () {} Impl:: ~ Impl () {} void Impl:: zowi_home () {zowi.home (); } void Impl:: zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR) {zowi.init (YL, YR, RL, RR); } void Impl:: zowi_putMouth (sc_integer mouthType) {zowi.putMouth (mouthType); } void Impl:: zowi_sing (sc_integer songName) {zowi.sing (songName); } void Impl:: zowi_walk (bước sc_real, sc_integer T, sc_integer dir) {zowi.walk (bước, T, dir); } void Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }

Bước 4: Thực hiện điệu nhảy Otto

Khi bạn hài lòng với sản phẩm của mình, hãy nhấp vào chiếc búa ở trên cùng bên trái và đợi quá trình kết thúc. Sau đó nhấp vào mũi tên màu xanh lá cây ở bên phải của chiếc búa và xem Otto của bạn đang nhảy múa!

Nếu muốn, bạn có thể xem thêm một số ví dụ khác: YAKINDU Statechart Tools

Đề xuất: