สารบัญ:

Arduino Otto Robot พร้อม State Machine: 4 ขั้นตอน
Arduino Otto Robot พร้อม State Machine: 4 ขั้นตอน

วีดีโอ: Arduino Otto Robot พร้อม State Machine: 4 ขั้นตอน

วีดีโอ: Arduino Otto Robot พร้อม State Machine: 4 ขั้นตอน
วีดีโอ: OTTO BOT working| Arduino nano project| Robotic| mini walking robot 2024, พฤศจิกายน
Anonim
Image
Image

ภาพรวมโครงการ

ในโครงการนี้ ฉันต้องการแสดงวิธีการเขียนโปรแกรม Otto Robot ซึ่งเป็นหุ่นยนต์ DIY จาก Arduino การใช้ YAKINDU Statechart Tools (ฟรีสำหรับไม่ใช่เชิงพาณิชย์) เราสามารถใช้เครื่องของรัฐเพื่อสร้างแบบจำลองพฤติกรรมของ Otto Robot แบบกราฟิกและสร้างโค้ด C/C++ ได้อย่างง่ายดาย เราจะใช้หนึ่งในตัวอย่างของพวกเขาเพื่อขยายพฤติกรรมตามความชอบของเรา

สำหรับคนที่ไม่รู้ว่าเครื่องของรัฐคืออะไรและไม่ต้องการค้นหาบทความ Wikipedia ที่ซับซ้อน นี่คือคำอธิบายเล็กน้อย:

เครื่องสถานะเป็นเพียงโหนดและเส้นทางระหว่างโหนดเหล่านั้น คุณมีโหนดเริ่มต้นและสามารถใช้เส้นทางไปยังโหนดอื่นได้ขึ้นอยู่กับผู้พิทักษ์ซึ่งสามารถแสดงด้วยเหตุการณ์ได้ เหตุการณ์เหล่านี้เกิดขึ้นจากเครื่องของรัฐเองหรือจากภายนอก (เช่น ฟังก์ชัน ฯลฯ)

เครื่องมือนี้ใช้อินเทอร์เฟซแบบลากและวางและภาษาเฉพาะโดเมน ฉันจะอธิบายให้คุณฟัง เพื่อที่คุณจะได้ไม่ต้องค้นหาเอกสารประกอบเพื่อให้ Otto ของคุณเริ่มทำงาน การตั้งค่า IDE นั้นไม่ยากเกินไป เนื่องจากปลั๊กอินทั้งหมด ฯลฯ ควรได้รับการติดตั้งโดยอัตโนมัติ

เสบียง

Otto Robot หรือ Zowi Robot

โรบ็อตทั้งสองนี้ทำสิ่งเดียวกันโดยพื้นฐานแล้วและใช้ API เดียวกัน Otto Robot เป็นหุ่นยนต์ DIY ที่มีชิ้นส่วนออนไลน์ พร้อมที่จะพิมพ์ด้วยเครื่องพิมพ์ 3 มิติหากคุณมี อีกทางเลือกหนึ่งคือ Zowi Robot ซึ่งสามารถซื้อได้ทางออนไลน์และพร้อมใช้งาน

YAKINDU Statechart Tools

เครื่องมือที่เราจะใช้ในการสร้างแบบจำลองเครื่องสถานะ คุณสามารถเริ่มต้นด้วยการทดลองใช้ 30 วัน และรับใบอนุญาตฟรีสำหรับการใช้งานที่ไม่ใช่เชิงพาณิชย์ในภายหลัง

Eclipse C++ IDE สำหรับปลั๊กอิน Arduino

เราไม่ต้องดาวน์โหลดด้วยตนเองเพราะ IDE ทำเพื่อเรา ฉันยังคิดว่ามันคงจะดีที่จะแสดงรายการที่นี่

ขั้นตอนที่ 1: การตั้งค่าทุกอย่าง

ทำความเข้าใจวิธีเชื่อมต่อ Otto
ทำความเข้าใจวิธีเชื่อมต่อ Otto

หลังจากติดตั้ง IDE แล้ว ให้รันและตั้งค่าพื้นที่ทำงานที่ใดก็ได้บนพีซีของคุณ (การตั้งค่าจะเหมือนกับการใช้ Eclipse เป็นครั้งแรก) เมื่อโปรแกรมเริ่มทำงานอย่างสมบูรณ์แล้ว ให้คลิกที่หน้าต้อนรับและคลิกที่ 'ไฟล์ -> ใหม่ -> ตัวอย่าง…' จากนั้นเลือก 'YAKINDU Statechart Examples' รอสักครู่แล้วค้นหา "ระบบฝังตัว -> Zowi (C++))" ตัวอย่าง.

สำคัญ: คลิกที่ปุ่มขวาบนที่เรียกว่า 'ติดตั้งการพึ่งพา…'! สิ่งนี้จะติดตั้งทุกอย่างให้คุณ ดังนั้นคุณจึงไม่ต้องกังวลกับไลบรารี ปลั๊กอิน และอื่นๆ ดาวน์โหลดตัวอย่าง ทำตามคำแนะนำในตัวอย่าง "ระบบฝังตัว -> Zowi (C++)" จากนั้นดำเนินการในขั้นตอนต่อไป

ขั้นตอนที่ 2: ทำความเข้าใจวิธีเชื่อมต่อ Otto

ไปที่ไฟล์ ".sct" และแก้ไขเครื่องสถานะตามที่คุณต้องการ ด้านขวาเป็นเมนูที่มีรายการทั้งหมด เราสนใจเฉพาะสถานะและช่วงการเปลี่ยนภาพเท่านั้น

