สองสิ่ง.
หากคุณวางแผนที่จะทำการแมปคุณจำเป็นต้องใช้อัลกอริทึมการแปลและการแมป (SLAM) พร้อมกันเต็มเปี่ยม ดู: พร้อมกันรองรับหลายภาษาและการทำแผนที่ (สแลม): Part I สำคัญอัลกอริทึม ใน SLAM การประเมินสถานะของหุ่นยนต์เป็นปัญหาเพียงครึ่งเดียว วิธีการทำนั้นเป็นคำถามที่ใหญ่กว่าที่สามารถตอบได้ที่นี่
เกี่ยวกับการแปล (ประมาณสถานะของหุ่นยนต์) นี่ไม่ใช่งานของตัวกรองคาลมาน การเปลี่ยนแปลงจาก
เพื่อx ( T + 1 )x ( t ) = [ x , y, x˙, y˙, θ , θ˙]x ( t + 1 )ไม่ใช่ฟังก์ชันเชิงเส้นเนื่องจากการเร่งเชิงมุมและความเร็ว ดังนั้นคุณต้องพิจารณาตัวประมาณค่าแบบไม่เชิงเส้นสำหรับงานนี้ ใช่มีวิธีมาตรฐานในการทำเช่นนี้ ใช่พวกเขามีอยู่ในวรรณกรรม ใช่โดยปกติแล้วอินพุตทั้งหมดจะใส่ลงในตัวกรองเดียวกัน ตำแหน่ง, ความเร็ว, ทิศทางและความเร็วเชิงมุมของหุ่นยนต์ถูกใช้เป็นเอาท์พุท และใช่ฉันจะนำเสนอสั้น ๆ เกี่ยวกับชุดรูปแบบทั่วไปของพวกเขาที่นี่ เส้นทางขึ้นเครื่องหลักคือ
- รวมอคติ Gyro และ IMU ในรัฐของคุณไม่เช่นนั้นการประมาณของคุณจะเปลี่ยนไป
- ขยายคาลมานกรอง (EKF)เป็นที่นิยมใช้สำหรับปัญหานี้
- การใช้งานสามารถเกิดขึ้นได้จากศูนย์และไม่จำเป็นต้อง "ค้นหา"
- Implementaitons มีอยู่สำหรับการแปลส่วนใหญ่และปัญหา SLAM ดังนั้นอย่าทำงานมากกว่าที่คุณต้องทำ โปรดดูที่: ระบบปฏิบัติการหุ่นยนต์ROS
ตอนนี้เพื่ออธิบาย EKF ในบริบทของระบบของคุณ เรามี IMU + Gyro, GPS และ odometry หุ่นยนต์ที่มีปัญหานั้นเป็นไดรฟ์ที่ต่างกันดังที่กล่าวไว้ งานการกรองคือการใช้การประมาณการท่าปัจจุบันของหุ่นยนต์
xเสื้อปัจจัยการผลิตการควบคุมยูที , และการวัดจากเซ็นเซอร์แต่ละที่ซีทีและการผลิตประมาณการในขั้นตอนเวลาถัดไป
x T + 1 เราจะเรียกวัด IMU ฉันt , จีพีเอสจีทีและ odometry, โอทีx^เสื้อยูเสื้อZเสื้อx^t + 1ผมเสื้อGเสื้อOเสื้อ
ผมถือว่าเรามีความสนใจในการประมาณท่าหุ่นยนต์เป็น
θ ปัญหาเกี่ยวกับ IMU และ Gyros นั้นล่องลอยไป มีอคติไม่คงที่ในการเร่งความเร็วซึ่งคุณต้องคำนึงถึงใน EKF สิ่งนี้เสร็จสิ้น (โดยปกติ) โดยการวางอคติลงในสถานะโดยประมาณ สิ่งนี้ช่วยให้คุณสามารถประเมินอคติโดยตรงในแต่ละขั้นตอน
x T = x , Y , ˙ x , ˙ Y , θ , ˙ θ , ขxเสื้อ= x , y, x˙, y˙, θ , θ˙xเสื้อ= x , y, x˙, y˙, θ , θ˙, ขสำหรับเวกเตอร์ของอคติขข
ฉันสมมติว่า:
- = การวัดระยะทางสองทางแทนระยะทางที่ดอกยางเดินทางไปด้วยการเพิ่มขึ้นของเวลาเล็กน้อยOเสื้อ
- = วัดสามปฐมนิเทศแอลฟา, β , θและสาม accelleration วัด ¨ x , ¨ Y , ¨ Zผมเสื้อα , β, θx¨, y¨, z¨
- = ตำแหน่งของหุ่นยนต์ในที่ทั่วโลกกรอบ
G x T , G Yเสื้อGเสื้อGxเสื้อ,GYเสื้อ
โดยทั่วไปแล้วผลลัพธ์ของอินพุตควบคุม (ความเร็วที่ต้องการสำหรับแต่ละดอกยาง) เป็นการยากที่จะแมปกับเอาท์พุท (การเปลี่ยนแปลงในท่าทางของหุ่นยนต์) ในสถานที่ของมันเป็นเรื่องธรรมดา (ดูThrun , Odometry คำถาม ) เพื่อใช้ odometry เป็น "ผล" ของการควบคุม สมมติฐานนี้ใช้ได้ดีเมื่อคุณไม่ได้อยู่บนพื้นผิวที่ไม่มีแรงเสียดทาน IMU และ GPS สามารถช่วยแก้ไขการลื่นไถลได้ดังที่เราจะเห็นยู
x T + 1 = F ( x T , U T ) ในกรณีของหุ่นยนต์ค่าไดรฟ์, คำทำนายนี้สามารถรับโดยตรงจากวรรณกรรม (ดูในจลนศาสตร์ของล้อยางมือถือหุ่นยนต์หรือการรักษาที่รัดกุมมากขึ้นในตำราหุ่นยนต์ที่ทันสมัย) หรือมาจากรอยขีดข่วนตามที่แสดงไว้ที่นี่: Odometry คำถามx^t + 1= f( x^เสื้อ, Uเสื้อ)
ดังนั้นตอนนี้เราสามารถคาดการณ์x T + 1 = F ( x T , O T ) นี่คือขั้นตอนการแพร่กระจายหรือการทำนาย คุณสามารถใช้งานหุ่นยนต์ได้โดยการเผยแพร่ ถ้าค่าโอทีมีความถูกต้องสมบูรณ์คุณจะไม่ได้มีการประมาณการxซึ่งไม่เท่ากับรัฐที่แท้จริงของคุณ สิ่งนี้ไม่เคยเกิดขึ้นในทางปฏิบัติx^t + 1= f( x^เสื้อ, Oเสื้อ)Oเสื้อx^
สิ่งนี้ให้ค่าที่คาดการณ์จากการประมาณการครั้งก่อนเท่านั้นและไม่ได้บอกเราว่าความแม่นยำของการประมาณค่าลดลงตามเวลาอย่างไร ดังนั้นเพื่อเผยแพร่ความไม่แน่นอนคุณต้องใช้สมการ EKF (ซึ่งเผยแพร่ความไม่แน่นอนในรูปแบบปิดภายใต้สมมติฐานเสียงเกาส์เซียน) ตัวกรองอนุภาค (ซึ่งใช้วิธีการสุ่มตัวอย่างตาม) *, UKF (ซึ่งใช้จุดที่ชาญฉลาด การประมาณความไม่แน่นอน) หรือหนึ่งในตัวแปรอื่น ๆ
ในกรณีของ EKF เราดำเนินการดังนี้ ให้เป็นเมทริกซ์ความแปรปรวนร่วมของสถานะหุ่นยนต์ เราปรับฟังก์ชั่นเชิงเส้นf
โดยใช้การขยายแบบเทย์เลอร์เพื่อให้ได้ระบบเชิงเส้น ระบบเชิงเส้นสามารถแก้ไขได้อย่างง่ายดายโดยใช้ตัวกรองคาลมาน สมมติแปรปรวนของประมาณการในขณะที่เสื้อเป็นP Tและความแปรปรวนของปลอมเสียงใน odometry ที่จะได้รับเป็นเมทริกซ์ยูที
(มักจะเป็นเส้นทแยงมุม2 × 2เมทริกซ์เช่น0.1 × ฉัน2 × 2 ) ในกรณีของฟังก์ชันfเราจะได้รับยาโคบPเสื้อฉเสื้อPเสื้อยูเสื้อ2 × 2.1 × I2 × 2ฉ
และFu=∂fFx= ∂ฉ∂xแล้วเผยแพร่ความไม่แน่นอนเป็นFยู= ∂ฉ∂ยู
Pt + 1= Fx* Pเสื้อ∗ FTx+ Fยู∗ คุณเสื้อ∗ FTยู
ตอนนี้เราสามารถเผยแพร่ประมาณการและความไม่แน่นอน สังเกตว่าความไม่แน่นอนนั้นจะเพิ่มขึ้นตามเวลา สิ่งนี้คาดว่า ในการแก้ไขปัญหานี้สิ่งที่ทำได้โดยทั่วไปคือใช้และG tเพื่ออัปเดตสถานะที่คาดการณ์ไว้ สิ่งนี้เรียกว่าขั้นตอนการวัดของกระบวนการกรองเนื่องจากเซ็นเซอร์ให้การวัดทางอ้อมของหุ่นยนต์ผมเสื้อGเสื้อ
ก่อนอื่นให้ใช้เซ็นเซอร์แต่ละตัวเพื่อประเมินสถานะของหุ่นยนต์บางส่วนเนื่องจากฟังก์ชั่นและh i ( )สำหรับ GPS, IMU รูปแบบที่เหลือหรือนวัตกรรมซึ่งเป็นความแตกต่างของค่าที่คาดการณ์และวัด จากนั้นให้ประเมินความแม่นยำของเซ็นเซอร์แต่ละตัวในรูปของเมทริกซ์ความแปรปรวนร่วมRสำหรับเซ็นเซอร์ทั้งหมด ( R g , R iในกรณีนี้) ในที่สุดค้นหา Jacobians ของhและอัปเดตการประเมินสถานะดังนี้ชั่วโมงก.( )ชั่วโมงผม( )RRก.Rผมชั่วโมง
สำหรับแต่ละเซ็นเซอร์กับรัฐประมาณการZ s ( ต่อไปนี้รายการวิกิพีเดีย )sZs
S s = H s * P T + 1 * H T s + R s K = P T + 1 * H T s S - 1 s x T + 1 = x T + 1 - K * วี
โวลต์s= zs- ชมs( x^t + 1)
Ss= Hs* Pt + 1* HTs+ Rs
K= Pt + 1* HTsS- 1s
x^t + 1= x^t + 1- เค∗ โวลต์
Pt + 1= ( I- เค* Hs) ∗ Pt + 1
Zก.= hก.( )Hก.Rก.
Zผม= hผม( )พีผมRผมพีผม. การรวมการอัปเดตสำหรับอคตินั้นยากขึ้นและออกจากความเชี่ยวชาญของฉัน อย่างไรก็ตามเนื่องจากคุณมีความสนใจในการเคลื่อนที่แบบระนาบคุณอาจจะทำให้ปัญหาง่ายขึ้น คุณจะต้องมองหาวรรณกรรมในเรื่องนี้
การอ้างอิงที่ไม่ได้อยู่บนหัวของฉัน:
การปรับปรุงความถูกต้องของ Odometry Visual-Inertial-Inertial
เครื่องมือประมาณ EKF ที่สอดคล้องกับความสามารถในการสังเกตสำหรับการแปลหลายภาษาแบบร่วมมือกันหลายหุ่นยนต์
ปรับ EKF สองขั้นตอนสำหรับระบบคู่ INS-GPS แบบหลวม ๆ พร้อมกับอคติผิดพลาดที่ไม่รู้จัก
ฟิลด์นี้มีความเป็นผู้ใหญ่มากพอที่ Google (นักวิชาการ) อาจพบว่าคุณใช้งานได้จริง หากคุณกำลังจะทำงานมากในพื้นที่นี้ฉันขอแนะนำให้คุณรับหนังสือเรียนที่มั่นคง อาจเป็นได้ว่าหุ่นยนต์ Probablistic โดย S. Thrunจากชื่อเสียงของ Google Car (ฉันพบว่ามันเป็นข้อมูลอ้างอิงที่เป็นประโยชน์สำหรับการนำไปใช้ในช่วงดึก)
* มีตัวประมาณ PF หลายตัวที่มีอยู่ใน
ระบบปฏิบัติการหุ่นยนต์ (ROS) อย่างไรก็ตามสิ่งเหล่านี้ได้รับการปรับให้เหมาะกับการใช้งานภายในอาคาร ตัวกรองอนุภาคจัดการกับ PDF แบบโมดัลซึ่งอาจเป็นผลมาจากการแปลตามแผนที่ (ฉันอยู่ใกล้ประตูนี้หรือประตูนั้น ) ฉันเชื่อว่าการใช้งานกลางแจ้งส่วนใหญ่ (โดยเฉพาะอย่างยิ่งที่สามารถใช้ GPS อย่างน้อยเป็นระยะ ๆ ) ใช้ตัวกรองแบบขยาย Kalman (EKF) ฉันใช้ตัวกรองแบบขยายของคาลมานได้สำเร็จสำหรับรถแลนด์โรเวอร์บนพื้นดินที่มีไดรฟ์ต่าง