Coder Social home page Coder Social logo

unwieldycat / robodash Goto Github PK

View Code? Open in Web Editor NEW
19.0 2.0 3.0 20.27 MB

A GUI toolkit for PROS 4

Home Page: https://robodash.readthedocs.io/

License: MIT License

Makefile 0.69% C++ 53.62% C 45.70%
vex-robotics vex-robotics-competition vex-v5

robodash's Introduction

robodash

Latest Release License Stars

Robodash is a GUI toolkit for the VEX V5 brain that provides GUI tools that take better advantage of the brain's LCD display and a system to improve compatibility with templates that provide LVGL-powered GUIs.

Get started with robodash by reading the docs.

Screenshots

Console Tool

The robodash image display

Image Tool

The robodash image display

Autonomous Selector Tool

The robodash selector

View Selector

The robodash view switcher

robodash's People

Contributors

aztro-dev avatar miniongolf avatar noozabooz avatar unwieldycat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

robodash's Issues

Enhancement: Docs Version Switcher

Proposed enhancement
Add a version switcher to the Doxygen docs.

Motivation behind change
As future major versions of the library are developed, it would be helpful to view old versions of the documentation.

Feature Request: Banner/Alert System

Overview

A banner that can appear on all screens. This banner can have its text set and be called from any template.

Motivation

Some templates may want to alert the user if an error occurs, for example: a sensor fails calibration

Enhancement: Flag System

Proposed enhancement
Implement a flag system for views to alter their behavior.

Motivation behind change
Currently, views have one property that can be changed: whether or not UI animations can play while they're focused. This property is changed & read through setters & getters. An LVGL-like flag system in place of this would be simpler and more scalable, since more setter/getter functions wouldn't need to be created for each and every new property a view may get.

Enhancement: Neutral Color Scheme

Proposed enhancement
Overhaul the UI color scheme with brighter, more neutral colors.

Motivation behind change
The current UI colors make robodash look washed-out and overly dark in screenshots, and more neutral colors would likely look better with third-party GUIs.

Bug: Unable to display images

Bug description
In the latest update of robodash, I am unable to display images. I made a help post in the VTOW #help channel, which I'll insert here:

I was playing around with robodash in a fresh project and for some reason cannot get it to display an image (any attempt just gives me a blank screen). Here's my relevant main.cpp:

#include "main.h"
#include "robodash/api.h"

void test_auto() {
    std::cout << "Test auto" << std::endl;
}

rd::Selector selector({
   {"Test Auto", &test_auto},
});

rd::Console console;

void initialize() {
    rd::Image img("/usd/pros.c");
    img.focus();
}

My SD Card is a 16GB MicroSD which is successfully recognized by the brain. In fact, I can tell it sees my image because this code:

void initialize() {
    // using c file apis, check if /usd/pros.c exists
    FILE* file = fopen("/usd/pros.c", "r");
    if (file) {
        std::cout << "File exists" << std::endl;
        fclose(file);
    }
}

Gives me a "file exists".

My image settings for the conversion are as follows:

Input image is attached to this post
Image converter color format: CF_INDEXED_8_BIT
Image converter output format: C array
Dithering and big endian disabled

Additionally, the pros.c file is the only file on my SD.

Expected behavior
Image is displayed correctly

Steps to reproduce
All steps shown above in description. For context, my source image is here:
pros

Feature Request: Graphing

It would be really cool to be able to graph information to the screen. This could help with debugging things like PID without requiring the user to set up some kind of external graphing tool. It would also be useful for logging information in a tournament setting where connection to the brain isn't possible.

Enhancement: Class-based View API

Proposed enhancement
Rewrite the view API in C++ with classes

Motivation behind change

  • Using C++ classes for views would enable custom conversions. A user could implicitly convert a view to an lv_obj_t* by passing the view to any function requiring an lv_obj_t*, rather than needing to call an additional function to get the view's LVGL object.
  • Other modern C++ features can be utilized
  • There's no reason the view API needs to be in C

Release 2 Todo

Widgets & UI

  • Selector
    Make the selector screen look better

  • Console
    Console view for debugging

  • Sidebar
    Move everything to a sidebar for better use of space

Polishing

  • Make better color scheme
    Make the color scheme look better and more customizable

  • Refactor code
    Make stuff less jank and code style more consistent

  • Error handling
    Add failsafes for user error and LVGL version conflicts

Misc

  • Third-party Views
    Figure out how other templates can have their own views without bundling the entire library

  • Decouple LVGL
    LVGL should be managed by liblvgl

  • Docs
    Make more comprehensive documentation.

Enhancement: Settings Widget

Proposed enhancement
Create a settings widget that allows a user to specify any amount of boolean, integer, float, or dropdown items that can be modified while the robot is active. The data should save to the SD card as well.

Motivation behind change
It would be useful to configure a robot's behavior on the fly. You could

  • Use it for tuning PID algorithms
  • Create profiles for addressable LEDs
  • Adjust other robot behavior on the fly

Map autons to images

It would be cool if the empty space on the right side of the auton view could be configured to display a image from the SD card related to the currently selected auton. Maybe this could be done by configuring an optional "path" parameter for each auton in init?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.