ระบบปฏิบัติการหุ่นยนต์
ระบบปฏิบัติการหุ่นยนต์ ( ROSหรือros ) เป็น ชุด มิดเดิลแวร์โอเพนซอร์ส สำหรับหุ่นยนต์ แม้ว่า ROS จะไม่ใช่ระบบปฏิบัติการ (OS) แต่เป็นชุดเฟรมเวิร์กซอฟต์แวร์สำหรับการพัฒนาซอฟต์แวร์หุ่นยนต์โดยมีบริการที่ออกแบบมาสำหรับคลัสเตอร์คอมพิวเตอร์แบบ ผสมผสาน เช่นการแยกส่วนฮาร์ดแวร์การควบคุมอุปกรณ์ระดับต่ำการใช้งานฟังก์ชันที่ใช้กันทั่วไปการส่งข้อความระหว่างกระบวนการและการจัดการแพ็กเกจชุดกระบวนการที่ทำงานบน ROS จะถูกแสดงใน สถาปัตยกรรม กราฟโดยการประมวลผลจะเกิดขึ้นในโหนดที่อาจรับ ส่ง และมัลติเพล็กซ์ข้อมูลเซ็นเซอร์ การควบคุม สถานะ การวางแผน แอคชูเอเตอร์ และข้อความอื่นๆ
ภาพรวม
แม้ว่าการตอบสนองและความหน่วงต่ำ จะมีความสำคัญ ในการควบคุมหุ่นยนต์ แต่ ROS ไม่ใช่ระบบปฏิบัติการแบบเรียลไทม์ (RTOS) อย่างไรก็ตาม เป็นไปได้ที่จะรวม ROS เข้ากับโค้ดการประมวลผลแบบเรียลไทม์[ 3 ]การขาดการสนับสนุนระบบแบบเรียลไทม์ได้รับการแก้ไขในการสร้าง ROS 2 [ 4 ] [ 5 ] [ 6 ]ซึ่งเป็นการปรับปรุง API ของ ROS ครั้งใหญ่ที่จะใช้ประโยชน์จากไลบรารีและเทคโนโลยีที่ทันสมัยสำหรับฟังก์ชันหลักของ ROS และเพิ่มการสนับสนุนโค้ดแบบเรียลไทม์และฮาร์ดแวร์ระบบฝังตัว
ซอฟต์แวร์ใน ระบบนิเวศ ROS [ 7 ]สามารถแบ่งออกเป็นสามกลุ่ม:
- เครื่องมือที่ไม่ขึ้นกับภาษาและแพลตฟอร์ม ใช้สำหรับการสร้างและเผยแพร่ซอฟต์แวร์ที่ใช้ ROS;
- การ ใช้งานไลบรารีไคลเอ็นต์ ROS เช่นroscpp [ 8 ] rospy [ 9 ]และroslisp [ 10 ]
- แพ็กเกจที่มีโค้ดที่เกี่ยวข้องกับแอปพลิเคชันซึ่งใช้ไลบรารีไคลเอ็นต์ ROS อย่างน้อยหนึ่งรายการ[ 11 ]
ทั้งเครื่องมือที่ไม่ขึ้นกับภาษาและไลบรารีไคลเอ็นต์หลัก ( C++ , PythonและLisp ) เผยแพร่ภายใต้เงื่อนไขของใบอนุญาต BSDดังนั้นจึงเป็นซอฟต์แวร์โอเพนซอร์ส และใช้งานได้ฟรีทั้งในเชิงพาณิชย์และการวิจัย แพ็กเกจอื่นๆ ส่วนใหญ่ได้รับอนุญาตภายใต้ ใบอนุญาตโอเพนซอร์สหลากหลายประเภท แพ็กเกจอื่นๆ เหล่านี้ใช้งานฟังก์ชันและแอปพลิเคชันที่ใช้กันทั่วไป เช่น ไดรเวอร์ฮาร์ดแวร์ โมเดลหุ่นยนต์ ประเภทข้อมูล การวางแผน การรับรู้ การระบุ ตำแหน่ง และการสร้างแผนที่พร้อมกัน (SLAM) เครื่องมือจำลองและอัลกอริธึมอื่น ๆ
ไลบรารีไคลเอ็นต์ ROS หลักมุ่งเน้นไปที่ ระบบ ที่คล้าย Unixเป็นหลัก เนื่องจากต้องพึ่งพาชุดซอฟต์แวร์โอเพนซอร์สจำนวนมาก สำหรับไลบรารีไคลเอ็นต์เหล่านี้Ubuntu Linuxถูกระบุว่า "รองรับ" ในขณะที่ระบบปฏิบัติการอื่นๆ เช่นFedora Linux , macOSและMicrosoft Windowsถูกกำหนดให้เป็น "ทดลอง" และได้รับการสนับสนุนจากชุมชน[ 12 ] อย่างไรก็ตาม ไลบรารีไคลเอ็นต์ ROS ที่เขียนด้วย Java ดั้งเดิมrosjava [ 13 ]ไม่มีข้อจำกัดเหล่านี้ และทำให้สามารถเขียนซอฟต์แวร์ที่ใช้ ROS สำหรับระบบปฏิบัติการ Androidได้[ 14 ] rosjavaยังทำให้สามารถรวม ROS เข้ากับ กล่องเครื่องมือ MATLAB ที่ได้รับการสนับสนุนอย่างเป็น ทางการซึ่งสามารถใช้งานได้บนLinux , macOS และ Microsoft Windows [ 15 ] นอกจากนี้ยังมีการพัฒนา ไลบรารีไคลเอ็นต์JavaScript roslibjs [ 16 ]ซึ่งช่วยให้สามารถรวมซอฟต์แวร์เข้ากับระบบ ROS ผ่านเว็บเบราว์เซอร์ที่ได้มาตรฐานใดๆ ก็ได้
ประวัติศาสตร์
ช่วงแรกๆ ที่สแตนฟอร์ด (ปี 2007 และก่อนหน้านั้น)
ก่อนปี 2007 ชิ้นส่วนแรกของสิ่งที่จะกลายเป็น ROS เริ่มรวมตัวกันที่มหาวิทยาลัยสแตนฟอร์ด [ 17 ] [ 18 ] เอริค เบอร์เกอร์และคีแนน ไวโรเบค นักศึกษาปริญญาเอกที่ทำงานในห้องปฏิบัติการหุ่นยนต์ ของเคนเนธ ซอลส์เบอรี [ 19 ] ที่สแตนฟอร์ด เป็นผู้นำโครงการหุ่นยนต์ส่วนบุคคล [ 20 ]ในขณะที่ทำงานเกี่ยวกับหุ่นยนต์เพื่อทำงานด้านการจัดการในสภาพแวดล้อมของมนุษย์ นักศึกษาทั้งสองสังเกตเห็นว่าเพื่อนร่วมงานหลายคนถูกจำกัดด้วยลักษณะที่หลากหลายของหุ่นยนต์: นักพัฒนาซอฟต์แวร์ที่ยอดเยี่ยมอาจไม่มีความรู้ด้านฮาร์ดแวร์ที่จำเป็น นักพัฒนาการวางแผนเส้นทางที่ทันสมัยอาจไม่รู้วิธีการทำคอมพิวเตอร์วิชั่นที่จำเป็น ในความพยายามที่จะแก้ไขสถานการณ์นี้ นักศึกษาทั้งสองจึงเริ่มสร้างระบบพื้นฐานที่จะเป็นจุดเริ่มต้นให้ผู้อื่นในแวดวงวิชาการได้ต่อยอด ในคำพูดของเอริค เบอร์เกอร์ "บางสิ่งที่ไม่แย่ ในทุกมิติที่แตกต่างกันเหล่านั้น" [ 17 ]
ในขั้นตอนแรกของการสร้างระบบที่เป็นหนึ่งเดียวนี้ ทั้งสองได้สร้างPR1ขึ้นเป็นต้นแบบฮาร์ดแวร์และเริ่มพัฒนาซอฟต์แวร์จากต้นแบบดังกล่าว โดยนำแนวทางปฏิบัติที่ดีที่สุดจากเฟรมเวิร์กซอฟต์แวร์หุ่นยนต์โอเพนซอร์สรุ่นแรกๆ มาใช้ โดยเฉพาะอย่างยิ่ง switchyard ซึ่งเป็นระบบที่ Morgan Quigley นักศึกษาปริญญาเอกอีกคนหนึ่งของ Stanford ได้ทำงานเพื่อสนับสนุนหุ่นยนต์ปัญญาประดิษฐ์ Stanford (STAIR) [ 21 ] [ 22 ] [ 23 ] [ 24 ]โดยห้องปฏิบัติการปัญญาประดิษฐ์ Stanfordเงินทุนเริ่มต้นจำนวน 50,000 ดอลลาร์สหรัฐ ได้รับการสนับสนุนจากJoanna HoffmanและAlain Rossmannซึ่งสนับสนุนการพัฒนา PR1 ในขณะที่กำลังมองหาเงินทุนเพื่อการพัฒนาเพิ่มเติม[ 25 ] Eric Berger และ Keenan Wyrobek ได้พบกับ Scott Hassan ผู้ก่อตั้งWillow Garageซึ่งเป็นศูนย์บ่มเพาะเทคโนโลยีที่กำลังทำงานเกี่ยวกับรถ SUV อัตโนมัติและเรือพลังงานแสงอาทิตย์อัตโนมัติ Hassan มีวิสัยทัศน์ร่วมกับ Berger และ Wyrobek เกี่ยวกับ "Linux สำหรับหุ่นยนต์" และเชิญพวกเขามาทำงานที่ Willow Garage Willow Garage เริ่มต้นในเดือนมกราคม พ.ศ. 2550 และมีการส่งโค้ด ROS ครั้งแรกไปยัง SourceForge ในวันที่ 7 พฤศจิกายน พ.ศ. 2550 [ 26 ]
วิลโลว์ โรงรถ (2007–2013)
Willow Garageเริ่มพัฒนาหุ่นยนต์ PR2 ต่อจาก PR1 และใช้ ROS เป็นซอฟต์แวร์ในการควบคุม กลุ่มจากสถาบันมากกว่า 20 แห่งได้มีส่วนร่วมใน ROS ทั้งซอฟต์แวร์หลักและแพ็กเกจจำนวนมากที่ทำงานร่วมกับ ROS เพื่อสร้างระบบนิเวศซอฟต์แวร์ที่ใหญ่ขึ้น[ 27 ] [ 28 ]การที่ผู้คนภายนอก Willow มีส่วนร่วมใน ROS (โดยเฉพาะจากโครงการ STAIR ของ Stanford) หมายความว่า ROS เป็นแพลตฟอร์มสำหรับหุ่นยนต์หลายตัวตั้งแต่เริ่มต้น แม้ว่า Willow Garage จะมีโครงการอื่น ๆ ที่กำลังดำเนินการอยู่ แต่ก็ถูกยกเลิกไปเพื่อสนับสนุนโครงการหุ่นยนต์ส่วนบุคคล (Personal Robotics Program) ซึ่งมุ่งเน้นไปที่การผลิต PR2 เป็นแพลตฟอร์มการวิจัยสำหรับสถาบันการศึกษา และ ROS เป็นสแต็กหุ่นยนต์โอเพนซอร์สที่จะเป็นพื้นฐานสำหรับการวิจัยทางวิชาการและสตาร์ทอัพด้านเทคโนโลยี เช่นเดียวกับสแต็ก LAMPที่ใช้สำหรับสตาร์ทอัพบนเว็บ
ในเดือนธันวาคม พ.ศ. 2551 Willow Garage บรรลุเป้าหมายสำคัญภายในประการแรกจากสามประการ ได้แก่ การนำทางอย่างต่อเนื่องของ PR2 เป็นเวลาสองวันและเป็นระยะทาง pi กิโลเมตร[ 29 ]หลังจากนั้นไม่นาน ROS เวอร์ชันแรก (0.4 Mango Tango) [ 30 ]ก็ได้รับการเผยแพร่ ตามด้วยเอกสาร RVIZ ฉบับแรกและบทความวิจัยฉบับแรกเกี่ยวกับ ROS [ 28 ]ในช่วงต้นฤดูร้อน เป้าหมายสำคัญภายในประการที่สอง ได้แก่ การที่ PR2 สามารถนำทางภายในสำนักงาน เปิดประตู และเสียบปลั๊กเองได้ ก็บรรลุผลสำเร็จ[ 31 ]ตามมาด้วยการเริ่มต้นเว็บไซต์ ROS.org ในเดือนสิงหาคม[ 32 ]บทเรียนเบื้องต้นเกี่ยวกับ ROS ได้รับการเผยแพร่ในเดือนธันวาคม[ 33 ]เพื่อเตรียมพร้อมสำหรับการเปิดตัว ROS 1.0 ในเดือนมกราคม พ.ศ. 2553 [ 34 ]นี่คือเป้าหมายสำคัญประการที่ 3: การผลิตเอกสารและบทเรียนจำนวนมากสำหรับความสามารถอันมหาศาลที่วิศวกรของ Willow Garage ได้พัฒนาขึ้นในช่วง 3 ปีที่ผ่านมา
หลังจากนั้น Willow Garage ก็บรรลุเป้าหมายที่ตั้งไว้มานานที่สุดอย่างหนึ่ง นั่นคือ การมอบหุ่นยนต์ PR2 จำนวน 10 ตัวให้กับสถาบันการศึกษาที่มีคุณสมบัติเหมาะสม นี่เป็นเป้าหมายที่ผู้ก่อตั้งตั้งไว้มานานแล้ว เนื่องจากพวกเขารู้สึกว่า PR2 สามารถจุดประกายการวิจัยด้านหุ่นยนต์ทั่วโลกได้ ในที่สุดพวกเขาก็มอบ PR2 จำนวน 11 ตัวให้กับสถาบันต่างๆ รวมถึงมหาวิทยาลัย Freiburg (เยอรมนี), Robert Bosch GmbH , Georgia Institute of Technology , KU Leuven (เบลเยียม) , Massachusetts Institute of Technology (MIT), Stanford University , Technical University of Munich (เยอรมนี), University of California, Berkeley , University of Pennsylvania , University of Southern California (USC) และUniversity of Tokyo (ญี่ปุ่น) [ 35 ]สิ่งนี้ประกอบกับโครงการฝึกงานที่ประสบความสำเร็จอย่างสูงของ Willow Garage [ 36 ] (ดำเนินการตั้งแต่ปี 2008 ถึง 2010 โดยMelonee Wise ) ช่วยเผยแพร่ข้อมูลเกี่ยวกับ ROS ไปทั่วโลกของหุ่นยนต์ ROS เวอร์ชันแรกที่ได้รับการเผยแพร่อย่างเป็นทางการคือ ROS Box Turtle ซึ่งเผยแพร่เมื่อวันที่ 2 มีนาคม 2010 นับเป็นครั้งแรกที่ ROS ได้รับการเผยแพร่อย่างเป็นทางการพร้อมชุดแพ็กเกจเวอร์ชันต่างๆ สำหรับการใช้งานสาธารณะ การพัฒนาเหล่านี้ทำให้เกิดโดรนเครื่องแรกที่ใช้ ROS [ 37 ]รถยนต์ไร้คนขับเครื่องแรกที่ใช้ ROS [ 38 ]และการดัดแปลง ROS สำหรับLego Mindstorms [ 39 ] ด้วยโปรแกรม PR2 Beta ที่ดำเนินไปได้ด้วยดี หุ่นยนต์ PR2 จึงได้รับการวางจำหน่ายอย่างเป็นทางการในเชิงพาณิชย์เมื่อวันที่ 9 กันยายน 2010 [ 40 ]

