Giter Site home page Giter Site logo

wellenvogel / avnav Goto Github PK

View Code? Open in Web Editor NEW
80.0 11.0 22.0 110.83 MB

using the raspberry pi as a nav computer

License: MIT License

HTML 1.29% Perl 0.04% Shell 1.83% Java 28.31% Python 30.83% JavaScript 34.48% CSS 0.07% C 0.01% PHP 0.11% Batchfile 0.03% Groovy 0.82% PowerShell 0.67% Rich Text Format 0.01% Less 1.45% NSIS 0.05%

avnav's Introduction

DailyBuild

(C) Andreas Vogel [email protected] This project contains the code to use the raspberry pi as a nav computer on a sail boat. A lot of detailed explanations together with ready to go images can be found at my homepage. The core of the documentation is available in the docs directory.

Snapshot builds can be found here. They are build from the daily-builds branch

Releases are available here.

avnav's People

Contributors

bobhy avatar free-x avatar kdschmidt1 avatar moeritsen avatar norbert-walter avatar quantenschaum avatar w-geronius avatar wellenvogel 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

avnav's Issues

strange display when crossing lon/lat

version 2014-09-07
Wenn man einen glatten Breiten- oder Längengrad überschreitet, zeigt
die Anzeige unten im Browser nach 009° 59.99'E erst 009° 60.00'E und dann nach der Linie 010° 00.00'E an.
Das passiert nur bei einem Wechsel der Gradzahl.

AIS object icon should have outline

The AIS object arrow should be have a (possibly configurable) outline around it. This would come handy on crowded maps or maps with a lot of text and would let the AIS objects pop out more

Display for History data

there should be a display for history data. Berthold provided an initial implementation (see branch).
To better embed this we need:

  • a changed navdata handling on the server (separate classes like NAV, AIS, HIS, write each value separately for NAV,HIS)
  • a history writer (similar to trackwriter) - write history data to some text file (simple time,name,value lines), should write e.g. every 10 minutes, read on startup (on demand?)
  • history query operation (value(s), from,to, interval)
  • a diagram viewer (d3?)

Make the layout configurable

There should be options to change the layout interactively. This way you should be able to select what will displayed at which position. Requires #13

  • edit mode, select widget content
  • add new widgets on the screen
  • load and store layouts

Redesign internal widget handling

The current widget handling is much too complex and prevents easy extensions.
The goal is to redesign it using the following targets:

  • global store that is directly filled by the received data and the nav computations
  • formatter integrated in widget
  • easy extension points (just add some plugin at the server, add some definition at the js level)
  • definition of widget lists by etxernalized json files to be adaptable
  • get rid of complex layout stuff

Zoomlevel

Ich bin mir da jetzt absolut nicht sicher aber kann es sein, dass die Zoom Level eins zu niedrig sind?
Screenshot (26)
Unten Links im rechten Fenster steht das Zoomlevel von SasPlanet.

NMEA2000 worker/feeder

Hallo @wellenvogel ,

wie schon früher angedeutet, habe ich diesen Winter mich mit N2K beschäftigt. Quick&Dirty läuft das schon.
Habe für experimente Waveshare CAN Hat benutzt.

  1. CAN Hat aktivieren in /boot/config.txt
dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=8000000,interrupt=25,spimaxfrequency=1000000
  1. Netzwerk Interface /etc/network/interfaces.d/can0
#physical can interfaces
allow-hotplug can0
iface can0 can static
bitrate 250000
down /sbin/ip link set $IFACE down
up /sbin/ifconfig $IFACE txqueuelen 10000
  1. Für Kommunikation werden can-utils und canboat benötigt. Mein canboat kompilat mit erweiterten features wie AIS im Anhang
sudo aptitude install can-utils
sudo tar xzvf canboat.tar.gz -C /
  1. Das ganze Kette ans Start bringen (/etc/rc.local)
candump can0 | candump2analyzer | analyzer -json | n2kd
  1. Dem AvNav abholen beibringen (avnav/data/avnav_server.xml)
<AVNSocketReader  host="127.0.0.1" port="2599" />

That's all.
Falls man als Zubringer irgendwelche Actisense, YachtDevices in raw modus benutzt.

actisense-serial -s 230400 -r /dev/ttyUSB0 | analyzer -json | n2kd

Jetzt kommt die Frage ;-)
Soll das als Handler laufen? Oder lieber so lassen?
Ideen? Kommentare?
Gruß
free-x
canboat.tar.gz

