Coder Social home page Coder Social logo

acmerobotics / ftc-dashboard Goto Github PK

View Code? Open in Web Editor NEW
165.0 26.0 123.0 1.07 GB

React-based web dashboard designed for FTC

Home Page: https://acmerobotics.github.io/ftc-dashboard

License: Other

HTML 0.11% JavaScript 6.57% CSS 0.95% Java 50.40% TypeScript 41.97%

ftc-dashboard's Introduction

FTC Dashboard

FTC Dashboard provides telemetry and monitoring tools for FTC robots during operation with the following features:

  • Live telemetry with plots and field graphics
  • Live configuration variables
  • Camera streaming
  • Limited op mode controls and gamepad support
    • Note: Gamepad support is volatile due to unstable browser APIs
  • Custom dashboard layouts
  • Telemetry CSV export

Check out our online documentation.

Screenshot of custom layout Screenshot with theme

Installation

Basic

  1. Open build.dependencies.gradle

  2. In the repositories section, add maven { url = 'https://maven.brott.dev/' }

  3. In the dependencies section, add implementation 'com.acmerobotics.dashboard:dashboard:0.4.15'

    Please see GitHub releases page for the latest version number

  4. If you’re using OpenRC or have non-standard SDK dependencies, add the following exclusion:

    implementation('com.acmerobotics.dashboard:dashboard:0.4.15') {
      exclude group: 'org.firstinspires.ftc'
    }
    

Development

Installation

  1. Install Node.js

    • Note: Node.js 16+ is required for builds to work on M1 MacBooks
    • Current Node version used in gradle builds can be found in FtcDashboard/build.gradle
    • Node version is 18.12.1 as of time of writing
  2. Install Yarn

    • Not explicitly required and provides little advantage over modern npm (as of the time of writing)
    • Further instructions will however reference yarn over npm for historical reasons
  3. Browser FTC Dashboard client is located in FtcDashboard/dash

  4. Run yarn (alternatively npm install) to install dependencies

    • This only need be done once
  5. Optionally, specify the server IP address through the environment variable VITE_REACT_APP_HOST

    • Details on Vite's environment variables can be found here

    • Default IPs:

      • Android Phone: 192.168.49.1
      • Control Hub: 192.168.43.1
  6. Run yarn dev (alternatively npm run dev) to start the development server

    • This will start a development server on http://localhost:3000 by default
    • Navigate to this address in your browser to view the dashboard client
    • The development server will automatically reload when changes are made to the source code

Mock server

To test without an FTC app, run the mock server located at DashboardCore/src/test/java/com/acmerobotics/dashboard/TestServer.java.

Basic Architecture

Java Server

Dashboard's server is split into two packages, DashboardCore and FtcDashboard

  • Dashboard Core
    • A standalone library that can be used to create a dashboard server for any Java application
  • FtcDashboard
    • A wrapper around DashboardCore that provides relevant tooling and hooks for FTC teams
    • Contains the API FTC teams will access and manipulate through their own code
    • This package also contains the browser client source

Browser Client

Primary interface as a web-client acessible to the end-user through a web browser

  • Located in FtcDashboard/dash
  • Installation and run instructions mentioned above
  • TypeScript + React application
  • Vite for builds
  • Web Socket connection to the dashboard server

Relevant files

  • Dashboard.tsx
    • Primary functional entrypoint
  • LayoutPreset.tsx
    • Contains preset layouts
  • views/
    • Contains the various views that can be displayed on the dashboard
      • Graphs
      • Telemetry
      • Gamepad
      • etc
  • store/
    • Contains shared state management logic
      • Web Socket connection
      • Gamepad state management
      • Storage middleware
      • etc
  • Views subscribe to websocket updates via the Redux store

ftc-dashboard's People

Contributors

abidingabi avatar bd103 avatar calkestis avatar christian7573 avatar cmacfarl avatar elias1218 avatar ftctechnh avatar ironreignrobotics avatar jeffless avatar kennanhunter avatar mafteialbert-alexandru avatar nash-pillai avatar noahbres avatar raresnagy avatar rbrott avatar rgatkinson avatar smartynenko avatar tomeng70 avatar zyhorton avatar

Stargazers

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

