Skip to content

Final Assignment: Group16 Submission#125

Open
Junyi12138 wants to merge 7 commits intoopenpositioning:developfrom
Junyi12138:develop
Open

Final Assignment: Group16 Submission#125
Junyi12138 wants to merge 7 commits intoopenpositioning:developfrom
Junyi12138:develop

Conversation

@Junyi12138
Copy link
Copy Markdown

Final Submission for Embedded Mobile and Wireless Systems (EWireless) 2026

Group Number: 16
Team Members (Usernames):
-Junyi Lin

  • Peifeng Xia

Implemented Features:

  1. Particle Filter Fusion Engine (Predict & Update)
  2. GNSS and WiFi Absolute Positioning Updates
  3. Robust Map Matching (Ray-casting Algorithm with Wall collision penalty)
  4. UI Enhancements: Colored data observation markers (Last 10 GNSS/WiFi points) and corrected Floor Indexing.

…ithms.

- Implemented `Particle` class with movement and noise simulation.
- Implemented the `ParticleFilter` algorithm with the complete lifecycle:
  1. Initialization (`initialize`): Distributed particles randomly within given map bounds.
  2. Prediction (`predict`): Shifted particles based on PDR movement deltas.
  3. Update (`updateWeights`): Calculated particle weights using Gaussian likelihood based on measurement distance and accuracy.
  4. Resampling (`resample`): Implemented Low Variance Resampling (Roulette Wheel) to duplicate high-weight particles and eliminate low-weight ones.
- Added data structure classes: `MapBounds`, `PDRMovement`, `Measurement`, and `Position`.
- Added `getEstimatedPosition` using weighted average for robust position estimation.
… as the central positioning engine.

- Connected PDR updates in `SensorEventHandler`:
  Extracted step deltas (`deltaX`, `deltaY`) from `pdrProcessing.updatePdr` and piped them to `particleFilter.predict()` to simulate pedestrian movement.
- Connected WiFi positioning in `WifiPositionManager`:
  Switched to the callback-based API (`createWifiPositionRequestCallback`) to retrieve absolute global coordinates (WGS84).
  Implemented Flat Earth Approximation to convert WGS84 Lat/Lng to local Cartesian coordinates (Easting/Northing in meters).
  Piped the converted local coordinates to `particleFilter.updateWeights()` and `particleFilter.resample()` to correct PDR drift.
…rticleFilter.getEstimatedPosition()` after each PDR step.

- Piped the fused coordinates to `pathView.drawTrajectory()` instead of the raw PDR coordinates.
- The on-screen trajectory now reflects the real-time, smoothed output of the sensor fusion algorithm.
- Added extensive Logcat outputs for debugging and comparing raw PDR vs. fused PF coordinates.
…keys (where 'G' was placed after 'F3').

- Implemented a custom physical sorting in `FloorplanApiClient` to ensure floor sequence: LG -> GF -> F1 -> F2 -> F3.
- Refactored `setCurrentFloor` to map physical floor numbers (-1, 0, 1...) to the reordered list indices correctly.
- Synchronized manual UI buttons (Up/Down) with the new index structure.
- Corrected initial building overlay to default to the Ground Floor (GF).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant