FRA631 Foundation of Robotics Class project 68340700403 ตวัน ทองศุภโชค

Kinematics แขนกลที่ใช้สำหรับคลาสโปรเจคนี้คือ โมเดลสำเร็จรูปของ Arctos robotics เนื่องจากมีการส่งกำลังหลายรูปแบบจึงเหมาะสมแก่การป็นสื่อการเรียนรู้ ขนาดของระยะแต่ละข้อต่ออ้างอิงจาก Datasheet และ URDF file ของหุ่นยนต์ arctos ตัวหุ่นจะสามารถเคลื่อนที่ได้ทั้งแบบ joint space และ task space สามารถกำหนดจุดให้เคลื่อนที่ไปตามจุดๆนั้นและการกำหนดให้เคลื่อนที่ในแกนใดแกนหนึ่ง(jog) และการกำหนดจุดในการเคลื่อนที่แบบ task space เมื่อมีการตรวจพบว่าเส้นทางตัดกับพื้นที่ของฐานจะมีการสร้างทางอ้อมดังรูป Joint space move Task space move เป็นการเคลื่อนที่โดยอิงจากตำแหน่งมุมของข้อต่อหรือมอเตอร์เป็นหลัก เช่นข้อต่อที่1 เคลื่อนจาก0ไปที่100 องศา ทำให้เราสามารถสั่งมอเตอร์และใช้ …

รายงานความคืบหน้าครั้งที่ 3 68340700403 ตวัน ทองศุภโชค

ตัวหุ่นยนต์ ทำการเลเซอร์คัตแผ่นอะคิลิคเพื่อนำมาประกอบเป็นหุ่นตัวใหม่ เพื่อให้จัดเรียงพื้นที่ได้ง่ายยิ่งขึ้น ใช้มอเตอร์DC 5V ในการขับเคลื่อนเนื่องจากมีน้ำหนักที่ค่อนข้างเบาและมีขนาดเล็ก แต่ยังมีปัญหาคือในเมื่อเดินตรงตัวหุ่นจะเบี้ยวไปเรื่อยๆเนื่องจากมอเตอร์สองตัวมีกระแสไหลเข้าไปไม่เท่ากัน โปรแกรม เนื่องจากปัญหาโค้ดarduino และpythonในraspberry pi5 ทำงานไม่ซิงค์กันจึงทำการย้ายโปรแกรมควบคุมหุ่นและเซนเซอร์ทั้งหมดมาไว้ที่arduino ส่วนrasberry pi จะทำหน้าที่รับ-ส่งmqttเท่านั้น ส่วนpython ที่มีหน้าที่รับส่งmqtt ก็ได้เพิ่มให้สามารถรองรับค่าJson formatจากimage processingได้ สิ่งที่ได้ในสัปดาห์นี้คือ ได้ศึกษาวิธีการรับส่งค่าในformatของjson

รายงานความคืบหน้าครั้งที่2 68340700403 ตวัน ทองศุภโชค

1. Python ทำสร้างฟังก์ชันเพื่อลดความยาวของโปรแกรมลงและได้เพิ่มเติมโปรแกรมในส่วนของการตรวจจับทางออกในระหว่างสำรวจแผนที่ด้วยฟังก์ชัน If-else โดยจะทำการแบ่งแผนที่ออกเป็นตาราง10×10 เมื่อมีการตรวจพบว่ารถอยู่ในตำแหน่งที่ x=0,9 หรือ y=0,9 จะใช้เงื่อนไขตรวจสอบพิเศษเช่น เมื่อหุ่นกำลังหัน0องศาที่y=0 หากไม่พบกำแพงทางซ้ายแสดงว่าช่องที่รถอยู่คือช่องทางออกจากนั้นทำการจดจำตำแหน่ง มุมการหันและทิศของทางออก เมื่อถึงการเดินรอบที่2 หุ่นจำทำการเดินมาที่จุดทางออกแล้วหมุนตัวจนกว่ามุมการหันจะตรงกับมุมที่จำไว้จากนั้นทำการเลี้ยวไปในทิศทางที่ทางออกอยู่ 2.ตัวหุ่น ได้มีการเพิ่มLidarเข้าไปที่ตัวหุ่น แต่ตัวหุ่นประสบปัญหาคือstepper motor ไม่สามารถทำให้ตัวหุ่นเคลื่อนที่ได้จึงมีแผนที่จะเปลี่ยนไปใช้ DC motor แทน จึงจำเป็นจะต้องเปลี่ยนตัวโครง โดยเลือกใช้โครงของturtlebot และจากที่เราสามารถระบุตำแหน่งด้วย image processingได้ จึงได้แผนการcontrol ดังนี้ โดยจะมีการติดtagที่ตัวรถเพื่อให้สามารถระบุตำแหน่งจากกล้องได้หลังจากนั้นตัวopencv จะตรวจสอบว่าตอนนี้รถอยู่ที่ตำแหน่งใดของกล้องและจะคอยส่งตำแหน่งผ่าน mqttมาที่ตัวรถเป็นระยะ ๆ สิ่งที่ได้เรียนรู้จากการทำในครั้งนี้คือ …

