9 เครื่องมือโอเพ่นซอร์สที่ยอดเยี่ยมในการจัดการ rosbags ของคุณ

Nov 24 2022
การเลือกโดยวิศวกรของ Evocargo ไม่ว่าคุณจะเพิ่งเริ่มต้นกับ ROS หรือเป็นนักพัฒนาที่เชี่ยวชาญอยู่แล้ว คุณอาจรู้สึกว่าบางสิ่งและการดำเนินการสามารถทำได้ง่ายขึ้น เร็วขึ้น หรือสะดวกขึ้น คุณอาจนึกถึงการสร้างเครื่องมือบางอย่างสำหรับ ROS ในตอนนี้ เช่น เครื่องมือที่จะแสดงข้อมูลเมตาของกระเป๋าของคุณในมุมมองที่สวยงาม

การเลือกโดยวิศวกรของ Evocargo

ไม่ว่าคุณจะเพิ่งเริ่มต้นกับ ROS หรือเป็นนักพัฒนาที่เชี่ยวชาญอยู่แล้ว คุณอาจรู้สึกว่าบางสิ่งและการดำเนินการบางอย่างสามารถทำได้ง่ายขึ้น เร็วขึ้น หรือสะดวกขึ้น คุณอาจนึกถึงการสร้างเครื่องมือบางอย่างสำหรับ ROS ในตอนนี้ เช่น เครื่องมือที่จะแสดงข้อมูลเมตาของกระเป๋าของคุณในมุมมองที่สวยงาม ก่อนที่คุณจะทำเช่นนั้น ลองดูแพ็คเกจ ROS แบบโอเพ่นซอร์สที่เราคัดสรรมา — คุณอาจพบโซลูชันสำเร็จรูปที่จะช่วยให้คุณประหยัดเวลาและความพยายามได้มาก

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

รถยนต์ไร้คนขับสร้างข้อมูลจำนวนมหาศาลที่จำเป็นสำหรับการรับรู้ การระบุตำแหน่ง การหลีกเลี่ยงการชน การวินิจฉัยตัวเอง และงานที่จำเป็นอื่นๆ ในรถยนต์ไร้คนขับ ข้อมูลดังกล่าวเป็นทรัพย์สินที่มีค่าสูงเนื่องจากใช้สำหรับการฝึกอบรมโครงข่ายประสาทเทียมและการสอบถามเหตุการณ์ ตัวอย่างเช่นสำนักงานบริหารความปลอดภัยการจราจรบนทางหลวงแห่งชาติของสหรัฐอเมริกากำหนดให้ผู้ผลิตและผู้ปฏิบัติงานบางรายรายงานการชนที่เกี่ยวข้องกับยานพาหนะที่ติดตั้งระบบช่วยเหลือผู้ขับขี่ขั้นสูง SAE ระดับ 2 -5 (ADAS) เพื่อตรวจสอบความปลอดภัยของระบบอัตโนมัติและสรุปผลใน รายงานความผิดพลาด นี่อาจกลายเป็นวิธีปฏิบัติทั่วไปในประเทศอื่นๆ ด้วยเช่นกัน

การประมาณการของข้อมูลที่เกิดขึ้นอาจแตกต่างกันไปสำหรับยานพาหนะต่างๆ เนื่องจากอุปกรณ์บนเรือและสถานการณ์การใช้งาน ด้วยกล้องความละเอียดสูงหลายตัว ไลดาร์ เรดาร์ และเซ็นเซอร์อื่นๆ บนรถ รถยนต์ไร้คนขับหนึ่งคันสามารถสร้างข้อมูลได้มากถึง 15TB สำหรับการเดินทางไม่กี่ชั่วโมง ซึ่งหมายความว่าหุ่นยนต์แท็กซี่ที่ทำให้การเดินทางของผู้โดยสารไม่หยุดสามารถทำได้ 450 TB ต่อวัน (ดูข้อมูลเพิ่มเติมที่นี่และที่นี่ )

หากคุณใช้ ROS ข้อมูลทั้งหมดจะถูกเขียนลงในไฟล์กระเป๋าที่บันทึกและจัดเก็บ เพื่อให้คุณสามารถจัดทำดัชนี ใส่คำอธิบายประกอบ และเล่นได้ในภายหลัง

