Code Monkey home page Code Monkey logo

neptus's Introduction

Neptus, Command and Control Framework

Copyright © 2004-2024 Universidade do Porto - Faculdade de Engenharia Laboratório de Sistemas e Tecnologia Subaquática (LSTS) All rights reserved. Rua Dr. Roberto Frias s/n, sala I203, 4200-465 Porto, Portugal

This software is provided using a dual license. One commercial and for that contact [email protected] or [email protected], and another using a modified "European Union Public Licence - EUPL v.1.1 Usage" (check the included LICENSE.md file).

For developers: please read javadoc/overview-and-developers-guide.html.

For more information check Neptus web site (http://www.lsts.pt/toolchain/neptus/).

Build Status Java CI with Gradle


You can tweak the launching of the application by creating a file named "neptus.vmoptions" next to the launcher at the root directory. In it you can set scaling for hi dpi monitors (only needed on Linux), or expand the maximum memory to use by the application. Example bellow, (one argument per line, and '#' means comment out):

# For 4GB of max memory
-Xmx4g
# For a 200% scaling
-Dsun.java2d.uiScale=2.0

neptus's People

Contributors

anaezes avatar canastaman avatar edramos-97 avatar edrdo avatar fredpy avatar grillher avatar hugofqueiros avatar hugomrdias avatar ineeve avatar jffortuna avatar jlpfeup avatar joaoteixiera avatar josebraga avatar jqcorreia avatar kmolima avatar krisklau avatar luis109 avatar margaridacf avatar mariacosta avatar maribeiro avatar migueloureiro avatar paulosousadias avatar pmdacosta avatar pmfg avatar rasmartins avatar rmsc avatar tiagocr avatar tsmarques avatar xbogas avatar zepinto 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

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

neptus's Issues

KML import

No button to add detected kml features, right click is not intuitive.

Non-functioning Height/Depth input field in Location Editor

Hi,
I believe @jffortuna has reported this to you internally, but I'll do it again to have a public record of it.

In the Location Editor (In plan editor, select (e.g.) a goto, click the three dots in the "Location"-field), there is an input field where Height/Depth can be input. However this has no effect on "Z" of the goto, which is confusing.

image

Feature request: Naming real-time plots

I tend to add lots of real-time plots to the console. For example: I'll first tune the lateral dynamics, which needs some plots, and then I'll continue with the longitudinal dynamics, requiring a new set of plots. I then might want to look at some of the lateral plots, to see that they still make sense. But; in the mess of ~10 real-time plots I've added to the console, it is difficult to find/remember which plot I'm looking.

All Real-time plots are all labeled "Real-Time plot" in the "View"-menu.

Would it be possible to have them show a unique, preferably user specified, name? A "simple" solution would be to name it "Real-Time plot: ", where is the name of the first variable to be plotted, as specified in the traces script (e.g. "height: ${EstimatedState.height};" would result in "Real-Time plot: height".

neptus.sh no longer work on MacOS X

the form
if [ ${JAVA_MACHINE_TYPE} == 'linux-x64' ]; then

is no longer accepted on MacOS bash (single bracket syntax present some potentially parsing issues in shell scripts and therefore has been disabled on MacOS).

Now MacOS only accepts the following (which is supported by any bash)

if [[ ${JAVA_MACHINE_TYPE} == 'linux-x64' ]]; then

similarly it looks like MacOS does not accept the option -f on readlink. Therefore it would be better to use what you had previously (basically no attempt to follow the link) at least for Mac

MRA: Log marks at LogTableVisualization

Hi,

I've found two issues when adding marks at LogTableVisualization:

1 - The marks are tied to the table row. This means that when I change the sorting of the table the mark stays at the same row even if the data entry changed.

neptus_mark

After sorting

neptus_mark_2

2 - This loop bound is wrong (Seems that the -1 shouldn't be there). The behavior is:

Unable to add two IMC messages in real time plot by using "+"

Trying to add two values by using the "+" doesn't work (the graph doesn't show up). Putting the following code in a real time plot illustrates this:

roll_plus_pitch: ${EstimatedState.phi}+${EstimatedState.theta}
roll_minus_minus_pitch: ${EstimatedState.phi}-(-${EstimatedState.theta}) 

The first line will not show a graph while the other line will show a graph where the two signals are added.

Feature suggestion: Store realtimeplot scripts

Would be nice to be able to select beetween previously stored (named!) realtimeplot scripts with a dropdown menu. The different scripts could be saved with the console.

E.g., I might have two "things" I want to plot:

  1. HeadingDebug: CurrentHeading, DesiredHeading
  2. AltitudeDebug: CurrentAltitude, DesiredAltitude

Instead of comment in/out these parts in the script (can't plot both as they have very different ranges), I could then save them and select them with a drop-down menu.

Popup Preview throws exception

I'm not sure what the PopUpPreview class does but it's not being loaded correctly because the class name is PopupPreview.

java.lang.ClassNotFoundException: pt.lsts.neptus.mp.maneuvers.PopUpPreview
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at pt.lsts.neptus.mp.preview.ManPreviewFactory.getPreview(ManPreviewFactory.java:81)
at pt.lsts.neptus.mp.preview.SimulationEngine.simulationStep(SimulationEngine.java:128)
at pt.lsts.neptus.mp.preview.PlanSimulationOverlay$1.run(PlanSimulationOverlay.java:102)

"Collapse all" in System Configuration menu

Hi,
A really nice feature for the System Configuration menu would be to add an option to "collapse all" the subcategories (i.e. task) of parameters. This list of parameters gets really long when "Access developer parameters" is activated, which makes for a lot of scrolling when changing parameters in different tasks. A solution to this, of course, is to manually collapse the parameters from tasks that you are not currently doing changes in, but this is time consuming and has to be done each time you restart DUNE (because of changes in the parameters)(especially frustrating when trying different parameters in SITL).

TL;DR: I would like one button that made the System Configuration menu collapse to something like this:
image

I know that Joao Fortuna has asked about this before, so this is just posted to have a public place to track the progress.

IMC UDP sender

Changes in the edition of the IMC message are lost after the edit window is closed.

Plan configurations are (still) changed by Neptus

I have reported this bug before, and it was reportedly fixed, but now we are having the same problems all over.

The problem
We use maneuver-scope parameters to choose different controller-specific parameters (e.g. what controllers should be active for a given maneuver. On a side note; we are open for suggestions on how to improve this :)) The pitcure shows some of these parameters from a GoTo in a typical scenario:
image

As an example; to use the ardupilot guidance controllers, the AP tracker parameter is selected, whereas "Use controller" of "Bank to turn...", "Height Glideslope...." and "FBWA Longitudinal..." is set to true to let DUNE handle the guidance (and send roll/pitch/throttle to AP). We set this for the entire plan by using the "Payload settings" menu. This works fine for the most part, but every now and then when we double check the plan before sending it to the vehicle (a routine we have established because of this problem) some of the parameters have changed. For example, we had a crash where one of the GoTos had changed from using DUNE guidance to using AP.

The problem is very difficult to reproduce, at least in simulation. However; when we went flying last week it seemingly happened all the time. It seems very strange, but could it be related to the communication link?

Here is a zip of the log folder in neptus The dates in question are Nov 5th-7th. I also have DUNE logs, and the entire neptus folder, if any of that is of interest.

Appreciate any input and help on investigating this bug!

Minor bug: Real-Time plot does not change when you change number of trace points

Hi,
To reproduce: Open a real time plot, click settings and change the value in "Trace points". Exit the settings (without making any other changes) and confirm that you would like to save the changes.

This does not have any effect on the plot, unless you click "Clear" or if you change some of the plot specification text (roll: ${EstimatedState....).

This is a very minor bug, and is of course not critical, but I just wanted to report it.

Kristoffer

MRA: show message data gets confused with messages having the same timestamp.

Opening a message from the "show data" panel in MRA sometimes opens the wrong message. This only seems to happen if the timestamp is the same (it is easy to reproduce with EntityInfo and ControlLoops messages).

To reproduce, open the EntityInfo data from any log, double click on a message, it shows, as expected. Click on another message, the first message will show up instead.

Error building the repository

Hello all
I am trying to build the repo with following tools

IntelliJ version: 2022.1.4 Community Edition
Gradle version: 7.5
Java version: 18.0.1
OS: Window 11 64 Bit

The repo is building successfully but when i try to execute it is throwing the error below
build-error

Any help to resolve the issue ?

Am I using the right version of the tools.

Regards

Missing Swing PLAF classes in java

When running ant to build neptus on a Ubuntu 18.04 machine, there are a bunch of errors which I list below:

neptus/src/pt/lsts/neptus/gui/system/selection/MainSystemSelectionCombo.java:51: error: package com.sun.java.swing.plaf.windows does not exist
neptus/src/pt/lsts/neptus/console/plugins/PluginManager.java:64: error: package com.sun.java.swing.plaf.windows does not exist
cannot find symbol     [javac] import javax.annotation.Generated;

as well as a couple of classes under javax: WebEndpoint, SOAPBinding, WebMethod, WebResult...

Am I missing something? I was following your wiki at https://github.com/LSTS/neptus/wiki/Compiling

Add section on plotting in Neptus (and possibly make the wiki editable)

Hi,
To make it easier for everyone (particularly new PhD and master students), I have written a short tutorial on how to plot in Neptus. Great if you can include it!

Also, I noticed that the Neptus wiki is not editable (like the DUNE wiki is), so to make contributions like this easier in the future, you could consider making it editable.

Here is my suggested tutorial. Feel free to make changes. Would also be great if you could add some information on what is required for DUNE and Neptus to communicate (ref my TODO):

Neptus plotting tutorial

Neptus has the capability to plot IMC messages, using the Real-Time plot (found in Viev)
In the [DUNE Task Interactions tutorial][https://github.com/LSTS/dune/wiki/Task-Interactions], we displayed the temperature by printing it to the command line. This way of displaying values is only appropriate for debugging purposes, as it is difficult to follow multiple values, and it is difficult to spot changes and trends. Instead, we will use the plotting capabilities of neptus to display the values. This will also show how you can modify DUNE config parameters from Neptus, in real time.

  • Edit the prodcon.ini config file from the Task Interactions tutorial. To interact with Neptus, DUNE needs to run Transports.Announce and Transports.Discovery (TODO: is that all?). For simplicity, we will pretend that we are a simulated UAV, and add [Require ../../simulation/uav.ini] to the start of prodcon.ini, since configuration already takes care of Neptus interactions. prodcon.ini should now look like this:
[Require ../../simulation/uav.ini]

[Tutorials.TempProd/P1]
Enabled = Always
Entity Label = Producer1
Mean value = 37
Standard deviation = 0.5

[Tutorials.TempProd/P2]
Enabled = Always
Entity Label = Producer2
Mean value = 45
Standard deviation = 0.1

[Tutorials.TempCons]
Enabled = Always
Entity Label = Consumer
Target Producer = Producer1

[Transports.Logging]
Enabled = Always
Entity Label = Logger
Transports = Temperature
  • Generate configuration file for neptus: Neptus needs to know what parameters are available from a given vehicle, so we need to generate this file and place it in the appropriate folder: ./dune -c development/Tutorials/prodcon -p Simulation -X /path/to/neptus/conf/params.
  • Run dune: ./dune -c development/Tutorials/prodcon -p Simulation -X /path/to/neptus/conf/params and open your desired Neptus console.
  • Watch the IMC messages in Neptus: In View->Incomming data, you should select x8-00 in the dropdown at the top. Find Temperature in the list on the left. The tabs indicate the different entities that send the Temperature message, so you should see both Producer1 and Producer2.
  • Display values in real time plot:
    • Open View->Real-Time plot, click Settings, change the text field to say temperature: ${Temperature.value}, and hit the cross.
    • What happens? The value will jump between the values from the two producers, which is not ideal
    • Instead, change the Settings text field to
      temperature_p1: ${Temperature.Producer1.value}; 
      temperature_p2: ${Temperature.Producer2.value};
      
      Ahh, much better: now each of the two producers have their own line in the plot.
  • To illustrate a point, we will adjust the temperature from the two tasks, by adjusting
    • Open System configuration for the x8-00, and check Access developer parameters. A list of Tasks, and their corresponding parameters, should appear.
    • Change Mean value under Producer1 to 0.1 and Temperature under Producer2 to 100. Click Send
    • What happens in the plot? It would be difficult to spot small changes in the temperatures, since the range of the two temperatures differ.
    • To see the dynamics of both signals, we will move temperature_p2 to its own plot:
      • Open View->Plugin Manager, select Real-Time plot in the list on the left, and click Add. Another Real-Time plot item should appear in the View-menu. Move temperature_p2: ${Temperature.Producer2.value}; to the Settings text field of this new plot.
  • Basic math operations: If you want to display the temperature from Producer 2 to be displayed in Fahrenheit instead, you could change the text field to temperature_p2: ${Temperature.Producer2.value}*1.8 + 32; This is perhaps more useful when converting radians to degrees: pitch: ${EstimatedState.theta}*180/Math.PI

Various plotting issues

Hi (@kmolima)!
I'm having some problems with plotting, both in the "IMC inspector" and in the real-time plot. My code is branched off of 0c23bde (I have not made any changes to the plotting).

Issues:

  • IMC inspector: XY plot does not work (I'm never prompted with what I variables I would like to plot)
  • IMC inspector: only plots the first variable when multiple are added
  • real time plot: when opening the console, the saved plot config is on a single line. If I add line breaks, save console, close and reopen neptus, it is back on a single line.
  • related to the above: I get a parsing errors (LHS of an assignment should be a variable) since everything is on one line. This error message opens up immediately after closing it, so it is difficult to get rid of without restarting Neptus (sometimes I manage to click out of it quickly, but then the Neptus menus are often not responding to clicks afterwards). It is not possible to edit the plotting script while the error message is showing.
  • rtp: sometimes the plot does not update after changes have been made to the script (nothing is plotted, but the axes are updated when I click 'clear'). There are seemingly no relevant error messages, I'm sure the script is correct, and the incoming data is updating.

Also; when should xyseries be used, compared to addSeries?

Run a simulation without vehicle

Hi! I'm new working with Neptus, the environment is ready. I can build with ant like are specified in the wiki and run Neptus. How can I make a simulation without physical vehicle?

Thanks!

Real-time plot; documentation and debug output

It would be very beneficial to have some more information on what is possible in the real-time plot. We only recently discovered that the "language" in the real-time plot is Javascript, so it would be nice to write that either as a comment in the real-time plot settings menu itself, or perhaps as an addition to the plotting tutorial

Slightly related; It would also be valuable for the user to see some (debug) output of the parsing of the "plot specification". For complex expressions, it can be difficult to figure out what caused the plot to stop working.

(Both of these issues are on a "nice to have" level.)

Allow multiple real-time plots in the console

It would be a lot easier to have multiple plots than to have 10 different signals in one graph, each with a different scaling factor and really strange, similar colors. I was told that this used to be possible, by adding more than one "real-time plot" to the list of active plugins in the plugin manager, but this does not seem to be possible anymore.

--Kristoffer Gryte

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.