ในภาพ คุณจะเห็นว่าฉันเขียนบางสิ่งลงในทรานซิชัน "หลังจาก X s" ค่อนข้างจะอธิบายตนเองได้ และ "เสมอ" หมายความว่าจะไปที่นั่นทันทีหลังจากจบโค้ดจากรัฐ "รายการ /" หมายความว่ารหัสควรถูกดำเนินการทันทีหลังจากเข้าสู่สถานะ

IDE คอมไพล์เครื่องสถานะเป็น C ++ ซึ่งสอดคล้องกับ Arduino ในการใช้คุณลักษณะของ Otto เราต้องทำงานเล็กน้อยเพื่อเข้าถึงอินเทอร์เฟซ

คีย์เวิร์ดต่อไปนี้สามารถใช้เพื่อกำหนดสิ่งต่าง ๆ สำหรับเครื่องสถานะที่จะใช้:

ค่าคงที่ซึ่งเก็บค่าไว้และไม่สามารถเปลี่ยนแปลงได้

ตัวแปรซึ่งเก็บค่าและเปลี่ยนแปลงได้

การดำเนินการซึ่งจะถูกสร้างขึ้นเป็นวิธีการ C++ เสมือนสำหรับการนำไปใช้

อินเตอร์เฟซ:

const PIN_YL: จำนวนเต็ม = 2 const PIN_YR: จำนวนเต็ม = 3 const PIN_RL: จำนวนเต็ม = 4 const PIN_RR: จำนวนเต็ม = 5 เสียง const: จำนวนเต็ม = 2 const mouth_heart: จำนวนเต็ม = 13 const mouth_happyOpen: จำนวนเต็ม = 11 การดำเนินการ zowi_integer (, YR:: integer, RL: integer, RR: integer) operation zowi_home() operation zowi_putMouth(mouthType: integer) operation zowi_sing(songName: integer) operation zowi_walk(steps: real, T: integer, dir: integer_shake) operation zowi)

เคล็ดลับแบบมือโปร: หากคุณไม่รู้ว่าต้องป้อนอะไรในที่ใดที่หนึ่งหรือดูเหมือนว่าจะมีข้อผิดพลาด ให้กด "ctrl+space" เพื่อรับคำแนะนำว่าคุณสามารถป้อนอะไรได้บ้าง

นอกจากนี้ คุณควรดูตัวอย่าง พวกเขามีโค้ดอยู่ด้วย! คุณยังสามารถใช้เป็นโครงสร้างเพื่อแก้ไขแบบจำลอง ซึ่งเป็นส่วนเดียวที่เราสนใจในตอนนี้

ขั้นตอนที่ 3: เติมช่องว่าง

เติมช่องว่าง
เติมช่องว่าง

หลังจากเปลี่ยนสิ่งต่าง ๆ ในโมเดล คุณสามารถคลิกขวาที่ "zowiSCT.sgen -> Generate Code Artifacts" สิ่งนี้สร้างฟังก์ชันเสมือนใน C ++ ซึ่งประกาศในเครื่องสถานะไปยังโฟลเดอร์ "src-gen" ซึ่งเราจะนำไปใช้โดยใช้ C ++ ปกติ

เพียงสร้างสองไฟล์นี้ในโฟลเดอร์ "src" เพื่อรับฟังก์ชันที่เราต้องการจาก Otto

อันดับแรก Impl.h

#ifndef SRC_IMPL_H_

#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" คลาส Impl: สาธารณะ ZowiSCT::DefaultSCI_OCB{ สาธารณะ: Impl(); เสมือน ~Impl(); เป็นโมฆะ zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); เป็นโมฆะ zowi_home(); เป็นโมฆะ zowi_putMouth(sc_integer mouthType); เป็นโมฆะ zowi_sing (sc_integer songName); เป็นโมฆะ zowi_walk (ขั้นตอน sc_real, sc_integer T, sc_integer dir); เป็นโมฆะ zowi_shakeLeg(); }; #endif /* SRC_IMPL_H_ */

จากนั้น Impl.cpp

#include "Impl.h"

#include "../Zowi/Zowi.h" Zowi zowi = ใหม่ Zowi(); Impl::Impl() {} Impl::~Impl() {} เป็นโมฆะ Impl::zowi_home() { zowi.home(); } โมฆะ Impl::zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR) { zowi.init (YL, YR, RL, RR); } เป็นโมฆะ Impl::zowi_putMouth (sc_integer mouthType) { zowi.putMouth (mouthType); } เป็นโมฆะ Impl::zowi_sing (sc_integer songName) { zowi.sing (ชื่อเพลง); } โมฆะ Impl::zowi_walk (ขั้นตอน sc_real, sc_integer T, sc_integer dir) { zowi.walk (ขั้นตอน, T, dir); } เป็นโมฆะ Impl::zowi_shakeLeg() { zowi.shakeLeg(); }

ขั้นตอนที่ 4: การทำ Otto Dance

เมื่อคุณพอใจกับผลิตภัณฑ์ของคุณแล้ว ให้คลิกที่ค้อนที่ด้านบนซ้ายและรอให้กระบวนการเสร็จสิ้น จากนั้นคลิกที่ลูกศรสีเขียวทางด้านขวาของค้อนและดู Otto ของคุณเต้น!

หากต้องการ คุณสามารถดูตัวอย่างอื่นๆ ได้: YAKINDU Statechart Tools

แนะนำ: