9 เครื่องมือโอเพ่นซอร์สที่ยอดเยี่ยมในการจัดการ rosbags ของคุณ
การเลือกโดยวิศวกรของ Evocargo
ไม่ว่าคุณจะเพิ่งเริ่มต้นกับ ROS หรือเป็นนักพัฒนาที่เชี่ยวชาญอยู่แล้ว คุณอาจรู้สึกว่าบางสิ่งและการดำเนินการบางอย่างสามารถทำได้ง่ายขึ้น เร็วขึ้น หรือสะดวกขึ้น คุณอาจนึกถึงการสร้างเครื่องมือบางอย่างสำหรับ ROS ในตอนนี้ เช่น เครื่องมือที่จะแสดงข้อมูลเมตาของกระเป๋าของคุณในมุมมองที่สวยงาม ก่อนที่คุณจะทำเช่นนั้น ลองดูแพ็คเกจ ROS แบบโอเพ่นซอร์สที่เราคัดสรรมา — คุณอาจพบโซลูชันสำเร็จรูปที่จะช่วยให้คุณประหยัดเวลาและความพยายามได้มาก
ในโพสต์นี้ เรามุ่งเน้นไปที่แพ็คเกจสำหรับกระเป๋า ROS ที่ช่วยให้คุณเห็นภาพและแก้ไขข้อมูลกระเป๋า ด้วยแพ็คเกจบางอย่าง เราจะดำเนินการเพิ่มเติมและสาธิตวิธีการอัปเกรดแพ็คเกจสำหรับความต้องการผลิตภัณฑ์เฉพาะของคุณ
รถยนต์ไร้คนขับสร้างข้อมูลจำนวนมหาศาลที่จำเป็นสำหรับการรับรู้ การระบุตำแหน่ง การหลีกเลี่ยงการชน การวินิจฉัยตัวเอง และงานที่จำเป็นอื่นๆ ในรถยนต์ไร้คนขับ ข้อมูลดังกล่าวเป็นทรัพย์สินที่มีค่าสูงเนื่องจากใช้สำหรับการฝึกอบรมโครงข่ายประสาทเทียมและการสอบถามเหตุการณ์ ตัวอย่างเช่นสำนักงานบริหารความปลอดภัยการจราจรบนทางหลวงแห่งชาติของสหรัฐอเมริกากำหนดให้ผู้ผลิตและผู้ปฏิบัติงานบางรายรายงานการชนที่เกี่ยวข้องกับยานพาหนะที่ติดตั้งระบบช่วยเหลือผู้ขับขี่ขั้นสูง SAE ระดับ 2 -5 (ADAS) เพื่อตรวจสอบความปลอดภัยของระบบอัตโนมัติและสรุปผลใน รายงานความผิดพลาด นี่อาจกลายเป็นวิธีปฏิบัติทั่วไปในประเทศอื่นๆ ด้วยเช่นกัน
การประมาณการของข้อมูลที่เกิดขึ้นอาจแตกต่างกันไปสำหรับยานพาหนะต่างๆ เนื่องจากอุปกรณ์บนเรือและสถานการณ์การใช้งาน ด้วยกล้องความละเอียดสูงหลายตัว ไลดาร์ เรดาร์ และเซ็นเซอร์อื่นๆ บนรถ รถยนต์ไร้คนขับหนึ่งคันสามารถสร้างข้อมูลได้มากถึง 15TB สำหรับการเดินทางไม่กี่ชั่วโมง ซึ่งหมายความว่าหุ่นยนต์แท็กซี่ที่ทำให้การเดินทางของผู้โดยสารไม่หยุดสามารถทำได้ 450 TB ต่อวัน (ดูข้อมูลเพิ่มเติมที่นี่และที่นี่ )
หากคุณใช้ ROS ข้อมูลทั้งหมดจะถูกเขียนลงในไฟล์กระเป๋าที่บันทึกและจัดเก็บ เพื่อให้คุณสามารถจัดทำดัชนี ใส่คำอธิบายประกอบ และเล่นได้ในภายหลัง
คุณจึงลงเอยด้วยรายการไฟล์ที่น่าประทับใจซึ่งคุณต้องสำรวจและวิเคราะห์ เพื่อให้ผ่านมันไปได้ คุณสามารถใช้แพ็คเกจ ROS ฟรีที่เราได้เลือกเพื่ออธิบายในบทความนี้ บางส่วนรวมอยู่ในดัชนี ROSบางส่วนไม่ รวมอยู่ใน และบางส่วนออกแบบมาสำหรับ ROS 1 เท่านั้น เราจะจดบันทึกไว้
การดูกระเป๋าใน UI ที่ดี
ดังที่คุณเห็นในรูปที่ 1โดยทั่วไปกระเป๋าจะเป็นไฟล์ในไดเร็กทอรี คุณต้องใช้อินเทอร์เฟซบรรทัดคำสั่งเพื่อทำงานกับสิ่งเหล่านี้ และไม่มีอะไรที่คุณทำได้มากนัก โดยค่าเริ่มต้น ROS อนุญาตให้คุณเล่นไฟล์กระเป๋า ดูข้อมูลเกี่ยวกับกระเป๋า ขนาดและระยะเวลา ดูหัวข้อ ประเภท ของข้อความและปริมาณ ยิ่งคุณสะสมข้อมูลมากเท่าไหร่ การค้นหาสิ่งที่คุณต้องการก็ยิ่งยากขึ้นเท่านั้น
เครื่องมือฐานข้อมูลกระเป๋าโดยSouthwest Research Instituteนำเสนอเว็บอินเตอร์เฟสที่เป็นมิตรในการตรวจสอบไดเร็กทอรีของคุณสำหรับไฟล์กระเป๋า ROS ช่วยให้คุณดูข้อมูลเมตาที่เป็นประโยชน์มากมาย เช่น วันที่บันทึก เส้นทาง รูปภาพที่เกี่ยวข้อง และอื่นๆ
การโต้ตอบของคุณกับกระเป๋าจะง่ายขึ้นและมีประสิทธิภาพมาก!
ยิ่งไปกว่านั้นฐานข้อมูลกระเป๋า ยัง ให้คุณเพิ่มสคริปต์หลังการประมวลผลต่างๆ ที่สามารถเรียกใช้ในคอนเทนเนอร์ Docker ที่แยกได้ ตัวอย่างเช่น ที่ Evocargo เราได้เขียนbag_indexer
สคริปต์ที่แสดงข้อมูลสรุปที่ครอบคลุมเนื้อหาในกระเป๋าในภาพ PNG ภาพเดียว
เพียงมองแวบเดียว คุณจะได้แนวคิดต่อไปนี้:
- คุณภาพของเลน แสง และสภาพอากาศผ่านภาพขนาดย่อ
- เส้นทางอ้างอิงและการเบี่ยงเบนจากเส้นทางดังกล่าวโดยอิงตามการวัดระยะทาง, GNSS และการแปลเป็นภาษาท้องถิ่น
- ความเร็ว ณ เวลาหรือตำแหน่งใดก็ตาม
- โหมดการควบคุมยานพาหนะ หรือระยะเวลาที่ต้องควบคุมยานพาหนะด้วยตนเอง
- ระยะทางและระยะเวลาในการขี่
- ชื่อกระเป๋า และอื่นๆ
พารามิเตอร์ของสแน็ปช็อต เช่น ตำแหน่งและสีของบล็อกข้อมูล และจำนวนภาพขนาดย่อจากภาพจากกล้อง ถูกกำหนดไว้ในไฟล์การกำหนดค่า
ในBag Databaseสคริปต์bag_indexer
จะมีลักษณะดังนี้:
สำหรับรายละเอียดเพิ่มเติมและตัวอย่างสคริปต์ โปรดดูเอกสารฐานข้อมูลกระเป๋า
การเพิ่มข้อมูลเมตา
ข้อมูลเมตาของกระเป๋าประกอบด้วยรายละเอียดเกี่ยวกับเงื่อนไขการบันทึกกระเป๋า เช่น ตำแหน่งการบันทึก ระบบปฏิบัติการและเวอร์ชันของซอฟต์แวร์ อุปกรณ์ที่เชื่อมต่อ สภาพอากาศ งาน โดยปกติแล้ว คุณจัดเก็บข้อมูลดังกล่าวไว้ในไฟล์แยกต่างหาก อย่างไรก็ตาม ตัวสร้างภาพของกระเป๋าบางตัว เช่นฐานข้อมูลกระเป๋าจำเป็นต้องมีข้อมูลเมตาเพื่อรวมเข้ากับไฟล์กระเป๋า
หากต้องการเขียนข้อมูลเมตาลงในไฟล์กระเป๋า ROS1 โดยตรง คุณสามารถใช้แพ็คเกจrosbag_metadata ทันทีที่แกะกล่องจะบันทึกความคิดเห็นของคุณพร้อมกับข้อมูลระบบ เช่น เวอร์ชันแพ็คเกจ ROS, ข้อมูลเกี่ยวกับที่เก็บ git และแฮช git-commit, ตัวแปรสภาพแวดล้อม, การกำหนดค่าเครือข่าย ข้อมูลทั้งหมดเหล่านี้ถูกเพิ่มเป็นข้อความในไฟล์ YAML ไปยังหัวข้อ /metadata
คุณสามารถใช้rosbag_metadataตามที่เป็นอยู่หรือตอบสนองความต้องการผลิตภัณฑ์พิเศษของคุณ ตัวอย่างเช่น สำหรับบริการโลจิสติกส์ของ Evocargo เราต้องการข้อมูลที่เฉพาะเจาะจงมากขึ้น เช่น รุ่นและหมายเลขรถยนต์ ข้อมูลการสอบเทียบแบบดิบ และแผนที่ ดังนั้นเราจึงสร้างแพ็คเกจของเราเองตามrosbag_metadataซึ่งปรับให้เข้ากับการจัดการยานยนต์อัตโนมัติมากขึ้น และเราสามารถเพิ่มฟิลด์ได้อย่างง่ายดายเมื่อต้องการ
การเล่นและการสร้างภาพ
หนึ่งในตัวเลือกสำหรับ ROS 1 คือWebvizซึ่งเป็นเครื่องมือเว็บสำหรับเล่นกระเป๋าและการแสดงภาพที่พัฒนาและเปิดแหล่งที่มาโดยวิศวกร ของ Cruise ช่วยให้คุณสามารถลากและวางไฟล์ ROS bag เพื่อดูข้อมูลเชิงลึกได้ทันที ง่ายนิดเดียว! นอกจากนี้ ยังเป็นเว็บแอป คุณจึงไม่ต้องปรับใช้สภาพแวดล้อมพิเศษใดๆ
อินเทอร์เฟซสามารถปรับแต่งได้ ทำให้คุณเพิ่มแผงและดูข้อมูลที่เกี่ยวข้องได้มากขึ้นในที่เดียว นอกจากนี้ คุณสามารถรวมเข้ากับเครื่องมืออื่นๆ ได้ เช่น คุณสามารถเปิดWebviz ได้จากหน้าต่างฐานข้อมูลกระเป๋า (อธิบายการตั้งค่านี้ที่นี่ )
อีกเครื่องมือหนึ่งที่ฉันอยากจะพูดถึงคือFoxglove Studio มีจุดประสงค์เดียวกันในการสร้างภาพและการวิเคราะห์ในวิทยาการหุ่นยนต์ แต่จะไปไกลกว่านั้นโดยรองรับทั้ง ROS 1 และ ROS 2 และให้การสนับสนุนเชิงพาณิชย์ มันเริ่มเป็นส่วนแยกของโครงการ Webvizของ Cruise และตอนนี้กำลังได้รับการพัฒนาและขยายชุดคุณสมบัติอย่างแข็งขัน มีให้บริการทั้งแบบเว็บแอปข้ามแพลตฟอร์มและแบบแอปเดสก์ท็อปที่ปลดล็อกคุณสมบัติเพิ่มเติมและส่วนขยายพาเนลแบบกำหนดเองบนอุปกรณ์ Linux, macOS และ Windows
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ การพัฒนาและอัปเดตของ Foxglove Studioได้ในบล็อกบนMediumหรือเยี่ยมชมเว็บไซต์ ของพวก เขา
ตัดต่อกระเป๋า
หากคุณต้องการแก้ไขไฟล์กระเป๋าใน ROS 1 โปรดดูrosbag_editorโดยDavide Faconti เครื่องมือนี้ไม่อนุญาตให้คุณใช้การเปลี่ยนแปลงเป็นชุดกับไฟล์กระเป๋า แต่อาจมีประโยชน์สำหรับการแก้ไขบางกระเป๋า เช่น สำหรับการสาธิต UI ที่เรียบง่ายช่วยให้คุณเปลี่ยนชื่อและนำหัวข้อออก เปลี่ยนระยะเวลาของกระเป๋าโดยตัดจุดเริ่มต้นหรือจุดสิ้นสุดของไฟล์ เปลี่ยนประเภทการบีบอัดเพื่อทำให้ขนาดไฟล์เล็กลง และลบการแปลง
ที่ Evocargo เราต้องการเครื่องมือที่ช่วยให้สามารถแก้ไขชุดของกระเป๋าที่บันทึกไว้ใน ROS1 ได้ ดังนั้นVladimir Burmistrov วิศวกรของเราจึง ได้สร้างแพ็คเกจros_bag_migration ช่วยให้คุณเปลี่ยนรูปแบบของข้อความในกระเป๋าที่บันทึกได้ ไม่เพียงแต่เปลี่ยนชื่อและลบข้อความเท่านั้น แต่ยังแยกข้อความออกเป็นสองส่วนและใช้กฎที่กำหนดไว้กับข้อความบางเวอร์ชัน แพ็คเกจนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับสถานการณ์เมื่อคุณตัดสินใจบันทึกกระเป๋าใบใหม่ด้วยชุดข้อความที่ได้รับการปรับปรุงใหม่ และคุณต้องการเปลี่ยนกระเป๋าใบเก่าตามความเข้ากันได้
การสร้างกราฟ
ต่อไป เราจะพูดถึงPlotJugglerซึ่งเป็นเครื่องมือสร้างกราฟที่น่าทึ่ง (อีกแพ็คเกจหนึ่งโดยDavide Faconti ) PlotJugglerช่วยให้คุณสามารถวิเคราะห์ข้อมูลที่ไหลภายในระบบหรือหุ่นยนต์ของคุณ การดีบักจะง่ายขึ้นมากด้วยคุณสมบัติของมัน:
- คุณสามารถสร้างกราฟสำหรับข้อมูลในหัวข้อ ROS ได้แบบเรียลไทม์หรือผ่านการโหลดไฟล์ .bag หนึ่งไฟล์หรือหลายไฟล์ลงในPlotJuggler
- การเพิ่มและจัดการแปลงข้อมูลหลายรายการนั้นใช้งานง่ายมาก ตัวอย่างเช่น คุณสามารถสร้างแท็บ XY ได้โดยการดึงข้อมูล 2D บางส่วนและวางแผนเพื่อให้เห็นภาพตำแหน่ง 2D สำหรับทุกการประทับเวลา
- มีโอกาสมากมายในการแปลงข้อมูลในตัวสำหรับพล็อต เช่น คุณสามารถลบออฟเซ็ตของข้อมูล ปรับขนาด ผสานรวม ลบค่าผิดปกติ และอื่นๆ คุณยังสามารถสร้างชุดของการแปลง ซึ่งมีประโยชน์มากสำหรับการเปรียบเทียบข้อมูลจากแหล่งต่างๆ
- หากคุณไม่พบฟังก์ชันการแปลงที่เหมาะสม คุณสามารถสร้างฟังก์ชันของคุณเองได้ ตัวอย่างเช่น คุณสามารถเขียนฟังก์ชันเพื่อแยกและแสดงภาพมุมหันเหจากควอเทอร์เนียน
- สุดท้าย แต่ไม่ท้ายสุด! ฟีเจอร์เด็ด: เมื่อคุณจัดการกับกระเป๋า คุณสามารถเปิดใช้งาน “ROS Topic Re-Publisher” นั่นหมายความว่าคุณสามารถลากตัวเลื่อนเวลาไปยังช่วงเวลาใดก็ได้ที่คุณต้องการ และPlotJugglerจะเผยแพร่ข้อมูลจากทุกหัวข้อที่สอดคล้องกับการประทับเวลาที่เลือก สิ่งนี้มีประโยชน์มากเมื่อคุณต้องการดูภาพจากกล้องในช่วงเวลาใดเวลาหนึ่ง ตรวจสอบข้อความการวินิจฉัย หรือแม้แต่แสดงภาพข้อมูลทุกชิ้นในเครื่องมือสร้างภาพอื่นๆ เช่น RVIZ
การส่งข้อความ
สำหรับจุดประสงค์ในการทดสอบและแก้ไขจุดบกพร่อง สิ่งสำคัญคือต้องสร้างผลลัพธ์ของการทดสอบที่เสถียร ตัวอย่างเช่น เมื่อคุณทดสอบอัลกอริทึมการแปลเป็นภาษาท้องถิ่นบนกระเป๋าที่มีข้อมูลเซนเซอร์บางอย่าง คุณคาดหวังผลลัพธ์เดียวกันทุกครั้งที่เรียกใช้อัลกอริทึมนี้ อย่างไรก็ตาม ตรรกะการเผยแพร่-สมัครสมาชิกใน ROS ไม่สามารถรับประกันการส่งข้อความได้ 100% และเป็นไปได้ว่าโหนดของคุณจะไม่ประมวลผลข้อความทั้งหมดในกระเป๋าในลำดับเดียวกัน
แพ็คเกจ batch_rosสำหรับROS 1 ให้คุณระบุหัวข้อในไฟล์กระเป๋าที่มีความสำคัญต่องานของคุณ batch_ros จะรอการเรียกใช้บริการให้ตรงกันหลังจากเผยแพร่แต่ละข้อความจากหัวข้อเหล่านี้ ทำให้มั่นใจได้ว่าข้อความจากไฟล์กระเป๋าจะถูกเผยแพร่หลังจากที่โหนดของคุณประมวลผลทีละข้อความตามลำดับที่กำหนดไว้
ดังนั้นbatch_ros จึง รับประกันการประมวลผลถุงตามที่กำหนดและทำซ้ำได้
สถานะการบันทึก
ขณะที่กำลังบันทึกกระเป๋า การกำหนดค่าเริ่มต้นของ ROS 1 จะแสดงข้อความ “กำลังบันทึก…” เท่านั้น หากมีข้อผิดพลาด คุณจะทราบได้เฉพาะเมื่องานเสร็จสิ้นและล้มเหลวเท่านั้น เพื่อให้กระบวนการบันทึกมีข้อมูลมากขึ้น ให้ลองใช้ อินเทอร์เฟซเทอร์มินัล rosbag_fancyสำหรับ ROS 1 ซึ่งจะแสดงข้อมูลที่เป็นประโยชน์แบบเรียลไทม์ เช่น หัวข้อที่กำลังบันทึก การใช้หน่วยความจำ ขนาดไฟล์กระเป๋า และอื่นๆ ทั้งหมดนี้รวมอยู่ในตารางที่เรียบง่าย
คุณยังสามารถดูจำนวนข้อความที่ตกหล่น ( Drops ) ซึ่งนำเราไปสู่ปัญหาถัดไปและวิธีแก้ปัญหาที่เป็นไปได้
ขอบคุณที่อ่านมาถึงตรงนี้ — คุณต้องชอบที่จะปรับปรุงประสบการณ์ของคุณกับ ROS มากเท่ากับที่เราทำ! มาสรุปกันเถอะ ในโพสต์นี้ เราได้ดูแพ็คเกจ ROS ต่อไปนี้: Bag Database , rosbag_metadata , Webviz , Foxglove Studio , rosbag_editor , ros_bag_migration , PlotJuggler , rosbag_fancyและbatch_ros
หากคุณพบว่าแพ็คเกจที่เลือกนี้มีประโยชน์ โปรดแจ้งให้เราทราบโดยการปรบมือและแสดงความคิดเห็น เรายินดีที่จะแบ่งปันภาพรวมดังกล่าวเพิ่มเติมในบล็อกของเรา ตัวอย่างเช่น มีแพ็คเกจ ROS ที่น่าสนใจสำหรับการทดสอบ การจำลอง การจัดทำเอกสาร และวัตถุประสงค์อื่นๆ