สารบัญ:

สร้างหุ่นยนต์ Turtlebot ของคุณเอง!: 7 ขั้นตอน
สร้างหุ่นยนต์ Turtlebot ของคุณเอง!: 7 ขั้นตอน

วีดีโอ: สร้างหุ่นยนต์ Turtlebot ของคุณเอง!: 7 ขั้นตอน

วีดีโอ: สร้างหุ่นยนต์ Turtlebot ของคุณเอง!: 7 ขั้นตอน
วีดีโอ: BASIC ROS for beginner สอนใช้ ROS : 2 - ทำความเข้าใจกับROS และลองเล่น Turtlebot 2024, พฤศจิกายน
Anonim
สร้างหุ่นยนต์ Turtlebot ของคุณเอง!
สร้างหุ่นยนต์ Turtlebot ของคุณเอง!
สร้างหุ่นยนต์ Turtlebot ของคุณเอง!
สร้างหุ่นยนต์ Turtlebot ของคุณเอง!
สร้างหุ่นยนต์ Turtlebot ของคุณเอง!
สร้างหุ่นยนต์ Turtlebot ของคุณเอง!

แก้ไข:

ข้อมูลเพิ่มเติมเกี่ยวกับซอฟต์แวร์และการควบคุมมีอยู่ที่ลิงค์นี้:

hackaday.io/project/167074-build-your-own-turtlebot-3-backbone

ลิงก์โดยตรงไปยังรหัสคือ:

github.com/MattMgn/foxbot_core

ทำไมโครงการนี้?

Turtlebot 3 เป็นแพลตฟอร์มที่สมบูรณ์แบบสำหรับเจาะลึกเกี่ยวกับอุปกรณ์อิเล็กทรอนิกส์ หุ่นยนต์ และแม้แต่ AI! ฉันเสนอให้คุณสร้าง Turtlebot ของคุณเองทีละขั้นตอนด้วยส่วนประกอบที่ราคาไม่แพงโดยไม่ต้องเสียสละคุณสมบัติและประสิทธิภาพ โดยคำนึงถึงสิ่งหนึ่ง: รักษาสิ่งที่ดีที่สุดจากหุ่นยนต์เริ่มต้น ความเป็นโมดูล ความเรียบง่าย และแพ็คเกจจำนวนมากสำหรับการนำทางอัตโนมัติและ AI จากชุมชนโอเพนซอร์ซ

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

สิ่งที่คุณจะค้นพบในโครงการนี้?

คุณกำลังจะค้นพบว่าชิ้นส่วนกลไกและชิ้นส่วนอิเล็กทรอนิกส์ที่สำคัญต้องเก็บไว้จากบอทดั้งเดิมเพื่อรับประกันความเข้ากันได้อย่างสมบูรณ์

กระบวนการสร้างทั้งหมดจะมีรายละเอียด: ตั้งแต่การพิมพ์ชิ้นส่วน 3 มิติ การประกอบและส่วนประกอบต่างๆ การบัดกรีและการรวมอุปกรณ์อิเล็กทรอนิกส์ ไปจนถึงการรวบรวมโค้ดบน Arduino คำแนะนำนี้จะสรุปในตัวอย่าง 'สวัสดีชาวโลก' เพื่อให้คุณคุ้นเคยกับ ROS หากมีอะไรไม่ชัดเจน ถามคำถามได้เลย!

เสบียง

อิเล็กทรอนิกส์:

1 x คอมพิวเตอร์บอร์ดเดี่ยวเพื่อเรียกใช้ ROS อาจเป็น Raspberry Pi หรือ Jetson Nano เป็นต้น

1 x Arduino DUE คุณสามารถใช้ UNO หรือ MEGA

1 x Proto-board ที่เหมาะกับ Arduino DUE pin-out มีให้ที่นี่

มอเตอร์ DC 2 x 12V พร้อมตัวเข้ารหัส (ตัวเลือก 100 RPM)

ไดรเวอร์มอเตอร์ 1 x L298N

ตัวควบคุม 2 x 5V

1 x แบตเตอรี่ (เช่นแบตเตอรี่ LiPo 3S / 4S)

