Giter VIP home page Giter VIP logo

tko-electronics-sim's Introduction

TKO Circuit Simulator

FRC circuit simulator for electronics diagramming and rookie training.
Created by TKO Programming (Rohan Bansal and Andy Li).

Winner of the 2021 KLA Software Engineering Award!

tkosim.mp4

Features

  • Circuit diagramming with FRC parts (see subsection below for list)
  • Creating, moving, connecting devices with cables
  • Saving/importing circuits as shareable files
  • Simulation for wiring errors
  • Simple LED simulation
  • 2D CAD-inspired GUI
  • Keybinds, help menu, options menu, and other QOL features
  • Packages for easy installation (support for Windows, MacOS, Linux)

diagram

Future Updates

  • Enable resizing
  • Future hardware (limelight, RSL, sensors, servos, etc.)
  • Twisted cables and groups of three cables for RoboRIO
  • Accurate scaling of parts on a blocks-per-inch grid for E-Plate diagramming
  • Cleaner code

Installation

Official Packaging

Head over to the releases page and download the binary for your platform. Directions for installation can also be found there.

Building from Source

We constantly commit partially finished new features or bug fixes, so we suggest that you use the latest stable release instead. Proceed at your own risk.

  1. Clone the repository using git
  2. Run gradlew build and then gradlew run in a console in the top directory

If you use Linux/Mac OS, run ./gradlew build and then ./gradlew run in a console in the top directory.
If it says permission denied, do chmod +x gradlew.

Due to compatibility issues with LWJGL3 and the M1 chipset, the mac version pf the simulator still uses LWJGL2. Functionality should be close to identical. Mac OS only: switch to the lwjgl2-macs branch to run. Otherwise, app may freeze during usage.

Device/Component List

Hardware

  • Battery
  • Breaker
  • Compressor
  • Double WAGO
  • Falcon
  • Manifold (with double solenoids attached)
  • 775 Motor
  • NEO
  • Pneumatics Control Module (PCM)
  • Power Distribution Panel (PDP)
  • Voltage Regulator Module (VRM)
  • Piston
  • Pressure Switch
  • Radio
  • RoboRIO
  • Regulator + Gauge
  • Relief Valve Complex
  • Spark
  • Talon
  • Tank
  • T-Connector

Cables

  • Regular cables (4, 12, 18, 22 AWG)
  • Crimped cables (4, 12, 18, 22 AWG)
  • Ethernet
  • Pneumatics tubing

tko-electronics-sim's People

Contributors

andyli23 avatar ashviniyer21 avatar imgbotapp avatar rohan-bansal 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

Watchers

 avatar  avatar  avatar

tko-electronics-sim's Issues

Quality of Life Suggestions

Been playing around with this for a little bit and I've come across a couple of things that might make the app easier to use:

  • Copy / paste: often times I'll end up with a motor and controller pair, set up the wiring between them and then want to duplicate it.
  • Component flips: sometimes I want to flip the image representation of components instead of just rotating. The battery is a good example of this, with one horizontal flip the wiring path from the battery through the main breaker to the PDP would look cleaner with no overlapping wires. Similarly flipping either the NEO or the Spark MAX would allow them to connect with out wires crossing.
  • Component groups: it would be nice to be able to visually group components together based on application, something as simple as a colored box that sits behind components and has a label on it would be fine I think.
  • Component labels: It would be nice to be able to label motor controllers with CAN ID / motor names so the diagram can be an even better reference.

Error: Does not work if I don't add a PCM

Hello - Great work guys, it certainly helps us show students how a robot should be wired correctly.
There is a little problem. We get an error if we don't add a PCM, even if we don't need one. Our robot is not using pneumatics.

unable to connect components

image
image
Unable to connect components 18awg components together errors above defaults to 22awg wire and then you cannot change the wire gauge you have to start wires off in space and then connect both ends (specifically power wires)
image
(i had to do this by starting a new wire and then connecting them.

Resizing Window

When using the Mac version 2 if I have a circuit open and I resize the window, the pop-up for rotating and setting gauges and what not no longer appear. It seems as though it goes off into space.

I found that I need to make the windows size what I want before starting a new circuit or I need to quit the current one and then resize in the main menu and then go back into the circuit.

Components disappear and/or application crashes.

The application crashes 'randomly' when adding components. It also disappears components randomly when opening files. But if I touch the cable that it is connected to, it reappears.

I've found some logs on the windows computer. (I'll post them in another reply.)
When running on Linux sometimes I get a NullPointerException

I've reproduced this problem in both Windows and Linux but out of the blue sometimes it just works and doesn't have any errors.

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.