Watchers

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

ftc-dashboard's Issues

Connection flashing / Connection reset using control hub

Similar to #21, when connecting to my control hub and attempting to use the ftc dashboard, I will either get a connection reset error or the page will show up, but the icon in the top right will show me as disconnected, but occasionally flashes. If I try to run any opmodes on the robot using the DS while the dashboard is in this state, the DS will hang. I'm using a control hub, if that matters.

NaN values

Dashboard appear not being able to handle NaN values. When NaN values is sent as value in Telemetry packet is kills the dashboard - starting stopping op modes and controllers still work, but field, graph and telemetry stop working.

Stream camera view not with vuforia

Hi
I mentor team and contently we work on vision recognition and we need to test the pipeline and that very hard the see the camera view from robot control that any way we can send the camera view to the dashboard (we using easyOpenCV)

Save not working

I upgraded to 4.0 and FTC SDK 6.2 and SAVE does not seem to work.

page is empty

when i open the dashboard page and when i open the developer tools it print a error

react-dom.production.min.js:2549 Uncaught TypeError: Cannot read property 'content' of undefined
at Object.getContent (LayoutPreset.jsx:99)
at t.value (Dashboard.jsx:49)
at yu (react-dom.production.min.js:3880)
at vu (react-dom.production.min.js:3871)
at Qa (react-dom.production.min.js:6116)
at La (react-dom.production.min.js:5101)
at Ua (react-dom.production.min.js:4958)
at Ra (react-dom.production.min.js:4817)
at react-dom.production.min.js:2543
at t.unstable_runWithPriority (scheduler.production.min.js:338)

Config only works with text input boxes

I'm having trouble using other types of config options. For Enums and Booleans, the option will be marked modified, but will not actually update. Pressing the save icon (to apply the modification) will just reset the option to what it was previously (the default). In other words, it is impossible to change these options. I suspect this is a frontend issue

Throws "Infinity is not a valid double value" when doing integer division on a Dashboard controlled double field

The app will throw the following error when doing integer division on a double field:

fi.iki.elonen.NanoHTTPD: java.lang.IllegalArgumentException: Infinity is not a valid double value as per JSON specification. To override this behavior, use GsonBuilder.serializeSpecialFloatingPointValues() method.

I was able to reliably reproduce that error with the following two cases:

@Config
class Test {
    public static double case1 = Double.POSITIVE_INFINITY;
    public static double case2 = 1 / 3;
    
    // These are fine
    public static double correct1 = 1.0 / 3.0;
    public static double correct2 = 3.0 / 1.0;
} 

Obviously, case 1 is expected to throw that error. As would any division by zero. But I'm not sure why any integer division throws an error. I would think that in case 2, it evaluates 1/3 using integer division, resulting in zero, and then casting that to a double. Clearly, I don't know enough about Java's type coercion or reflection system but I would assume the second case would just result in a double zero value?

Dashboard doesn't save config values

We are running the latest version of Road Runner Quickstart (just pulled 15 minutes ago), and the dashboard allows new values to be entered into the config value fields, but pressing the save icon does not actually save them. They stay marked with an asterisk. We had this problem a week or two ago on an earlier version, so it's probably not related to tonight's pull.

Any ideas?

Incorrect SDK dependency scope

A user on Discord reported that their build failed when using Dash with OpenRC Turbo 6.0A. Note that ExtremeTurbo now contains the webserver, so that isn't the issue.

The exact error they reported was:

Duplicate class androidx.renderscript.Allocation found in modules androidx-rs.jar (androidx-rs.jar) and androidx-rs.jar (org.firstinspires.ftc:RobotCore:5.5)

Upon review of your gradle scripts for the Dashboard module, I believe he was hitting a dependency clash as the result of incorrect scope used the gradle file. I think that the following lines need to be changed to compileOnly scope:

api 'org.firstinspires.ftc:RobotCore:5.5'
api 'org.firstinspires.ftc:Hardware:5.5'
api 'org.firstinspires.ftc:RobotServer:5.5'
api 'org.firstinspires.ftc:FtcCommon:5.5'
implementation 'androidx.annotation:annotation:1.1.0'

App Crashes

The dashboard has been causing our app to crash, mainly when hitting the back button to get out of settings or similar things.

5.3, Marshmellow

Vuforia SkyStone Nav & Camera Stream to Dashboard issues

When using the ConceptVuforiaSkyStoneNavigation.java example as a foundation we are able to stream the phone camera to the dashboard using: FtcDashboard.getInstance().startCameraStream(vuforia, 0); if the last portion of the example file is removed, but if we leave it in we can't get it to stream to the dashboard.

In other words...if u remove lines 309 - 359 (https://github.com/FIRST-Tech-Challenge/SkyStone/blob/master/FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/ConceptVuforiaSkyStoneNavigation.java) IT Works with just FtcDashboard.getInstance().startCameraStream(vuforia, 0);

If you leave lines 309-359 in and just add FtcDashboard.getInstance().startCameraStream(vuforia, 0); it NO WORKY :(

Support the OpenFTC SDK

Hello,
I'm trying to integrate the FtcDashboard into our code this year, but we have switched to the OpenFTC SDK and this project is not at all cooperative with that. The issues I've run into: target Android platform version mismatch (and so it asks for too new of a support library; I can fix this but just updating my modules), and dependencies on the stock AARs (I don't know how to fix this)

Could you give some guidance or reference about how to use this with the OpenFTC SDK? Thank you!

documentation for teams migrating from 0.4.2

If you used dashboard 0.4.2 or earlier, there were numerous places you had to sprinkle integration code into ftcrobotcontroller.java.

That seems to have been done away with by using annotation hooks, but it took a bit of work to figure that out and remove those bits. Please add some documentation to help previous users migrate.

But we haven't been fully successful. When we go to the dash page we are getting the response:

Mime type unknown: uri='/dash' path='dash'

In case it matters, this is for an OpenRC project

Dashboard stops working ( WebSocket connection to 'ws://192.168.43.1:8000/' failed)

We have been using FTC-Dashboard for 2 years now without issue. Two days ago it just stopped working and we see the following error in the browser.

WebSocket connection to 'ws://192.168.43.1:8000/' failed:

We have tried to investigate the issue, but aren't sure where to look. We have also tried:

  • Using versions of our code from before we had this issue
  • Reinstalling the Control Hub OS (thinking maybe something was broken on the control hub).

What should we be doing to investigate why things stopped working.

image

sdk5.0 setup

when I try setting up Dashboard v3.0.0 with sdk v5.0 FtcDashboard.attachWebServer(service.getWebServer()); throws a compiler error.
attachWebServer(org.firstinspires.ftc.robotcore.internal.webserver.WebServer) in FtcDashboard cannot be applied to (com.qualcomm.robotcore.util.WebServer)

How to access development server?

Your documentation says that to start the development server, one must run yarn in FtcDashboard/dash/ but this folder doesn't exist anywhere in the project, after I have built it.

[RFC] Hiding the header

I think it would be a good idea to implement an auto-hiding feature for the header. Most of the spaced used taken up by it is unused and it occupies important vertical real estate. Many of the users are running these on small laptops. Low resolution 13-inch screens are quite painful to work with. I had a user send me a screenshot of a broken LearnRoadRunner modal and the cause of the issue was that his page was 700 pixels tall. The Chrome tabs + bookmarks bar takes up a considerable amount of space.

I am not quite sure on how the design should be implemented. I do not like headers that cause an entire page layout shift. These perform especially poorly on lower end devices. This would be worse for the drag-and-drop grid layout.
Perhaps a floating indicator for the layout selector and wifi indicator would be apt.
Design ideas would be appreciated :)

Graph does not like it when you call intermittently send numeric data

This has actually been an issue for a while. Haven't gotten around to reproducing it until now.

It's just much more prominent when you use the driver override in the ManualFeedforward and DriveVelocityPID tuner.
I don't quite recall how the problem expressed itself before but I do remember the same solution/frustration.

The fix is to just simply close and reopen the graph which made the problem manageable. It was just a nuisance.

Here is the opmode code reproducing the issue:

@Config
@TeleOp
class RampTest : LinearOpMode() {
    companion object {
        @JvmField
        var INCREASE = 0.005
    }

    var paused = false
    var progress = 0.0
    var increasing = true

    override fun runOpMode() {
        telemetry = MultipleTelemetry(telemetry, FtcDashboard.getInstance().telemetry)

        waitForStart()

        while (!isStopRequested) {
            if (gamepad1.a) {
                paused = true;
            } else if (gamepad1.b) {
                paused = false;
            }

            if (!paused) {
                if (increasing)
                    progress += INCREASE;
                else
                    progress -= INCREASE;

                if (progress >= 100)
                    increasing = false;
                else if (progress <= 0)
                    increasing = true;

                telemetry.addData("progress", progress)
            }

            telemetry.update()
        }
    }
}

The issue does not actually occur when you call telemetry.update() after telemetry.addData(). The following does not display this behavior:

                if (progress >= 100)
                    increasing = false;
                else if (progress <= 0)
                    increasing = true;

                telemetry.addData("progress", progress)
                telemetry.update()
            }
        }
    }
}

This could be fixed quickstart-side. However, I think a dashboard side fix would be ideal.

2021-03-10.14-27-03.mp4

Dashboard caused RC crash

We had a few crashes. It happened a lot, but be able to consistently reproduce.

11-09 15:55:28.951 21140 21140 E AndroidRuntime: FATAL EXCEPTION: main
11-09 15:55:28.951 21140 21140 E AndroidRuntime: Process: com.qualcomm.ftcrobotcontroller, PID: 21140
11-09 15:55:28.951 21140 21140 E AndroidRuntime: android.os.NetworkOnMainThreadException
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1317)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at fi.iki.elonen.NanoWSD$WebSocketFrame.write(NanoWSD.java:702)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at fi.iki.elonen.NanoWSD$WebSocket.sendFrame(NanoWSD.java:273)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at fi.iki.elonen.NanoWSD$WebSocket.send(NanoWSD.java:268)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.acmerobotics.dashboard.DashboardWebSocket.send(DashboardWebSocket.java:77)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.acmerobotics.dashboard.FtcDashboard.sendAll(FtcDashboard.java:804)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.acmerobotics.dashboard.FtcDashboard.updateConfig(FtcDashboard.java:659)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.acmerobotics.dashboard.FtcDashboard.onOpModePostStop(FtcDashboard.java:916)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at org.firstinspires.ftc.robotcore.internal.opmode.OpModeManagerImpl.callActiveOpModeStop(OpModeManagerImpl.java:402)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at org.firstinspires.ftc.robotcore.internal.opmode.OpModeManagerImpl.stopActiveOpMode(OpModeManagerImpl.java:285)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.qualcomm.robotcore.eventloop.EventLoopManager.stopEventLoop(EventLoopManager.java:599)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.qualcomm.robotcore.eventloop.EventLoopManager.shutdown(EventLoopManager.java:472)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.qualcomm.robotcore.robot.Robot.shutdown(Robot.java:64)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.qualcomm.ftccommon.FtcRobotControllerService.shutdownRobot(FtcRobotControllerService.java:487)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at org.firstinspires.ftc.robotcontroller.internal.FtcRobotControllerActivity.shutdownRobot(FtcRobotControllerActivity.java:719)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at org.firstinspires.ftc.robotcontroller.internal.FtcRobotControllerActivity.requestRobotRestart(FtcRobotControllerActivity.java:727)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at org.firstinspires.ftc.robotcontroller.internal.FtcRobotControllerActivity.access$000(FtcRobotControllerActivity.java:118)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at org.firstinspires.ftc.robotcontroller.internal.FtcRobotControllerActivity$RobotRestarter.requestRestart(FtcRobotControllerActivity.java:168)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.qualcomm.ftccommon.UpdateUI.requestRobotRestart(UpdateUI.java:371)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.qualcomm.ftccommon.UpdateUI.access$000(UpdateUI.java:58)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.qualcomm.ftccommon.UpdateUI$Callback$1$1.run(UpdateUI.java:97)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:751)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:95)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:154)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6196)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
11-09 15:55:28.951 21140 21140 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)

CONTROL HUB PROBLEM

I m not able to update the on-bot-java to Java 8 and I can't build the program that contains "lambda". Is there any way i can update the pre-installed program to make it work? Is there anyone who is able to use Road-Runner and the DashBoard with the REV Control Hub?