2 x สวิตช์เปิด/ปิด

2 x LED

ตัวต้านทาน 2 x 470kOhm

ขั้วต่อ JST 3 x 4 พิน

1 x สาย USB (อย่างน้อยหนึ่งสายระหว่าง SBC และ Arduino)

เซนเซอร์:

1 x เซ็นเซอร์ปัจจุบัน (อุปกรณ์เสริม)

1 x 9 Degrees of Freedom IMU (ไม่บังคับ)

1 x LIDAR (อุปกรณ์เสริม)

แชสซี:

แผ่นโมดูลาร์ Turtlebot ขนาด 16 x (ซึ่งสามารถพิมพ์ 3D ได้)

2 x ล้อเส้นผ่านศูนย์กลาง 65 มม. (ตัวเลือกความกว้าง 6 มม.)

4 x Nylon สเปเซอร์ 30 มม. (อุปกรณ์เสริม)

เม็ดมีด 20 x M3 (อุปกรณ์เสริม)

คนอื่น:

สายไฟ

สกรูและเม็ดมีด M2.5 และ M3

เครื่องพิมพ์ 3D หรือคนที่สามารถพิมพ์ชิ้นส่วนให้คุณได้

สว่านมือพร้อมชุดดอกสว่านแบบนี้

ขั้นตอนที่ 1: คำอธิบาย

คำอธิบาย
คำอธิบาย
คำอธิบาย
คำอธิบาย

หุ่นยนต์ตัวนี้เป็นตัวขับเคลื่อนเฟืองท้ายแบบธรรมดาที่ใช้ล้อ 2 ล้อติดตั้งโดยตรงบนมอเตอร์และล้อเลื่อนซึ่งอยู่ด้านหลังเพื่อป้องกันไม่ให้หุ่นยนต์ล้ม หุ่นยนต์แบ่งออกเป็นสองชั้น:

ชั้นล่าง: พร้อมกลุ่มขับเคลื่อน (แบตเตอรี่ ตัวควบคุมมอเตอร์ และมอเตอร์) และอุปกรณ์อิเล็กทรอนิกส์ 'ระดับต่ำ': ไมโครคอนโทรลเลอร์ Arduino ตัวควบคุมแรงดันไฟฟ้า สวิตช์…

Upper Layer: ด้วยระบบอิเล็กทรอนิกส์ 'ระดับสูง' คือ Single Board Computer และ LIDAR

เลเยอร์เหล่านี้เชื่อมโยงกับชิ้นส่วนที่พิมพ์และสกรูเพื่อให้มั่นใจถึงความทนทานของโครงสร้าง

แผนผังอิเล็กทรอนิกส์

แผนผังอาจดูยุ่งเหยิงเล็กน้อย เป็นแผนผังและไม่ได้แสดงถึงสายไฟ ขั้วต่อ และโปรโตบอร์ดทั้งหมด แต่สามารถอ่านได้ดังนี้

แบตเตอรี่ Litihum Ion Polymer 3S ที่มีความจุ 3000mAh จ่ายไฟให้กับวงจรแรก โดยให้พลังงานแก่ทั้งบอร์ดควบคุมมอเตอร์ (L298N) และตัวควบคุม 5V ตัวแรกสำหรับตัวเข้ารหัสมอเตอร์และ Arduino วงจรนี้เปิดใช้งานผ่านสวิตช์พร้อมไฟ LED ที่ระบุสถานะเปิด/ปิด

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

สามารถเพิ่มเซ็นเซอร์เพิ่มเติม เช่น LIDAR หรือกล้องได้โดยตรงบน Raspberry Pi ผ่าน USB หรือพอร์ต CSI

การออกแบบเครื่องกล

โครงหุ่นยนต์ประกอบด้วยชิ้นส่วนที่เหมือนกัน 16 ชิ้นซึ่งสร้างเป็นชั้นสี่เหลี่ยมจัตุรัส 2 ชั้น (ความกว้าง 28 ซม.) รูจำนวนมากช่วยให้ติดตั้งชิ้นส่วนเพิ่มเติมได้ทุกที่ที่คุณต้องการ และนำเสนอการออกแบบโมดูลาร์ที่สมบูรณ์ สำหรับโปรเจ็กต์นี้ ฉันตัดสินใจซื้อเพลต TurtleBot3 ดั้งเดิม แต่คุณยังสามารถพิมพ์แบบ 3 มิติ เนื่องจากการออกแบบเป็นโอเพ่นซอร์ส

