| Name | dexsensor JSON |
| Version |
0.3.1
JSON |
| download |
| home_page | None |
| Summary | A Python library for processing sensor data on Dexmate Robots |
| upload_time | 2025-10-10 04:41:32 |
| maintainer | None |
| docs_url | None |
| author | None |
| requires_python | <3.14,>=3.10 |
| license | None |
| 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.


## 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\n\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"
}