Crashes on launch

The app crashes when opened. I'm getting this error:

2019-11-08 18:01:55.970 3813-3813/com.qualcomm.ftcrobotcontroller E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.qualcomm.ftcrobotcontroller, PID: 3813
    java.lang.NullPointerException: Attempt to invoke interface method 'void com.qualcomm.robotcore.util.WebHandlerManager.register(java.lang.String, org.firstinspires.ftc.robotcore.internal.webserver.WebHandler)' on a null object reference
        at com.acmerobotics.dashboard.FtcDashboard.internalAttachWebServer(:517)
        at com.acmerobotics.dashboard.FtcDashboard.attachWebServer(:118)
        at org.firstinspires.ftc.robotcontroller.internal.FtcRobotControllerActivity.onServiceBind(:706)
        at org.firstinspires.ftc.robotcontroller.internal.FtcRobotControllerActivity$1.onServiceConnected(:193)
        at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1535)
        at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1563)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6316)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

Here is my FtcRobotControllerActivity.java file: https://gist.github.com/nchowder/e86a81e0ece858cf5b76ea5a3f767528

The line that throws the error is this:

FtcDashboard.attachWebServer(service.getWebServer());

It appears that service.getWebServer() is null. Could you help me troubleshoot this?

Graph View - telemetry keys flicker and reorder when keys differ on every packet

Key selection flickers and reorders.
Implement opmode lifecycle aware key caching like PR #55

2021-03-14.00-20-33.mp4

Opmode code causing this behavior:

@Config
@TeleOp
class RampTest : LinearOpMode() {
    companion object {
        @JvmField
        var INCREASE = 0.005

        @JvmField
        var paused = false
    }

    var progress = 0.0
    var increasing = true

    var counter = 0

    override fun runOpMode() {
        telemetry = MultipleTelemetry(telemetry, FtcDashboard.getInstance().telemetry)

        waitForStart()

        while (!isStopRequested) {
            telemetry.clear()

            if (gamepad1.a) {
                paused = true;
            } else if (gamepad1.b) {
                paused = false;
            }

            if (!paused) {
                if (increasing)
                    progress += INCREASE;
                else
                    progress -= INCREASE;

                if (progress >= 100)
                    increasing = false;
                else if (progress <= 0)
                    increasing = true;

                telemetry.addData("x", SineWaveOpMode.AMPLITUDE * Math.sin(
                        2 * Math.PI * SineWaveOpMode.FREQUENCY * runtime + Math.toRadians(SineWaveOpMode.PHASE)
                ))
                telemetry.addData("progress", progress)
            }

            counter++
            if (counter % 3 == 0)
                telemetry.addData("three", counter)

            val fizz = if (((counter % 5) == 0) && ((counter % 7) == 0))
                "fizzbuzz"
            else if ((counter % 5) == 0)
                "fizz"
            else if ((counter % 7) == 0)
                "buzz"
            else
                counter

            telemetry.addData("fizz", fizz)

            if(counter % 5 == 0)
               telemetry.addLine("Sonata No. " + counter)

            telemetry.update()
        }
    }
}

Flickering just caused because telemetry is cleared on every loop and the same data keys aren't added every time. If you encounter this problem just be sure to add the same data keys every time.

No connection

When I try to run FTC Dashboard, it doesn't connect to my server. When I run it on my computer, it shows that it isn't connected, and every once in a while, it flashes

Opmode View start/stop button delay

The start/stop buttons on the opmode view have a noticeable delay between clicking the button and the intended effect. It's difficult to tell sometimes when you actually click the button because of this delay.

Possibly implement a loading indicator with a timeout so the user gets immediate visual feedback.

Defaulting to standard gamepad mapping when controller is unknown

I think this would require some testing with non-ftc gamepads but it would be neat to just default to the standard gamepad layout when the ID isn't known, enabling the use of non-FTC legal gamepads for use at home or something (there have been a non-zero amount of such requests, primarily Dualshock 5 and Xbox One controllers but not really important enough to spend significant time on imo).
With PR #47, the Dualshock 4 and Xbox 360 seem to have identical button layouts. I'm assuming that most modern gamepads will share the standard w3c spec.