ขั้นตอนที่ 2: การประกอบบล็อคมอเตอร์

การประกอบมอเตอร์บล็อค
การประกอบมอเตอร์บล็อค
การประกอบมอเตอร์บล็อค
การประกอบมอเตอร์บล็อค
การประกอบมอเตอร์บล็อค
การประกอบมอเตอร์บล็อค

การเตรียมมอเตอร์

ขั้นตอนแรกคือการเพิ่มเทปโฟมหนา 1 มม. รอบมอเตอร์แต่ละตัวเพื่อป้องกันการสั่นสะเทือนและเสียงรบกวนเมื่อมอเตอร์หมุน

ชิ้นส่วนที่พิมพ์

ตัวยึดมอเตอร์ส่งผลให้ชิ้นส่วนสองส่วนที่ยึดมอเตอร์เหมือนรอง ใช้สกรู 4 ตัวเพื่อขันมอเตอร์ให้แน่นในตัวยึด

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

การตั้งค่าเครื่องพิมพ์ 3 มิติ: ทุกส่วนพิมพ์ด้วยพารามิเตอร์ต่อไปนี้

  • หัวฉีดขนาดเส้นผ่านศูนย์กลาง 0.4 มม.
  • เติมวัสดุ 15%
  • ชั้นสูง 0.2 มม.

ล้อ

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

การตรึง

เมื่อคุณทำ motor block เสร็จแล้ว ให้ทำซ้ำขั้นตอนก่อนหน้า จากนั้นจึงยึดเข้ากับเลเยอร์ด้วยสกรู M3

ขั้นตอนที่ 3: การเตรียมสวิตช์และสายเคเบิล

การเตรียมสวิตช์และสายเคเบิล
การเตรียมสวิตช์และสายเคเบิล
การเตรียมสวิตช์และสายเคเบิล
การเตรียมสวิตช์และสายเคเบิล
การเตรียมสวิตช์และสายเคเบิล
การเตรียมสวิตช์และสายเคเบิล

การเตรียมสายมอเตอร์

โดยทั่วไปแล้ว ตัวเข้ารหัสของมอเตอร์จะมาพร้อมกับสายเคเบิลซึ่งรวมถึงขั้วต่อ 6 พินที่ด้านหนึ่งที่เชื่อมต่อด้านหลังของ PCB ตัวเข้ารหัส และสายเปลือยที่อีกด้านหนึ่ง

คุณมีความเป็นไปได้ที่จะบัดกรีโดยตรงบนโปรโตบอร์ดหรือแม้แต่ Arduino ของคุณ แต่ฉันแนะนำให้คุณใช้ส่วนหัวของพินตัวเมียและตัวเชื่อมต่อ JST-XH แทน ดังนั้นคุณจึงสามารถเสียบ/ถอดปลั๊กบนโปรโตบอร์ดและทำให้การประกอบของคุณง่ายขึ้น

เคล็ดลับ: คุณสามารถเพิ่มปลอกหุ้มปลอกหุ้มที่ขยายได้รอบๆ สายไฟและชิ้นส่วนของท่อหดใกล้กับขั้วต่อ การทำเช่นนี้คุณจะได้สายเคเบิลที่ 'สะอาด'

สวิตช์และ LED

ในการเปิดใช้งานวงจรไฟฟ้าทั้งสอง ให้เตรียม LED 2 ดวงและสายเคเบิลสำหรับสวิตช์: ขั้นแรกให้บัดกรีตัวต้านทาน 470kOhm บนพิน LED อันใดอันหนึ่ง จากนั้นบัดกรี LED บนพินสวิตช์หนึ่งอัน คุณสามารถใช้ท่อหดชิ้นหนึ่งเพื่อซ่อนตัวต้านทานภายในได้ ระวังบัดกรี LED ในทิศทางที่ถูกต้อง! ทำซ้ำการดำเนินการนี้เพื่อรับสายสวิตช์/นำสองสาย

