Metadata-Version: 2.4
Name: roboflex.visualization
Version: 0.1.12
Summary: Roboflex Visualization Library
Home-page: https://github.com/flexrobotics/roboflex_visualization
Author: Colin Prepscius
Author-email: colinprepscius@gmail.com
License: MIT
Keywords: SDL2,visualization,robotics,middleware,flexbuffers,python,c++,c++20
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Embedded Systems
Classifier: Framework :: Robot Framework
Classifier: Framework :: Robot Framework :: Library
Classifier: Framework :: Robot Framework :: Tool
Classifier: Programming Language :: C++
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=2.0
Requires-Dist: roboflex
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# roboflex.visualization

A thin wrapper of various display nodes over SDL2. For now just supplies
one node: RGBImageTV. It can display rgb tensors of the form (H,W,3) uint8.

## System requirements

* libsdl: SDL (Simple Directmedia Layer)

        # search for existing libsdl packages
        dpkg -l | grep sdl # -> shows nothing

        # install libsdl
        sudo apt-get install libsdl2-dev

        # search for existing libsdl packages again
        dpkg -l | grep sdl # -> shows:
        ii  libsdl2-2.0-0:amd64                        2.0.20+dfsg-2ubuntu1.22.04.1                                        amd64        Simple DirectMedia Layer
        ii  libsdl2-dev:amd64                          2.0.20+dfsg-2ubuntu1.22.04.1                                        amd64        Simple DirectMedia Layer development files

        THIS, for me on ubuntu22, puts headers in /usr/include/SDL2 and libs in /lib/x86_64-linux-gnu/libSDL2-2.0.so

        # to remove it:
        sudo apt-get -y purge libsdl2-dev

## Import

    import roboflex.visualization as rv

## Nodes 

There are three: **RGBImageTV**, **BlackAndWhiteTV**, and **DepthTV**


    # RGBImageTV will redraw rgb images at some
    # frequency (refresh rate). It will look into
    # all messages it receives - those that contain
    # the key "rgb", mapping to a (3,H,W) tensor
    # will be rendered. Messages get propagated.

    rgb_tv = rcw.RGBImageTV(

        # mandatory (refresh rate)
        frequency_hz: float,

        # optional; defaults are:
        width = 640,
        height = 480,
        image_key = "rgb",
        initial_pos = (-1, -1),
        mirror = False,
        debug = False,
        name = "RGBImageTV"
    )

    # must be started!
    rgb_tv.start()


    # BlackAndWhiteTV will redraw rgb images at some
    # frequency (refresh rate). It will look into
    # all messages it receives - those that contain
    # the key "ir1", mapping to a (H,W) tensor
    # will be rendered. Messages get propagated.

    black_and_white_tv = rcw.BlackAndWhiteTV(

        # mandatory (refresh rate)
        frequency_hz: float,

        # optional; defaults are:
        width = 640,
        height = 480,
        image_key = "ir1",
        initial_pos = (-1, -1),
        mirror = False,
        debug = False,
        name = "BlackAndWhiteTV"
    )

    # must be started!
    black_and_white_tv.start()


    # DepthTV will redraw depth images at some
    # frequency (refresh rate). It will look into
    # all messages it receives - those that contain
    # the key "depth", mapping to a (H,W) tensor
    # will be rendered. Messages get propagated.

    depth_tv = rcw.DepthTV(

        # mandatory (refresh rate)
        frequency_hz: float,

        # optional; defaults are:
        width = 640,
        height = 480,
        image_key = "depth",
        initial_pos = (-1, -1),
        mirror = False,
        debug = False,
        name = "RGBImageTV"
    )

    # must be started!
    depth_tv.start()

