FRC Electronics Circuit Simulator for Electronics Diagramming and Training

Hi guys!

Over the past semester me and a teammate decided to build an FRC electronics diagramming GUI for both build season as well as rookie training. Included are most FRC parts, an automated debugger for all diagrammed circuit errors, complete LED simulation, saving/importing, and pretty sweet animations (Built with LibGDX).

Features include:

  • realistic FRC components and configurations
  • accurate simulation and debugging
  • saving & importing
  • cross-platform (Windows, Mac, Linux)
  • an awesome GUI

I’ll link the GitHub project, as there’s more info there: GitHub. It also has more detailed instructions on how to install/run the program.

I will say to keep the following things in mind as you check out the project:

  • It is still buggy in a few places (specifically save/importing and cable management)
  • Not all FRC components have been implemented, parts may be missing
  • The code is a bit messy, uncommented, and is yet to be cleaned up
  • Windows is still in beta, run from gradlew if possible (documented on README)

Expect a few bugs, but if you find any fatal ones go ahead and open an issue on GitHub. Any additional feedback is appreciated :smiley:

If you would like to check out a few prebuilt circuits, I’ll link the save files below (chiefdelphi won’t let me upload them here):

This took us quite a while to make, I hope you guys like it!

61 Likes

Thank you for your work on this tool. It looks amazing! In the future, do you plan to support electronics beyond the core FRC ecosystem and basic actuation? RasPi and Limelight are the first ones that comes to mind, but I’m sure a lot of other “custom” circuitry is utilized widely by many teams.

2 Likes

Definitely! Limelight is on our parts todo list, which is growing every week. We’ll get started on that as soon as we finish optimizing and a few other things on the priority list.

We also plan on building an API of sorts for teams to implement custom parts (this was initially just for our team, but the goal is to expose it to the whole FRC community).

2 Likes

Request: Add explosion/fire animations:

But seriously, very very slick. The concept is well needed, both for covid times and for teams which may not have the full budget to buy spare parts in advance for electrical team to fiddle with.

One thing I could recommend if you’re looking to continue development: The wire placement felt a bit unintuitive to me. Grab a copy of KiCad or Eagle and do a quick board layout in them, to see how other CAD tools have solved the “connect nodes with lines” UI problem.

In general, I’d prefer to click the “from” node, then click the “to” node, then get a prompt where I fill in the wire properties, then adjust and route it? But, that’s just my workflow.

4 Likes

That is really cool. It must have been a lot of work.

Some suggestions for features to add are:
The option to draw connections using twisted-pair wires in different colours i.e. CAN Bus or some sensors
The ability to add labels to the wires or wire pairs
The ability to export labels for each end of the wire(s) to be printed on standard pre-cut label sheets such as these

Edited to add:
Definitely keep a copy of this around for when you start looking for a job. It will be pretty impressive to potential employers.

2 Likes

Yup. Aside from talking to it during an interview -

If you put your github account on your resume, I would definitely click the link to look at it.

If this were to show up near the top of your featured repos I’d probably be intrigued to click it.

Even better if you had screenshots in the readme so viewers get a sense of the level of good design that’s in it without having to download and run it!

3 Likes

It is very interesting. Thanks for putting it up here.

My wiring behavior is maybe the part that could be refined some also.

I click on the battery terminal to add a wire. It then adds a small stub wire but 22awg. I try to change it to a larger gauge, but it says can’t do so with hardware attached. Then I try to connect that joint to a 2nd terminal and it say it has to be 4awg. I end up drawing a segment in open space, increasing its gauge, then extending both ends to the terminals, but also in that end up with 5 segment line when maybe I didn’t need that. It seems that is the behavior without a connection point outside where it highlights the component.

I solved my other problem, which was that the zoom was on the center wheel which I don’t use much on the laptop. So the mouse is handy for that. One future thing might be options to use exact sized components, like the battery being smaller representation. Along with that might be grid spacing that is more clearly a length scale (mm, in). And maybe getting wire lengths.

Minor other things: 1) When I toggle panel, then click toggle panel (to bring it back), the entire panel dissapears and can’t be recovered it seems. 2) The panel for wire properties when a wire is highlighted is to short cutting off some before what looks like a button. I am on windows.

1 Like

For sure! Labels would definitely be of good use, thanks for the suggestion–this can go along with the idea of adding a few shapes so teams can closely emulate the structure of their e-plate.

I am super impressed by this! Nice work – I’m looking forward to seeing what’s next with this tool. We might be able to get some mileage out of this in our (totally virtual) electronics meetings this year.

2 Likes

Are all the connection points on a grid to make it easier to connect to them? For example, the PWM ports, the DIO ports, the Relay control ports and the Analog input ports on the Roborio.

I had tried doing something similar using existing electronic CAD software and found that it would be too complex because they are all oriented towards drawing schematics and laying out circuit boards and had many, many features not relevant to documenting an FRC control system.

1 Like

This is amazing! I fully plan to use this in the future to teach students electronics. In the past I have run into issues where new students are afraid to wire stuff for fear of breaking something, so this will be perfect!

This would actually be really funny to add as well.

Edit:
Oh one small bug (quite insignificant)
On the pneumatics example when simulating it says the pressure switch is improperly connected to the PCM (I switched the wire connections and it went away) when there is no incorrect way to connect it as there is no positive and negative terminal of the switch.

2 Likes

I’m glad you like it! We hope to get most of the critical bugs ironed out by the end of winter break to prepare for next year. If you do use it and it goes successfully, please do let me know, I’d love to hear about it!

The explosion animation would be pretty funny, we’ll definitely look into adding that. On the same note though, there are a few Easter eggs hidden in the program to find :eyes:

2 Likes

Wilhelm Screams are great too.

1 Like

tko represent! your programming skills are amazing!

1 Like

This is really great work.

I have something similar (not nearly as sophisticated) in Google’s Diagrams.net app that I use with my students.

One of my goals is to build the foundational knowledge of the concept of wiring diagrams to read and to understand them. You have taken this to the next level.

Keep up the great work!

Michael Tucker / 4381

1 Like

Awesome work! The snapping connections and feedback on wiring issues is great. After working with it a little bit, here are a few usability enhancements I would make. Still what you both did is a great addition to remote learning!

  1. The ability to undo. I have occasionally accidentally moved or deleted components instead of wires. I have learned to save, very often, but still an undo feature would be great.
  2. Be able to add bend points in the wires after they are connected to components on each side. I have found that after reorganizing I have to delete the wires and start over if it doesn’t have enough connectors to make it look organized. Unless I’m missing something there is only the ability to delete bend points?

Hi! Me and my teammates have been testing your electronics simulator for a while… It has come to our attention that some parts (RoboRio and Radio Modem, etc.) cause some bugs in the program, causing it to force quit right away. It is a great tool for teaching new students electronics, so thanks for the software!! Hope you fix the bugs… Thanks.

FYI - Github is designed to help facilitiate this.

If you have specific save files, screenshots, or sequences of steps the developers can use to reproduce issues, you can open an issue here: Issues · MittyRobotics/tko-electronics-sim · GitHub . That way, they’ll know exactly what you did to cause the problem, and you can track it as they analyze and fix it.

Additionally, if you are interested and have the time, you can also submit changes back to them to help fix up issues you find - Pull requests · MittyRobotics/tko-electronics-sim · GitHub

For sure! This is also a known problem, so just open an issue on GitHub and we’ll take a look as soon as we can. We’ll probably look into revamping the simulator this summer after AP tests are done as well, so it requires less maintenance overall.

“Just like the simulations”

2 Likes