เราต้องสร้าง ROS สำหรับการวิจัย / การสมัครของหุ่นยนต์หรือไม่? ข้อได้เปรียบหลักคืออะไร? เมื่อใดหรือในสถานการณ์ที่จำเป็นต้องใช้ ROS
เราต้องสร้าง ROS สำหรับการวิจัย / การสมัครของหุ่นยนต์หรือไม่? ข้อได้เปรียบหลักคืออะไร? เมื่อใดหรือในสถานการณ์ที่จำเป็นต้องใช้ ROS
คำตอบ:
ฉันกลับไปที่คอมพิวเตอร์!
อย่างที่ฉันพูดในความคิดเห็นนี้โดยทั่วไป ROS ไม่ได้บังคับ ROS เป็นหนึ่งในหลาย ๆ แพลตฟอร์มที่โด่งดังจาก Willow Garage ที่แจกหุ่นยนต์ฟรีให้กับใครก็ตามที่เขียนโมดูล ROS มากที่สุด ที่กล่าวว่ามันไม่ใช่แพลตฟอร์มที่ดีที่สุดเท่าที่จะเป็นไปได้และแน่นอนว่าไม่มีอะไรพิเศษสุด ๆ โดยเฉพาะอย่างยิ่งการประกวดดังกล่าวส่งผลให้โมดูลที่มีคุณภาพต่ำจำนวนมากเพียงเพื่อให้ได้ตัวเลขที่สูงขึ้น
เมื่อเวลาผ่านไปคุณภาพของโมดูล ROS ก็ดีขึ้นและมีจำนวนมากเช่นกัน ดังนั้นเมื่อใช้ ROS คุณจะได้รับประโยชน์จากการนำสิ่งที่ได้ทำไปแล้วไปใช้ซ้ำ คุณสามารถอ่านได้ที่นี่ด้วยเหตุผลบางประการว่าทำไมคุณอาจต้องการใช้ ROS
โดยที่ในใจคุณควรระวังผลข้างเคียงเช่นกัน
ด้วย ROS คุณมีหลายโหนดที่พูดคุยกันผ่านเครือข่าย บางครั้งสิ่งนี้ดีและใช้งานง่าย แต่โดยทั่วไปแล้วจะส่งผลให้การรับข้อความล่าช้าแตกต่างกันมาก ดังนั้นคุณจะต้องมีการควบคุมล่าช้ามากเพื่อให้แน่ใจว่าข้อความทั้งหมดมาถึงซึ่งหมายความว่าคุณไม่สามารถตอบสนองอย่างรวดเร็วต่อเหตุการณ์ซึ่งหมายความว่าคุณต้องย้ายหุ่นยนต์ของคุณด้วยความเร็วที่ช้าลงเพื่อไม่ให้พลาดเหตุการณ์เหล่านั้น
เชื่อหรือไม่ว่าจริง ๆ แล้วผู้คนทำการควบคุมหุ่นยนต์ผ่าน ROS ( MoveIt!เป็นชื่อของชุดส่วนประกอบที่เกี่ยวข้อง) ช้า. ไม่ปลอดภัย แต่ง่าย!
แม้ว่าจะไม่กระจาย ROS ไม่ใช่แพลตฟอร์มเรียลไทม์ นั่นหมายความว่าคุณอยู่ในดุลยพินิจของเคอร์เนล Linux เพื่อกำหนดตารางงานของคุณได้ทุกเวลาที่เห็นสมควร สิ่งนี้ใช้ได้สำหรับบางแอปพลิเคชัน แต่ไม่เหมาะสำหรับแอปพลิเคชันอื่น ๆ ดังนั้นคุณต้องดูความต้องการของคุณเอง คุณจำเป็นต้องมีการรับประกันว่างานของคุณจะเสร็จสิ้นภายในกรอบเวลาที่รู้จักหรือไม่? ถ้าเป็นเช่นนั้นคุณต้องมีระบบเรียลไทม์
ประเด็นที่ควรพิจารณาอีกประการหนึ่งคือในขณะที่ ROS เป็นโปรโตคอลการสื่อสารทั่วไปมันได้รับการสนับสนุนสำหรับสภาพแวดล้อมที่โฮสต์เท่านั้น Hostedหมายถึงโค้ดทำงานบนเคอร์เนลซึ่งตรงกันข้ามกับอิสระซึ่งหมายความว่าโค้ดจะควบคุมฮาร์ดแวร์โดยตรง (เช่นบนไมโครคอนโทรลเลอร์)
หากแอปพลิเคชันหุ่นยนต์ของคุณทำงานใกล้กับฮาร์ดแวร์และดังนั้นคุณจะต้องมีโปรแกรมที่ทำงานบนไมโครคอนโทรลเลอร์ ROS นั้นไม่มีประโยชน์สำหรับคุณ
สุดท้าย แต่ไม่ท้ายสุดการพัฒนา ROS ให้ผลลัพธ์เป็นการล็อคแพลตฟอร์ม ซึ่งหมายความว่าหากในอนาคตด้วยเหตุผลใดก็ตามคุณตัดสินใจที่จะยึดฐานการทำงานของคุณบนแพลตฟอร์มหุ่นยนต์อื่นเช่น OROCOS, YARP และอื่น ๆ ที่น่าตื่นเต้น
คุณจะถูกล๊อคกับลีนุกซ์บ้าง. Linux ดีที่สุดไม่ต้องสงสัยเลย แต่วันหนึ่งคุณอาจต้องสนับสนุนระบบอื่นเช่น QNX, VxWorks เป็นต้นและคุณก็มีปัญหาเช่นกัน
หากคุณกำลังเขียนสำหรับไมโครคอนโทรลเลอร์แล้วลืมเกี่ยวกับ ROS หากคุณกำลังเขียนโมดูลระดับสูงฉันขอแนะนำให้เขียนรหัสพกพา ตัวอย่างเช่นสมมติว่าคุณได้พัฒนาเซ็นเซอร์ใหม่และคุณต้องการเขียนโมดูลที่รับข้อมูลจากเซ็นเซอร์นี้ซึ่งเชื่อมต่อกับคอมพิวเตอร์ของคุณผ่านทาง CAN บัส
สิ่งที่คุณสามารถทำได้ในสถานการณ์นี้คือการเขียนไลบรารีอิสระด้วยฟังก์ชั่นที่สามารถทำงานกับเซ็นเซอร์ของคุณและรับข้อมูล คุณอาจคิดถึงการวางไข่เธรดในไลบรารีที่รับและจัดคิวข้อมูลเป็นระยะ
เมื่อคุณมีไลบรารีผู้ช่วยนี้คุณสามารถเขียน CLI, GUI, โมดูล ROS, โมดูล OROCOS, โมดูล YARP, เชื่อมต่อกับ Matlab หรือสิ่งอื่นที่คุณต้องการใช้เพื่อโต้ตอบกับเซ็นเซอร์ของคุณ
หมายเหตุสุดท้าย: สิ่งที่ฉันพูดที่นี่โดยทั่วไปแล้วใช้ได้กับแพลตฟอร์มหุ่นยนต์ทั้งหมดไม่ใช่แค่ ROS
"ROS" เป็นคำที่เกี่ยวข้อง APM รันโค้ดแบบกำหนดเองเต็มรูปแบบที่ออกแบบมาโดยเฉพาะสำหรับการควบคุม Quadrocopter โดยที่ ROS แบบกำหนดเองอาจเป็นที่ต้องการเพื่อป้องกันการล่มในขณะที่ Navio + ทำงานบนเคอร์เนล Linux และเรียกใช้รหัสอื่นที่ไม่ใช่อัตโนมัติ และยังป้องกันไม่ให้ระบบล่ม ROSs ส่วนใหญ่เป็นชุดของฟังก์ชั่นด้านบนของระบบปฏิบัติการที่มีอยู่ซึ่งแตกต่างจากการเขียนระบบปฏิบัติการตั้งแต่แรกเริ่ม เช่นเดียวกับสิ่งใดมันขึ้นอยู่กับ
คำเตือน: คำตอบนี้เป็นปฏิกิริยาตอบสนองต่อการโพสต์ของ Shahbaz ดังนั้นจึงมีอคติ Pro-ROS
ฉันไม่คิดว่า ROS เป็นข้อบังคับ แต่มันเป็นจุดเริ่มต้นที่ดีและคุ้มค่ากับเวลาในการลงทุน มันเริ่มต้นใน Willow Garage แต่ บริษัท นี้หายไปและ ROS ยังมีชีวิตอยู่ใช้และพัฒนาอยู่ ROS ส่วนใหญ่เป็นโอเพ่นซอร์สอย่างสมบูรณ์และใช้ได้ในเชิงพาณิชย์ดังนั้นจึงไม่มีทางที่ ROS จะหายตัวไปหาก บริษัท ไม่สนใจอีกต่อไป แน่นอนว่าคุณภาพของรหัสแตกต่างกันระหว่างโมดูลหลักและการใช้งานของอัลกอริทึมที่ทันสมัยซึ่งนักศึกษาปริญญาเอกบางคนตีพิมพ์ด้วยกระดาษของเขา
ROS กำลังเร่งความเร็วมากขึ้นในการตั้งค่าอุตสาหกรรม (ฉันจะแปลกใจถ้ามีส่วนสำคัญของการเริ่มต้นของหุ่นยนต์ทั่วโลกที่ไม่ได้ใช้ ROS) อัลกอริทึมบางอย่างจะได้รับการบำรุงรักษาและพัฒนาต่อไปโดยกลุ่มอุตสาหกรรม ros และหากคุณได้ดูสมาชิกมันเป็นสิ่งที่ดีที่ ROS จะกลายเป็นมาตรฐานในอุตสาหกรรม:
http://rosindustrial.org/ric/current-members/
วิธีการกระจายการใช้ ROS ช่วยสร้างและบำรุงรักษาแพ็คเกจใหม่ ๆ มากมายโดยเฉพาะภายในทีม คำจำกัดความของข้อความและการกระทำช่วยในการกำหนดอินเทอร์เฟซเพื่อให้สามารถแลกเปลี่ยนฮาร์ดแวร์และอัลกอริทึมได้อย่างรวดเร็ว นอกจากนี้ยังช่วยในการรวมสมาชิกในทีมใหม่เนื่องจากโหนดใหม่จะทำให้โหนดอื่น ๆ ล่มหากเกิดข้อผิดพลาด (ตราบเท่าที่ไม่กิน RAM ทั้งหมด .. ) ดังนั้นจึงค่อนข้างปลอดภัยที่จะรวมโหนดทำงานบางส่วนเข้ากับระบบที่ทำงานอยู่ ผลมี จำกัด การสื่อสารใช้ TCP ซึ่งเชื่อถือได้และรวดเร็ว (บนเครื่องท้องถิ่น) ดังนั้นการส่งข้อความจึงรวดเร็วมาก (เป็นไปได้หลายร้อย Hz สำหรับการควบคุมลูป)
Non-Real-Time
ปัจจุบัน ROS ไม่ใช่เรียลไทม์เนื่องจากอัลกอริธึมส่วนใหญ่ไม่จำเป็นต้องใช้เรียลไทม์ การตรวจจับหรือการวางแผนไม่มีข้อ จำกัด แบบเรียลไทม์ในกรณีส่วนใหญ่ (มีคนจำนวนเท่าใดที่กำลังสร้างรถยนต์ขับด้วยตนเองด้วยความเร็วสูง) ก็เพียงพอแล้วหากการควบคุมลูปสุดท้ายทำงานแบบเรียลไทม์และในหลายกรณีสามารถทำได้โดยตรงบนมอเตอร์ (ซึ่งตำแหน่งสุดท้ายถูกส่งเช่นผ่าน CAN) อย่างไรก็ตามแบบเรียลไทม์เป็นหนึ่งในเป้าหมายหลักของ ROS2 ( https://github.com/ros2/ros2/wiki/Real-Time-Programming ) ดังนั้นแม้ว่าคุณจะต้องการสิ่งนี้ในอนาคตสำหรับทั้งระบบ ROS ได้ให้ความคุ้มครองแก่คุณแล้ว .
หากคุณต้องการรันสิ่งที่ฝังอยู่จริงๆมีการเชื่อมต่อกับ arduino เพื่อให้คุณสามารถเขียนข้อความ ROS โดยตรงบน arduino ซึ่งจะถูกส่งผ่านการเชื่อมต่อแบบอนุกรม
ขณะนี้การรัน ROS บน Windows ค่อนข้างเจ็บปวด แต่เนื่องจาก Windows กำลังเข้าใกล้ลีนุกซ์มากขึ้น (แม้จะเริ่มมีบางอย่างที่ทุบตี) มันเป็นเรื่องของเวลาจนกว่าจะเป็นไปได้ (แต่ใครต้องการใช้หุ่นยนต์ที่มีหน้าต่างอยู่ล่ะ)
การเชื่อมต่อฮาร์ดแวร์และอัลกอริทึม:
ฉันคิดว่านี่เป็นจุดแข็งสำหรับ ROS หุ่นยนต์ที่มีวางจำหน่ายจำนวนมากมาพร้อมกับอินเทอร์เฟซ ROS แล้วหรือมีคนลงทุนไปใช้อินเตอร์เฟซ อาวุธเชิงพาณิชย์ส่วนใหญ่สามารถใช้ใน MoveIt ได้ดังนั้นงานจำนวนมากเพื่อให้แอปพลิเคชันทำงานด้วยแขนที่เฉพาะเจาะจงสามารถนำกลับมาใช้กับฮาร์ดแวร์อื่นได้
ชุมชน:
อีกจุดที่แข็งแกร่งสำหรับ ROS อัลกอริทึมใหม่จะได้รับอินเทอร์เฟซ ROS อย่างรวดเร็วและผู้คนจำนวนมากมีปัญหาเช่นเดียวกับคุณดังนั้นคุณจะพบคนที่จะช่วยคุณ
http://download.ros.org/downloads/metrics/metrics-report-2016-07.pdf