BARTLAB Humanoid

Mahidol University, Thailand

Microcontroller Part Update

Posted in Electronics on January 3, 2010 by bomb

สืบเนื่องจากปัญหาของการส่งชุดคำสั่งจาก ARM7 ไปยัง Motor ในรอบคัดเลือก ทางทีม BARTLAB ได้ใช้เวลาหลังจากผ่านเข้ารอบศึกษาเพิ่มเติมในส่วนของการต่อ hardware จนได้พบว่า สาเหตุที่ไม่สามารถติดต่อกับ motor ผ่านทาง ARM7 ได้ เพราะ การต่อระหว่าง ARM7 CPU กับ บอร์ด Buffer และ จาก Buffer ไปยัง Motor นั้นไม่ตรงตาม Manual

untitled2-300x224

ARM7(ซ้าย) & CM-5 Buffer Board ทำเอง

ซึ่งไม่ตรงกับ level ของการต่อที่บอกไว้ใน manual

connection1

Page 7 on AX-12 Manual

ซึ่งทางทีมได้แก้ปัญหานี้โดยการแก้ไข Board เรียบร้อย ซึ่งจะทำการทดลองและนำรูปมาลงในโอกาสต่อไป

ส่วนขณะนี้ ทางทีมงานได้ทำการศึกษาวิธีการใช้ Gyrosensor มาได้ระยะหนึ่งแล้ว ซึ่งจะทำการ Update ลงใน Blog ในโอกาสต่อไปเช่นเดียวกัน

ระบบติดตามลูกบอล (Real-Time Ball Tracking)

Posted in Computer Vision on December 23, 2009 by porr

ระบบติดตามลูกบอล ทำการพัฒนาโดยใช้ความสามารถในการประมวลผลภาพและควบคุมมอเตอร์ของโปรแกรม MATLAB โดยใช้กล้องเวปแคมเพียง 1 ตัวเป็นเซนเซอร์ เพื่อทดสอบความถูกต้องแม่นยำในการตรวจจับและติดตามการเคลื่อนที่ของลูกบอลสีส้มตามกติกาการแข่งขัน โดยระบบดังกล่าวจะมีภาพรวมของระบบ ดังรูปที่ 1

ball_tracking

รูปที่ 1 ภาพรวมของระบบติดตามลูกบอล

โดยในขั้นตอนหลักๆที่จะทำการอธิบายถึงรายละเอียด ได้แก่ Color thresholding, Template Matching, Motor Control for tracking โดยแต่ละขั้นตอนมีรายละเอียด ดังต่อไปนี้

Color Thresholding

ในขั้นตอนนี้จะทำการจำแนกพื้นที่ที่มีสีส้มซึ่งปรากฏอยู่ในภาพถ่ายออกจากพื้นหลังและส่วนประกอบอื่น โดยทำการแปลงปริภูมิสี (Color Model) จาก RGB ไปเป็น HSV แล้วทำการกำหนดขอบเขตของสีสำหรับการทำ Thresholding ด้วยค่า H ซึ่งอยู่ในช่วง [0.03, 0.13] และค่า V ในช่วง [0.6, 1] ซึ่งผลจากการทำ Thresholding ด้วยค่าดังกล่าวจะทำให้สามารถแยกพื้นที่สีส้มออกจากภาพถ่ายได้ จากนั้นจึงทำการกรองด้วย Median Filter เพื่อลดสัญญาณรบกวนและทำให้ของเขตของภาพมีความเรียบมากขึ้น ดังรูปที่ 2

color_thresholding

รูปที่ 2 ภาพต้นฉบับและภาพหลังจากการทำ Color Thresholding

Design of Robot(รอบคัดเลือก)

Posted in Mechanics on December 23, 2009 by porr

  • ทางทีมได้นำ Bioloid มาเป็นหุ่นต้นแบบ เพื่อใช้ในการเริ่มต้นศึกษา ท่าทางการเดิน รวมไปถึงการเคลื่อนไหวต่าง ๆ ( เนื่องจากทางทีมได้พิจารณาแล้วว่าการเริ่มต้นด้วยหุ่นสำเร็จรูปจะทำให้สามารถพัฒนาด้านต่าง ๆ เช่น ไมโครคอนโทรลเลอร์ , AI , Image processing ควบคู่กันไปได้เร็วกว่าการเริ่มต้นผลิตชิ้นส่วนเองตั้งแต่ต้นทั้งหมด และจะมีการทำชิ้นส่วนเองในภายหลัง )
  • ขนาดฝ่าเท้า 6 cm x 10 cm
  • ส่วนสูงโดยประมาณ 45 cm ( ยังไม่ได้ทำการประกอบส่วนลำตัว )

