2025-10-29 14:12:11 +08:00
2025-10-29 14:09:28 +08:00
2025-10-29 14:09:28 +08:00
2025-10-20 00:32:01 +08:00
2025-10-20 00:32:01 +08:00
2025-10-29 14:12:11 +08:00
2025-10-29 14:09:28 +08:00

TouchSensor 2.0

Real-time tactile sensor exploration UI powered by Qt 6 and a custom Modern Qt component toolkit.

Status Qt 6 C++23 CMake UI Toolkit

TouchSensor Logo

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

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:

.\touchsensor.exe

On Linux/macOS adjust the Qt path and executable name accordingly.

Project Layout

.
|-- 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 for the core UI framework.
  • QCustomPlot powering the heatmap widget.
  • spdlog for logging (wired via CMake).
  • Internal Modern Qt toolkit built on top of creeper-qt utilities.
Description
No description provided
Readme 4.1 MiB
Languages
C++ 99.7%
CMake 0.3%