{"id":50150649,"url":"https://github.com/ioai-tech/rosview","last_synced_at":"2026-06-06T11:02:50.018Z","repository":{"id":358891245,"uuid":"1238559947","full_name":"ioai-tech/rosview","owner":"ioai-tech","description":"The visualization tool for Embodied Intelligence Data ","archived":false,"fork":false,"pushed_at":"2026-05-19T13:44:49.000Z","size":1323,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-19T15:47:05.626Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ioai-tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-14T08:25:28.000Z","updated_at":"2026-05-19T13:49:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ioai-tech/rosview","commit_stats":null,"previous_names":["ioai-tech/rosview"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ioai-tech/rosview","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioai-tech%2Frosview","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioai-tech%2Frosview/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioai-tech%2Frosview/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioai-tech%2Frosview/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ioai-tech","download_url":"https://codeload.github.com/ioai-tech/rosview/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioai-tech%2Frosview/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33426013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"online","status_checked_at":"2026-05-24T02:00:06.296Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-24T08:01:35.583Z","updated_at":"2026-06-06T11:02:50.011Z","avatar_url":"https://github.com/ioai-tech.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ROSView \u0026nbsp;·\u0026nbsp; [Live Demo →](https://rosview.com) \n\n[简体中文文档 - README.zh.md](README.zh.md)\n\n[![CI](https://github.com/ioai-tech/rosview/actions/workflows/ci.yml/badge.svg)](https://github.com/ioai-tech/rosview/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/@ioai/rosview)](https://www.npmjs.com/package/@ioai/rosview)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n\u003e High-performance, browser-native robotics data visualization. Built from scratch on React 19, Vite 8, and Web Workers.\n\nSupports **MCAP**, **ROS 1 bag**, **ROS 2 db3**, **HDF5**, and **BVH** files. Available as a standalone SPA (zero-install, runs at [rosview.com](https://rosview.com)) or as an embeddable npm package.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://rosview.com\"\u003e\n    \u003cimg src=\"docs/assets/rosview-demo.webp\" alt=\"ROSView demo — Realman pick and place\" width=\"920\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| [Embedding guide](docs/EMBEDDING.md) | Integrate `@ioai/rosview` into a React app (bundler, manifest, troubleshooting). Chinese: [EMBEDDING.zh.md](docs/EMBEDDING.zh.md). |\n| [API reference](docs/API.md) | Public exports: `RosViewer` props, types, preferences, layout helpers, extensions. Chinese: [API.zh.md](docs/API.zh.md). |\n| [Architecture](docs/ARCHITECTURE.md) | Requirements, design, and technical notes (SPA + npm). Chinese: [ARCHITECTURE.zh.md](docs/ARCHITECTURE.zh.md). |\n| [Development](docs/DEVELOPMENT.md) | Local setup, tests, Playwright, fixtures. |\n| [Release](docs/RELEASE.md) | Maintainer workflow: versioning, tags, npm \u0026 GitHub Releases. |\n| [Contributing](CONTRIBUTING.md) | Branch workflow, commits, PR checklist. |\n| [Security](SECURITY.md) | Supported versions and responsible disclosure. |\n| [Docs index](docs/README.md) | Full map of all documentation files. |\n\n**Simplified Chinese:** [README](README.zh.md) · [Embedding](docs/EMBEDDING.zh.md) · [API](docs/API.zh.md) · [Architecture](docs/ARCHITECTURE.zh.md)\n\n---\n\n## Features\n\n- **Multi-format** — MCAP · ROS 1 `.bag` · ROS 2 `.db3` · HDF5 `.h5/.hdf5` · BVH skeletal animation\n- **Zero-copy parsing** — dedicated Web Workers + Comlink; main thread is never blocked\n- **HTTP Range streaming** — load remote files without downloading them in full\n- **Multi-panel layout** — draggable, dockable panels powered by DockView\n- **Visualization panels** — Image (H.264), 3D (point clouds, URDF, TF), Plot (uPlot), Joints, Map, Audio, RawMessages, TopicGraph, Pose\n- **Internationalization** — English · Simplified Chinese · Japanese\n- **Dark / light / system** theme\n- **Extension API** — register third-party sidebar tabs and playback-track overlay regions\n\n---\n\n## Quick Start (SPA)\n\nOpen **[rosview.com](https://rosview.com)** in Chrome or Edge — no installation required.\n\nYou can deep-link directly to a file via URL parameters:\n\n```\nhttps://rosview.com?url=https://your-server.com/recording.mcap\nhttps://rosview.com?url=/examples/run.mcap\nhttps://rosview.com?url=file://run.mcap\nhttps://rosview.com?url=folder://MyDataset\nhttps://rosview.com?url=sample://franka_stack\nhttps://rosview.com?url=https://your-server.com/recording.mcap\u0026theme=dark\u0026language=zh\n```\n\nRemote manifests and multiple URLs are supported via the `fileManifest` / `urls` props when embedding the npm package.\n\n### Self-host\n\n```bash\ngit clone https://github.com/ioai-tech/rosview.git\ncd rosview\nnpm install\nnpm run dev          # development server at http://localhost:5173\nnpm run build        # production SPA → dist/\n```\n\n---\n\n## Embedding (npm package)\n\n### Installation\n\n```bash\nnpm install @ioai/rosview\n```\n\n\u003e **Peer dependencies**: React ≥ 19, react-dom ≥ 19, three, @react-three/fiber, and @react-three/drei must already be installed in your project.\n\n### Import the stylesheet\n\n```tsx\nimport '@ioai/rosview/style.css';\n```\n\n### Basic usage\n\n```tsx\nimport { RosViewer } from '@ioai/rosview';\n\nexport function MyApp() {\n  return (\n    \u003cRosViewer\n      url=\"https://your-server.com/recording.mcap\"\n      theme=\"dark\"\n      language=\"en\"\n    /\u003e\n  );\n}\n```\n\n### Load local files\n\n```tsx\nimport { RosViewer } from '@ioai/rosview';\n\nexport function FileLoader() {\n  const [file, setFile] = React.useState\u003cFile\u003e();\n\n  return (\n    \u003c\u003e\n      \u003cinput type=\"file\" accept=\".mcap,.bag,.db3,.h5,.hdf5,.bvh\"\n        onChange={e =\u003e setFile(e.target.files?.[0])} /\u003e\n      {file \u0026\u0026 \u003cRosViewer file={file} theme=\"system\" /\u003e}\n    \u003c/\u003e\n  );\n}\n```\n\n### Multiple sources + remote manifest\n\n```tsx\n\u003cRosViewer\n  urls={['https://cdn.example.com/run1.mcap', 'https://cdn.example.com/run2.mcap']}\n  fileManifest=\"https://cdn.example.com/manifest.json\"\n  theme=\"dark\"\n  language=\"zh\"\n  onFatalError={(err) =\u003e console.error('Fatal:', err)}\n/\u003e\n```\n\n**`manifest.json`** format:\n\n```json\n[\n  { \"url\": \"https://cdn.example.com/run1.mcap\", \"name\": \"Run 1\", \"sizeBytes\": 1073741824 },\n  { \"url\": \"https://cdn.example.com/run2.mcap\", \"name\": \"Run 2\", \"durationSec\": 120 }\n]\n```\n\n---\n\n## Supported File Formats\n\n| Format | Extension | Notes |\n|--------|-----------|-------|\n| MCAP | `.mcap` | ROS 2 / robotics standard; zstd and lz4 compression |\n| ROS 1 bag | `.bag` | ROS 1 recording format |\n| ROS 2 SQLite | `.db3` | ROS 2 default recording (via `sql.js` WASM) |\n| HDF5 | `.h5`, `.hdf5` | Scientific data; partial read via `@ioai/hdf5` |\n| BVH | `.bvh` | Skeletal motion capture animation |\n\nAll formats are parsed entirely in the browser via Web Workers — no server-side processing required.\n\n---\n\n## Keyboard Shortcuts\n\n| Key | Action |\n|-----|--------|\n| `Space` | Play / Pause |\n| `←` / `→` | Step backward / forward one frame |\n| `[` / `]` | Decrease / increase playback speed |\n| `Home` | Jump to start |\n| `End` | Jump to end |\n\n---\n\n## URL Parameters (SPA)\n\n| Parameter | Example | Description |\n|-----------|---------|-------------|\n| `url` | `?url=https://…/file.mcap` or `?url=/examples/run.mcap` | Single remote file; updated on load/switch via `pushState` |\n| `url` | `?url=file://name.mcap` | Local file locator (replay from Recent / IndexedDB handles) |\n| `url` | `?url=folder://MyDataset` | Local folder locator (replay from Recent directory handle) |\n| `url` | `?url=sample://franka_stack` | Sample id from the build-time manifest (`VITE_SAMPLE_DATASETS_MANIFEST_URL` / `VITE_SAMPLES_BASE_URL`) |\n| `theme` | `?theme=dark` | `light` · `dark` · `system` |\n| `language` | `?language=zh` | `en` · `zh` · `ja` |\n\nMultiple remote URLs or a remote manifest JSON URL are supported via the `urls` / `fileManifest` **props** when embedding the library, not via extra query keys in the standalone SPA.\n\n---\n\n## API Reference\n\nSee [docs/API.md](docs/API.md) for the complete component props, TypeScript types, utility functions, and advanced embedding patterns. Chinese: [docs/API.zh.md](docs/API.zh.md).\n\n---\n\n## Contributing\n\nWe welcome issues and pull requests! Please read [CONTRIBUTING.md](CONTRIBUTING.md) before submitting.\n\n- **Bug reports** — use the [Bug Report](.github/ISSUE_TEMPLATE/bug_report.yml) template\n- **Feature requests** — use the [Feature Request](.github/ISSUE_TEMPLATE/feature_request.yml) template\n- **Security vulnerabilities** — see [SECURITY.md](SECURITY.md)\n\n---\n\n## License\n\n[MIT](LICENSE) © 2026 [IO-AI Tech](https://rosview.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fioai-tech%2Frosview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fioai-tech%2Frosview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fioai-tech%2Frosview/lists"}