Design

ภาพ ชิ้นส่วนส่วนคอ

neck

ภาพ ชิ้นส่วนส่วนขาและเอว

leg

ไมโครคอนโทรลเลอร์

Posted in Electronics on December 23, 2009 by porr

ในส่วนของไมโครคอนโทรลเลอร์(หน่วยควบคุมมอเตอร์) ได้เลือกใช้อุปกรณ์ที่จะใช้ขึ้นมา ดังนี้

1. ARM7 รุ่น LPC2103

2. CM-5 Buffer Board

microcontroller

โดยเขียนเป็นโปรแกรมภาษาซีผ่าน Keil uVision อัดโปรแกรมลงไปใน ARM7 และทดสอบโปรแกรมด้วยการติดต่อผ่าน HyperTerminal โดยไมโครคอนโทรลเลอร์ทำหน้าที่รับค่า ID กับ Angle ของมอเตอร์มาจาก Processor แล้วทำการจัด Packet ให้เข้ากับ Protocol ของมอเตอร์ แล้วจึงส่ง Packet ไปให้มอเตอร์ทำงาน โดยจะมีวงจรที่ดัดแปลงจาก CM-5 Buffer เป็นตัวพักก่อนเข้าสู่มอเตอร์

System Diagram

untitled3

ปัญหาที่พบขณะทำงาน

1. เมื่อทดสอบโปรแกรมที่เขียนลง Microcontroller จากการจำลองการประมวลผลในโปรแกรม Keil uVision, อัดลง ARM7 แล้วให้แสดงออกทาง HyperTerminal ซึ่งได้ผลตามที่ต้องการทั้ง 2 วิธี แต่เมื่อลองต่อวงจรให้ส่ง Protocol นี้ไปยังมอเตอร์ กลับไม่ได้ผลตามที่ต้องการโดยไม่ทราบสาเหตุ

2.         Hardware ขณะทดสอบมีปัญหารวนขึ้นมาในบางครั้ง

แนวโน้มการทำงานในอนาคต

1. ใช้ไมโครคอนโทรลเลอร์นี้เป็นส่วนควบคุมหลักของหุ่นยนต์(ในขณะที่ยังปรับปรุงในส่วนไมโครคอนโทรลเลอร์อยู่ ได้ใช้กล่องควบคุมที่มาพร้อมชุดหุ่นยนต์ BIOLOID เพื่อพัฒนาในส่วนอื่นๆของหุ่นยนต์ก่อน)

การออกแบบการเดิน(รอบคัดเลือก)2

Posted in AI on December 23, 2009 by porr

Walking Algorithm ของหุ่นยนต์ มีขั้นตอนดังนี้

ท่าเดินตรงไปข้างหน้า

1. หุ่นยืนตรง ขาตรง

2. ถ่ายน้ำหนักไปที่ขาซ้าย โดยทิ้งน้ำหนักของสะโพกไปที่ขาซ้าย เพื่อเตรียมยกขาขวา

3. ยกขาขวา โดยงอเข่าขวาเล็กน้อย

4. ก้าวเท้าขวาไปข้างหน้า

5. ถ่ายน้ำหนักลงไปที่ขาขวา โดยทิ้งน้ำหนักของสะโพกไปที่ขาขวา เพื่อเตรียมยกขาซ้าย

6. ยกขาซ้าย โดยงอเข่าซ้ายเล็กน้อย

7. ก้าวเท้าซ้ายไปข้างหน้า

8. ทำเสตป 2-7 ซ้ำไปเรื่อยๆ เมื่อต้องการเดินไปข้างหน้า

ท่าเตะบอล

1. ยืนตรง

2. ถ่ายน้ำหนัก

3. ยกขาขวา

4. งอเข่าขวาไปข้างหลัง

5. เตะ

ปัญหาที่พบขณะทำการจำลองการเดิน

การเดินแบบนี้ ทำให้มอเตอร์ที่ข้อเท้าทำงานหนักมาก เพราะต้องรับน้ำหนักของร่างกายทั้งหมดไว้

