Git Product home page Git Product logo

workbench's Introduction

Workbench for Openpilot

Workbench is a desktop application to help you manage openpilot driving agent running on a compatible Android device. It also has a goal of providing easier porting of new vehicles.

license

For Support with Workbench, connect with me on the Workbench Discord Channel.

Getting Started

IMPORTANT: Workbench manages your EON over SSH. You must enable SSH in your Settings on EON.

Features

  • Scans your network for your EON so you don't need to find the IP.
  • Connects to EON via SSH (and automatically, installs SSH key for you)
  • Dumps you into an SSH shell connection to your EON with one click.
  • Has tabs for all of the various ZMQ messages sent in real-time over wifi from EON.
  • Automatic task scripts for EON configuration / maintenance.
  • Reinstall Comma Openpilot Release2

Upcoming Concepts / Features

  • Built-in Openpilot / EON IDE (code editor)
  • Real-time tuning
  • Backup videos
  • Review videos
  • Monitor uploads

Contributing

I welcome any and all pull requests! Please, if you see a bug that could use a fix - submit a PR and we can make this thing great together. Any change, big or small should be included if it makes sense for the community as a whole.

Let's get some review processes together and work through the bugs!

For Workbench Developers

  1. Install necessary development dependencies:
  • Windows
    • Install windows-build-tools npm install -g windows-build-tools
  • macOS
    • Install xcode build tools: xcode-select --install
    • Install Homebrew if you don't have it. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    • Install nvm or nodenv or some sort of nodejs version manager.
    • Now install zmq brew install zmq
  • Linux(You can see here what your Linux is based on.)
    • RPM-based
      • GraphicsMagick
      • libicns-utils
      • xz (Installed by default on some distributions.)
    • Debian-based
      • graphicsmagick
      • icnsutils
      • xz-utils
  1. Fork this repository to your own GitHub account and then clone it to your local device
  2. Change to the newly cloned directory cd workbench
  3. Install a version of nodejs with nvm or your node version manager. nvm install 8.14.0 is the version I recommend. nvm use 8.14.0
  4. Install python 2.7.15 with pyenv or asdf . pyenv install 2.7.15 and set the current directory with pyenv local 2.7.15
  5. Move to the cloned directory and install the dependencies: npm run setup
  6. Build the code and watch for changes: npm run dev
  7. Checkout a new branch for your feature... something like feature/what-is-it or bugfix/the-fix-for-something
  8. Push your change up to your own GitHub fork and create a New Pull Request to request your new feature / bugfix branch be upstreamed into the master for inclusion in the next release.

To make sure that your code works in the finished application, you can generate the binaries like this:

npm run package

After that, you will see the binary in the ./releases folder!

Known issues that can happen during development

Error related to node-pty-prebuilt

If after building during development you get an alert dialog related to node-pty issues, make sure its build process is working correctly by running yarn run package.

Error with codesign on macOS when running npm run dist

If you have issues in the codesign step when running npm run package on macOS, you can temporarily disable code signing locally by setting export CSC_IDENTITY_AUTO_DISCOVERY=false for the current terminal session.

Bug Reports / Feature Requests

Feel free to create issues for feature requests and/or bugs.

License

MIT

To run on Arch Linux

  1. Download latest appimage
  2. open terminal and cd /home/user/Downloads
  3. chmod +x Workbenchxxx.appimage
  4. ./Workbenchxxx
  5. It will ask if you want to integrate the appimage into system, select no

workbench's People

Contributors

jfrux avatar r3dlobst3r avatar saranchockan avatar vanillagorillaa 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

Watchers

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

workbench's Issues

Help add your community scripts as easy Workbench commands!

I've started building the console system in Workbench to be able to have an abstracted "script" library that allows us to run commands on the Workbench console.

The most complicated (and not really that complicated) is the Take a screenshot command.
https://github.com/openpilot-community/workbench/blob/e62eca31b7e9b36019aaab39ea91616da29b1452/app/components/commands/take_screenshot.js#L4

Add a file like the one above with the basics of what needs to be ran and Workbench will combine them into 1 script.

