DearBagPlayer


NameDearBagPlayer JSON
Version 0.3.0 PyPI version JSON
download
home_pageNone
SummaryDearBagPlayer is a flexible rosbag player based on Dear PyGui in Python.
upload_time2024-09-18 19:46:24
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT
keywords dearpygui visualization rosbag
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # DearBagPlayer
DearBagPlayer is a flexible rosbag player based on Dear PyGui in Python.

## Quick Start

Install dependencies:

```shell
pip install dearpygui numpy
pip install --extra-index-url https://rospypi.github.io/simple/ rosbag
```

Install DearBagPlayer:

```shell
pip install dearbagplayer # from https://pypi.org/
```

Run DearBagPlayer:

```shell
dearbagplayer
```

See [features](#Features) below to take a quick look at the main features.

Example rosbag files can be found in [Magic-wei/DearBagPlayerDemoData](https://github.com/Magic-wei/DearBagPlayerDemoData) for people who would like to try DearBagPlayer. See more details about the examples there.

This project is still under developing, see [TODO](#TODO) for future work. **Currently DearBagPlayer only supports topics that contain data entities with type of int, float, bool and lists or tuples with fixed size.**

## Dependencies

- Windows 10 or at least Ubuntu 20.04 LTS
- Python 3 - Tested on Python 3.9, should work on other Python 3 versions as well
- [DearPyGui](https://github.com/hoffstadt/DearPyGui)
- NumPy
- rosbag

## Features

### Load data from rosbag files

Load up to 10 bag files each time to load data into the data pool.

<img src="./images/open_bags.gif" style="width:80%;" />

### Drag to plot

Select entities first and drag them to the plot area, drop to plot. Three types of plot enabled:

- Time series plot (drag and drop directly)
- XY plot (with `ctrl` key)
- Data vs. travel distance plot (with `shift` key)

<img src="./images/drag_to_plot.gif" style="width:80%;" />

### Flexible timeline modification

- Play forward/backward
- Modify play speed
- Sync timestamp by drag timeline
- Play in loop

<img src="./images/timeline.gif" style="width:80%;" />

### Zoom in/out at runtime, create new plot tab, delete and clear plots

- Zoom in/out at runtime
- Create new plot tab
- Delete single plot by right-click button of the legend
- Clear all plots in the activated plot tab with one click

<img src="./images/other_features.gif" style="width:80%;" />



## TODO

- DearBagPlayer
  - [x] Data pool:
    - [x] Get message struct from rosbag
    - [x] Get information of all the topics in a rosbag file
    - [x] Load and maintain a data dict for each topic (especially with different timestamps)
    - [x] Create selectable items for each message entity that has the type of int, float or bool
    - [x] Select bag files (up to 10 each time) to load data into the data pool
    - [x] Select dragged topic when it is not yet selected
    - [ ] Add widgets to specify topics to read from bag files (currently it has the feature of specifying topics in code)
    - [ ] Create custom series from selected topics
  - [x] Drag and drop callbacks to plot:
    - [x] Drag time series to plot
    - [x] Drag XY plot (drop with `ctrl` key)
    - [x] Drag data vs. travel distance plot (drop with `shift` key)
    - [x] Create error popup if XY plot or data vs travel distance series come from different rosbag files
  - [ ] Timeline management:
    - [x] Play forward/backward
    - [x] Modify play speed (-5 to 5)
    - [x] Sync timestamp by drag timeline
    - [x] Add button to enable/disable playing in loop
    - [ ] Add hotkeys to play/pause/stop
  - [ ] Plots:
    - [x] Create new plot tab with 2x2 subplots
    - [x] Enable drop callbacks (single time series)
    - [x] Enable drop callbacks (XY plot)
    - [x] Enable drop callbacks (Data vs. travel distance)
    - [x] Clear all plots in the activated plot tab with one click
    - [x] Create new plot tab with one click
    - [x] Enable closing plot tab
    - [x] Enable closing all series in a plot tab
    - [x] Enable renaming plot tab
    - [x] Resize at runtime
    - [x] Split plots vertically or horizontally at runtime
    - [ ] Copy plots or save to files
  - [ ] Enable live streaming
  - [ ] Enable publishing
  - [ ] Save and load config files
  - [x] Packaging
    - [x] Convert DearBagPlayer to a Python package
    - [x] Add entry point for CLI usage
    - [x] Configure setup
    - [x] Release to PyPI

## License

[MIT License](./LICENSE)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "DearBagPlayer",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "DearPyGui, Visualization, rosbag",
    "author": null,
    "author_email": "Wei Wang <wei.wang.bit@outlook.com>",
    "download_url": "https://files.pythonhosted.org/packages/ed/a1/f033bcb9240ba4f488951b56c41c2222e6f429bb13bda8f5da0eba0c236d/dearbagplayer-0.3.0.tar.gz",
    "platform": null,
    "description": "# DearBagPlayer\nDearBagPlayer is a flexible rosbag player based on Dear PyGui in Python.\n\n## Quick Start\n\nInstall dependencies:\n\n```shell\npip install dearpygui numpy\npip install --extra-index-url https://rospypi.github.io/simple/ rosbag\n```\n\nInstall DearBagPlayer:\n\n```shell\npip install dearbagplayer # from https://pypi.org/\n```\n\nRun DearBagPlayer:\n\n```shell\ndearbagplayer\n```\n\nSee [features](#Features) below to take a quick look at the main features.\n\nExample rosbag files can be found in [Magic-wei/DearBagPlayerDemoData](https://github.com/Magic-wei/DearBagPlayerDemoData) for people who would like to try DearBagPlayer. See more details about the examples there.\n\nThis project is still under developing, see [TODO](#TODO) for future work. **Currently DearBagPlayer only supports topics that contain data entities with type of int, float, bool and lists or tuples with fixed size.**\n\n## Dependencies\n\n- Windows 10 or at least Ubuntu 20.04 LTS\n- Python 3 - Tested on Python 3.9, should work on other Python 3 versions as well\n- [DearPyGui](https://github.com/hoffstadt/DearPyGui)\n- NumPy\n- rosbag\n\n## Features\n\n### Load data from rosbag files\n\nLoad up to 10 bag files each time to load data into the data pool.\n\n<img src=\"./images/open_bags.gif\" style=\"width:80%;\" />\n\n### Drag to plot\n\nSelect entities first and drag them to the plot area, drop to plot. Three types of plot enabled:\n\n- Time series plot (drag and drop directly)\n- XY plot (with `ctrl` key)\n- Data vs. travel distance plot (with `shift` key)\n\n<img src=\"./images/drag_to_plot.gif\" style=\"width:80%;\" />\n\n### Flexible timeline modification\n\n- Play forward/backward\n- Modify play speed\n- Sync timestamp by drag timeline\n- Play in loop\n\n<img src=\"./images/timeline.gif\" style=\"width:80%;\" />\n\n### Zoom in/out at runtime, create new plot tab, delete and clear plots\n\n- Zoom in/out at runtime\n- Create new plot tab\n- Delete single plot by right-click button of the legend\n- Clear all plots in the activated plot tab with one click\n\n<img src=\"./images/other_features.gif\" style=\"width:80%;\" />\n\n\n\n## TODO\n\n- DearBagPlayer\n  - [x] Data pool:\n    - [x] Get message struct from rosbag\n    - [x] Get information of all the topics in a rosbag file\n    - [x] Load and maintain a data dict for each topic (especially with different timestamps)\n    - [x] Create selectable items for each message entity that has the type of int, float or bool\n    - [x] Select bag files (up to 10 each time) to load data into the data pool\n    - [x] Select dragged topic when it is not yet selected\n    - [ ] Add widgets to specify topics to read from bag files (currently it has the feature of specifying topics in code)\n    - [ ] Create custom series from selected topics\n  - [x] Drag and drop callbacks to plot:\n    - [x] Drag time series to plot\n    - [x] Drag XY plot (drop with `ctrl` key)\n    - [x] Drag data vs. travel distance plot (drop with `shift` key)\n    - [x] Create error popup if XY plot or data vs travel distance series come from different rosbag files\n  - [ ] Timeline management:\n    - [x] Play forward/backward\n    - [x] Modify play speed (-5 to 5)\n    - [x] Sync timestamp by drag timeline\n    - [x] Add button to enable/disable playing in loop\n    - [ ] Add hotkeys to play/pause/stop\n  - [ ] Plots:\n    - [x] Create new plot tab with 2x2 subplots\n    - [x] Enable drop callbacks (single time series)\n    - [x] Enable drop callbacks (XY plot)\n    - [x] Enable drop callbacks (Data vs. travel distance)\n    - [x] Clear all plots in the activated plot tab with one click\n    - [x] Create new plot tab with one click\n    - [x] Enable closing plot tab\n    - [x] Enable closing all series in a plot tab\n    - [x] Enable renaming plot tab\n    - [x] Resize at runtime\n    - [x] Split plots vertically or horizontally at runtime\n    - [ ] Copy plots or save to files\n  - [ ] Enable live streaming\n  - [ ] Enable publishing\n  - [ ] Save and load config files\n  - [x] Packaging\n    - [x] Convert DearBagPlayer to a Python package\n    - [x] Add entry point for CLI usage\n    - [x] Configure setup\n    - [x] Release to PyPI\n\n## License\n\n[MIT License](./LICENSE)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "DearBagPlayer is a flexible rosbag player based on Dear PyGui in Python.",
    "version": "0.3.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/Magic-wei/DearBagPlayer/issues",
        "Homepage": "https://github.com/Magic-wei/DearBagPlayer"
    },
    "split_keywords": [
        "dearpygui",
        " visualization",
        " rosbag"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fba30899881fe60573f7797643164ddab4e0855c7034a54212347c02313a453e",
                "md5": "37b19a9b3b5e0cb217a39199e30cfb4e",
                "sha256": "d167e449edfc8b457db9eecefab2f192d953cc6d9417a5c5e038a73423090385"
            },
            "downloads": -1,
            "filename": "DearBagPlayer-0.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "37b19a9b3b5e0cb217a39199e30cfb4e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 21390,
            "upload_time": "2024-09-18T19:46:23",
            "upload_time_iso_8601": "2024-09-18T19:46:23.606472Z",
            "url": "https://files.pythonhosted.org/packages/fb/a3/0899881fe60573f7797643164ddab4e0855c7034a54212347c02313a453e/DearBagPlayer-0.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eda1f033bcb9240ba4f488951b56c41c2222e6f429bb13bda8f5da0eba0c236d",
                "md5": "82c36f5db6c6089b38ad018cc99e1828",
                "sha256": "d626e7ecd9b1a060546845afd904245a9b26faccfae52b23900506fc4341f5e9"
            },
            "downloads": -1,
            "filename": "dearbagplayer-0.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "82c36f5db6c6089b38ad018cc99e1828",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 18054,
            "upload_time": "2024-09-18T19:46:24",
            "upload_time_iso_8601": "2024-09-18T19:46:24.966865Z",
            "url": "https://files.pythonhosted.org/packages/ed/a1/f033bcb9240ba4f488951b56c41c2222e6f429bb13bda8f5da0eba0c236d/dearbagplayer-0.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-18 19:46:24",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Magic-wei",
    "github_project": "DearBagPlayer",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "dearbagplayer"
}
        
Elapsed time: 0.31715s