จะเห็นได้ว่ามอเตอร์ตัวนี้จะร้อนเร็วกว่ามอเตอร์ตัวอื่นๆ

แนวทางการเดินที่จะพัฒนาต่อไปในอนาคต

1. ต้องเปลี่ยนเป็นมอเตอร์ที่รับน้ำหนักของหุ่นยนต์(ข้อเท้า)ที่สามารถรับค่าTorque ได้มากขึ้น เนื่องจากมอเตอร์ที่มากับชุดหุ่นยนต์ BIOLOID นั้นเป็นเฟืองพลาสติก มีค่า Torque ไม่เพียงพอต่อการรับน้ำหนักที่กดลงมามากๆเป็นเวลานาน

2. พัฒนารูปแบบการเดิน ให้เป็นแบบ Dynamic Walking หรือ Passive Dynamic Walking

การออกแบบการเดิน(รอบคัดเลือก)

Posted in AI on December 23, 2009 by porr

ส่วนของสะโพกและขาของหุ่นยนต์ ประกอบไปด้วยมอเตอร์ทั้งหมด 12 ตัว แบ่งออกเป็นขาทั้งสองข้าง ข้างละ 5 ตัว (รวมเป็น 10 ตัว) และส่วนของเอว 2 ตัว ประกอบด้วย

· มอเตอร์ที่ต้นขาและสะโพก 3 ตัว (3 degrees)

· มอเตอร์ที่เข่า 1 ตัว (1 degree)

· มอเตอร์ที่ข้อเท้า 2 ตัว (2 degrees)

BIOLOID

การจำลองท่าเดินของหุ่นยนต์ในขณะนี้ ใช้การจัดท่าหุ่นด้วยมือ และการปรับแต่งค่ามอเตอร์ในคอมพิวเตอร์เป็นหลัก โดยใช้โปรแกรม Motion Editor ควบคู่กับหลักการเดินของหุ่นยนต์ที่ได้ศึกษามาจากแหล่งข้อมูลต่างๆ โดยได้ทำตารางการบันทึกค่าของมอเตอร์ ณ เฟสต่างๆขณะจำลองการเดินเอาไว้ เพื่อที่ จะสามารถนำค่านี้ไปใช้ควบคู่กับส่วนของไมโครคอนโทรลเลอร์ที่ทางทีมได้พัฒนาขึ้นต่อไป

Path Planning

Posted in AI on December 22, 2009 by mean

Path Planning หรือ การกำหนดเส้นทางการเคลื่อนที่ให้กับหุ่นยนต์ โดยทำการหลบสิ่งกีดขวาง พร้อมทั้งเคลื่อนที่เข้าหาเป้าหมายหรือตำแหน่งที่ต้องการ

โดย Algorithm ที่ใช้ในการทำ Path Planning มีอยู่หลายๆรูปแบบ แต่วิธีที่ทางทีมกำลังสนใจและจะทดลองนำมาใช้ คือ Potential Field

หลักการของ Potential Field จะเป็นการประยุกต์ความรู้ทางไฟฟ้ามาใช้ในการส้รางแบบจำลอง เพื่อใช้ในการเลือกเส้นทางการเคลื่อนที่ของหุ่นยนต์

เบื้องต้นจะทำการกำหนดค่าของประจุให้กับวัตถุทั้งหมดในสนาม ได้แก่ ตัวหุ่นยนต์ฝ่ายเรา หุ่นยนต์ฝ่ายตรงข้าม ประตู ลูกบอล ฯลฯ

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

จากนั้นทำการคำนวณแรงทางไฟฟ้า (Force) ที่เกิดขึ้นด้วยสมการ เช่น F = GMm/r^2 (ในที่นี้สามารถใช้สมการอื่นแทนได้)

เมื่อนำแรงที่เกิดขึ้นในสนามมา Plot ดูจะพบว่า แรงบางส่วนเกิดการหักล้างกัน จนเกิดเป็นหุบเขา (ตำแหน่งที่ไม่มีแรงทางไฟฟ้ามากระทำ) หรือทางเดินที่ปราศจากสิ่งกีดขวาง ที่หุ่นยนต์สามารถเคลื่อนที่ต่อไปได้

ต่อ ตอนที่ 2

Our First Step…

Posted in Video on December 22, 2009 by mean

This is our qualification video on Youtube.

Hello world!

Posted in Others on November 11, 2009 by besato

Welcome to BARTLAB Humanoid’s blog…