Add the new command file to the index.js found in the same directory.

If you need hooks to be called such as requireSu just ensure those are put in place. Take a screenshot requires you to type su - first, and then run the commands.

After its finished, we need to perform an ssh-based file transfer of the saved image.
This allows us to save it to the local computer quickly.

You can see an example of this here:
https://github.com/openpilot-community/workbench/blob/e62eca31b7e9b36019aaab39ea91616da29b1452/app/sagas/eon_sagas.js#L121

As this evolves, we will need to make this more robust and less "if this than this" obviously... possibly will use a library of hook methods and things at some point down the road but for now its fine here.

I'm wanting your pull requests for these additions since I do not always use all these things.

Some ideas for you:

  • Download latest drive before it uploads?
  • Download all logs to your computer before upload?
  • Install Auto-Delete Script?

Play / Pause does not work when waiting for messages

From @illumiN8i:
If you go to one of the data feeds, pause it, then switch to another data feed, no data will appear. It just says waiting for messages with no button to resume. To unpause, you have to go back to the original screen you paused and click play. This seems to persist across restarts of the app.

For example, go to thermal, hit pause, switch to another screen such as Live100, gets stuck at waiting for messages.

BUG: Error: ENOENT: no such file or directory, open ‘/Users/glennnash/Library/Application Support/Workbench/Settings’

This must be important. I got it again on reinstall. Uncaught Exception:
Error: ENOENT: no such file or directory, open ‘/Users/glennnash/Library/Application Support/Workbench/Settings’
at Object.fs.openSync (fs.js:646:18)
at Object.module.(anonymous function) [as openSync] (ELECTRON_ASAR.js:166:20)
at Object.fs.writeFileSync (fs.js:1303:33)
at Object.writeFileSync (/Applications/Workbench.app/Contents/Resources/app.asar/main.prod.js:88395:13)
at Settings._ensureSettings (/Applications/Workbench.app/Contents/Resources/app.asar/main.prod.js:45122:18)
at Settings._readSettings (/Applications/Workbench.app/Contents/Resources/app.asar/main.prod.js:45161:10)
at Settings._getValueAtKeyPath (/Applications/Workbench.app/Contents/Resources/app.asar/main.prod.js:45250:22)
at Settings.get (/Applications/Workbench.app/Contents/Resources/app.asar/main.prod.js:45373:17)
at module.exports../app/main/default-shell.js.exports.default (/Applications/Workbench.app/Contents/Resources/app.asar/main.prod.js:11934:49)
at Object../app/main/default-shell.js (/Applications/Workbench.app/Contents/Resources/app.asar/main.prod.js:11959:3)

jfrux wrote
also, the easiest way to create the file would be to run touch /Users/glennnash/Library/Application Support/Workbench/Settings
in terminal

since I pretty much don't know what I'm doing I did put the above into terminal and it returned touch: Support/Workbench/Settings: No such file or directory

WORKBENCH USED to work beautifully. and then it stopped finding the EON. Not aware of any computer changes overnight on the morning this started.

Shows blank window on load

when ran in terminal, here is the output.

workbench [main] Starting Workbench workbench [main] Enabling Viewport Meta workbench [main] Disabling Pinch to zoom workbench [main] Disabling Chromium GPU blacklist workbench [main] Production Mode workbench [main] Setting Window Properties workbench [main] Setting Splash Properties workbench [main] Checking for Updates... APPIMAGE env is not defined, current application is not an AppImage workbench [main] Setting up config file workbench [main] Settings are located at /home/thomas/.config/Workbench/Settings {} decoratedKeymaps {} workbench [terminal] Started Terminal Service workbench [scanner] Started Scanner Service workbench [zmq] Started ØMQ Service

is APPIMAGE env is not defined, current application is not an AppImage
a problem?

https://stackoverflow.com/questions/52442650/electron-builder-linux-updates-appimage-env-is-not-defined/52449227

right click terminal

can't right click to paste when ssh'd in on windows
opens up right click menu containing inspect element

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.