การประกอบ

ประกอบสายเคเบิลที่ทำไว้ก่อนหน้านี้บนชิ้นส่วนที่พิมพ์ 3 มิติที่เกี่ยวข้อง ใช้น๊อตเพื่อรักษาสวิตช์ ไฟ LED ไม่ต้องใช้กาว แค่ดันให้พอดีกับรู

ขั้นตอนที่ 4: การเดินสายไฟบอร์ดอิเล็กทรอนิกส์

การเดินสายไฟบอร์ดอิเล็กทรอนิกส์
การเดินสายไฟบอร์ดอิเล็กทรอนิกส์
การเดินสายไฟบอร์ดอิเล็กทรอนิกส์
การเดินสายไฟบอร์ดอิเล็กทรอนิกส์
การเดินสายไฟบอร์ดอิเล็กทรอนิกส์
การเดินสายไฟบอร์ดอิเล็กทรอนิกส์

เค้าโครงบอร์ด

ใช้โปรโตบอร์ดที่เหมาะสมกับเลย์เอาต์ของบอร์ด Arduino เพื่อลดจำนวนสายไฟ ที่ด้านบนของโปรโตบอร์ด L298N วางซ้อนกันด้วยส่วนหัวของ Dupont ตัวเมีย (Dupont เป็นส่วนหัว 'Arduino like')

การเตรียม L298N

เดิมทีบอร์ด L298N ไม่ได้มาพร้อมกับส่วนหัว Dupont ตัวผู้ที่เกี่ยวข้อง คุณต้องเพิ่มแถวพิน 9 แถวใต้บอร์ด คุณต้องรู้ 9 รูด้วยดอกสว่านขนาดเส้นผ่านศูนย์กลาง 1 มม. ขนานกับรูที่มีอยู่ดังที่คุณเห็นในภาพ จากนั้นเชื่อมโยงหมุดที่สอดคล้องกันของ 2 แถวกับวัสดุบัดกรีและสายสั้น

L298N พินเอาต์

L298N ประกอบด้วย 2 ช่องสัญญาณที่ช่วยให้สามารถควบคุมความเร็วและทิศทางได้:

ทิศทางผ่าน 2 เอาต์พุตดิจิตอลเรียกว่า IN1, IN2 สำหรับช่องแรกและ IN3 และ IN4 สำหรับวินาที

ความเร็วผ่าน 1 เอาต์พุตดิจิตอลเรียกว่า ENA สำหรับช่องแรกและ ENB สำหรับวินาที

ฉันเลือกพินเอาต์ต่อไปนี้กับ Arduino:

มอเตอร์ซ้าย: IN1 บนพิน 3, IN2 บนพิน 4, ENA บนพิน 2

มอเตอร์ขวา: IN3 บนพิน 5, IN4 บนพิน 6, ENB บนพิน 7

ตัวควบคุม 5V

แม้ว่า l298N ปกติสามารถจ่ายไฟ 5V ได้ แต่ฉันก็ยังเพิ่มตัวควบคุมขนาดเล็ก มันจ่ายไฟให้กับ Arduino ผ่านพอร์ต VIN และตัวเข้ารหัส 2 ตัวบนมอเตอร์ คุณสามารถข้ามขั้นตอนนี้ได้โดยตรงโดยใช้ตัวควบคุม L298N 5V ในตัว

ขั้วต่อ JST และพินเอาต์ตัวเข้ารหัส

ใช้อะแดปเตอร์ตัวเชื่อมต่อ JST-XH ตัวเมีย 4 พิน จากนั้นตัวเชื่อมต่อแต่ละตัวจะเชื่อมโยงกับ:

  • 5V จากตัวควบคุม
  • กราวด์
  • พอร์ตอินพุตดิจิตอลสองพอร์ต (สำหรับตัวอย่าง: 34 และ 38 สำหรับตัวเข้ารหัสด้านขวา และ 26 และ 30 สำหรับพอร์ตด้านซ้าย)