ปี 2011 เป็นปีแห่งความสำเร็จของ ROS ด้วยการเปิดตัว ROS Answers ซึ่งเป็นฟอรัมถามตอบสำหรับผู้ใช้ ROS เมื่อวันที่ 15 กุมภาพันธ์[ 41 ]การเปิด ตัวชุดหุ่นยนต์ TurtleBot ที่ประสบความสำเร็จอย่างสูง เมื่อวันที่ 18 เมษายน[ 42 ]และจำนวนคลังเก็บข้อมูล ROS ทั้งหมดเกิน 100 แห่งเมื่อวันที่ 5 พฤษภาคม[ 43 ] Willow Garage เริ่มต้นปี 2012 ด้วยการสร้างOpen Source Robotics Foundation (OSRF) [ 44 ]ในเดือนเมษายน OSRF ได้รับสัญญาซอฟต์แวร์จากDefense Advanced Research Projects Agency (DARPA) ทันที [ 45 ]ต่อมาในปีนั้น ROSCon ครั้งแรกจัดขึ้นที่เซนต์พอล รัฐมินนิโซตา[ 46 ]หนังสือเล่มแรกเกี่ยวกับ ROS ชื่อ ROS By Example [ 47 ]ได้รับการตีพิมพ์ และBaxter ซึ่ง เป็นหุ่นยนต์เชิงพาณิชย์ตัวแรกที่ใช้ ROS ได้รับการประกาศโดยRethink Robotics [ 48 ]หลังจากครบรอบ 5 ปีในเดือนพฤศจิกายนไม่นาน ROS ก็เริ่มดำเนินการในทุกทวีปในวันที่ 3 ธันวาคม พ.ศ. 2555 [ 49 ]
ในเดือนกุมภาพันธ์ พ.ศ. 2556 OSRF ได้กลายเป็นผู้ดูแลซอฟต์แวร์หลักของ ROS [ 50 ]ซึ่งเป็นการบอกล่วงหน้าถึงการประกาศในเดือนสิงหาคมว่า Willow Garage จะถูกควบรวมกิจการโดยผู้ก่อตั้งSuitable Technologies [ 51 ] ณจุดนี้ ROS ได้ออกเวอร์ชันหลักเจ็ดเวอร์ชัน (จนถึง ROS Groovy) [ 52 ]และมีผู้ใช้งานทั่วโลก บทนี้ของการพัฒนา ROS จะสิ้นสุดลงเมื่อClearpath Roboticsเข้ามารับผิดชอบด้านการสนับสนุน PR2 ในช่วงต้นปี พ.ศ. 2557 [ 53 ]
OSRF และ Open Robotics (ปี 2013 – ปัจจุบัน)
ในช่วงหลายปีที่ผ่านมานับตั้งแต่ OSRF เข้ามารับช่วงการพัฒนา ROS หลัก ได้มีการออกเวอร์ชันใหม่ทุกปี[ 52 ]ในขณะที่ความสนใจใน ROS ยังคงเติบโตอย่างต่อเนื่อง ROSCon ได้จัดขึ้นทุกปีตั้งแต่ปี 2012 โดยจัดร่วมกับICRAหรือIROSซึ่งเป็นการประชุมหุ่นยนต์หลักสองงาน มีการจัดงานพบปะของนักพัฒนา ROS ในหลายประเทศ[ 54 ] [ 55 ] [ 56 ]มีการตีพิมพ์หนังสือเกี่ยวกับ ROS จำนวนมาก[ 57 ]และมีการริเริ่มโครงการด้านการศึกษามากมาย[ 58 ] [ 59 ]เมื่อวันที่ 1 กันยายน 2014 NASAได้ประกาศหุ่นยนต์ตัวแรกที่ใช้ ROS ในอวกาศ: Robotnaut 2บนสถานีอวกาศนานาชาติ[ 60 ]ในปี 2017 OSRF ได้เปลี่ยนชื่อเป็นOpen Robotics บริษัทยักษ์ใหญ่ด้านเทคโนโลยีอย่างAmazonและMicrosoftเริ่มให้ความสนใจใน ROS ในช่วงเวลานี้ โดย Microsoft ได้พอร์ต ROS หลักไปยัง Windows ในเดือนกันยายน 2018 [ 61 ]ตามมาด้วย Amazon Web Services ที่ปล่อย RoboMaker ในเดือนพฤศจิกายน 2018 [ 62 ]
บางทีการพัฒนาที่สำคัญที่สุดของ OSRF/Open Robotics ตลอดหลายปีที่ผ่านมา (โดยไม่นับรวมการเติบโตอย่างรวดเร็วของแพลตฟอร์มหุ่นยนต์ที่เริ่มรองรับ ROS หรือการปรับปรุงครั้งใหญ่ในแต่ละเวอร์ชันของ ROS) คือการเสนอ ROS 2 ซึ่งเป็นการเปลี่ยนแปลง API ที่สำคัญของ ROS โดยมีจุดประสงค์เพื่อรองรับการเขียนโปรแกรมแบบเรียลไทม์สภาพแวดล้อมการคำนวณที่หลากหลายมากขึ้น และเทคโนโลยีที่ทันสมัยยิ่งขึ้น[ 63 ] ROS 2 ได้รับการประกาศในงาน ROSCon 2014 [ 64 ]การแก้ไขครั้งแรกใน repository ros2เกิดขึ้นในเดือนกุมภาพันธ์ 2015 ตามด้วยเวอร์ชันอัลฟ่าในเดือนสิงหาคม 2015 [ 65 ]เวอร์ชันการแจกจ่ายครั้งแรกของ ROS 2 คือ Ardent Apalone ได้รับการเผยแพร่เมื่อวันที่ 8 ธันวาคม 2017 [ 65 ]ซึ่งเป็นการเริ่มต้นยุคใหม่ของการพัฒนา ROS รุ่นต่อไป
ออกแบบ
ปรัชญา

