dexsensor


Namedexsensor JSON
Version 0.3.1 PyPI version JSON
download
home_pageNone
SummaryA Python library for processing sensor data on Dexmate Robots
upload_time2025-10-10 04:41:32
maintainerNone
docs_urlNone
authorNone
requires_python<3.14,>=3.10
licenseNone
keywords robot robotics sensors camera imu python
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Dexsensor

A unified sensor management system for Dexmate robots. Dexsensor provides automatic robot detection and configuration for cameras, IMU, LiDAR, and other sensors through an easy-to-use command line interface.

![License](https://img.shields.io/badge/license-AGPL--3.0%20%7C%20Commercial-blue.svg)
![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue)

## Features

- **Automatic Robot Detection**: Detects robot model and loads appropriate sensor configuration
- **Multiple Robot Variants**: Support for different robot models with optimized sensor configurations  
- **Unified Sensor Management**: Consistent interface for cameras, IMU, LiDAR, and other sensors
- **Real-time Communication**: High-performance sensor data streaming with Zenoh and WebRTC
- **Hardware Timestamps**: Synchronized timestamps from camera hardware (ZED) and system time
- **Multi-process Support**: Robust sensor isolation with spawn-based multiprocessing
- **Flexible Configuration**: Easy configuration management with YAML files
- **Command Line Interface**: Simple CLI for sensor control and configuration

## Installation


```bash
# Install DexSensor package
pip install dexsensor

# Verify installation
dexsensor --help
```

## Quick Start

### Automatic Robot Detection

Set your robot model and launch sensors:

```bash
# Launch sensors with automatic detection
dexsensor launch
```

### Manual Robot Selection

```bash
# Launch specific sensors only
dexsensor launch --sensor head_camera base_front_camera

# Override configuration values
dexsensor launch --set head_camera.fps=60 lidar.enable=true
```


## Command Line Interface

### Launch Sensors

```bash
# Basic usage
dexsensor launch

# With specific robot model
dexsensor launch --robot vega-1

# Launch specific sensors
dexsensor launch --sensor head_camera lidar

# Launch all sensors (enables all sensors regardless of default config)
dexsensor launch --sensor all

# Launch all base cameras (base_left, base_right, base_front, base_back)
dexsensor launch --sensor base_camera

# Single-process mode (useful for debugging or ZED cameras)
dexsensor launch --single-process

# Override configuration
dexsensor launch --set head_camera.fps=60 lidar.enable=true

# Use custom configuration file
dexsensor launch --config /path/to/config.yaml

# Combine options
dexsensor launch --set head_camera.fps=30 --sensor head_camera
```

### Configuration Management

```bash
# Generate configuration template
dexsensor gen-cfg


# Save to custom location
dexsensor gen-cfg --output /path/to/config.yaml
```

### Command Options

| Option | Description | Example |
|--------|-------------|---------|
| `--robot` | Specify robot variant | `--robot vega-1` |
| `--sensor` | Launch specific sensors, "all", or "base_camera" | `--sensor head_camera lidar` |
| `--config` | Use custom config file | `--config config.yaml` |
| `--set` | Override config values | `--set head_camera.fps=60` |
| `--single-process` | Run in single-process mode | `--single-process` |
| `--zenoh` | Custom Zenoh config | `--zenoh zenoh.json5` |

## Configuration

### Configuration Files

DexSensor uses YAML configuration files with the following precedence:

1. **Command line overrides** (`--set key=value`)
2. **Custom configuration files** (`--config file.yaml`)
3. **Default configuration file** (`~/.dexmate/sensors/default_config.yaml`)
4. **Robot variant defaults** (based on detected/specified robot model)

### Configuration Example

```yaml
head_camera:
  enable: true
  fps: 30
  resolution: HD1080
  depth_mode: NEURAL

base_front_camera:
  enable: true
  width: 640
  height: 480
  fps: 30
  format: MJPG

lidar:
  enable: false
  ip_address: "192.168.50.41"
  udp_port: 8089

base_imu:
  enable: true

head_imu:
  enable: true
```


## Recent Updates (v0.3.1)

### Performance & Reliability
- **Hardware Timestamps**: All camera and depth streams now include synchronized timestamps from hardware (ZED) or system time
- **Multiprocess Improvements**: Fixed ZED SDK compatibility with spawn-based multiprocessing for better stability
- **WebRTC Enhancements**: Improved real-time streaming with automatic BGR to RGB conversion and better connection handling

### Data Serialization
- **Protobuf Support**: LiDAR data now uses efficient protobuf serialization from DexComm
- **Timestamp Integration**: All sensor data includes nanosecond-precision timestamps for synchronization
- **Future-Ready Architecture**: Prepared infrastructure for 3D LiDAR and additional sensor types

## Sensor Types

- **Cameras**: 
  - RGB cameras with JPEG/PNG compression
  - Stereo cameras (ZED) with depth sensing
  - RGBD cameras with synchronized timestamps
  - WebRTC streaming support for low-latency video
- **IMU**: Inertial measurement units for head and base
- **LiDAR**: 
  - 2D laser range finders with protobuf serialization
  - Support for RPLIDAR and network-based LiDARs
- **Additional sensors**: Extensible architecture for future sensor types

## System Requirements

- **Operating System**: Linux (Ubuntu 20.04+ recommended)
- **Python**: 3.10, 3.11, 3.12, or 3.13
- **Hardware**: Compatible Dexmate robot hardware or USB cameras
- **Optional**: ZED SDK for ZED camera support

## Troubleshooting

### Common Issues

**ZED camera malloc errors:**
```bash
# Use single-process mode for ZED cameras to avoid fork() issues
dexsensor launch --sensor head_camera --single-process
```

**USB device permissions:**
```bash
# Add user to dialout group for serial device access
sudo usermod -a -G dialout $USER
# Log out and back in for changes to take effect
```

**Camera not detected:**
```bash
# List available cameras
ls /dev/video*
# Check camera permissions
ls -l /dev/video*
```

**Network sensor connectivity:**
```bash
# Test LiDAR network connection
ping 192.168.50.41  # Replace with your sensor IP
```

## Licensing

This project is dual-licensed:

### Open Source License
This software is available under the GNU Affero General Public License v3.0 (AGPL-3.0).
See the [LICENSE](./LICENSE) file for details.

### Commercial License
For businesses that want to use this software in proprietary applications without the AGPL requirements, commercial licenses are available. Contact us for commercial licensing: contact@dexmate.ai

Commercial licenses provide:
- Right to use in closed-source applications
- No source code disclosure requirements
- Priority support options

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "dexsensor",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.14,>=3.10",
    "maintainer_email": null,
    "keywords": "robot, robotics, sensors, camera, imu, python",
    "author": null,
    "author_email": "Dexmate <contact@dexmate.ai>",
    "download_url": null,
    "platform": null,
    "description": "# Dexsensor\n\nA unified sensor management system for Dexmate robots. Dexsensor provides automatic robot detection and configuration for cameras, IMU, LiDAR, and other sensors through an easy-to-use command line interface.\n\n![License](https://img.shields.io/badge/license-AGPL--3.0%20%7C%20Commercial-blue.svg)\n![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue)\n\n## Features\n\n- **Automatic Robot Detection**: Detects robot model and loads appropriate sensor configuration\n- **Multiple Robot Variants**: Support for different robot models with optimized sensor configurations  \n- **Unified Sensor Management**: Consistent interface for cameras, IMU, LiDAR, and other sensors\n- **Real-time Communication**: High-performance sensor data streaming with Zenoh and WebRTC\n- **Hardware Timestamps**: Synchronized timestamps from camera hardware (ZED) and system time\n- **Multi-process Support**: Robust sensor isolation with spawn-based multiprocessing\n- **Flexible Configuration**: Easy configuration management with YAML files\n- **Command Line Interface**: Simple CLI for sensor control and configuration\n\n## Installation\n\n\n```bash\n# Install DexSensor package\npip install dexsensor\n\n# Verify installation\ndexsensor --help\n```\n\n## Quick Start\n\n### Automatic Robot Detection\n\nSet your robot model and launch sensors:\n\n```bash\n# Launch sensors with automatic detection\ndexsensor launch\n```\n\n### Manual Robot Selection\n\n```bash\n# Launch specific sensors only\ndexsensor launch --sensor head_camera base_front_camera\n\n# Override configuration values\ndexsensor launch --set head_camera.fps=60 lidar.enable=true\n```\n\n\n## Command Line Interface\n\n### Launch Sensors\n\n```bash\n# Basic usage\ndexsensor launch\n\n# With specific robot model\ndexsensor launch --robot vega-1\n\n# Launch specific sensors\ndexsensor launch --sensor head_camera lidar\n\n# Launch all sensors (enables all sensors regardless of default config)\ndexsensor launch --sensor all\n\n# Launch all base cameras (base_left, base_right, base_front, base_back)\ndexsensor launch --sensor base_camera\n\n# Single-process mode (useful for debugging or ZED cameras)\ndexsensor launch --single-process\n\n# Override configuration\ndexsensor launch --set head_camera.fps=60 lidar.enable=true\n\n# Use custom configuration file\ndexsensor launch --config /path/to/config.yaml\n\n# Combine options\ndexsensor launch --set head_camera.fps=30 --sensor head_camera\n```\n\n### Configuration Management\n\n```bash\n# Generate configuration template\ndexsensor gen-cfg\n\n\n# Save to custom location\ndexsensor gen-cfg --output /path/to/config.yaml\n```\n\n### Command Options\n\n| Option | Description | Example |\n|--------|-------------|---------|\n| `--robot` | Specify robot variant | `--robot vega-1` |\n| `--sensor` | Launch specific sensors, \"all\", or \"base_camera\" | `--sensor head_camera lidar` |\n| `--config` | Use custom config file | `--config config.yaml` |\n| `--set` | Override config values | `--set head_camera.fps=60` |\n| `--single-process` | Run in single-process mode | `--single-process` |\n| `--zenoh` | Custom Zenoh config | `--zenoh zenoh.json5` |\n\n## Configuration\n\n### Configuration Files\n\nDexSensor uses YAML configuration files with the following precedence:\n\n1. **Command line overrides** (`--set key=value`)\n2. **Custom configuration files** (`--config file.yaml`)\n3. **Default configuration file** (`~/.dexmate/sensors/default_config.yaml`)\n4. **Robot variant defaults** (based on detected/specified robot model)\n\n### Configuration Example\n\n```yaml\nhead_camera:\n  enable: true\n  fps: 30\n  resolution: HD1080\n  depth_mode: NEURAL\n\nbase_front_camera:\n  enable: true\n  width: 640\n  height: 480\n  fps: 30\n  format: MJPG\n\nlidar:\n  enable: false\n  ip_address: \"192.168.50.41\"\n  udp_port: 8089\n\nbase_imu:\n  enable: true\n\nhead_imu:\n  enable: true\n```\n\n\n## Recent Updates (v0.3.1)\n\n### Performance & Reliability\n- **Hardware Timestamps**: All camera and depth streams now include synchronized timestamps from hardware (ZED) or system time\n- **Multiprocess Improvements**: Fixed ZED SDK compatibility with spawn-based multiprocessing for better stability\n- **WebRTC Enhancements**: Improved real-time streaming with automatic BGR to RGB conversion and better connection handling\n\n### Data Serialization\n- **Protobuf Support**: LiDAR data now uses efficient protobuf serialization from DexComm\n- **Timestamp Integration**: All sensor data includes nanosecond-precision timestamps for synchronization\n- **Future-Ready Architecture**: Prepared infrastructure for 3D LiDAR and additional sensor types\n\n## Sensor Types\n\n- **Cameras**: \n  - RGB cameras with JPEG/PNG compression\n  - Stereo cameras (ZED) with depth sensing\n  - RGBD cameras with synchronized timestamps\n  - WebRTC streaming support for low-latency video\n- **IMU**: Inertial measurement units for head and base\n- **LiDAR**: \n  - 2D laser range finders with protobuf serialization\n  - Support for RPLIDAR and network-based LiDARs\n- **Additional sensors**: Extensible architecture for future sensor types\n\n## System Requirements\n\n- **Operating System**: Linux (Ubuntu 20.04+ recommended)\n- **Python**: 3.10, 3.11, 3.12, or 3.13\n- **Hardware**: Compatible Dexmate robot hardware or USB cameras\n- **Optional**: ZED SDK for ZED camera support\n\n## Troubleshooting\n\n### Common Issues\n\n**ZED camera malloc errors:**\n```bash\n# Use single-process mode for ZED cameras to avoid fork() issues\ndexsensor launch --sensor head_camera --single-process\n```\n\n**USB device permissions:**\n```bash\n# Add user to dialout group for serial device access\nsudo usermod -a -G dialout $USER\n# Log out and back in for changes to take effect\n```\n\n**Camera not detected:**\n```bash\n# List available cameras\nls /dev/video*\n# Check camera permissions\nls -l /dev/video*\n```\n\n**Network sensor connectivity:**\n```bash\n# Test LiDAR network connection\nping 192.168.50.41  # Replace with your sensor IP\n```\n\n## Licensing\n\nThis project is dual-licensed:\n\n### Open Source License\nThis software is available under the GNU Affero General Public License v3.0 (AGPL-3.0).\nSee the [LICENSE](./LICENSE) file for details.\n\n### Commercial License\nFor businesses that want to use this software in proprietary applications without the AGPL requirements, commercial licenses are available. Contact us for commercial licensing: contact@dexmate.ai\n\nCommercial licenses provide:\n- Right to use in closed-source applications\n- No source code disclosure requirements\n- Priority support options\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A Python library for processing sensor data on Dexmate Robots",
    "version": "0.3.1",
    "project_urls": null,
    "split_keywords": [
        "robot",
        " robotics",
        " sensors",
        " camera",
        " imu",
        " python"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "337262997f6a817a69be3fca84003638595bfc0f8de3a89c6e7ec3eb4b03bfed",
                "md5": "d91a461f41e168352dc05a7221b1d910",
                "sha256": "3caf601b4e04f9b8d6c7f00d3f990c033d7d9909370142af61b350734b5046db"
            },
            "downloads": -1,
            "filename": "dexsensor-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "d91a461f41e168352dc05a7221b1d910",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<3.14,>=3.10",
            "size": 672973,
            "upload_time": "2025-10-10T04:41:32",
            "upload_time_iso_8601": "2025-10-10T04:41:32.025641Z",
            "url": "https://files.pythonhosted.org/packages/33/72/62997f6a817a69be3fca84003638595bfc0f8de3a89c6e7ec3eb4b03bfed/dexsensor-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fdddc96a63819716576b39945785d8339e923d933792a11b360fd816a1ad79cd",
                "md5": "e9fb7f874999fcc04e2847f7ccbe8ec4",
                "sha256": "5fc7a292accc0ed7439d4dc43268a72c6b56900c65db845d1ffcd5a0d82a405b"
            },
            "downloads": -1,
            "filename": "dexsensor-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e9fb7f874999fcc04e2847f7ccbe8ec4",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<3.14,>=3.10",
            "size": 713405,
            "upload_time": "2025-10-10T04:41:33",
            "upload_time_iso_8601": "2025-10-10T04:41:33.538259Z",
            "url": "https://files.pythonhosted.org/packages/fd/dd/c96a63819716576b39945785d8339e923d933792a11b360fd816a1ad79cd/dexsensor-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6c22d1cb8e927e5de4ec8ecdc5e34d046a4e79558e87b01f87fe6299041bffa0",
                "md5": "f2e2fc6c3bda61321264517ade918c36",
                "sha256": "d1956f9f9f4822859942c2370d56a7438103e3ef80c1ac21655c838c6567780f"
            },
            "downloads": -1,
            "filename": "dexsensor-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "f2e2fc6c3bda61321264517ade918c36",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<3.14,>=3.10",
            "size": 658919,
            "upload_time": "2025-10-10T04:41:34",
            "upload_time_iso_8601": "2025-10-10T04:41:34.914422Z",
            "url": "https://files.pythonhosted.org/packages/6c/22/d1cb8e927e5de4ec8ecdc5e34d046a4e79558e87b01f87fe6299041bffa0/dexsensor-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5efc959887ab912b588b428a7837ad8b256da41703c222c9adc28323702e7562",
                "md5": "9657f0e9f382db97b317b3d56acb07d3",
                "sha256": "cdcebc161cc278b546c9759f8f7ac5e88504a1c82c5e80729daffd4aea4dda7d"
            },
            "downloads": -1,
            "filename": "dexsensor-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9657f0e9f382db97b317b3d56acb07d3",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<3.14,>=3.10",
            "size": 701567,
            "upload_time": "2025-10-10T04:41:36",
            "upload_time_iso_8601": "2025-10-10T04:41:36.381949Z",
            "url": "https://files.pythonhosted.org/packages/5e/fc/959887ab912b588b428a7837ad8b256da41703c222c9adc28323702e7562/dexsensor-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "325b153a34167431f491b393543fa4c369941842dd5d873e936bf639f8c446a6",
                "md5": "0b5509d498e8fee75a6e4131b4bc85fb",
                "sha256": "7fd3bfd9e53a093d6d7db4007a1f37e88e624ee34d1dd4f0eb70dc08f478d9cc"
            },
            "downloads": -1,
            "filename": "dexsensor-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "0b5509d498e8fee75a6e4131b4bc85fb",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<3.14,>=3.10",
            "size": 697734,
            "upload_time": "2025-10-10T04:41:37",
            "upload_time_iso_8601": "2025-10-10T04:41:37.498798Z",
            "url": "https://files.pythonhosted.org/packages/32/5b/153a34167431f491b393543fa4c369941842dd5d873e936bf639f8c446a6/dexsensor-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e1e3808d8462bb608b580011f0beb60f489e0445c29d5cdcfa0d656d9ee1ccfb",
                "md5": "5b84acc77671872dabef441c9af22d47",
                "sha256": "1d192166d8e15bff69da34d370d4ed970f70ddc6d26e6cc051a458b308ef7235"
            },
            "downloads": -1,
            "filename": "dexsensor-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5b84acc77671872dabef441c9af22d47",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<3.14,>=3.10",
            "size": 753172,
            "upload_time": "2025-10-10T04:41:38",
            "upload_time_iso_8601": "2025-10-10T04:41:38.534403Z",
            "url": "https://files.pythonhosted.org/packages/e1/e3/808d8462bb608b580011f0beb60f489e0445c29d5cdcfa0d656d9ee1ccfb/dexsensor-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "75063cfd158988f209bee9c8dd12f2af689b1e12fe3fbd7b875fc510858deab5",
                "md5": "b4cba1b9c233f950fade74e454c7b14d",
                "sha256": "68efc29ad810a86c5cb52a3ebdda422f34dc4ae136cd210b6f3edf19aa1c967f"
            },
            "downloads": -1,
            "filename": "dexsensor-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "b4cba1b9c233f950fade74e454c7b14d",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": "<3.14,>=3.10",
            "size": 698265,
            "upload_time": "2025-10-10T04:41:39",
            "upload_time_iso_8601": "2025-10-10T04:41:39.581015Z",
            "url": "https://files.pythonhosted.org/packages/75/06/3cfd158988f209bee9c8dd12f2af689b1e12fe3fbd7b875fc510858deab5/dexsensor-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8fdd62443615a7daf8ca3948073eae15b139bc2fba522578f222ee8f61912db6",
                "md5": "b8b43c9bde937d164887a8d3a7ab606a",
                "sha256": "acdd15417e856b46e10086575d768f33a3f608e6d2f75ca45384d81050e56f7b"
            },
            "downloads": -1,
            "filename": "dexsensor-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b8b43c9bde937d164887a8d3a7ab606a",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": "<3.14,>=3.10",
            "size": 754423,
            "upload_time": "2025-10-10T04:41:40",
            "upload_time_iso_8601": "2025-10-10T04:41:40.998201Z",
            "url": "https://files.pythonhosted.org/packages/8f/dd/62443615a7daf8ca3948073eae15b139bc2fba522578f222ee8f61912db6/dexsensor-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-10 04:41:32",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "dexsensor"
}
        
Elapsed time: 1.64328s