5 ต.ค. 2022 เวลา 02:33 • วิทยาศาสตร์ & เทคโนโลยี
Month: September 2022
เดือนนี้ส่วนมากจะเป็นหัวข้อเกี่ยวกับ ROS2 ซะส่วนใหญ่
หลังจากที่เป็น TA วิชาที่สอนเกี่ยวกับ ROS2 มันก็ทำให้ต้องเรียนรู้มากกว่าน้องๆหน่อย เดียวน้องถามตอบไม่ได้ เขินแย่เลย
ในวิชาเรียนจะมี LAB ให้น้องๆทำ วันนี้จะมาอธิบาย LAB ที่ทำไปในแบบที่ผมเข้าใจ เป็นการทบทวนไปในตัว
Diagram แสดงกระบวนการของ Lab1
ก่อนอื่นเลยในการทำ LAB ครั้งนี้นั้นเนื้อหาจะเกี่ยวกับ ROS2 ผมจะไม่ได้อธิบายรายละเอียดลึกๆ ที่เป็นเนื้อหาของรายวิชา
จะให้ทำ Node ขึ้นมา 3 Node 1 Service โดยที่
- Node 1 และ Node 2 เป็นการสร้างตัวแปรบางอย่างสำหรับส่งไปทำกระบวนการต่อไป
- Node 3 เป็น Node สำหรับรวมข้อมูลและส่งไปยัง Turtlesim node
- Service สำหรับ เปลี่ยนค่าตัวแปรบางอย่างใน Node1 และ Node 2
หลังจากอ่านข้อมูล lab ที่ได้มาบอกตามตรง งงมาก ถึงจะมีการปูพื้นฐานมาบ้างแล้วแต่ก็ไม่ได้ลงมือเขียนโปรแกรม ตั้งแต่แรก ทำให้ลืม syntax นั้นนี้นู่นไปหมดแต่พอจับทางได้ ก็จะเข้าใจง่ายขึ้น
อันดันแรกทำความเข้าใจก่อนว่า Node1 กับ Node 2 นั้นต้องทำงานยังไง
ตอนแรกมาผมเริ่มที่ Service เลย ทำให้ผมงงมากว่า ต้องทำยังไงต่อ เพราะเรายังไม่เข้าใจว่า Node1 ทำงานยังไง ส่งค่าไปยังไง แล้วพอดีกับที่หัวตันๆแล้วเขียนไป งงไป ก็ไปเจอกับน้องที่นั่งเขียน Publisher กับ Subscription
เราลืมไปได้ยังไง ว่าขั้นตอนแรกเราควรจะเขียนให้มันส่งค่าไปยัง Topic ที่กำหนดไว้ให้ได้ก่อน
เพราะจะได้ดูว่าข้อมูลที่ส่งไปถูกหรือไม่ แล้วก็ยังทำให้เข้าใจข้อมูลก่อนที่จะไปเขียน Serivce เนื่องจาก Service คือการเปลี่ยนข้อมูลภาย Node นั้นๆ
พอเจอว่าต้องทำยังไงก่อนเราก็เริ่มเลย
- ทำการเขียน Pub ขึ้นมาใน Node 1
- ทดสอบ echo ข้อมูล ใน Topic1 ออกมาดูว่า ถูกต้องไหม
- ทดลองเพิ่ม Node 2 ขึ้นมา จาก Launch File และทดสอบว่า Node2 ส่งค่าไปยัง Topic2 ถูกต้องไหม
- เขียน Sub ใน Node 3 เพื่อนำข้อมูลจาก Topic1 และ Topic2 มาใช้งาน ภายใน Node 3
- เขียน Pub ใน Node 3 สำหรับส่งข้อมูลไปยัง Topic3 เพื่อให้ Turtlesim Node ทำงาน
- และสุดท้ายถึงย้อนกลับไปทำ Service
การย้อนกลับไปทำ Service ในตอนสุดท้ายนั้น จะทำให้เรา เข้าใจว่าต้องเปลี่ยนแปลงข้อมูลไหน เพราะเราทำ Node หลักๆทั้งหมดไปเรียบร้อยแล้ว ก็จะทำให้เราเข้าใจการทำงานมากขึ้น
ยังมีเรื่องว่า Service Server กับ Client อีก ที่ตอนแรกงงมาก เพราะ เราสามารถสร้าง Server ขึ้นมาใน Node แล้วเรียกใช้ผ่าน ros2 service call ได้
ดันไปงง concept ตอนแรก ก็เลยงงยาวเลย แต่พอทำตามขั้นตอนที่เขียนไป ก็เข้าใจง่ายขึ้นมากๆ
โฆษณา