รูปที่ 1 รายการไฟล์ ROS bag

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

การดูกระเป๋าใน UI ที่ดี

ดังที่คุณเห็นในรูปที่ 1โดยทั่วไปกระเป๋าจะเป็นไฟล์ในไดเร็กทอรี คุณต้องใช้อินเทอร์เฟซบรรทัดคำสั่งเพื่อทำงานกับสิ่งเหล่านี้ และไม่มีอะไรที่คุณทำได้มากนัก โดยค่าเริ่มต้น ROS อนุญาตให้คุณเล่นไฟล์กระเป๋า ดูข้อมูลเกี่ยวกับกระเป๋า ขนาดและระยะเวลา ดูหัวข้อ ประเภท ของข้อความและปริมาณ ยิ่งคุณสะสมข้อมูลมากเท่าไหร่ การค้นหาสิ่งที่คุณต้องการก็ยิ่งยากขึ้นเท่านั้น

เครื่องมือฐานข้อมูลกระเป๋าโดยSouthwest Research Instituteนำเสนอเว็บอินเตอร์เฟสที่เป็นมิตรในการตรวจสอบไดเร็กทอรีของคุณสำหรับไฟล์กระเป๋า ROS ช่วยให้คุณดูข้อมูลเมตาที่เป็นประโยชน์มากมาย เช่น วันที่บันทึก เส้นทาง รูปภาพที่เกี่ยวข้อง และอื่นๆ

การโต้ตอบของคุณกับกระเป๋าจะง่ายขึ้นและมีประสิทธิภาพมาก!

รูปที่ 2 การดูกระเป๋าในฐานข้อมูลกระเป๋า

ยิ่งไปกว่านั้นฐานข้อมูลกระเป๋า ยัง ให้คุณเพิ่มสคริปต์หลังการประมวลผลต่างๆ ที่สามารถเรียกใช้ในคอนเทนเนอร์ Docker ที่แยกได้ ตัวอย่างเช่น ที่ Evocargo เราได้เขียนbag_indexerสคริปต์ที่แสดงข้อมูลสรุปที่ครอบคลุมเนื้อหาในกระเป๋าในภาพ PNG ภาพเดียว

รูปที่ 3 ข้อมูลสรุปกระเป๋าที่สร้างด้วยสคริปต์ในฐานข้อมูลกระเป๋า

เพียงมองแวบเดียว คุณจะได้แนวคิดต่อไปนี้:

  • คุณภาพของเลน แสง และสภาพอากาศผ่านภาพขนาดย่อ
  • เส้นทางอ้างอิงและการเบี่ยงเบนจากเส้นทางดังกล่าวโดยอิงตามการวัดระยะทาง, GNSS และการแปลเป็นภาษาท้องถิ่น
  • ความเร็ว ณ เวลาหรือตำแหน่งใดก็ตาม
  • โหมดการควบคุมยานพาหนะ หรือระยะเวลาที่ต้องควบคุมยานพาหนะด้วยตนเอง
  • ระยะทางและระยะเวลาในการขี่
  • ชื่อกระเป๋า และอื่นๆ

พารามิเตอร์ของสแน็ปช็อต เช่น ตำแหน่งและสีของบล็อกข้อมูล และจำนวนภาพขนาดย่อจากภาพจากกล้อง ถูกกำหนดไว้ในไฟล์การกำหนดค่า

ในBag Databaseสคริปต์bag_indexerจะมีลักษณะดังนี้:

รูปที่ 4 หน้าต่างสำหรับเพิ่มสคริปต์หลังการประมวลผล

สำหรับรายละเอียดเพิ่มเติมและตัวอย่างสคริปต์ โปรดดูเอกสารฐานข้อมูลกระเป๋า

การเพิ่มข้อมูลเมตา

ข้อมูลเมตาของกระเป๋าประกอบด้วยรายละเอียดเกี่ยวกับเงื่อนไขการบันทึกกระเป๋า เช่น ตำแหน่งการบันทึก ระบบปฏิบัติการและเวอร์ชันของซอฟต์แวร์ อุปกรณ์ที่เชื่อมต่อ สภาพอากาศ งาน โดยปกติแล้ว คุณจัดเก็บข้อมูลดังกล่าวไว้ในไฟล์แยกต่างหาก อย่างไรก็ตาม ตัวสร้างภาพของกระเป๋าบางตัว เช่นฐานข้อมูลกระเป๋าจำเป็นต้องมีข้อมูลเมตาเพื่อรวมเข้ากับไฟล์กระเป๋า