เสริม I2C

ตามที่คุณอาจสังเกตเห็น มีขั้วต่อ JST 4 พินเพิ่มเติมบนบอร์ดโปรโต ใช้สำหรับเชื่อมต่ออุปกรณ์ I2C เช่น IMU คุณสามารถทำเช่นเดียวกันและเพิ่มพอร์ตของคุณเองได้

ขั้นตอนที่ 5: Motor Group และ Arduino ที่ชั้นล่าง

Motor Group และ Arduino ที่ชั้นล่าง
Motor Group และ Arduino ที่ชั้นล่าง
Motor Group และ Arduino ที่ชั้นล่าง
Motor Group และ Arduino ที่ชั้นล่าง
Motor Group และ Arduino ที่ชั้นล่าง
Motor Group และ Arduino ที่ชั้นล่าง

การตรึงบล็อคมอเตอร์

เมื่อชั้นล่างประกอบเข้ากับเพลทของ Turtlebot 8 ตัวแล้ว เพียงแค่ใช้สกรู M3 4 ตัวในเม็ดมีดโดยตรงเพื่อบำรุงรักษาบล็อกมอเตอร์ จากนั้นคุณสามารถเสียบสายไฟของมอเตอร์เข้ากับเอาต์พุต L298N และสายเคเบิลที่ทำไว้ก่อนหน้านี้กับขั้วต่อ JST ของโปรโตบอร์ด

การกระจายอำนาจ

การกระจายพลังงานทำได้โดยง่ายด้วยแผงขั้วต่อแบบกั้น ที่ด้านหนึ่งของสิ่งกีดขวาง สายเคเบิลที่มีปลั๊กตัวเมีย XT60 ถูกขันให้เข้ากับแบตเตอรี่ LiPo อีกด้านหนึ่ง สายไฟ LED/สวิตช์ 2 เส้นที่เราบัดกรีไว้ก่อนหน้านี้ถูกขันให้แน่น ดังนั้นแต่ละวงจร (มอเตอร์และ Arduino) สามารถเปิดใช้งานได้ด้วยสวิตช์ของตัวเองและไฟ LED สีเขียวที่สอดคล้องกัน

การจัดการสายเคเบิล

คุณจะต้องจัดการกับสายเคเบิลจำนวนมากอย่างรวดเร็ว! เพื่อลดความยุ่งเหยิง คุณสามารถใช้ 'ตาราง' ที่พิมพ์ 3 มิติก่อนหน้านี้ บนโต๊ะ รักษาบอร์ดอิเล็กทรอนิกส์ของคุณด้วยเทปกาวสองหน้า และใต้โต๊ะปล่อยให้สายไฟไหลได้อย่างอิสระ

การบำรุงรักษาแบตเตอรี่

คุณสามารถใช้ยางรัดผมเพื่อป้องกันไม่ให้แบตเตอรี่หลุดออกขณะขับรถ

ล้อลูกกลิ้ง

ไม่ใช่ลูกล้อ แต่เป็นลูกครึ่งธรรมดาที่ยึดด้วยสกรู 4 ตัวที่ชั้นล่าง ก็เพียงพอแล้วที่จะรับรองความเสถียรของหุ่นยนต์

ขั้นตอนที่ 6: คอมพิวเตอร์บอร์ดเดี่ยวและเซ็นเซอร์ที่ Upper Layer

คอมพิวเตอร์บอร์ดเดี่ยวและเซ็นเซอร์ที่ชั้นบน
คอมพิวเตอร์บอร์ดเดี่ยวและเซ็นเซอร์ที่ชั้นบน
คอมพิวเตอร์บอร์ดเดี่ยวและเซ็นเซอร์ที่ชั้นบน
คอมพิวเตอร์บอร์ดเดี่ยวและเซ็นเซอร์ที่ชั้นบน
คอมพิวเตอร์บอร์ดเดี่ยวและเซ็นเซอร์ที่ชั้นบน
คอมพิวเตอร์บอร์ดเดี่ยวและเซ็นเซอร์ที่ชั้นบน

คอมพิวเตอร์บอร์ดเดี่ยวตัวไหนให้เลือก?

