feat: integrate tactile stream decoding
This commit is contained in:
93
README.md
Normal file
93
README.md
Normal file
@@ -0,0 +1,93 @@
|
||||
# TouchSensor 2.0
|
||||
|
||||
> Real-time tactile sensor exploration UI powered by Qt 6 and a custom Modern Qt component toolkit.
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||

|
||||
|
||||
## Highlights
|
||||
- Modern, material-inspired desktop shell built on the in-repo `modern-qt` library.
|
||||
- Modular component system (`NavComponent`, `ViewComponent`) for quick UI experiments.
|
||||
- Real-time tactile matrix visualisation via the `HeatMapPlot` wrapper around QCustomPlot.
|
||||
- Codec infrastructure (`components/ffmsep`) ready for custom tactile packet decoding.
|
||||
- Serial transport module scaffolded for COM port discovery and streaming.
|
||||
|
||||
## Architecture At A Glance
|
||||
- **Entry point**: `main.cc` composes the themed window, navigation rail, and card-based layout.
|
||||
- **Components**: `components/` hosts UI widgets, charts, and the tactile decoder pipeline.
|
||||
- **Modern Qt toolkit**: `modern-qt/` provides declarative wrappers, theming, and Material icon helpers.
|
||||
- **Data layer**: `components/ffmsep` implements codec registration, packet decoding, and tactile frame processing.
|
||||
- **Visualisation**: `components/charts/heatmap.*` exposes a themable heatmap control for sensor grids.
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Prerequisites
|
||||
- CMake 3.20+
|
||||
- A C++23-capable compiler (MSVC 19.3x, Clang 16+, or GCC 13+)
|
||||
- Qt 6 (Widgets, Network, PrintSupport modules)
|
||||
- Eigen3
|
||||
- `spdlog` (fetched via package manager or provided to CMake)
|
||||
|
||||
Ensure `Qt6_DIR` (or `CMAKE_PREFIX_PATH`) points to the Qt install so CMake can locate the required modules.
|
||||
|
||||
### Configure & Build
|
||||
|
||||

|
||||
```powershell
|
||||
pacman -Sy
|
||||
pacman -S mingw-w64-x86_64-toolchain
|
||||
pacman -S mingw64/mingw-w64-x86_64-qt6-base
|
||||
pacman -S mingw-w64-x86_64-eigen3 mingw-w64-x86_64-yaml-cpp
|
||||
|
||||
mkdir build
|
||||
cmake -G "MinGW Makefiles" -B build -DCMAKE_INSTALL_PREFIX="YOUR INSTALL PATH"
|
||||
|
||||
cd build && mingw32-make install
|
||||
|
||||
cat install_manifest.txt
|
||||
```
|
||||
|
||||
To run from the build directory:
|
||||
|
||||
```powershell
|
||||
.\touchsensor.exe
|
||||
```
|
||||
|
||||
On Linux/macOS adjust the Qt path and executable name accordingly.
|
||||
|
||||
## Project Layout
|
||||
|
||||
```text
|
||||
.
|
||||
|-- components/
|
||||
| |-- charts/ # QCustomPlot-based visualisations (heatmaps, etc.)
|
||||
| |-- ffmsep/ # Codec system and tactile decoder experiments
|
||||
| |-- view.cc # Main dashboard composition
|
||||
| `-- ... # Additional UI widgets
|
||||
|-- modern-qt/ # In-house declarative Qt UI framework
|
||||
|-- serial/ # Serial communication helper library
|
||||
|-- images/logo.png # Current app branding
|
||||
|-- main.cc # Application bootstrap
|
||||
`-- CMakeLists.txt # Build script (adds Qt, Eigen, Modern Qt, Serial, SPDLOG)
|
||||
```
|
||||
|
||||
## Roadmap (WIP)
|
||||
- Flesh out tactile codec implementations and connect them to live serial streams.
|
||||
- Replace placeholder random data with decoded sensor frames.
|
||||
- Expand navigation targets beyond the current demo cards.
|
||||
- Capture screenshots or recordings for documentation.
|
||||
- Polish theming, animation masks, and landing experience.
|
||||
|
||||
## Contributing
|
||||
This repository is in active development; feel free to open issues or PRs once guidelines land. Until then, keep discussions in the project chat or issues board.
|
||||
|
||||
## Acknowledgements
|
||||
- [Qt](https://www.qt.io/) for the core UI framework.
|
||||
- [QCustomPlot](https://www.qcustomplot.com/) powering the heatmap widget.
|
||||
- [spdlog](https://github.com/gabime/spdlog) for logging (wired via CMake).
|
||||
- Internal **Modern Qt** toolkit built on top of creeper-qt utilities.
|
||||
Reference in New Issue
Block a user