ROS ถูกออกแบบมาให้เป็นโอเพนซอร์ส โดยมีเจตนาให้ผู้ใช้สามารถเลือกการกำหนดค่าของเครื่องมือและไลบรารีที่ทำงานร่วมกับแกนหลักของ ROS เพื่อให้ผู้ใช้สามารถปรับเปลี่ยนซอฟต์แวร์ที่ใช้ให้เหมาะสมกับหุ่นยนต์และแอปพลิเคชันของตนได้ ดังนั้นจึงมีสิ่งที่เป็นแกนหลักของ ROS น้อยมาก นอกเหนือจากโครงสร้างทั่วไปที่โปรแกรมต้องทำงานและสื่อสารกัน ในแง่หนึ่ง ROS เปรียบเสมือนท่อพื้นฐานที่อยู่เบื้องหลังโหนดและการส่งข้อความ อย่างไรก็ตาม ในความเป็นจริง ROS ไม่ได้เป็นเพียงแค่ท่อพื้นฐาน แต่เป็นชุดเครื่องมือที่ครบครันและสมบูรณ์ ชุดความสามารถที่หลากหลายที่ไม่ขึ้นกับหุ่นยนต์ซึ่งจัดหาโดยแพ็กเกจต่างๆ และระบบนิเวศที่ใหญ่กว่าของส่วนเสริมต่างๆ สำหรับ ROS
แบบจำลองกราฟการคำนวณ
กระบวนการ ROS จะถูกแสดงเป็นโหนดในโครงสร้างกราฟ โดยเชื่อมต่อกันด้วยขอบที่เรียกว่าหัวข้อ[ 66 ]โหนด ROS สามารถส่งข้อความถึงกันผ่านหัวข้อ เรียกใช้บริการไปยังโหนดอื่น ให้บริการแก่โหนดอื่น หรือตั้งค่าหรือดึงข้อมูลที่ใช้ร่วมกันจากฐานข้อมูลส่วนกลางที่เรียกว่าเซิร์ฟเวอร์พารามิเตอร์ กระบวนการที่เรียกว่า ROS1 Master [ 66 ]ทำให้สิ่งเหล่านี้เป็นไปได้ทั้งหมดโดยการลงทะเบียนโหนดกับตัวเอง ตั้งค่าการสื่อสารระหว่างโหนดสำหรับหัวข้อ และควบคุมการอัปเดตเซิร์ฟเวอร์พารามิเตอร์ ข้อความและการเรียกใช้บริการจะไม่ผ่านมาสเตอร์ แต่มาสเตอร์จะตั้งค่าการสื่อสารแบบ peer-to-peer ระหว่างกระบวนการโหนดทั้งหมดหลังจากที่ลงทะเบียนตัวเองกับมาสเตอร์แล้ว สถาปัตยกรรมแบบกระจายศูนย์นี้เหมาะสำหรับหุ่นยนต์ ซึ่งมักประกอบด้วยฮาร์ดแวร์คอมพิวเตอร์เครือข่ายบางส่วน และอาจสื่อสารกับคอมพิวเตอร์ภายนอกเพื่อการคำนวณหรือคำสั่งที่ซับซ้อน
โหนด
โหนดแสดงถึงกระบวนการหนึ่งที่ทำงานอยู่บนกราฟ ROS โหนดทุกโหนดจะมีชื่อ ซึ่งจะลงทะเบียนกับมาสเตอร์ ROS1 ก่อนที่จะสามารถดำเนินการใดๆ ได้ โหนดหลายโหนดที่มีชื่อต่างกันสามารถอยู่ร่วมกันได้ภายใต้เนมสเปซ ที่แตกต่างกัน หรืออาจกำหนดให้โหนดเป็นแบบไม่ระบุชื่อ ซึ่งในกรณีนี้ โหนดจะสร้างตัวระบุเพิ่มเติมแบบสุ่มเพื่อเพิ่มเข้าไปในชื่อที่กำหนด โหนดเป็นหัวใจสำคัญของการเขียนโปรแกรม ROS เนื่องจากโค้ดไคลเอ็นต์ ROS ส่วนใหญ่อยู่ในรูปแบบของโหนด ROS ซึ่งจะดำเนินการตามข้อมูลที่ได้รับจากโหนดอื่นๆ ส่งข้อมูลไปยังโหนดอื่นๆ หรือส่งและรับคำขอการดำเนินการจากและไปยังโหนดอื่นๆ
หัวข้อ
หัวข้อต่างๆ เรียกว่าบัสที่โหนดต่างๆ ส่งและรับข้อความ[ 67 ]ชื่อหัวข้อต้องไม่ซ้ำกันภายในเนมสเปซของตนเองด้วย ในการส่งข้อความไปยังหัวข้อ โหนดจะต้องเผยแพร่ไปยังหัวข้อดังกล่าว ในขณะที่การรับข้อความ โหนดจะต้องสมัครรับข้อมูล รูปแบบการเผยแพร่/สมัครรับข้อมูลเป็นแบบไม่ระบุตัวตน: ไม่มีโหนดใดรู้ว่าโหนดใดกำลังส่งหรือรับข้อความในหัวข้อ รู้เพียงแต่ว่าตนเองกำลังส่ง/รับข้อความในหัวข้อนั้น ประเภทของข้อความที่ส่งผ่านในหัวข้อมีความหลากหลายและสามารถกำหนดโดยผู้ใช้ได้ เนื้อหาของข้อความเหล่านี้อาจเป็นข้อมูลเซ็นเซอร์ คำสั่งควบคุมมอเตอร์ ข้อมูลสถานะ คำสั่งแอคทูเอเตอร์ หรือสิ่งอื่นๆ
บริการ
โหนดอาจโฆษณาบริการได้เช่นกัน[ 68 ]บริการแสดงถึงการกระทำที่โหนดสามารถทำได้ซึ่งจะมีผลลัพธ์เดียว ดังนั้น บริการจึงมักใช้สำหรับการกระทำที่มีจุดเริ่มต้นและจุดสิ้นสุดที่กำหนดไว้ เช่น การจับภาพเฟรมเดียว แทนที่จะประมวลผลคำสั่งความเร็วไปยังมอเตอร์ล้อหรือข้อมูลมาตรวัดระยะทางจากตัวเข้ารหัสล้อ โหนดจะโฆษณาบริการและเรียกใช้บริการจากกันและกัน
เซิร์ฟเวอร์พารามิเตอร์
เซิร์ฟเวอร์พารามิเตอร์[ 68 ]เป็นฐานข้อมูลที่ใช้ร่วมกันระหว่างโหนด ซึ่งอนุญาตให้เข้าถึงข้อมูลคงที่หรือกึ่งคงที่ร่วมกันได้ ข้อมูลที่ไม่เปลี่ยนแปลงบ่อยนักและด้วยเหตุนี้จึงเข้าถึงได้ไม่บ่อยนัก เช่น ระยะห่างระหว่างจุดคงที่สองจุดในสภาพแวดล้อม หรือน้ำหนักของหุ่นยนต์ ถือเป็นตัวเลือกที่ดีสำหรับการจัดเก็บในเซิร์ฟเวอร์พารามิเตอร์
เครื่องมือ
ฟังก์ชันหลักของ ROS ได้รับการเสริมด้วยเครื่องมือหลากหลายชนิดที่ช่วยให้นักพัฒนาสามารถมองเห็นและบันทึกข้อมูล นำทางโครงสร้างแพ็กเกจ ROS ได้อย่างง่ายดาย และสร้างสคริปต์เพื่อทำให้กระบวนการกำหนดค่าและการตั้งค่าที่ซับซ้อนเป็นไปโดยอัตโนมัติ การเพิ่มเครื่องมือเหล่านี้ช่วยเพิ่มขีดความสามารถของระบบที่ใช้ ROS อย่างมาก โดยการทำให้ปัญหาการพัฒนาหุ่นยนต์ทั่วไปหลายประการง่ายขึ้นและมีวิธีแก้ปัญหา เครื่องมือเหล่านี้มีให้ในแพ็กเกจเช่นเดียวกับอัลกอริทึมอื่นๆ แต่แทนที่จะให้การใช้งานไดรเวอร์ฮาร์ดแวร์หรืออัลกอริทึมสำหรับงานหุ่นยนต์ต่างๆ แพ็กเกจเหล่านี้จะให้เครื่องมือที่ไม่ขึ้นกับงานและหุ่นยนต์ ซึ่งมาพร้อมกับแกนหลักของการติดตั้ง ROS สมัยใหม่ส่วนใหญ่
รวิซ
rviz [ 69 ] (เครื่องมือแสดงภาพหุ่นยนต์) เป็นเครื่องมือแสดงภาพสามมิติที่ใช้ในการแสดงภาพหุ่นยนต์ สภาพแวดล้อมที่หุ่นยนต์ทำงาน และข้อมูลเซ็นเซอร์ เป็นเครื่องมือที่ปรับแต่งได้สูง มีการแสดงภาพและปลั๊กอินหลายประเภท Unified Robot Description Format ( URDF ) เป็น รูปแบบไฟล์ XMLสำหรับคำอธิบายแบบจำลองหุ่นยนต์
รอสแบ็ก
rosbag [ 70 ]เป็นเครื่องมือบรรทัดคำสั่งที่ใช้ในการบันทึกและเล่นข้อมูลข้อความ ROS rosbagใช้รูปแบบไฟล์ที่เรียกว่า bags [ 71 ]ซึ่งบันทึกข้อความ ROS โดยการฟังหัวข้อและบันทึกข้อความเมื่อเข้ามา การเล่นข้อความจาก bag นั้นโดยส่วนใหญ่เหมือนกับการมีโหนดดั้งเดิมที่สร้างข้อมูลในกราฟการคำนวณ ROS ทำให้ bags เป็นเครื่องมือที่มีประโยชน์สำหรับการบันทึกข้อมูลเพื่อใช้ในการพัฒนาในภายหลัง แม้ว่าrosbagจะเป็นเครื่องมือบรรทัดคำสั่งเท่านั้น แต่rqt_bag [ 72 ] ก็มีอินเทอ ร์เฟซ GUI สำหรับrosbag
แคทคิน
catkin [ 73 ]เป็นระบบสร้าง ROS1 ซึ่งเข้ามาแทนที่rosbuild [ 74 ]ตั้งแต่ ROS Groovy catkin ใช้CMake เป็นพื้นฐาน และเป็นแบบข้ามแพลตฟอร์ม โอเพนซอร์ส และไม่ขึ้นกับภาษาเช่นกัน ตั้งแต่ ROS2 เป็นต้นไป catkin จะไม่ถูกใช้งานอีกต่อไป แต่ยังคงได้รับการบำรุงรักษาเพื่อรองรับระบบเก่า[ 75 ]
รอสแบช
แพ็คเกจrosbash [ 76 ]มีชุดเครื่องมือที่ช่วยเพิ่มฟังก์ชันการทำงานของเชลล์ bashเครื่องมือเหล่านี้ประกอบด้วยrosls , roscdและroscpซึ่งจำลองฟังก์ชันการทำงานของls , cdและcpตามลำดับ เวอร์ชัน ROS ของเครื่องมือเหล่านี้อนุญาตให้ผู้ใช้ใช้ ชื่อแพ็คเกจ rosแทนเส้นทางไฟล์ที่แพ็คเกจตั้งอยู่ แพ็คเกจนี้ยังเพิ่มการเติมข้อความอัตโนมัติด้วยแท็บให้กับยูทิลิตี้ ROS ส่วนใหญ่ และรวมถึง rosed ซึ่งแก้ไขไฟล์ที่กำหนดด้วยโปรแกรมแก้ไขข้อความเริ่มต้นที่เลือกไว้ รวมถึงrosrunซึ่งเรียกใช้ไฟล์ปฏิบัติการในแพ็คเกจ ROS rosbashรองรับฟังก์ชันการทำงานเดียวกันสำหรับzshและtcshในระดับที่น้อยกว่า
roslaunch
roslaunch [ 77 ]เป็นเครื่องมือที่ใช้ในการเปิดใช้งานโหนด ROS หลายโหนดทั้งในพื้นที่และระยะไกล รวมถึงการตั้งค่าพารามิเตอร์บนเซิร์ฟเวอร์พารามิเตอร์ ROS ไฟล์การกำหนดค่า roslaunchซึ่งเขียนโดยใช้XMLสามารถทำให้กระบวนการเริ่มต้นและการกำหนดค่าที่ซับซ้อนเป็นไปโดยอัตโนมัติด้วยคำสั่งเดียว สคริปต์ roslaunchสามารถรวม สคริปต์ roslaunch อื่นๆ เปิดใช้งานโหนดบนเครื่องเฉพาะ และแม้กระทั่งรีสตาร์ทกระบวนการที่หยุดทำงานระหว่างการดำเนินการ
พัสดุที่น่าสนใจ
ROS ประกอบด้วยไลบรารีโอเพนซอร์สจำนวนมากที่พัฒนาฟังก์ชันและอัลกอริธึมพื้นฐานสำหรับงานหุ่นยนต์ ไลบรารีโอเพนซอร์สเหล่านี้ถูกจัดระเบียบเป็นแพ็กเกจ หลายแพ็กเกจรวมอยู่ในชุดการแจกจ่าย ROS ในขณะที่บางแพ็กเกจอาจได้รับการพัฒนาโดยบุคคลและเผยแพร่ผ่านเว็บไซต์แบ่งปันโค้ด เช่นGitHubแพ็กเกจที่น่าสนใจบางส่วน ได้แก่:
ระบบและเครื่องมือ
การทำแผนที่และการระบุตำแหน่ง
- slam toolbox [ 81 ]ให้บริการการระบุตำแหน่งและการทำแผนที่พร้อมกัน แบบ 2 มิติ (SLAM) และระบบระบุตำแหน่ง แบบเต็มรูปแบบ
- gmapping [ 82 ]ให้ wrapper สำหรับ อัลกอริทึม Gmapping ของ OpenSlam สำหรับ SLAM
- นักทำแผนที่[ 83 ]ให้บริการอัลกอริธึม SLAM 2 มิติและ 3 มิติแบบเรียลไทม์ที่พัฒนาโดยGoogle
- amcl [ 84 ]ให้การใช้งานการระบุตำแหน่ง Monte-Carlo แบบปรับตัวได้
การนำทาง
- การนำทาง[ 85 ]ให้ความสามารถในการนำทางหุ่นยนต์เคลื่อนที่ในสภาพแวดล้อมแบบระนาบ
การจัดการ
- MoveIt! [ 86 ]ให้ความสามารถในการวางแผนการเคลื่อนที่สำหรับหุ่นยนต์แขนกล ไลบรารีการวางแผนเริ่มต้นคือOpen Motion Planning Library (OMPL ) [ 87 ]
การรับรู้
การแสดงภาพด้วยกรอบพิกัด
การจำลอง
- gazebo_ros_pkgs [ 91 ]เป็นเมตาแพ็กเกจที่จัดเตรียมแพ็กเกจสำหรับการรวม ROS เข้ากับโปรแกรมจำลอง Gazebo
- stage [ 92 ]จัดเตรียมอินเทอร์เฟซสำหรับโปรแกรมจำลอง Stage 2D
เวอร์ชันและรุ่นต่างๆ
ROS เวอร์ชันต่างๆ อาจไม่เข้ากันกับเวอร์ชันอื่นๆ และมักจะอ้างอิงถึงด้วยชื่อรหัสมากกว่าหมายเลขเวอร์ชัน ปัจจุบัน ROS 2 ออกเวอร์ชันใหม่ทุกปีในเดือนพฤษภาคม ตามการออกเวอร์ชัน Ubuntu LTS [ 93 ] [ 94 ]เวอร์ชันเหล่านี้ได้รับการสนับสนุนสลับกันเป็นเวลา 5 ปี (ปีคู่/การออกเวอร์ชัน Ubuntu LTS) และ 1.5 ปี (ปีคี่/ไม่มีการออกเวอร์ชัน Ubuntu LTS) ROS 1 ไม่มีการออกเวอร์ชันใหม่ นอกเหนือจากนี้ ยังมีโครงการ ROS-Industrial หรือ ROS-I ที่พัฒนาต่อยอดมาตั้งแต่ปี 2012 เป็นอย่างน้อย
ROS 2
| การกระจาย | วันที่วางจำหน่าย | โปสเตอร์ | วันที่สิ้นสุดการสนับสนุน | ระยะเวลาการสนับสนุน | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Rolling Ridley [ 96 ] [ 97 ] (rolling release with latest features) | มีความคืบหน้ามาตั้งแต่เดือนมิถุนายน 2020 | ไม่มีข้อมูล | ไม่มีข้อมูล | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ลูธผู้อ่อนโยน | 22 พฤษภาคม 2026 [ 98 ] | ไม่มีข้อมูล | เวอร์ชันล่าสุด: พฤษภาคม 2031 | 5 ปี | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ไคจูสวมกระโปรงสก็อต | 23 พฤษภาคม 2025 [ 99 ] | เริ่มใช้งาน:พฤศจิกายน 2026 | 1.5 ปี | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| แจ๊ซซี่ ฮาลิสโก้ | 23 พฤษภาคม 2024 [ 100 ] | เริ่มใช้งาน:พฤษภาคม 2029 | 5 ปี | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ไอรอน เออร์วินี | 23 พฤษภาคม 2566 [ 101 ] | ไม่ได้รับการสนับสนุน:พฤศจิกายน 2024 | 1.5 ปี | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ฮอว์กส์บิลผู้ถ่อมตน | 23 พฤษภาคม 2565 [ 102 ] | เริ่มรองรับ:พฤษภาคม 2560 | 5 ปี | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| จีโอเชโลนกาแล็กติก | 23 พฤษภาคม 2021 [ 103 ] | ไม่ได้รับการสนับสนุน:ธันวาคม 2022 | 1.5 ปี | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ฟ็อกซี่ ฟิตซ์รอย | 5 มิถุนายน 2020 [ 104 ] | ไม่ได้รับการสนับสนุน:มิถุนายน 2023 | 3 ปี | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| นักหลบหลีกผู้มีวาทศิลป์ | 22 พฤศจิกายน 2562 | ไม่ได้รับการสนับสนุน:พฤศจิกายน 2020 | 1 ปี | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ไดอาเดมาต้าสุดเท่ | 31 พฤษภาคม 2562 | ไม่ได้รับการสนับสนุน:พฤษภาคม 2021 | 2 ปี | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| คริสตัล เคลมมีส์ | 14 ธันวาคม 2561 | ไม่ได้รับการสนับสนุน:ธันวาคม 2019 | 1 ปี | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| โบล์สันผู้ร่าเริง | 2 กรกฎาคม 2561 | ไม่ได้รับการสนับสนุน:กรกฎาคม 2562 | 1 ปี | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| อาร์เดนท์ อะพาโลน | 8 ธันวาคม 2560 | ไม่ได้รับการสนับสนุน:ธันวาคม 2018 | 1 ปี | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| เบต้า3 | 13 กันยายน 2560 | ไม่มีข้อมูล | ไม่ได้รับการสนับสนุน:ธันวาคม 2017 | 4 เดือน | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| เบต้า2 | 5 กรกฎาคม 2560 | ไม่มีข้อมูล | ไม่ได้รับการสนับสนุน:กันยายน 2017 | 2 เดือน | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| เบต้า1 | 19 ธันวาคม 2559 | ไม่มีข้อมูล | ไม่ได้รับการสนับสนุน:กรกฎาคม 2560 | 7 เดือน | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (ข้อเสนอ ROS 2 แบบเรียลไทม์) | 7 มกราคม 2559 [ 105 ] | ไม่มีข้อมูล | ไม่มีข้อมูล | ไม่มีข้อมูล | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| อัลฟา1 (จุดยึด) - อัลฟา8 (ตะขอและห่วง) [ 106 ] | 31 สิงหาคม 2558 - 5 ตุลาคม 2559 [ 107 ] | ไม่มีข้อมูล | ไม่ได้รับการสนับสนุน:ธันวาคม 2016 | รวมทั้งหมด: 16 เดือน | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ("ทำไมต้องใช้ ROS 2?") | 20 กรกฎาคม 2558 [ 108 ] | ไม่มีข้อมูล | ไม่มีข้อมูล | ไม่มีข้อมูล | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (การประมวลผลแบบกลุ่ม CI สำหรับ ROS 2 และhttp://design.ros2.org ) | อ้างอิงในคำถามและคำตอบ6 พฤษภาคม 2558 [ 109 ] | ไม่มีข้อมูล | ไม่มีข้อมูล | ไม่มีข้อมูล | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (การส่งโค้ดครั้งแรกไปยังที่เก็บ ROS 2) | กุมภาพันธ์ 2558 | ไม่มีข้อมูล | ไม่มีข้อมูล | ไม่มีข้อมูล | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ROSCon 2014: [ 110 ] [ 111 ] "ROS รุ่นต่อไป: สร้างบน DDS", "ROS 2.0: ตัวอย่างสำหรับนักพัฒนา" | 12 กันยายน 2557 | ไม่มีข้อมูล | ไม่มีข้อมูล | ไม่มีข้อมูล | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ตำนาน: ไม่ได้รับการสนับสนุน ได้รับการสนับสนุน เวอร์ชั่นล่าสุด เวอร์ชันตัวอย่าง เวอร์ชันในอนาคต | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ROS 1
ROS-อุตสาหกรรม
ROS-Industrial [ 112 ]เป็นโครงการโอเพนซอร์ส (ใบอนุญาต BSD (แบบดั้งเดิม)/Apache 2.0 (ที่ต้องการ)) ที่ขยายความสามารถขั้นสูงของ ROS ไปสู่ระบบอัตโนมัติในการผลิตและหุ่นยนต์ ในสภาพแวดล้อมทางอุตสาหกรรม มีวิธีการเขียนโปรแกรมหุ่นยนต์สองวิธีที่แตกต่างกัน คือ ผ่านตัวควบคุมภายนอกที่เป็นกรรมสิทธิ์ ซึ่งโดยทั่วไปแล้วจะใช้ ROS หรือผ่านภาษาการเขียนโปรแกรมดั้งเดิมของหุ่นยนต์นั้นๆ ดังนั้น ROS จึงสามารถมองได้ว่าเป็นแนวทางการเขียนโปรแกรมหุ่นยนต์อุตสาหกรรมโดยใช้ซอฟต์แวร์ แทนที่จะเป็นแนวทางแบบดั้งเดิมที่ใช้ตัวควบคุมหุ่นยนต์
คลังเก็บข้อมูล ROS-Industrial ประกอบด้วยอินเทอร์เฟซสำหรับหุ่นยนต์อุตสาหกรรมทั่วไป ตัวจับยึด เซ็นเซอร์ และเครือข่ายอุปกรณ์ นอกจากนี้ยังจัดหาไลบรารีซอฟต์แวร์สำหรับการปรับเทียบเซ็นเซอร์ 2D/3D อัตโนมัติ การวางแผนเส้นทาง/การเคลื่อนที่ของกระบวนการ แอปพลิเคชันเช่น Scan-N-Plan เครื่องมือสำหรับนักพัฒนาเช่นปลั๊กอิน Qt Creator ROS และหลักสูตรการฝึกอบรมที่เฉพาะเจาะจงสำหรับความต้องการของผู้ผลิต ROS-I ได้รับการสนับสนุนจากกลุ่มพันธมิตรนานาชาติของสมาชิกอุตสาหกรรมและการวิจัย โครงการนี้เริ่มต้นจากการทำงานร่วมกันระหว่าง Yaskawa Motoman Robotics, Southwest Research Institute และ Willow Garage เพื่อสนับสนุนการใช้ ROS สำหรับระบบอัตโนมัติในการผลิต โดยคลังเก็บข้อมูล GitHub ก่อตั้งขึ้นในเดือนมกราคม 2012 โดย Shaun Edwards (SwRI) ปัจจุบัน กลุ่มพันธมิตรแบ่งออกเป็นสามกลุ่ม กลุ่มความร่วมมืออุตสาหกรรม ROS ในทวีปอเมริกา (นำโดย SwRI และตั้งอยู่ที่เมืองซานอันโตนิโอ รัฐเท็กซัส) กลุ่มความร่วมมืออุตสาหกรรม ROS ในยุโรป (นำโดย Fraunhofer IPA และตั้งอยู่ที่เมืองสตุทการ์ท ประเทศเยอรมนี) และกลุ่มความร่วมมืออุตสาหกรรม ROS ในภูมิภาคเอเชียแปซิฟิก (นำโดย Advanced Remanufacturing and Technology Centre (ARTC) และ Nanyang Technological University (NTU) และตั้งอยู่ที่ประเทศสิงคโปร์)
กลุ่มพันธมิตรสนับสนุนชุมชนอุตสาหกรรม ROS ทั่วโลกโดยดำเนินการฝึกอบรม ROS-I ให้การสนับสนุนทางเทคนิค และกำหนดแผนงานในอนาคตสำหรับ ROS-I ตลอดจนดำเนินโครงการอุตสาหกรรมร่วมก่อนการแข่งขันเพื่อพัฒนาความสามารถ ROS-I ใหม่[ 113 ]
อวกาศ ROS
ในเดือนพฤศจิกายน 2020 NASA ได้ประกาศว่า Blue Origin ได้รับเลือกผ่านการประกาศโอกาสความร่วมมือ (ACO) ของ Space Technology Mission Directorate เพื่อร่วมพัฒนาSpace Robot Operating System (Space ROS) ร่วมกับศูนย์ NASA สามแห่ง[ 114 ] วัตถุประสงค์ของ Space ROS คือการจัดหาเฟรมเวิร์กซอฟต์แวร์ที่สามารถนำกลับมาใช้ใหม่ได้และเป็นแบบโมดูลาร์สำหรับระบบหุ่นยนต์และระบบอัตโนมัติในอวกาศบนพื้นฐานของ ROS 2 ซึ่งสอดคล้องกับข้อกำหนดด้านภารกิจการบินและอวกาศและการรับประกันความปลอดภัย (เช่น NPR 7150.2 และ DO-178C) โครงการนี้ได้รับการกำหนดและนำโดยWill Chambers [ 115 ] ซึ่งเป็นนักเทคโนโลยีหุ่นยนต์หลักของ Blue Origin ในขณะนั้น ในปี 2021 Blue Origin ได้ว่าจ้าง Open Robotics ให้รับช่วงงานพัฒนาซอฟต์แวร์ และ Open Robotics ก็ยังคงอยู่ในทีมจนกระทั่งโครงการสิ้นสุดลงในปี 2022 ปัจจุบัน Space ROS เป็นโครงการชุมชนแบบเปิด[ 116 ] [ 117 ] ปัจจุบัน PickNik Roboticsและ Open Source Robotics Foundation เป็นผู้นำความพยายาม Space ROS [ 118 ]
หุ่นยนต์และฮาร์ดแวร์ที่ใช้งานร่วมกับ ROS ได้
หุ่นยนต์
- ABB , Adept, Fanuc , MotomanและUniversal Robotsได้รับการสนับสนุนโดยROS- Industrial [ 119 ]
- Baxter [ 120 ]ที่Rethink Robotics , Inc.
- CK-9: ชุดพัฒนาหุ่นยนต์จาก Centauri Robotics รองรับ ROS [ 121 ]
- GoPiGo3: หุ่นยนต์เพื่อการศึกษาที่ใช้ Raspberry Pi รองรับ ROS [ 122 ]
- HERB [ 123 ]พัฒนาที่มหาวิทยาลัยคาร์เนกีเมลลอนในโครงการหุ่นยนต์ส่วนบุคคลของ Intel
- Husky A200: หุ่นยนต์ที่พัฒนา (และบูรณาการเข้ากับ ROS) โดยClearpath Robotics [ 124 ]
- Nao [ 125 ]หุ่นยนต์ฮิวมานอยด์: ห้องปฏิบัติการหุ่นยนต์ฮิวมานอยด์ของมหาวิทยาลัยไฟรบู ร์ก [ 126 ]ได้พัฒนาการรวม ROS สำหรับหุ่นยนต์ฮิวมานอยด์ Naoโดยอิงจากพอร์ตเริ่มต้นของมหาวิทยาลัยบราวน์[ 127 ] [ 128 ]
- PR1: หุ่นยนต์ส่วนบุคคลที่พัฒนาขึ้นในห้องทดลองของ Ken Salisbury ที่ Stanford [ 129 ]
- PR2: หุ่นยนต์ส่วนบุคคลที่กำลังพัฒนาอยู่ที่ Willow Garage [ 130 ]
- แพลตฟอร์มวิจัยหุ่นยนต์ผ่าตัด Raven II [ 131 ] [ 132 ]
- ROSbot: แพลตฟอร์มหุ่นยนต์อัตโนมัติโดย Husarion [ 133 ]
- มือหุ่นยนต์เงา: [ 134 ]มือมนุษย์ที่มีความคล่องแคล่วเต็มที่
- STAIR I และ II: [ 135 ]หุ่นยนต์ที่พัฒนาขึ้นในห้องปฏิบัติการของAndrew Ng ที่ Stanford
- Stretch: หุ่นยนต์เคลื่อนที่แบบบูรณาการโดย Hello Robot ที่มุ่งเป้าไปที่การใช้งานเพื่อช่วยเหลือ[ 136 ] [ 137 ]
- SummitXL: [ 138 ]หุ่นยนต์เคลื่อนที่ที่พัฒนาโดยRobotnikบริษัทวิศวกรรมที่เชี่ยวชาญด้านหุ่นยนต์เคลื่อนที่ แขนหุ่นยนต์ และโซลูชันอุตสาหกรรมด้วยสถาปัตยกรรม ROS
- UBR1: [ 139 ] [ 140 ]พัฒนาโดย Unbounded Robotics ซึ่งเป็นบริษัทแยกตัวออกมาจาก Willow Garage
- Webots : โปรแกรมจำลองหุ่นยนต์ที่รวมอินเทอร์เฟซการเขียนโปรแกรม ROS อย่างสมบูรณ์[ 141 ]
SBC และฮาร์ดแวร์
- BeagleBoard: ห้องปฏิบัติการหุ่นยนต์ของมหาวิทยาลัยKatholieke Universiteit Leuvenประเทศเบลเยียม[ 142 ]ได้พอร์ต ROS ไปยังBeagleboard
- Raspberry Pi: อิมเมจ Ubuntu Mate พร้อม ROS [ 143 ]โดย Ubiquity Robotics; คู่มือการติดตั้งสำหรับ Raspbian; [ 144 ]คู่มือการติดตั้ง ROS2 สำหรับ Raspberry Pi [ 145 ]
- โปรเซสเซอร์ Sitara ARMรองรับแพ็คเกจ ROS ซึ่งเป็นส่วนหนึ่งของ SDK Linux อย่างเป็นทางการ[ 146 ]
ดูเพิ่มเติม
โครงการที่เกี่ยวข้อง
- มิดเดิลแวร์ RT – มาตรฐาน/การใช้งานมิดเดิลแวร์ของหุ่นยนต์ ส่วนประกอบ RT นั้นได้รับการกล่าวถึง/กำหนดโดยกลุ่มการจัดการวัตถุ (Object Management Group )