ฉันไม่จำเป็นต้องนำเสนอ Raspberry Pi ที่มีชื่อเสียงให้กับคุณ เนื่องจากจำนวนกรณีการใช้งานนั้นมากกว่าสาขาวิทยาการหุ่นยนต์ แต่มีคู่แข่งที่ทรงพลังกว่ามากสำหรับ Raspberry Pi ที่คุณอาจมองข้าม อันที่จริง Jetson Nano จาก Nvidia ฝังการ์ดกราฟิก 128-core อันทรงพลังนอกเหนือจากโปรเซสเซอร์ การ์ดกราฟิกรุ่นนี้ได้รับการพัฒนาขึ้นเพื่อเร่งงานการประมวลผลที่มีราคาแพง เช่น การประมวลผลภาพหรือการอนุมานเครือข่ายประสาทเทียม

สำหรับโครงการนี้ ฉันเลือก Jetson Nano และคุณสามารถหาส่วน 3D ที่เกี่ยวข้องได้จากไฟล์ที่แนบมา แต่ถ้าคุณต้องการใช้ Raspberry Pi มีหลายกรณีที่พิมพ์ได้

ตัวควบคุม 5V

ไม่ว่าบอร์ดใดที่คุณตัดสินใจนำหุ่นยนต์มา คุณต้องมีตัวควบคุม 5V Raspberry Pi 4 รุ่นล่าสุดต้องการ 1.25A สูงสุด แต่ Jetson Nano ต้องการความเครียดสูงสุด 3A ดังนั้นฉันจึงเลือกใช้ Pololu 5V 6A เพื่อสำรองพลังงานสำหรับส่วนประกอบในอนาคต (เซ็นเซอร์ ไฟ steppers…) แต่ 5V 2A ราคาถูกควรทำ งาน. Jetson ใช้บาร์เรล DC 5.5 มม. และ Pi a micro USB คว้าสายเคเบิลที่เกี่ยวข้องแล้วบัดกรีเข้ากับเอาต์พุตตัวควบคุม

เลย์เอาต์ LIDAR

LIDAR ที่ใช้ในที่นี้คือ LDS-01 มี 2D LIDAR อื่นๆ อีกหลายตัวที่สามารถใช้ได้ เช่น RPLidar A1/A2/A3, YDLidar X4/G4 หรือแม้แต่ Hokuyo LIDAR ข้อกำหนดเพียงอย่างเดียวคือต้องเสียบผ่าน USB และวางไว้ตรงกลางเหนือโครงสร้าง แท้จริงแล้วหาก LIDAR ไม่อยู่ตรงกลาง แผนที่ที่สร้างโดยอัลกอริทึม SLAM อาจเปลี่ยนตำแหน่งโดยประมาณของกำแพงและสิ่งกีดขวางจากตำแหน่งจริง นอกจากนี้ หากมีสิ่งกีดขวางจากหุ่นยนต์ข้ามลำแสงเลเซอร์ มันจะลดระยะและระยะการมองเห็น

การติดตั้ง LIDAR

LIDAR ติดตั้งอยู่บนชิ้นส่วนที่พิมพ์ 3 มิติซึ่งมีรูปร่างตามรูปร่าง ชิ้นส่วนนั้นถูกยึดไว้บนแผ่นสี่เหลี่ยม (อันที่จริงเป็นไม้อัดในภาพ แต่สามารถพิมพ์ 3 มิติได้เช่นกัน) จากนั้นส่วนอะแดปเตอร์ช่วยให้สามารถยึดชุดบนแผ่นเต่าด้านบนด้วยสเปเซอร์ไนลอน

กล้องเป็นเซ็นเซอร์เพิ่มเติมหรือเปลี่ยน LIDAR

หากคุณไม่ต้องการใช้เงินมากเกินไปใน LIDAR (ซึ่งมีราคาประมาณ 100 เหรียญสหรัฐฯ) ให้ไปที่กล้องถ่ายรูป: มีอัลกอริธึม SLAM ที่ทำงานเฉพาะกับกล้อง RGB แบบตาเดียว ทั้ง SBC ยอมรับกล้อง USB หรือ CSI

