Giter VIP home page Giter VIP logo

roboviz's Introduction

Logo RoboViz

Build

RoboViz is a monitor and visualization tool for the RoboCup 3D Soccer Simulation League. This is a fork of the original version by Justin Stoecker hosted on SourceForge. Compared to the original version, major improvements have been made as can be seen in detail in the changelog.

Java 17 is required to build and run RoboViz. Pre-built binaries for Windows, Linux and Mac are available here. You can also build it from source using scripts/build.sh or scripts/build.bat.

Except for the available shortcuts, the information on the original website is still largely accurate. A complete list of shortcuts is available via a help window opened with the F1 hotkey. Alternatively, it's also available as a .html file in resources/help/controls.html.

If you're using Mesa and you're getting an error saying that the profile GL2 is not available, try setting the environment variable MESA_GL_VERSION_OVERRIDE to 3.0 when running RoboViz.

Command line arguments

Argument Description
--logMode Start RoboViz in log instead of live mode.
--logFile= Opens the log file at the specified path right away. Implies --logMode.
--serverHost= Overrides the server host specified in config.txt.
--serverPort= Overrides the server port specified in config.txt.
--drawingFilter= The initial filter used in the drawings panel - default is .*.

Contributing

Contributions of any form are welcome. That includes:

Some basic contribution guidelines can be found here.

roboviz's People

Contributors

gama11 avatar hannesbraun avatar jstoecker avatar klausdorer avatar pmacalpine avatar seil0 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

roboviz's Issues

Regular annotations aren't dimmed when the server disconnects

When running the drawing example I noticed that regular (non-agent) annotations are not dimmed when the server disconnects while it seems everything else is. Regular annotations should be dimmed too.

Before server diconnect:
roboviz_wed_jun_03_00_08_15_cdt_2015

After server disconnect ("helloworld" and "2.0" not dimmed):
roboviz_wed_jun_03_00_08_34_cdt_2015

Live mode: consider adding shortcuts to select individual players

The ball already has a shortcut. This would speed up the process of selecting a specific player (which currently involves: toggling player numbers, searching for the agent and selecting it by clicking on it).

Something like:

Ctrl + F1-F11 keys for the left team
Ctrl + Shift + F1-F11 keys for the right team

could work.

Use less CPU time if idle

RoboViz is using 10% of my CPU when it is idle (not connected to a server). I wonder why. I would expect that it is trying to connect once a second or so, but does not do other things in the meantime.
Ubuntu 12.04

Display dialogs relative to main window

Currently, all dialogs are opened at (0, 0). This is especially annoying with multi-monitor setups, when RoboViz is on one monitor and dialogs open on another.

Allow taking screenshots with arbitrary resolutions

Shift + F12 could open a dialog that allows you to specify the desired resolution of the screenshot.

Alternatively, the screenshot dimensions could be specified in the config and default to the window size. This would remove the delay that inputting the desired resolution creates, but it removes the option of changing the resolution at runtime.

Live mode: add option to display deviation of server time from real time

RoboViz would have to cache the time values of the last 5 or so seconds along with the real time and calculate at what percentage of real time the server is currently running.

This could be displayed as a factor in a textfield next to the game status. The visibility of that text could be toggled via a shortcut (M perhaps).

Look into Java 6 compatibility

According to @pmacalpine, RoboViz doesn't work on Macs because of the Java 7 requirement. It wouldn't be too difficult to continue supporting Java 6, the only downsides should be less nice syntax (diamond operators, switch on String, Multi-catch..).

Travis CI can also be set up to use JDK 6.

Logplayer: display playback speed as a factor

Like x1.5 / x0.5 etc. Currently there are sysouts containing the player fps after a change, which is probably a workaround for something like this.

This could be a JSpinner, removing the need for the "Faster" and "Slower" buttons.

Allow setting the ball's velocity by dragging a vector

Shift + drag left mouse might work as a shortcut.

Drawing a vector in 3D could be tricky, would work if it's only on the x/y-plane and z is handled differently or ignored.

This would be very useful to test certain situations like goalie behaviors / goal keeping.

Logplayer loading bar

In some situations, loading a logfile can take a while - during that time, RoboViz is frozen with a white screen and almost looks like it's crashed.

Logmode: interpolate between cycles

The framerate is extremely choppy since logfiles typically only record every 3rd cycle. This especially affects fast movements like those of the ball when it's kicked.

It's probably possible to do some interpolation between cycles to make the playback a little smoother.

Visual differentiation between different robot types.

Now that there are five different robot types it would be nice if when just looking at a robot on the screen there was some type of indicator as to what type (0-4) the robot is. This is especially true for types 0 and 2 which have the exact same body dimensions.

Background / field textures are sometimes missing

In this particular instance, it happened in logmode when moving RoboViz to a second screen on linux. This also seems to be happen on some windows machines right after RoboViz is initially started though.

Add a visualization for ball movement paths

Could be done by drawing the balls path as an arrow while the corresponding modifier keys are held. This would be especially useful for the 45 degree angle option to see whether the ball will end up in the goal.

Quick mockup of what this could look like:

mock

Add --logMode command line argument

Specifying the log file directly with --logFile is convenient, but currently there's no way to start RoboViz in logmode without specifying a valid log file right away, even though there exists a UI for selecting files with a file open dialog (which some users might prefer).

Drawings panel: regex filters can cause exceptions

  • replace the filter text by *
  • press the regex button
  • run RVTester (seems like there need to be drawings)
Caused by: java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
*
^
    at java.util.regex.Pattern.error(Pattern.java:1955)
    at java.util.regex.Pattern.sequence(Pattern.java:2123)
    at java.util.regex.Pattern.expr(Pattern.java:1996)
    at java.util.regex.Pattern.compile(Pattern.java:1696)
    at java.util.regex.Pattern.<init>(Pattern.java:1351)
    at java.util.regex.Pattern.compile(Pattern.java:1028)
    at java.util.regex.Pattern.matches(Pattern.java:1133)
    at java.lang.String.matches(String.java:2108)
    at rv.ui.DrawingListPanel.setListChanged(DrawingListPanel.java:194)
    at rv.comm.drawing.Drawings.fireShapeChangeListener(Drawings.java:96)
    at rv.comm.drawing.Drawings.update(Drawings.java:204)
    at rv.Viewer.update(Viewer.java:379)
    at js.jogl.prog.GLProgram.display(GLProgram.java:72)
    at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:191)
    at javax.media.opengl.awt.GLCanvas$DisplayAction.run(GLCanvas.java:873)
    at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:363)
    at javax.media.opengl.awt.GLCanvas$DisplayOnEventDispatchThreadAction.run(GLCanvas.java:890)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Invalid regexes shouldn't be able to crash RoboViz. Ideally, the regex button is greyed out if the regex in the textfield is invalid, and have a tooltip that indicates this.

Consider adding unit tests

This should be possible for at least the draw commands to make sure the byte buffers are parsed correctly.

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.