Indoor_fingerprinting
Here is a blog post that synthesizes your project proposal with the t265_json project.
The Perfect Foundation: Using t265_json for a Cellular Signal Heatmap
This is a fantastic example of “engineering re-use.” You’ve laid out a detailed proposal for an Automated Cellular Signal Strength Monitoring System, and in the process, you’ve identified that the core data pipeline is a problem you’ve already solved with your t265_json project.
Your new proposal is simple and clear: to create a heatmap of cellular signal strength, you need to log two key pieces of data simultaneously:
- The Signal Strength: An Android phone can easily poll this from its own cellular radio.
- The Precise Location: This is the hard part. How does the phone know its exact (X, Y) position inside a building where GPS is unreliable?
Your solution is to use an Intel RealSense T265 (likely held by the person walking) to get a high-quality, V-SLAM-based 2D pose (X, Y, Yaw). The entire challenge then boils down to one simple question: “How do I get the T265’s real-time pose data from its host (like a Raspberry Pi) to the Android phone that’s logging the signal?”
As you’ve correctly pointed out, this is the exact problem the t265_json project was built to solve. It’s the perfect foundation.
The Architectural Blueprint (Using t265_json)
By adapting the t265_json project, the architecture for your new cellular logger is already 90% complete. Here is how the data pipeline works:
-
The Sensor (T265 + RPi): The T265 is connected to the Raspberry Pi. The
realsense-rosdriver publishes the full 6-DOF odometry data (as ageometry_msgs/Pose) to a ROS topic. - The “Translator” (The
t265_jsonPython Script): A Python script (which is the core oft265_json) runs on the RPi.- It subscribes to the
/ros/odometrytopic. - It simplifies the data, just as you specified in your proposal: it extracts the
X,Y, andYaw(from the Quaternion) to create a simple 2D pose. - It packages this 2D pose into a lightweight, universal JSON object.
- It subscribes to the
-
The “Bridge” (SocketIO Server): This same Python script uses
python-socketioto create a simple web server. It “broadcasts” the JSON pose data over the local Wi-Fi network hundreds of times per second. - The “Logger” (The Android App):
This is the only piece that needs a minor modification.
- Original Function: The Android app connects to the SocketIO server and receives the real-time stream of JSON pose data.
- New Function: While it’s receiving this pose data, the app will also poll the phone’s internal API for the current cellular signal strength (e.g., in dBm).
- The Log: Every time it gets a new pose, it will write a single line to a log file:
(timestamp, x_position, y_position, signal_strength_dbm).
The Result
After walking the entire floor, you will have a complete .csv or .txt file. This data is now trivial to plot using a script (Python, MATLAB, etc.) to generate a 2D “heatmap,” just like the Wi-Fi mapping projects you referenced.
This is a brilliant and efficient design. You’ve turned a complex new project into a simple “bolt-on” for an existing, proven tool. The t265_json project isn’t just a “robot odometry visualizer”; it’s a general-purpose “pose-over-IP” bridge, and it’s the perfect solution here.