หากต้องการเขียนข้อมูลเมตาลงในไฟล์กระเป๋า ROS1 โดยตรง คุณสามารถใช้แพ็คเกจrosbag_metadata ทันทีที่แกะกล่องจะบันทึกความคิดเห็นของคุณพร้อมกับข้อมูลระบบ เช่น เวอร์ชันแพ็คเกจ ROS, ข้อมูลเกี่ยวกับที่เก็บ git และแฮช git-commit, ตัวแปรสภาพแวดล้อม, การกำหนดค่าเครือข่าย ข้อมูลทั้งหมดเหล่านี้ถูกเพิ่มเป็นข้อความในไฟล์ YAML ไปยังหัวข้อ /metadata

คุณสามารถใช้rosbag_metadataตามที่เป็นอยู่หรือตอบสนองความต้องการผลิตภัณฑ์พิเศษของคุณ ตัวอย่างเช่น สำหรับบริการโลจิสติกส์ของ Evocargo เราต้องการข้อมูลที่เฉพาะเจาะจงมากขึ้น เช่น รุ่นและหมายเลขรถยนต์ ข้อมูลการสอบเทียบแบบดิบ และแผนที่ ดังนั้นเราจึงสร้างแพ็คเกจของเราเองตามrosbag_metadataซึ่งปรับให้เข้ากับการจัดการยานยนต์อัตโนมัติมากขึ้น และเราสามารถเพิ่มฟิลด์ได้อย่างง่ายดายเมื่อต้องการ

รูปที่ 8 การเพิ่มข้อมูลเมตาเฉพาะผลิตภัณฑ์ลงในถุง

การเล่นและการสร้างภาพ

หนึ่งในตัวเลือกสำหรับ ROS 1 คือWebvizซึ่งเป็นเครื่องมือเว็บสำหรับเล่นกระเป๋าและการแสดงภาพที่พัฒนาและเปิดแหล่งที่มาโดยวิศวกร ของ Cruise ช่วยให้คุณสามารถลากและวางไฟล์ ROS bag เพื่อดูข้อมูลเชิงลึกได้ทันที ง่ายนิดเดียว! นอกจากนี้ ยังเป็นเว็บแอป คุณจึงไม่ต้องปรับใช้สภาพแวดล้อมพิเศษใดๆ

รูปที่ 5 ภาพประกอบนี้นำมาจากบทความ “Webviz: An Open Source Platform for Robotics Data Visualization” โดย Esther S. Weon

อินเทอร์เฟซสามารถปรับแต่งได้ ทำให้คุณเพิ่มแผงและดูข้อมูลที่เกี่ยวข้องได้มากขึ้นในที่เดียว นอกจากนี้ คุณสามารถรวมเข้ากับเครื่องมืออื่นๆ ได้ เช่น คุณสามารถเปิดWebviz ได้จากหน้าต่างฐานข้อมูลกระเป๋า (อธิบายการตั้งค่านี้ที่นี่ )

รูปที่ 6 การเปิดเว็บแอป Webviz จากเมนูในฐานข้อมูลกระเป๋า

อีกเครื่องมือหนึ่งที่ฉันอยากจะพูดถึงคือFoxglove Studio มีจุดประสงค์เดียวกันในการสร้างภาพและการวิเคราะห์ในวิทยาการหุ่นยนต์ แต่จะไปไกลกว่านั้นโดยรองรับทั้ง ROS 1 และ ROS 2 และให้การสนับสนุนเชิงพาณิชย์ มันเริ่มเป็นส่วนแยกของโครงการ Webvizของ Cruise และตอนนี้กำลังได้รับการพัฒนาและขยายชุดคุณสมบัติอย่างแข็งขัน มีให้บริการทั้งแบบเว็บแอปข้ามแพลตฟอร์มและแบบแอปเดสก์ท็อปที่ปลดล็อกคุณสมบัติเพิ่มเติมและส่วนขยายพาเนลแบบกำหนดเองบนอุปกรณ์ Linux, macOS และ Windows

รูปที่ 7 เล่นกระเป๋าในอินเทอร์เฟซ Foxglove

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ การพัฒนาและอัปเดตของ Foxglove Studioได้ในบล็อกบนMediumหรือเยี่ยมชมเว็บไซต์ ของพวก เขา

ตัดต่อกระเป๋า

หากคุณต้องการแก้ไขไฟล์กระเป๋าใน ROS 1 โปรดดูrosbag_editorโดยDavide Faconti เครื่องมือนี้ไม่อนุญาตให้คุณใช้การเปลี่ยนแปลงเป็นชุดกับไฟล์กระเป๋า แต่อาจมีประโยชน์สำหรับการแก้ไขบางกระเป๋า เช่น สำหรับการสาธิต UI ที่เรียบง่ายช่วยให้คุณเปลี่ยนชื่อและนำหัวข้อออก เปลี่ยนระยะเวลาของกระเป๋าโดยตัดจุดเริ่มต้นหรือจุดสิ้นสุดของไฟล์ เปลี่ยนประเภทการบีบอัดเพื่อทำให้ขนาดไฟล์เล็กลง และลบการแปลง

ที่ Evocargo เราต้องการเครื่องมือที่ช่วยให้สามารถแก้ไขชุดของกระเป๋าที่บันทึกไว้ใน ROS1 ได้ ดังนั้นVladimir Burmistrov วิศวกรของเราจึง ได้สร้างแพ็คเกจros_bag_migration ช่วยให้คุณเปลี่ยนรูปแบบของข้อความในกระเป๋าที่บันทึกได้ ไม่เพียงแต่เปลี่ยนชื่อและลบข้อความเท่านั้น แต่ยังแยกข้อความออกเป็นสองส่วนและใช้กฎที่กำหนดไว้กับข้อความบางเวอร์ชัน แพ็คเกจนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับสถานการณ์เมื่อคุณตัดสินใจบันทึกกระเป๋าใบใหม่ด้วยชุดข้อความที่ได้รับการปรับปรุงใหม่ และคุณต้องการเปลี่ยนกระเป๋าใบเก่าตามความเข้ากันได้

การสร้างกราฟ

ต่อไป เราจะพูดถึงPlotJugglerซึ่งเป็นเครื่องมือสร้างกราฟที่น่าทึ่ง (อีกแพ็คเกจหนึ่งโดยDavide Faconti ) PlotJugglerช่วยให้คุณสามารถวิเคราะห์ข้อมูลที่ไหลภายในระบบหรือหุ่นยนต์ของคุณ การดีบักจะง่ายขึ้นมากด้วยคุณสมบัติของมัน:

  • คุณสามารถสร้างกราฟสำหรับข้อมูลในหัวข้อ ROS ได้แบบเรียลไทม์หรือผ่านการโหลดไฟล์ .bag หนึ่งไฟล์หรือหลายไฟล์ลงในPlotJuggler
  • รูปที่ 9 การเลื่อนผ่านไฟล์กระเป๋า
  • การเพิ่มและจัดการแปลงข้อมูลหลายรายการนั้นใช้งานง่ายมาก ตัวอย่างเช่น คุณสามารถสร้างแท็บ XY ได้โดยการดึงข้อมูล 2D บางส่วนและวางแผนเพื่อให้เห็นภาพตำแหน่ง 2D สำหรับทุกการประทับเวลา
  • มีโอกาสมากมายในการแปลงข้อมูลในตัวสำหรับพล็อต เช่น คุณสามารถลบออฟเซ็ตของข้อมูล ปรับขนาด ผสานรวม ลบค่าผิดปกติ และอื่นๆ คุณยังสามารถสร้างชุดของการแปลง ซึ่งมีประโยชน์มากสำหรับการเปรียบเทียบข้อมูลจากแหล่งต่างๆ
  • หากคุณไม่พบฟังก์ชันการแปลงที่เหมาะสม คุณสามารถสร้างฟังก์ชันของคุณเองได้ ตัวอย่างเช่น คุณสามารถเขียนฟังก์ชันเพื่อแยกและแสดงภาพมุมหันเหจากควอเทอร์เนียน
  • สุดท้าย แต่ไม่ท้ายสุด! ฟีเจอร์เด็ด: เมื่อคุณจัดการกับกระเป๋า คุณสามารถเปิดใช้งาน “ROS Topic Re-Publisher” นั่นหมายความว่าคุณสามารถลากตัวเลื่อนเวลาไปยังช่วงเวลาใดก็ได้ที่คุณต้องการ และPlotJugglerจะเผยแพร่ข้อมูลจากทุกหัวข้อที่สอดคล้องกับการประทับเวลาที่เลือก สิ่งนี้มีประโยชน์มากเมื่อคุณต้องการดูภาพจากกล้องในช่วงเวลาใดเวลาหนึ่ง ตรวจสอบข้อความการวินิจฉัย หรือแม้แต่แสดงภาพข้อมูลทุกชิ้นในเครื่องมือสร้างภาพอื่นๆ เช่น RVIZ

