- Important note (July 2021): this library is currently only scarcely maintained,
- it may take a while until we respond to bugs or feature requests.
นี่คือกล่องเครื่องมือควบคุม ซึ่งเป็นไลบรารี C++ ที่มีประสิทธิภาพสำหรับการควบคุม การประมาณค่า การเพิ่มประสิทธิภาพ และการวางแผนการเคลื่อนไหวในวิทยาการหุ่นยนต์
ลิงก์ไปยังวิกิ เริ่มต้นอย่างรวดเร็ว!
ค้นหาเอกสารรายละเอียดได้ที่นี่
นี่คือกล่องเครื่องมือควบคุม ADRL ('CT') ซึ่งเป็นไลบรารี C++ แบบโอเพ่นซอร์สสำหรับการสร้างแบบจำลอง การควบคุม การประมาณค่า การเพิ่มประสิทธิภาพวิถี และการควบคุมการคาดการณ์แบบจำลองที่มีประสิทธิภาพ CT สามารถใช้ได้กับระบบไดนามิกประเภทกว้าง แต่มีเครื่องมือสร้างแบบจำลองเพิ่มเติมที่ออกแบบมาเป็นพิเศษสำหรับหุ่นยนต์ หน้านี้สรุปแนวคิดทั่วไป โครงสร้างหลัก และเน้นตัวอย่างการใช้งานที่เลือก
ไลบรารีประกอบด้วยเครื่องมือมากมายในการออกแบบและประเมินตัวควบคุม สร้างแบบจำลองระบบไดนามิก และแก้ไขปัญหาการควบคุมที่เหมาะสมที่สุด CT ได้รับการออกแบบโดยคำนึงถึงคุณสมบัติดังต่อไปนี้:
ระบบและไดนามิก :
การปรับวิถีวิถีให้เหมาะสม การควบคุมที่เหมาะสม และการควบคุมการคาดการณ์แบบจำลอง (ไม่เชิงเส้น) :
ผลงาน :
การสร้างแบบจำลองหุ่นยนต์ จลนศาสตร์ของลำตัวแข็ง และไดนามิกส์ :
การแยกความแตกต่างอัตโนมัติ :
กล่องเครื่องมือควบคุมถูกใช้สำหรับงานควบคุมฮาร์ดแวร์และการจำลองการบิน การเดิน และหุ่นยนต์ภาคพื้นดิน
ตัวอย่างการปรับให้เหมาะสมที่ซับซ้อนกว่าเล็กน้อย รวมถึงการเพิ่มประสิทธิภาพการเดินสำหรับสี่เท่า มีอยู่ใน ct_ros
งานทั่วไปสำหรับนักวิจัยและผู้ปฏิบัติงานทั้งในชุมชนการควบคุมและหุ่นยนต์คือการสร้างแบบจำลองระบบ การใช้สมการการเคลื่อนที่ และการออกแบบตัวควบคุมที่ใช้แบบจำลอง ตัวประมาณค่า อัลกอริธึมการวางแผน ฯลฯ ไม่ช้าก็เร็ว เราต้องเผชิญกับคำถามเกี่ยวกับการใช้งานที่มีประสิทธิภาพ การคำนวณข้อมูลอนุพันธ์ การกำหนดฟังก์ชันต้นทุนและข้อจำกัด หรือการรันคอนโทรลเลอร์ในรูปแบบการควบคุมแบบคาดการณ์ล่วงหน้า
กล่องเครื่องมือควบคุมได้รับการออกแบบมาโดยเฉพาะสำหรับงานเหล่านี้ เขียนด้วยภาษา C++ ทั้งหมดและเน้นไปที่โค้ดที่มีประสิทธิภาพสูงที่สามารถเรียกใช้ออนไลน์ (ในลูป) บนหุ่นยนต์หรือฮาร์ดแวร์ที่กระตุ้นอื่นๆ การสนับสนุนที่สำคัญของ CT คือการใช้งานอัลกอริธึมการควบคุมที่เหมาะสมที่สุด ซึ่งครอบคลุมช่วงตั้งแต่การใช้งานอ้างอิง LQR แบบธรรมดาไปจนถึงการควบคุมการคาดการณ์แบบจำลองที่มีข้อจำกัด CT รองรับการสร้างความแตกต่างอัตโนมัติ (Auto-Diff) และอนุญาตให้สร้างโค้ดอนุพันธ์สำหรับฟังก์ชันสเกลาร์และค่าเวกเตอร์ตามอำเภอใจ เราออกแบบกล่องเครื่องมือโดยคำนึงถึงการใช้งานเป็นหลัก ช่วยให้ผู้ใช้สามารถใช้แนวคิดขั้นสูง เช่น การควบคุมแบบจำลองเชิงคาดการณ์แบบไม่เชิงเส้น (NMPC) หรือการควบคุมเชิงตัวเลขที่เหมาะสมที่สุดได้อย่างง่ายดายและใช้ความพยายามเพียงเล็กน้อย แม้ว่าเราจะจัดเตรียมอินเทอร์เฟซให้กับซอฟต์แวร์การสร้างแบบจำลองหุ่นยนต์ที่เข้ากันได้กับ Auto-Diff ที่ล้ำสมัย โมดูลอื่นๆ ทั้งหมดจะไม่ขึ้นอยู่กับเฟรมเวิร์กการสร้างแบบจำลองเฉพาะ ทำให้โค้ดสามารถเชื่อมต่อกับโค้ดหรือไลบรารี C/C++ ที่มีอยู่ได้
CT ถูกนำมาใช้อย่างประสบความสำเร็จในโครงการต่างๆ มากมาย รวมถึงการทดลองฮาร์ดแวร์ การสาธิต และสิ่งพิมพ์ทางวิชาการจำนวนมาก ตัวอย่างแอปพลิเคชันฮาร์ดแวร์ ได้แก่ การเพิ่มประสิทธิภาพวิถีออนไลน์ด้วยการหลีกเลี่ยงการชนกัน cite giftthaler2017autodiff การเพิ่มประสิทธิภาพวิถีสำหรับ Quadrupeds cite neunert:2017:ral และเครื่องมือจัดการมือถือ cite giftthaler2017efficient เช่นเดียวกับ NMPC บนหุ่นยนต์ภาคพื้นดิน cite neunert2017mpc และ UAVs cite neunert16hexrotor โครงการนี้มีต้นกำเนิดจากการวิจัยที่ดำเนินการที่ Agile & Dexterous Robotics Lab ที่ ETH Zurich แต่ได้มีการขยายอย่างต่อเนื่องเพื่อให้ครอบคลุมแอปพลิเคชันและอัลกอริธึมในสาขาอื่นๆ มากขึ้น
ซอฟต์แวร์เป็นหนึ่งในองค์ประกอบสำคัญสำหรับระบบหุ่นยนต์ และมีความพยายามอย่างมากในการสร้างเครื่องมือซอฟต์แวร์และไลบรารีสำหรับหุ่นยนต์ อย่างไรก็ตาม เมื่อพูดถึงการควบคุมและโดยเฉพาะอย่างยิ่งการควบคุมเชิงตัวเลข ไม่มีเครื่องมือโอเพ่นซอร์สมากมายที่ใช้งานง่ายเพื่อการพัฒนาที่รวดเร็วและมีประสิทธิภาพเพียงพอสำหรับการใช้งานออนไลน์ แม้ว่าจะมีกล่องเครื่องมือที่ครบถ้วนสำหรับการควบคุมเชิงตัวเลขและการปรับวิถีให้เหมาะสมที่สุด แต่ก็เป็นเครื่องมือเฉพาะทางที่มีความเชี่ยวชาญสูงซึ่งไม่ได้ให้ความยืดหยุ่นเพียงพอสำหรับการใช้งานอื่นๆ นี่คือจุดที่ CT เข้ามามีบทบาท CT ได้รับการออกแบบตั้งแต่ต้นจนจบเพื่อมอบเครื่องมือที่จำเป็นสำหรับการพัฒนาและการประเมินวิธีการควบคุมอย่างรวดเร็ว ขณะเดียวกันก็ได้รับการปรับให้มีประสิทธิภาพสูงสุดเพื่อให้สามารถดำเนินการออนไลน์ได้ แม้ว่าการเน้นจะอยู่ที่การควบคุม แต่เครื่องมือที่มีให้ยังสามารถใช้สำหรับการจำลอง การประมาณค่า หรือการเพิ่มประสิทธิภาพได้
ตรงกันข้ามกับซอฟต์แวร์โรบอตอื่นๆ CT ไม่ใช่แอปพลิเคชันบูรณาการที่เข้มงวด แต่สามารถเห็นได้ว่าเป็นกล่องเครื่องมืออย่างแท้จริง โดยมีเครื่องมือที่หลากหลายซึ่งสามารถใช้และรวมกันเพื่อแก้ไขงานที่ทำอยู่ แม้ว่าการใช้งานง่ายจะเป็นเกณฑ์สำคัญในระหว่างการออกแบบและตัวอย่างการใช้งาน แต่การใช้ CT ยังคงต้องใช้ความรู้ด้านการเขียนโปรแกรมและการควบคุม อย่างไรก็ตาม ผู้ใช้จะไม่ต้องใช้วิธีการมาตรฐานที่ต้องใช้ประสบการณ์เชิงลึกเกี่ยวกับพีชคณิตเชิงเส้นหรือวิธีตัวเลข นอกจากนี้ ด้วยการใช้คำจำกัดความและประเภททั่วไป ทำให้เกิดการบูรณาการอย่างราบรื่นระหว่างส่วนประกอบต่างๆ เช่น ระบบ ตัวควบคุม หรือผู้ประกอบระบบ ช่วยให้สามารถสร้างต้นแบบได้อย่างรวดเร็ว
จุดสนใจหลักของ CT คือประสิทธิภาพ ซึ่งเป็นสาเหตุว่าทำไมจึงมีการใช้งาน C++ อย่างเต็มรูปแบบ เนื่องจาก CT ได้รับการออกแบบให้เป็นกล่องเครื่องมือแทนที่จะเป็นแอปพลิเคชันแบบรวม เราจึงพยายามให้ความยืดหยุ่นสูงสุดแก่ผู้ใช้ ดังนั้นจึงไม่เชื่อมโยงกับมิดเดิลแวร์เฉพาะ เช่น ROS และการขึ้นต่อกันจะถูกเก็บไว้ให้น้อยที่สุด การพึ่งพาที่สำคัญสองประการสำหรับ CT คือ Eigen และ Kindr (ซึ่งมีพื้นฐานมาจาก Eigen) การพึ่งพา Eigen นี้มีเจตนาเนื่องจาก Eigen เป็นมาตรฐาน defacto สำหรับพีชคณิตเชิงเส้นใน C ++ เนื่องจากมีการใช้งานที่มีประสิทธิภาพสูงของการดำเนินการเมทริกซ์มาตรฐานตลอดจนวิธีการพีชคณิตเชิงเส้นขั้นสูง Kindr เป็นไลบรารี Kinematics ของส่วนหัวเท่านั้น ซึ่งสร้างขึ้นจากด้านบน และจัดเตรียมประเภทข้อมูลสำหรับการแสดงการหมุนที่แตกต่างกัน เช่น ควอเทอร์เนียน มุมออยเลอร์ หรือเมทริกซ์การหมุน
กล่องเครื่องมือควบคุมประกอบด้วยสามโมดูลหลัก โมดูล Core ( ct_core
) โมดูล Optimal Control ( ct_optcon
) และโมดูล Rigid Body Dynamics ( ct_rbd
) มีลำดับชั้นที่ชัดเจนระหว่างโมดูล นั่นหมายความว่าโมดูลต่างๆ จะขึ้นอยู่กับโมดูลอื่นๆ ตามลำดับ เช่น คุณสามารถใช้โมดูลหลักได้โดยไม่ต้องใช้โมดูล optcon หรือ rbd
ct_core
) ให้คำจำกัดความประเภททั่วไปและเครื่องมือทางคณิตศาสตร์ ตัวอย่างเช่น ประกอบด้วยคำจำกัดความประเภทข้อมูลส่วนใหญ่ คำจำกัดความสำหรับระบบและตัวควบคุม ตลอดจนฟังก์ชันพื้นฐาน เช่น ตัวรวมตัวเลขสำหรับสมการเชิงอนุพันธ์ct_optcon
) สร้างขึ้นจากโมดูล Core และเพิ่มโครงสร้างพื้นฐานสำหรับการกำหนดและแก้ไขปัญหาการควบคุมที่เหมาะสมที่สุด ประกอบด้วยฟังก์ชันสำหรับกำหนดฟังก์ชันต้นทุน ข้อจำกัด แบ็กเอนด์ของตัวแก้ปัญหา และตัวห่อ MPC ทั่วไปct_rbd
) มีเครื่องมือสำหรับการสร้างแบบจำลองระบบ Rigid Body Dynamics และอินเทอร์เฟซด้วยประเภทข้อมูล ct_core
และ ct_optcon
สำหรับการทดสอบและตัวอย่าง เรายังมีโมดูลโมเดล ( ct_models
) ซึ่งประกอบด้วยหุ่นยนต์รุ่นต่างๆ รวมถึงหุ่นยนต์สี่ส่วน แขนหุ่นยนต์ Quadrotor ปกติ และ Quadrotor ที่มีโหลดแบบสะพาย
โมดูลหลักที่แตกต่างกันสี่โมดูลมีรายละเอียดดังต่อไปนี้
หากต้องการเริ่มต้นใช้งานกล่องเครื่องมือควบคุม โปรดสร้างเอกสารประกอบของพื้นที่เก็บข้อมูลด้วย doxygen และปฏิบัติตามบทช่วยสอน "เริ่มต้นใช้งาน"
ซอฟต์แวร์นี้ได้รับการพัฒนาที่ Agile & Dexterous Robotics Lab ที่ ETH Zurich ประเทศสวิตเซอร์แลนด์ระหว่างปี 2014 ถึง 2018 ในช่วงเวลานั้น การพัฒนาเกิดขึ้นได้ผ่านการสนับสนุนทางการเงินจาก Swiss National Science Foundation (SNF) ผ่านการมอบรางวัลศาสตราจารย์ SNF ให้กับ Jonas Buchli และศูนย์ความสามารถแห่งชาติด้านการวิจัย (NCCR) หุ่นยนต์และการผลิตดิจิทัล
กล่องเครื่องมือควบคุมได้รับการเผยแพร่ภายใต้ใบอนุญาตข้อ BSD-2 โปรดดู LICENCE.txt และ NOTICE.txt
@article{adrlCT,
title={The control toolbox — An open-source C++ library for robotics, optimal and model predictive control},
author={Markus Giftthaler and Michael Neunert and Markus St{"a}uble and Jonas Buchli},
journal={2018 IEEE International Conference on Simulation, Modeling, and Programming for Autonomous Robots (SIMPAR)},
year={2018},
pages={123-129}
}
เวอร์ชันก่อนหน้าถึง v2.3 โฮสต์บน bitbucket สามารถพบได้ที่ https://bitbucket.org/adrlab/ct/wiki/Home
กล่องเครื่องมือนี้ถูกนำมาใช้หรือช่วยให้เกิดสิ่งตีพิมพ์ทางวิชาการต่อไปนี้:
มาร์คุส กิฟต์ธาเลอร์, ไมเคิล นอยเนิร์ต, มาร์คุส สเตอูเบิล และโจนาส บูชลี “กล่องเครื่องมือควบคุม - ไลบรารี C++ แบบโอเพ่นซอร์สสำหรับวิทยาการหุ่นยนต์ การควบคุมเชิงคาดการณ์ที่เหมาะสมและแบบจำลอง” IEEE Simpar 2018 (รางวัลกระดาษนักเรียนที่ดีที่สุด) พิมพ์ล่วงหน้า arXiv
มาร์คุส กิฟต์ธาเลอร์, ไมเคิล นอยเนิร์ต, มาร์คุส สเตอูเบิล, โจนาส บูชลี และมอริตซ์ ดีห์ล “กลุ่มวิธีการยิงแบบเกาส์-นิวตันซ้ำเพื่อการควบคุมที่เหมาะสมที่สุดแบบไม่เชิงเส้น” IROS 2018 การพิมพ์ล่วงหน้าของ arXiv
ยาน คาริอุส, เรอเน่ รันฟเทิล, วลาดเลน โคลตุน และมาร์โก ฮัตเตอร์ "การปรับวิถีให้เหมาะสมด้วยการสัมผัสที่ยากโดยนัย" IEEE Robotics and Automation Letters 3, เลขที่ 4 (2018): 3316-3323.
ไมเคิล นอยเนิร์ต, มาร์คุส สเตอูเบิล, มาร์คุส กิฟต์ธาเลอร์, ดาริโอ เบลลิโกโซ, ยาน คาริอุส, คริสเตียน เกห์ริง, มาร์โก ฮัตเตอร์ และโยนาส บุชลี “การควบคุมการคาดการณ์แบบจำลองร่างกายทั้งหมดผ่านการสัมผัสสำหรับสัตว์สี่เท้า” IEEE Robotics and Automation Letters, 2017. การพิมพ์ล่วงหน้าของ arXiv
มาร์คุส กิฟต์ธาเลอร์ และโจนาส บูชลี “แนวทางการฉายภาพเพื่อความเท่าเทียมจำกัดการควบคุมอย่างเหมาะสมที่สุดเชิงเส้นกำลังสองซ้ำ” การประชุมนานาชาติ IEEE-RAS เรื่องหุ่นยนต์ฮิวแมนนอยด์ประจำปี 2017 วันที่ 15-17 พฤศจิกายน เบอร์มิงแฮม สหราชอาณาจักร IEEE Xplore
มาร์คุส กิฟต์ธาเลอร์, ไมเคิล นอยเนิร์ต, มาร์คุส สเตอูเบิล, มาร์โก ฟริเกริโอ, เคลาดิโอ เซมินี และโยนาส บูชลี “การสร้างความแตกต่างอัตโนมัติของพลศาสตร์ของตัวถังแข็งเพื่อการควบคุมและการประมาณค่าที่เหมาะสมที่สุด” วิทยาการหุ่นยนต์ขั้นสูง ฉบับพิเศษ SIMPAR พฤศจิกายน 2017 พิมพ์ล่วงหน้า arXiv
ไมเคิล นอยเนิร์ต, มาร์คุส กิฟต์ธาเลอร์, มาร์โก ฟริเจริโอ, เคลาดิโอ เซมินี และโยนาส บูชลี “Fast Derivatives of Rigid Body Dynamics สำหรับการควบคุม การเพิ่มประสิทธิภาพ และการประมาณค่า”, การประชุมนานาชาติ IEEE ปี 2016 เรื่องการจำลอง การสร้างแบบจำลอง และการเขียนโปรแกรมสำหรับหุ่นยนต์อัตโนมัติ ซานฟรานซิสโก (รางวัลกระดาษดีเด่น). IEEE Xplore
Michael Neunert, Farbod Farshidian, Alexander W. Winkler, Jonas Buchli "การเพิ่มประสิทธิภาพวิถีผ่านการสัมผัสและการค้นพบการเดินอัตโนมัติสำหรับสัตว์สี่เท้า", IEEE Robotics และระบบอัตโนมัติจดหมาย, IEEE Xplore
ไมเคิล นอยเนิร์ต, เซดริก เดอ ครูซาซ, ฟาดรี้ เฟอร์เรอร์, มินา คาเมล, ฟาร์บอด ฟาร์ชิเดียน, โรลันด์ ซีกวาร์ต, โยนาส บูชลี "การควบคุมการคาดการณ์แบบจำลองไม่เชิงเส้นที่รวดเร็วสำหรับการเพิ่มประสิทธิภาพและการติดตามวิถีแบบรวม", การประชุมนานาชาติ IEEE เรื่องวิทยาการหุ่นยนต์และระบบอัตโนมัติ (ICRA), IEEE Xplore ปี 2559
มาร์คุส กิฟต์ธาเลอร์, ฟาร์โบด ฟาร์ชิเดียน, ทิโมธี แซนดี้, ลูคัส สตาเดลมันน์ และโยนาส บูชลี “การวางแผนจลน์ศาสตร์ที่มีประสิทธิภาพสำหรับหุ่นยนต์เคลื่อนที่ที่มีข้อจำกัดแบบไม่โฮโลโนมิกโดยใช้การควบคุมที่เหมาะสมที่สุด”, การประชุมนานาชาติ IEEE เรื่องวิทยาการหุ่นยนต์และระบบอัตโนมัติ, ปี 2017, สิงคโปร์ พิมพ์ล่วงหน้า arXiv
มาร์คัส กิฟต์ธาเลอร์, ทิโมธี แซนดี้, แคธริน ดอร์ฟเลอร์, เอียน บรูคส์, มาร์ค บักกิงแฮม, กอนซาโล เรย์, แมทเธียส โคห์เลอร์, ฟาบิโอ กรามาซิโอ และโจนาส บุชลี “การผลิตหุ่นยนต์เคลื่อนที่ในระดับ 1:1: ผู้ผลิตในแหล่งกำเนิด” วิทยาการหุ่นยนต์ก่อสร้าง, Springer Journal no. 41693 arXiv พิมพ์ล่วงหน้า
ทิโมธี แซนดี้, มาร์คุส กิฟต์ธาเลอร์, แคธริน ดอร์ฟเลอร์, แมทเธียส โคห์เลอร์ และโจนาส บุชลี “การเปลี่ยนตำแหน่งอัตโนมัติและการแปลในท้องถิ่นของผู้ผลิตในแหล่งกำเนิด”, การประชุมนานาชาติ IEEE เรื่องวิทยาการหุ่นยนต์และระบบอัตโนมัติปี 2016, สตอกโฮล์ม, สวีเดน IEEE Xplore
ไมเคิล นอยเนิร์ต, ฟาร์โบด ฟาร์ชิเดียน, โจนาส บุชลี (2014) การควบคุมการเคลื่อนไหวแบบคาดการณ์แบบไม่เชิงเส้นแบบเรียลไทม์แบบปรับเปลี่ยนได้ ในการประชุมเชิงปฏิบัติการ IROS 2014 เกี่ยวกับการเรียนรู้ของเครื่องจักรในการวางแผนและการควบคุมการเคลื่อนที่ของหุ่นยนต์ก่อนพิมพ์