นอกจากนี้ กล้องยังช่วยให้คุณเรียกใช้คอมพิวเตอร์วิทัศน์และสคริปต์ตรวจจับวัตถุ!

การประกอบ

ก่อนปิดหุ่นยนต์ ให้สอดสายเคเบิลผ่านรูที่ใหญ่กว่าในเพลทด้านบน:

  • สายเคเบิลที่เกี่ยวข้องจากตัวควบคุม 5V ไปยัง SBC. ของคุณ
  • สาย USB จากพอร์ตการเขียนโปรแกรมของ Arduino DUE (ใกล้กับบาร์เรล DC มากที่สุด) ไปยังพอร์ต USB ของ SBC ของคุณ

จากนั้นจับแผ่นด้านบนให้เข้าที่ด้วยสกรูหลายสิบตัว หุ่นยนต์ของคุณพร้อมที่จะตั้งโปรแกรมแล้ว ทำได้ดีมาก!

ขั้นตอนที่ 7: ทำให้มันเคลื่อนไหว

รวบรวม Arduino

เปิด Arduino IDE ที่คุณชื่นชอบ แล้วนำเข้าโฟลเดอร์โครงการชื่อ own_turtlebot_core จากนั้นเลือกบอร์ดของคุณและพอร์ตที่เกี่ยวข้อง คุณสามารถดูบทช่วยสอนที่ยอดเยี่ยมนี้ได้

ปรับการตั้งค่าคอร์

โปรเจ็กต์นี้ประกอบด้วยไฟล์สองไฟล์ และไฟล์หนึ่งจำเป็นต้องปรับให้เข้ากับหุ่นยนต์ของคุณ ลองเปิด own_turtlebot_config.h และค้นหาบรรทัดที่ต้องการความสนใจของเรา:

#define ARDUINO_DUE // ** แสดงความคิดเห็นบรรทัดนี้หากคุณไม่ได้ใช้เนื่องจาก **

ควรใช้กับ Arduino DUE เท่านั้น ถ้าไม่แสดงความคิดเห็นในบรรทัด

#define RATE_CONTROLLER_KP 130.0 // ** ปรับค่านี้ **

#define RATE_CONTROLLER_KD 5000000000000.0 // ** ปรับค่านี้ ** #define RATE_CONTROLLER_KI 0.00005 // ** ปรับค่านี้ **

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

/* กำหนดพิน */

// มอเตอร์ A (ขวา) const ไบต์ motorRightEncoderPinA = 38; // ** แก้ไขด้วย PIN ของคุณ NB ** const byte motorRightEncoderPinB = 34; // ** แก้ไขด้วย PIN ของคุณ NB ** const byte enMotorRight = 2; // ** แก้ไขด้วย PIN ของคุณ NB ** const byte in1MotorRight = 4; // ** แก้ไขด้วย PIN ของคุณ NB ** const byte in2MotorRight = 3; // ** แก้ไขด้วย PIN ของคุณ NB ** // มอเตอร์ B (ซ้าย) const ไบต์ motorLeftEncoderPinA = 26; // ** แก้ไขด้วย PIN ของคุณ NB ** const byte motorLeftEncoderPinB = 30; // ** แก้ไขด้วย PIN ของคุณ NB ** const byte enMotorLeft = 7; // ** แก้ไขด้วย PIN ของคุณ NB ** const byte in1MotorLeft = 6; // ** แก้ไขด้วย PIN ของคุณ NB ** const byte in2MotorLeft = 5; // ** แก้ไขด้วย PIN ของคุณ NB **

บล็อกนี้กำหนดพินเอาต์ระหว่าง L298N และ Arduino เพียงแก้ไขหมายเลขพินให้ตรงกับของคุณ เมื่อคุณทำไฟล์กำหนดค่าเสร็จแล้ว ให้คอมไพล์และอัปโหลดโค้ด!

ติดตั้งและกำหนดค่า ROS

เมื่อคุณไปถึงขั้นตอนนี้แล้ว คำแนะนำจะเหมือนกับคำแนะนำในคู่มือ TurtleBot3 ที่ยอดเยี่ยมทุกประการ คุณต้องปฏิบัติตามอย่างเคร่งครัด