Gamepads not working with 0.3.8 and OpenRC Turbo

Gamepads connected to my development pc aren't registering - they are recognized by the system, but in dashboard they are not detected. Start A doesn't do anything. I am able to init/start/stop opmodes and use other features of dashboard. Running dashboard in chrome 84.0.4147.125

I have used gamepads with dashboard before - when running on a stock skystone 5.0 repo. This issue is with Open RC Turbo 5.4B. I'm using the gradle integration. Note that I did my own migration to AndroidX on Turbo 5.4B before the 5.5 stuff was released. Not sure if that is the problem. I've now upgraded to 5.5B but can't update to your latest - I filed as separate issue about that.

There isn't anything on your documentation site about troubleshooting joysticks, so submitting here.

Robot Controller App Infinite Crash loop

Currently running the latest road runner quick start release. I am having issues with the FTC Dashboard. The Robot Controller App infinitely restarts (crashes) when starting the code while connected to the Dashboard. The dashboard trys to reconnect and crashes each time it does so. Here is the Debug output:

Regards,
Sam Carter

CrashLog.txt

Gradle sync failure with 0.3.9 and Open-RC Turbo

I'm getting Gradle sync errors when trying to upgrade from
implementation 'com.acmerobotics.dashboard:dashboard:0.3.8'
to implementation 'com.acmerobotics.dashboard:dashboard:0.3.9'

This is using the latest Skystone 5.5 compatible release of Open-RC Turbo - the problem exists with all build variants:

Unable to resolve dependency for ':FtcRobotController@turboDebug/compileClasspath': Failed to transform artifact 'RobotCore.aar (org.firstinspires.ftc:RobotCore:5.5)' to match attributes {artifactType=jar}
Show Details
Affected Modules: FtcRobotController

The Show Details link doesn't actually show anything helpful, so I really have no idea what is going on.

Our version of the repo is available here: https://github.com/IronReign/OpenRC-Turbo

Changes Popup

I was wondering if you can add a popup with here are the configs that changed since you started so you could make sure you update the real values in the code?

[Feature Request] Add keyboard gamepad emulation

Hey, I'm not sure if this is even technically possible, I haven't really looked at the code, but it would be really cool if the keyboard could emulate gamepad button presses when viewing FTC dashboard.

Pause graph?

Is there any way to pause or rewind the graph? To this point I haven't been able to get much value out of the graph component of the dashboard because it scrolls out of view so quickly.

ReflectionConfig - Make class parsing public

I'm looking for a way to programmatically register classes into the FTCDashboard config system. Here's what I'm trying to do:

object TunerRegistrar {
    private fun OpModeManager.register(cls: KClass<out OpMode>) {
        this.register(
                OpModeMeta(cls.simpleName!!, OpModeMeta.Flavor.AUTONOMOUS, "Tuning"),
                cls.java)
        FtcDashboard.getInstance().configRoot.putVariable(
                ReflectionConfig.createVariableFromClass(cls.java))
    }

    @JvmStatic
    @OpModeRegistrar
    fun registerTuners(mgr: OpModeManager) {
        if (DEBUG) {
            mgr.register(DumbWheelSpinner::class)
            mgr.register(WheelDirectionTester::class)
            mgr.register(TrackWidthTuner::class)
            mgr.register(DriveVelocityPIDTuner::class)
            mgr.register(FollowerPIDTuner::class)
            mgr.register(TurnTest::class)
            mgr.register(StraightTest::class)
            mgr.register(SplineTest::class)
            mgr.register(VisionTest::class)
        }
    }
}

However, ReflectionConfig.createVariableFromClass is a private method. Could it be made public so that this could be possible?

Thank you!

Make the graphing button more obvious

People seem to be really confused by the show graph button. They do not recognize that the icon is a button. Perhaps add some text (despite possibly making it ugly) to make the purpose clear. Or some border.

Dependency conflict on SDK 5.5

Dash depends on the Android support library:

+--- com.acmerobotics.dashboard:dashboard:0.3.8
|    +--- com.android.support:support-compat:28.0.0
|    |    +--- com.android.support:support-annotations:28.0.0

This causes build errors because the support lib conflicts with androidx, which is now used in SDK 5.5

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.