NPE in SimpleFileDialog.chooseFile_or_Dir

From play store:
java.lang.NullPointerException
at de.wellenvogel.avnav.main.SimpleFileDialog.chooseFile_or_Dir(SimpleFileDialog.java:146)
at de.wellenvogel.avnav.main.AvNav$10.onClick(AvNav.java:481)
at android.view.View.performClick(View.java:3528)
at android.view.View$PerformClick.run(View.java:14235)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)

Android 4.0.3 - 4.0.4
Xperia Miro (ST23i)

dynamic adaption of course vector length according to boatspeed

It would be nice to see a dynamic adapted length of the course vector (and possibly the course vectors of AIS objects) according to ships speed.

In other words: My ship will be 'here' (at the end of the course vector line) in 10 mins

So it would be easy to determine the estimated position in the future to aid navigation i.e. crossing high frequented traffic separation areas or to avoid collision in general

Anchor watch displays wrong unit

The anchor watch mode displays the wrong distance to anchor.
It says "m" on the label (which would be optimal) but instead seems to display in nm.

convertercrash

Hey Andreas,
Ich habe über das Programm Sat2Chart Navionicskarten aus "SASPlanet" im mbtiles-Format für OpenCPN bezogen. Bei der Konvertierung der Karten in ein AVNAV-Kompatibles Format ergibt sich folgende Fehlermeldung:
2020/06/06-17:54:43 ERROR: Traceback (most recent call last):
File "C:\Program Files (x86)\AvNavNet\chartconvert\read_charts.py", line 1786, in
main(sys.argv)
File "C:\Program Files (x86)\AvNavNet\chartconvert\read_charts.py", line 1725, in main
sys.exit(1)
SystemExit: 1

ERROR: Traceback (most recent call last):
File "C:\Program Files (x86)\AvNavNet\chartconvert\read_charts.py", line 1786, in
main(sys.argv)
File "C:\Program Files (x86)\AvNavNet\chartconvert\read_charts.py", line 1725, in main
sys.exit(1)
SystemExit: 1
***Converter finished ***
2020/06/06-17:54:43 ERROR: conversion failed

Die mbtiles-Datei verfügt über zwei Zoomstufen!
Danke für die Arbeit!
Grüße!
-Hartholz

when tapping an AIS target on Ipad safari the AIS page is only shown shortly

reported by Christian:
Auf dem Ipad unter Safari gibt es folgendes Problem:
Tippe ich auf der Karte auf ein AIS Ziel, so wird kurz die Tabelle der AIS Ziele angezeigt und dann sofort wieder die Karte. Manchmal springt er aber auf der Karte zu einem ganz anderen AIS Ziel und wechselt ggf. auch den Kartenausschnitt dahin.
Gleiches Verhalten habe ich auf dem Ipad auch mit den Browsern iCab und Mercury.

Three Circles are not shown in maps

If you have added values for all three cirles under "Settings -> Navigation" tab, only one or two are shown in the maps.
Example:
Circle1: 460
Circle2: 950
Circle3: 1852
In this case the 1852 and 950 meter ring are shown. The 460 meter ring is still missing. In higher zoom levels too.

parsing empty DPT or DBT throws exception

parsing empty DPT or DBT string throws an error.

At least Standard Horizon and my Airmar DST 800 generate a valid NMEA0183 message without values when no valid measurement is possible (in case of too deep water or too shallow water)

This is more or less cosmetic, but spamming the log file (regarding IO operation on the SD card). Maybe that could be catched in some way.

Traceback (most recent call last):
File "/usr/lib/avnav/server/avnav_nmea.py", line 341, in parseData
rt['depthBelowTransducer'] = float(darray[1])
ValueError: could not convert string to float:

2020-07-21 21:10:21,735-615-[ 933]-GpsdFeeder[standalone feed]-INFO- error parsing nmea data $SDDBT,,f,,M,,F*28

route can not be activated if default.gpx does not exist

Hallo Andreas,

hier ist ein Bug: wenn in avnav/data/routes kein default.gpx existiert, die Route, die über Web oder SSH hochgebeamt wurde, in Routen-manager ist versteckt und nicht aktivierbar. In Download-Manager ist aber sichtbar und kann gelöscht werden.

Regards
free-x

Autozoom

When the boat is moving and there are no tiles for the current zoom, avnav should automatically switch to a lower zoom level. When moving further and reaching an area with higher zoom level tiles, it should zoom in again.

Optimize layout