รายงานความคืบหน้าครั้งที่1 :68340700403 นาย ตวัน ทองศุภโชค

ในส่วนของผมจะทำหน้าที่การเขียนโปรแกรมแก้เขาวงกตและควบคุมหุ่นยนต์solve mazeซึ่งสิ่งที่ได้มีดังนี้ โปรแกรมจะสร้างเขาวงกตและจำลองการเดินของหุ่นโดยเมทริกซ์จะทำการหมุนตามการหันหัวของหุ่น เพื่อให้สามารถควบคุมหุ่นและรับข้อมูลจากได้ง่ายขึ้น และเมื่อมีคำสั่งsolve ก็จะทำการหมุนกลับมา ณ มุมเดิมเพื่อให้โปรแกรมสามารถแก้เขาวงกตได้ โดยการรับค่าคำสั่งจาก mqtt คำสั่งมีดังนี้ s เดินตรงไปข้างหน้า2จุด r เลี้ยวขวาพร้อมกับหมุนเมทริกทวนเข็ม90องศา l เลี้ยวซ้ายพร้อมกับหมุนเมทริกตามเข็ม 90องศา b กลับหลังพร้อมกับหมุนเมทริกไป180องศา solve เพื่อหาหาเส้นทางที่สั้นที่สุดจากตำแหน่งที่ได้กำหนดไว้ตอนแรก พร้อมกับระบุทิศที่ต้องไปเมื่อเจอทางแยก return เพื่อค้นหาเส้นทางกลับมาที่จุดเดิม โดยการย้อนลำดับ array แล้วสลับซ้ายเป็นขวา หรือ ขวาเป็นซ้าย 2.สร้างหุ่นยนต์ โดยหุ่นยนต์ที่ใช้จะเป็นหุ่นยนต์ที่สร้างขึ้นโดยใช้ raspberry pi 5เป็นตัวคอยรับค่าจาก …

รายละเอียดโดยรวมของระบบ

program design (flow chart) ฟังก์ชันการทำงานจะเป็นการที่ลูกค้ากดปุ่มเรียกOperator หากOperator รับสายก็จะ pop upลูกตาขึ้นเพื่อต่อสายพูดคุยกับลูกค้าพร้อมทั้งสามารถควบคุมการเคลื่อนไหวของหุ่นลักษณะ2DOF program design (DATA FLOW DIAGRAM) ฟังก์ชันของระบบจะทำงานโดยที่เว็บของฝั่งOperator จะเปิดและโปรแกรมของหุ่นยนต์จะทำงานตลอดเวลาเพื่อเป็นการสร้าง ROOM บน PeerJS เมื่อลูกค้ากดปุ่มRaspberry pi จะส่งข้อมูล ‘x’ ผ่าน mosquitto mqtt ไปยังเว็บของ operator เพื่อทำการแจ้งเตือนว่ามีลูกค้า หากOperator กด ON ก็จะทำการส่งข้อมูล ‘ON’ ผ่าน …