94 lines
3.8 KiB
Markdown
94 lines
3.8 KiB
Markdown
# 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.
|