การส่งข้อความ

สำหรับจุดประสงค์ในการทดสอบและแก้ไขจุดบกพร่อง สิ่งสำคัญคือต้องสร้างผลลัพธ์ของการทดสอบที่เสถียร ตัวอย่างเช่น เมื่อคุณทดสอบอัลกอริทึมการแปลเป็นภาษาท้องถิ่นบนกระเป๋าที่มีข้อมูลเซนเซอร์บางอย่าง คุณคาดหวังผลลัพธ์เดียวกันทุกครั้งที่เรียกใช้อัลกอริทึมนี้ อย่างไรก็ตาม ตรรกะการเผยแพร่-สมัครสมาชิกใน ROS ไม่สามารถรับประกันการส่งข้อความได้ 100% และเป็นไปได้ว่าโหนดของคุณจะไม่ประมวลผลข้อความทั้งหมดในกระเป๋าในลำดับเดียวกัน

แพ็คเกจ batch_rosสำหรับROS 1 ให้คุณระบุหัวข้อในไฟล์กระเป๋าที่มีความสำคัญต่องานของคุณ batch_ros จะรอการเรียกใช้บริการให้ตรงกันหลังจากเผยแพร่แต่ละข้อความจากหัวข้อเหล่านี้ ทำให้มั่นใจได้ว่าข้อความจากไฟล์กระเป๋าจะถูกเผยแพร่หลังจากที่โหนดของคุณประมวลผลทีละข้อความตามลำดับที่กำหนดไว้

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

ดังนั้นbatch_ros จึง รับประกันการประมวลผลถุงตามที่กำหนดและทำซ้ำได้

สถานะการบันทึก

ขณะที่กำลังบันทึกกระเป๋า การกำหนดค่าเริ่มต้นของ ROS 1 จะแสดงข้อความ “กำลังบันทึก…” เท่านั้น หากมีข้อผิดพลาด คุณจะทราบได้เฉพาะเมื่องานเสร็จสิ้นและล้มเหลวเท่านั้น เพื่อให้กระบวนการบันทึกมีข้อมูลมากขึ้น ให้ลองใช้ อินเทอร์เฟซเทอร์มินัล rosbag_fancyสำหรับ ROS 1 ซึ่งจะแสดงข้อมูลที่เป็นประโยชน์แบบเรียลไทม์ เช่น หัวข้อที่กำลังบันทึก การใช้หน่วยความจำ ขนาดไฟล์กระเป๋า และอื่นๆ ทั้งหมดนี้รวมอยู่ในตารางที่เรียบง่าย

รูปที่ 11 ภาพประกอบนี้นำมาจากหน้า rosbag_fancy บน GitHub

คุณยังสามารถดูจำนวนข้อความที่ตกหล่น ( Drops ) ซึ่งนำเราไปสู่ปัญหาถัดไปและวิธีแก้ปัญหาที่เป็นไปได้

ขอบคุณที่อ่านมาถึงตรงนี้ — คุณต้องชอบที่จะปรับปรุงประสบการณ์ของคุณกับ ROS มากเท่ากับที่เราทำ! มาสรุปกันเถอะ ในโพสต์นี้ เราได้ดูแพ็คเกจ ROS ต่อไปนี้: Bag Database , rosbag_metadata , Webviz , Foxglove Studio , rosbag_editor , ros_bag_migration , PlotJuggler , rosbag_fancyและbatch_ros

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