ทำได้ดีมาก TurtleBot 3 เป็นของคุณแล้ว และคุณสามารถเรียกใช้แพ็คเกจและแบบฝึกหัดที่มีอยู่ทั้งหมดด้วย ROS

ตกลง แต่ ROS คืออะไร?

ROS ย่อมาจาก Robots Operating System มันอาจจะดูค่อนข้างซับซ้อนในตอนแรก แต่มันไม่ใช่ ลองจินตนาการถึงวิธีการสื่อสารระหว่างฮาร์ดแวร์ (เซ็นเซอร์และแอคทูเอเตอร์) และซอฟต์แวร์ (อัลกอริทึมสำหรับการนำทาง การควบคุม การมองเห็นด้วยคอมพิวเตอร์…) ตัวอย่างเช่น คุณสามารถสลับ LIDAR ปัจจุบันของคุณกับโมเดลอื่นได้อย่างง่ายดายโดยไม่ทำให้การตั้งค่าของคุณเสียหาย เนื่องจาก LIDAR แต่ละรายการจะเผยแพร่ข้อความ LaserScan เดียวกัน ROS ใช้กันอย่างแพร่หลายคือหุ่นยนต์

เรียกใช้ตัวอย่างแรกของคุณ

คำว่า 'สวัสดีชาวโลก' ที่เทียบเท่ากับ ROS นั้นประกอบด้วยการทำงานทางไกลของหุ่นยนต์ผ่านคอมพิวเตอร์ระยะไกล สิ่งที่คุณต้องการทำคือส่งคำสั่งความเร็วเพื่อให้มอเตอร์หมุน คำสั่งจะเป็นไปตามไพพ์นี้:

  • โหนด Turtlebot_teleop ทำงานบนคอมพิวเตอร์ระยะไกล เผยแพร่หัวข้อ "/ cmd_vel" รวมถึงข้อความ Twist
  • ข้อความนี้จะถูกส่งต่อผ่านเครือข่ายข้อความ ROS ไปยัง SBC
  • โหนดอนุกรมอนุญาตให้รับ "/ cmd_vel" บน Arduino
  • Arduino อ่านข้อความและตั้งค่าอัตราเชิงมุมของมอเตอร์แต่ละตัวให้ตรงกับความเร็วเชิงเส้นและความเร็วเชิงมุมที่ต้องการของหุ่นยนต์

การดำเนินการนี้ง่ายและสามารถทำได้โดยเรียกใช้บรรทัดคำสั่งที่แสดงด้านบน! หากคุณต้องการข้อมูลรายละเอียดเพิ่มเติมเพียงแค่ดูวิดีโอ

[เอสบีซี]

roscore

[เอสบีซี]

rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=115200

[คอมพิวเตอร์ระยะไกล]

ส่งออก TURTLEBOT3_MODEL=${TB3_MODEL}

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

ก้าวต่อไป

คุณจำเป็นต้องรู้สิ่งสุดท้ายก่อนที่จะลองใช้ตัวอย่างอย่างเป็นทางการทั้งหมดในคู่มือทุกครั้งที่คุณเผชิญกับคำสั่งนี้:

roslaunch turtlebot3_bringup เต่าbot3_robot.launch

คุณต้องเรียกใช้คำสั่งนี้บน SBC ของคุณแทน:

rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=115200

และถ้าคุณมี LIDAR ให้รันคำสั่งที่เกี่ยวข้องบน SBC ของคุณ ในกรณีของฉัน ฉันจะรัน LDS01 ด้วยบรรทัดด้านล่าง:

roslaunch hls_lfcd_lds_driver hlds_laser.launch

และนั่นคือทั้งหมด คุณได้สร้าง Turtlebot ของคุณเองแล้ว:) คุณพร้อมที่จะค้นพบความสามารถอันยอดเยี่ยมของ ROS และกำหนดรหัสวิชันซิสเต็มและอัลกอริธึมการเรียนรู้ของเครื่องแล้ว

แนะนำ: