รายงานความคืบหน้าครั้งที่ 2 68340700410 พัฒนรัตน์ จีดจีน

การส่งข้อมูลตำแหน่งหุ่นยนต์ผ่าน MQTT

จากครั้งก่อนหน้าเราได้รับข้อมูลตำแหน่งของหุ่นมาในรูปแบบ ros masage เพื่อให้สามารถส่งต่อข้อมูลเหล่านี้ไปยังโมดูลอื่นที่ไม่ใช่ ros ได้ จึงเลือกส่งข้อมูลผ่าน mqtt
ขั้นตอนการทำมีดังนี้

  1. สร้าง node แล้วให้ node นี้ subscribe topic ที่ต้องการจะส่งไปยังโมดูลอื่น
  2. แปลงข้อมูลให้อยู่ใน format ที่กำหนด
  3. เรียกใช้งาน ros2 mqtt_bridge เพื่อแปลง ros2 masage เป็น mqtt masage

State ของหุ่นยนต์

ประกอบไปด้วย 3 สเตท แต่ละสเตทหุ่นจะทำงานต่างกันดังนี้

  1. STOP : เข้าสเตทนี้เมื่อผู้ใช้ป้อนตัวแปร stop ผ่าน ros2 parameter ให้เท่ากับ 1 หุ่นจะหยุดวิ่ง
  2. SOLVE : เข้าสเตทนี้เมื่อผู้ใช้ป้อนตัวแปร solve ผ่าน ros2 parameter ให้เท่ากับ 1 หุ่นจะเริ่ม solve maze วิ่งไปยัง grid ที่ต้องการ
  3. RETURN : เข้าสเตทนี้เมื่อหุ่นไปถึง grid ที่ต้องการแล้วหุ่นจะวิ่งกลับมาที่เดิม และหยุดการทำงาน

ตัวอย่าง

ให้ stop = true สเตทจะเข้าสู่ STOP

ให้ solve = true สเตทจะเข้าสู่ SOLVE

เมื่อ current grid (x, y) = target grid (x,y) ในที่นี้ คือ (3,0) สเตทจะเข้าสู่ return

ความรู้ที่ใช้

  1. OOP: inheritance –> การสร้าง node ใน ros2
  2. Function: if elif else –> finite state machine
  3. Date structure: array –> ส่งข้อมูลไปยัง mqtt

สิ่งที่ได้เรียนรู้

  1. การส่งข้อมูลข้าม framework จาก ros base ไปยัง non ros base ผ่าน MQTT โดยการใช้ ros2 mqtt bridge
  2. การเขียนโปรแกรมแบบ finite state machine

แหล่งข้อมูล

https://github.com/ika-rwth-aachen/mqtt_client: รายงานความคืบหน้าครั้งที่ 2 68340700410 พัฒนรัตน์ จีดจีน https://auth0.com/blog/state-pattern-in-python/#Advantages-and-Disadvantages: รายงานความคืบหน้าครั้งที่ 2 68340700410 พัฒนรัตน์ จีดจีน