Step 1 — SDK Install

Install the Paxini SDK

Activate your virtual environment (created in Unit 0), then install the SDK:

source paxini-env/bin/activate # Install SDK with visualization extras pip install "paxini-sdk[viz]" # Verify installation python -c "import paxini; print(paxini.__version__)" # Expected: 1.2.x or later
No driver installation needed The Gen3 enumerates as a standard USB HID device. Windows, macOS, and Linux all support it automatically. If you are on Linux, run sudo python -m paxini.install_udev once to set USB permissions, then unplug and replug the sensor.
Step 2 — USB Connection

Connect the Sensor

Plug the Gen3 into your computer using the included USB-C cable. At this point, the sensor does not need to be mounted on a gripper — you can hold it in your hand or lay it flat for testing.

Verify the sensor is detected:

python -m paxini.discover # Expected output: # Found 1 Paxini device(s): # [0] PX-6AX-GEN3 serial=PX3A0042 firmware=1.2.4 variant=fingertip
Empty result? First: try a different USB-C cable — some cables are charge-only. Second: on Linux, run the udev rule installer as noted above. Third: check the sensor LED — solid means ready, blinking means firmware update mode (hold reset 5 seconds to exit).
Step 3 — First Reading

Your First 5-Line Streaming Script

Create a file called first_reading.py and paste this:

import paxini sensor = paxini.Sensor() sensor.start() for frame in sensor.stream(): print(f"Force: {frame.total_force_n:.3f} N | Contact: {frame.in_contact}")

Run it and press the sensor surface with your finger. You should see the force reading increase and in_contact switch to True. Press Ctrl+C to stop.

# Example output when pressing the sensor: Force: 0.001 N | Contact: False Force: 0.002 N | Contact: False Force: 0.241 N | Contact: True Force: 1.872 N | Contact: True Force: 3.105 N | Contact: True Force: 0.024 N | Contact: False
Step 4 — Heatmap Verification

Live Heatmap Verification

The built-in visualizer shows the full taxel array as a color-coded heatmap. This is how you verify that every taxel is functional and calibrated:

# Launch live heatmap (press Q to quit) python -m paxini.visualize

With the heatmap open:

  1. With no contact, the entire array should be a uniform dark blue (near-zero pressure). Any taxels that appear bright yellow at rest indicate a calibration issue — run sensor.calibrate() in Python to zero-offset.
  2. Press the sensor surface with your fingertip. A localized region should light up bright yellow/red corresponding to the contact area. Move your finger around — the pressure centroid should follow.
  3. Press evenly across the full sensing area. Every taxel should respond. Any taxel that remains dark when pressed is defective — contact Paxini support.
What a healthy heatmap looks like Resting state: uniformly dark (0–2 kPa background noise). Contact with one finger: a 2–4 taxel bright region at the contact point, smooth falloff. Full-palm press: a large bright region with no dead zones.

Unit 1 Complete When...

You can run python -m paxini.discover and see your sensor listed. The live heatmap shows a dark resting state and a localized bright region when you press the sensing surface. Every taxel responds to contact — no permanent dark zones.