ที่ ระบบแผนที่ในร่ม
ข้อมูลอ้างอิงทางเทคนิคฉบับเต็มสำหรับระบบกำหนดตำแหน่งในอาคาร See U: สถาปัตยกรรม เซ็นเซอร์ อัลกอริธึม API และคู่มือการใช้งาน
การนำทางอย่างรวดเร็ว
ภาพรวม
ความรู้เบื้องต้นเกี่ยวกับระบบแผนที่
ระบบแผนที่ภายใน See U คืออะไร
ระบบภายในอาคาร See U เป็นแพลตฟอร์มระบุตำแหน่งในพื้นที่ปิดที่หลอมรวมชั้นเทคโนโลยีเซ็นเซอร์หกชั้นเข้ากับการรวมขั้นสูงเพื่อมอบตำแหน่งที่แม่นยำในกรณีที่ GPS ไม่พร้อมใช้งาน
ต่างจากผลิตภัณฑ์ Wi‑Fi หรือบลูทูธเท่านั้น เราใช้กลุ่ม หลายรูปแบบ ที่ประกอบด้วย:
- ตำแหน่งทางภูมิศาสตร์แบบแม่เหล็ก: "ลายนิ้วมือ" แบบแม่เหล็กอันเป็นเอกลักษณ์สำหรับทุกอาคาร
- Wi-Fi RTT: ระยะเวลาการบินเพื่อระยะทางที่แม่นยำ
- บลูทูธ LE: บีคอนสำหรับจุดยึดและจุดสนใจ
- เซ็นเซอร์เฉื่อย: การคำนวณที่ล้มเหลวด้วย IMU ระดับสูง
- การมองเห็นคอมพิวเตอร์: สแลมและเครื่องหมายภาพ
- GNSS: การเปลี่ยนผ่านในร่มและกลางแจ้งราบรื่น
ความแม่นยำ 1–2 ม. ใน 99% ของกรณีเพื่อการค้นหาเส้นทางที่ปลอดภัย
การอัปเดตแบบเรียลไทม์โดยมีเวลาแฝงตั้งแต่ต้นทางถึงปลายทางต่ำกว่า 100 ms
ผสมผสานเทคโนโลยีมากมายเพื่อความน่าเชื่อถือและความแม่นยำ
สถาปัตยกรรมระบบ
โครงสร้างและส่วนประกอบที่สำคัญ
โครงสร้างสถาปัตยกรรม
1. ชั้นรวบรวมข้อมูล
สตรีมข้อมูลดิบจากเซ็นเซอร์อุปกรณ์ทั้งหมดแบบเรียลไทม์
- • ไดรเวอร์ดั้งเดิม (iOS / Android)
- • การจัดการอัตราตัวอย่าง
- • การบัฟเฟอร์ข้อมูลสำหรับการรวมกลุ่ม
- •การซิงโครไนซ์การประทับเวลา
2. เลเยอร์การประมวลผลล่วงหน้า
กรอง ทำให้เป็นมาตรฐาน และเตรียมข้อมูลสำหรับการหลอมรวม
- • ตัวกรองความถี่ต่ำและความถี่สูงผ่าน
- • การสอบเทียบอัตโนมัติ
- • การตรวจจับและกำจัดค่าผิดปกติ
- • การทำให้เป็นมาตรฐานและการปรับขนาด
3. ชั้นฟิวชั่นเซนเซอร์
รวมแหล่งต่างๆ เข้ากับวิธีการฟิวชั่นสมัยใหม่
- • ตัวกรองอนุภาค (ความน่าจะเป็น)
- • ขยาย Kalman เพื่อความเรียบเนียน
- • การถ่วงน้ำหนักต่อเซ็นเซอร์แบบปรับเปลี่ยนได้
- • การตรวจจับบริบทในร่ม / กลางแจ้ง
4. การวางตำแหน่งเลเยอร์
คำนวณตำแหน่งสุดท้ายของผู้ใช้บนแผนที่
- • การจับคู่แผนที่
- • จัดชิดไปยังส่วนของเส้นทางที่ถูกต้อง
- • การตรวจจับพื้น/ระดับ
- • การแก้ไขดริฟท์
5. เลเยอร์การนำทาง
การวางแผนเส้นทางและคำแนะนำแบบเลี้ยวต่อเลี้ยว
- • A* พร้อมการถ่วงน้ำหนักการเข้าถึง
- • การสร้างคำสั่งเสียง
- • การกำหนดเส้นทางใหม่แบบไดนามิก
- • การแจ้งเตือนความใกล้ชิดไปยัง POI
6. เลเยอร์อินเทอร์เฟซ
API และ SDK สำหรับการรวมแอป
- • REST สำหรับเว็บและเซิร์ฟเวอร์
- • Native SDK (iOS และ Android)
- • การอัปเดตสดของ WebSocket
- • Webhooks สำหรับกิจกรรมตำแหน่ง
ชั้นเซ็นเซอร์
รายละเอียดทางเทคนิคต่อชั้น
ตำแหน่งทางภูมิศาสตร์แม่เหล็ก
แผนที่สนามโลกและความผิดปกติที่เกิดจากอาคาร แต่ละโครงสร้างมีลายนิ้วมือแม่เหล็กที่เป็นเอกลักษณ์
ข้อกำหนดทางเทคนิค:
- อัตราตัวอย่าง: 50–100 เฮิรตซ์
- ความละเอียด: 0.01 µT
- การสอบเทียบอัตโนมัติอย่างต่อเนื่อง
- การชดเชยสัญญาณรบกวน
RTT ไวไฟ
Wi-Fi ตามเวลาบินตั้งแต่จุดเข้าใช้งาน ต้องรองรับอุปกรณ์และโครงสร้างพื้นฐาน RTT
ข้อกำหนดทางเทคนิค:
- โปรโตคอล: IEEE 802.11mc (Wi-Fi RTT)
- แบนด์: 2.4 และ 5 GHz
- เวลาแฝง: < 100 ms
- AP อย่างน้อย 3 ตัวสำหรับรูปสามเหลี่ยม
บลูทูธพลังงานต่ำ (BLE)
บีคอนสำหรับความใกล้ชิด ทิศทาง POI และจุดอ้างอิง
ข้อกำหนดทางเทคนิค:
- โปรโตคอล: BLE 5.0+
- RSSI (ความแรงของสัญญาณที่ได้รับ)
- แบตเตอรี่: 2-5 ปี
- ระยะ: สูงสุด 100 ม
หน่วยวัดแรงเฉื่อย (IMU)
IMU ครอบคลุมการเคลื่อนไหว การหมุน และระดับความสูงเพื่อเชื่อมช่องว่างระหว่างข้อมูลอ้างอิง
ข้อกำหนดทางเทคนิค:
- มาตรความเร่ง: ±16 ก., 400 เฮิรตซ์
- ไจโร: ±2000°/วินาที, 400 เฮิรตซ์
- บาโร: ความสูงพื้น 0.5 ม
- ฟิวชั่น: คาลมาน
คอมพิวเตอร์วิทัศน์ (CV)
ค้นหาคุณสมบัติต่างๆ, เครื่องหมาย AR, QR และข้อความสำหรับการอัพเดตตำแหน่งและ SLAM ด้วยสายตา
ข้อกำหนดทางเทคนิค:
- SLAM: การแปลและการทำแผนที่พร้อมกัน
- การตรวจจับคุณสมบัติ: ORB, SIFT
- เครื่องหมาย AR: ArUco, QR
- รันไทม์: TensorFlow Lite
GNSS / จีพีเอส (กลางแจ้ง)
ตำแหน่งดาวเทียมกลางแจ้งและสำหรับการส่งมอบและการควบคุมดริฟท์ในร่มและกลางแจ้ง
ข้อกำหนดทางเทคนิค:
- มัลติ GNSS: GPS, GLONASS, กาลิเลโอ, เป่ยโต่ว
- A-GPS สำหรับ TTFF ที่รวดเร็ว
- อัตโนมัติในร่ม/กลางแจ้ง
- ปะปนกับชั้นอื่นๆ
อัลกอริทึม
การประมวลผลและความฉลาด
แผ่นกรองอนุภาค (มอนติคาร์โล)
อนุภาคถ่วงน้ำหนักจำนวนมากติดตามท่าทางของผู้ใช้ที่เป็นไปได้มากที่สุดจากเซ็นเซอร์ที่มีสัญญาณรบกวนหลายตัว
ตัวกรองคาลมานแบบขยาย
ประมาณการระบบไดนามิกแบบวนซ้ำด้วยอินพุตที่มีสัญญาณรบกวน ใช้สำหรับเส้นทางเรียบและการทำนายระยะสั้น
A* การค้นหาเส้นทาง
ค้นหาเส้นทางที่สั้นที่สุดโดยมีอุปสรรค การเข้าถึง และการตั้งค่าของผู้ใช้เป็นน้ำหนัก
สแลม
สร้างแผนที่และติดตามอุปกรณ์ในนั้นด้วยคุณสมบัติภาพ
การเรียนรู้ของเครื่อง (โครงข่ายประสาทเทียม)
โมเดลที่ผ่านการฝึกอบรมเพื่อจัดประเภทสภาพแวดล้อม ปฏิเสธข้อมูล และปรับปรุงความแม่นยำเมื่อเวลาผ่านไป
การคำนวณที่ตายแล้ว
เผยแพร่ท่าทางจากการแก้ไขครั้งล่าสุดโดยใช้ความเร็วและมุ่งหน้าไปเมื่อการแก้ไขแบบวิทยุลดลง
กระแสการประมวลผล
การจับข้อมูล
เซ็นเซอร์จะสตรีมการวัดดิบแบบเรียลไทม์
กำลังประมวลผลล่วงหน้า
การกรอง การสอบเทียบ และการทำให้เป็นมาตรฐาน
เซ็นเซอร์ฟิวชั่น
ตัวกรองอนุภาคผสานแหล่งทั้งหมด
ตัวกรองคาลมาน
ปรับให้เรียบและทำนายวิถี
การจับคู่แผนที่
โครงการบนกราฟแผนที่ที่กำหนดเส้นทางได้
โพสท่าเอาท์พุต
เปิดเผยต่อแอปผ่าน API
ส่วนที่เหลือ API
จุดสิ้นสุดและการบูรณาการ
URL ฐาน
/api/v1/positioningส่งกลับท่าทางอุปกรณ์ปัจจุบัน
พารามิเตอร์:
device_idvenue_idfloor/api/v1/navigation/routeวางแผนเส้นทางระหว่างจุดสองจุด
พารามิเตอร์:
origindestinationaccessibility_mode/api/v1/venues/{id}/mapดึงข้อมูลแผนที่สถานที่จัดงาน
พารามิเตอร์:
venue_idfloorformat/api/v1/poisรายชื่อจุดที่น่าสนใจใกล้เคียง
พารามิเตอร์:
latlngradiuscategory/api/v1/tracking/updateโพสต์แบทช์เซ็นเซอร์สำหรับการหลอมรวมฝั่งเซิร์ฟเวอร์
พารามิเตอร์:
sensor_datatimestampdevice_idคำขอตัวอย่าง
curl -X POST https://api.seeu.app/v1/navigation/route \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"origin": {
"lat": -23.550520,
"lng": -46.633308,
"floor": 1
},
"destination": {
"lat": -23.551234,
"lng": -46.634567,
"floor": 2
},
"accessibility_mode": true
}'คู่มือการนำไปปฏิบัติ
วิธีการรวมสแต็ก
1. ความต้องการของระบบ
ไอโอเอส
- • iOS 14.0 ขึ้นไป
- • สวิฟท์ 5.5+
- • ตำแหน่งหลัก
- • คอร์โมชั่น
- • ARKit (ไม่จำเป็น)
หุ่นยนต์
- • Android 8.0 ขึ้นไป (API 26)
- • คอตลิน 1.7+
- • บริการ Google Play
- • API เซ็นเซอร์ Android
- • ARCore (ไม่จำเป็น)
2. การติดตั้ง SDK
iOS (CocoaPods)
pod 'SeeUMapping', '~> 1.0'
ระบบปฏิบัติการ Android (Gradle)
implementation 'app.seeu:mapping:1.0.0'
3. การเริ่มต้น
// Swift
import SeeUMapping
let mapping = SeeUMapping(apiKey: "YOUR_API_KEY")
mapping.configure(
venueId: "shopping-center-xyz",
enableMagneticPositioning: true,
enableWiFiRTT: true,
enableBLE: true
)
mapping.startPositioning { result in
switch result {
case .success(let position):
print("Lat: \(position.lat), Lng: \(position.lng)")
case .failure(let error):
print("Error: \(error)")
}
}4. การนำทาง
mapping.calculateRoute(
from: currentPosition,
to: destination,
accessibilityMode: true
) { route in
mapping.startNavigation(route: route) { instruction in
// turn-by-turn instructions
print(instruction.text)
speakInstruction(instruction.audio)
}
}