The layout should be optimized for smaller screens.

  • make AIS and Route display share a region
  • some minor changes in handling (buttons as classes, more functions in base page)
  • separate AIS info page for one target (when tapping AIS)
  • show AIS/Route at top in portrait mode
  • make bottom display fit better in portrait mode
  • change center (distance) display to consume less space (option: show on chart)

More NMEA data

We should be able to parse and display more nmea data. On the server side this should be handled by some pluggable architecture to be able to add new parsers on the fly. On the viewer we should have a widget approach with the ability to select the widget to be displayed at various positions (nav page, gps page). Potentially more gps data pages. There should be some options to easily add more standard widgets (i.e. no dedicated graphical stuff but simple value formatting).

  • provide a plugin infrastructure on server (read all _.py files in server and user dir, init them). They should contain a class with some init function returning the nmea sentences they are interested in (optionally none). The class must also have a handleNmeaData function that will parse the data. On init it will receive a NavData interface with 2 functions: storeNavData (object similar to what we have) and storeNMEAData to write out some NMEA data. Optional: configuration
  • restructure the NavData (server) see #12
  • pass NMEA data to plugins (instead of gpsd pased on plugin patterns)
  • provide some plugins for basic data (RMC,...)
  • build a widget factory on the client side
  • base the display of data on widgets

Route is not correctly saved on server

When setting a route and later restarting the app on the tablet the changes of the route are lost.
Additionally the changes are not becoming active in the AP handling
release-2015-01-25

Navigate to a waypoint out of a list of waypoints

Route navigation is already implemented and seems to be quite good.
Also defining waypoints for a route is implemented.
So there should be already a management of a waypoint list implemented.

  1. I would request the ability to read in a waypoint list from a file (which is already there) but I want to generate these waypoints with another tool a in a well known format.
  2. Regularly I do not use route navigating but navigating to a waypoint.
    Navigating to a marker is already implemented this needs to be enhanced to choose a "marker" from the existing waypoint list.

Above mentioned enhancements doesn't necessarily need more menues or buttons to keep the UI simple.

Thanks for this nice piece of navigational app I really appreciate it :-)

Averaging for boat data

Some gps sensors provide data that is varying very fast. This potentially makes the course and speed display hardly usable as we currently just take the snapshit value of the time of query.
There should be an option to average those data over n periods

Own AIS watch.

To remotely supervise the own ship it would be helpfull to have some AIS alarm that will fire if a selected AIS target leaves a range.

Allow for easy change of the WLAN password

Currently changig the wlan password requires to edit cfg files in the system partition. This is rather difficult for people not being familiar with linux.
So there should be an easy way to do this.
There could be a file in the boot partition that will be included in the hostapd conf.
This can easily be edited before starting at all.

The image should be prepared to run hostapd on wlan1

With the current multi hostapd setup we still can run into issues where an USB wlan adapter ends up at wlan1. Altough this can easily be solved by editing the udev rules file this is still hard for not that skilled people.
On the other hand it should be easy to also prepare a wlan / hostapd config for wlan1, thus giving connectivity out of the box.

Improve Ais computation

Currently the Ais computation has some limits/bugs:

  • if either the target or the ship has nearly no speed, the computation will fail although there could be a cpa
  • There seems to be a bug (thanks to Erwin for reporting) that potentially dst will be shown as cpa in close range even if there is a cpa < dst
  • If we passed the crosspoint of the courses cpa will not be computed any more although it could be lower than the current distance (maybe this relates to the bug)
  • There should be an option to lock to one target, keep this lock even on other warnings and mark it in the map

create new route without activating

Currently when editing the active route there is no easy way to create a new route - when changing the name the new route always becomes the active one.
There should be an option to create a new route without making it active immediately.

Anchor alarm

There should be the possibility to have an anchor alarm.

avnav on debian 10 (buster)

Hi Andreas,

I know it's too soon, but in the future. AvNav needs python-imaging pre-installed.

requires 'python-imaging'

Unfortunately this package is not available in Debian Buster. The "requires" should then rather use python-pil

Regards
free-x

First integration with signal-k

To interact with signal-k we will follow a stepwise approach:

  1. send NMEA0183 to signal-k: can simply be done via config
  2. have a plugin to read vessel/self from signal-k and send to UI
  3. allow for more integration (i.e. use signal-k data instead of own decoders)
  4. directly let the UI interact with signal-k

This issue addresses (2).

Download of Routes fails

If you have saved a route on the RasPi and you will download it via the download function, it fails.
See screenshot attached.

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.