Skip to main content

Python API/SDK for Nibotics NI-PRVS01 Dexterous Hand

Project description

Nibotics NI-PRVS01 Python SDK

Python API/SDK for the Nibotics NI-PRVS01 — a 7-DOF dexterous robotic hand with 24-channel pressure sensing, 14-channel microphone array, and IMU.


Hardware Overview

Feature Specification
DOF 7 actuated (11 joints)
Fingers 5 (Pinky, Ring, Middle, Index, Thumb)
Pressure sensors 24 channels
Temperature sensors 24 channels
Microphones 14 channels (mic1: 8ch, mic2: 6ch)
IMU 3-axis accelerometer + gyroscope
Interface USB Serial (115200 baud)
Firmware Auto-detected (19 or 24 channel)

Installation

pip install nibotics-hand

Or install from source:

git clone https://github.com/nibotics/nibotics-hand-python.git
cd nibotics-hand-python
pip install -e .

Quick Start

from nibotics import NI_PRVS01

# Connect to hand
# Windows: use COM port  e.g. COM3, COM6, COM7
# Linux:   use /dev/ttyACM* e.g. /dev/ttyACM0, /dev/ttyACM1
hand = NI_PRVS01('COM6')        # Windows
hand = NI_PRVS01('/dev/ttyACM0') # Linux
hand.connect()

# Move a single finger
hand.move('pinky', position=4095, speed=100)

# Move all fingers
hand.move_all(
    positions=[4095, 4095, 4095, 4095, 2000, 2000, 2000],
    speeds=[100] * 7
)

# Read sensors
data = hand.read_sensors()
print(data.pressure)      # dict per finger
print(data.temperature)   # dict per finger
print(data.imu.accel)     # {'x': ..., 'y': ..., 'z': ...}

# Disconnect
hand.disconnect()

Gestures

hand.open()          # all fingers open (position=0)
hand.close_all()     # all fingers closed (position=4095)
hand.fist()          # full fist
hand.pinch()         # pinch grasp
hand.point()         # index finger extended
hand.thumbs_up()     # thumb extended, fingers closed

Motor Control

The hand has 7 motors:

Index Motor Range
0 Pinky 0 – 4095
1 Ring 0 – 4095
2 Middle 0 – 4095
3 Index 0 – 4095
4 Thumb radial extension 0 – 4095
5 Thumb flexion 0 – 4095
6 Thumb grasp 0 – 4095

Speed range: 0 – 250


Sensor Data

data = hand.read_sensors()

# Pressure (hPa) per finger
data.pressure['pinky']   # list of sensor values
data.pressure['ring']
data.pressure['middle']
data.pressure['index']
data.pressure['thumb_radial_extension']

# Temperature (°C) per finger
data.temperature['pinky']

# Motor feedback
data.positions  # list of 7 current positions
data.speeds     # list of 7 current speeds

# IMU
data.imu.accel  # {'x': ..., 'y': ..., 'z': ...}
data.imu.gyro   # {'x': ..., 'y': ..., 'z': ...}

Sensor Callbacks

def on_data(sensor_data):
    print(sensor_data.pressure)

hand.on_sensor_update = on_data
hand.connect()

Context Manager

with NI_PRVS01('/dev/ttyACM0') as hand:
    hand.fist()
    hand.open()

Repository Structure

nibotics-hand-python/
├── nibotics/
│   ├── __init__.py        # Public API
│   ├── hand.py            # NI_PRVS01 main class
│   ├── protocol.py        # Binary serial protocol parser
│   ├── definitions.py     # Protocol constants & PAGE_MAP
│   └── sensor_data.py     # SensorData / IMUData dataclasses
├── tests/
│   ├── unit/              # Unit tests
│   └── integration/       # Hardware integration tests
├── examples/              # Usage examples
├── pyproject.toml
└── setup.py

Requirements

  • Python ≥ 3.8
  • pyserial ≥ 3.5

License

BSD-3-Clause © Nibotics GmbH


Contact

Rohith Anju Nath Vadigineni- rohith.vadigineni@nibotics.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nibotics_hand-0.1.0.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nibotics_hand-0.1.0-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file nibotics_hand-0.1.0.tar.gz.

File metadata

  • Download URL: nibotics_hand-0.1.0.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for nibotics_hand-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b9d6595b9fb8d9817ba3fa5aa3b4e5774a73484955018dae7d20f5aec83fde0d
MD5 b981922309066453e072487d299ec8ef
BLAKE2b-256 dd4d8d223592a03542aa502dd1208217cfe25cffc84e31683d7e97960dc1006d

See more details on using hashes here.

File details

Details for the file nibotics_hand-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: nibotics_hand-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for nibotics_hand-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c83be618d66dab28496ced1b2b1d12c9aa3afb7a9c313ab5310e3e78cd00bcce
MD5 e9dd63c406d1ebbd29da98156c09a87d
BLAKE2b-256 9156a277b508e3de9ba8e71b9559fa7ce5b547a85119c019287005756734d4a6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page