Skip to content

Commit 3cc6eae

Browse files
authored
1.0 release
2 parents 4c3bb22 + 7c710f0 commit 3cc6eae

29 files changed

+159
-75
lines changed

README.md

Lines changed: 127 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,160 @@
11
# NavGrid
22

3-
NavGrid is an all-in-one navigation system for Starbase.
3+
<img src="img/title.jpg" alt="NavGrid" width="300" height="300">
44

5-
NavGrid builds upon Collective's ISAN2 GPS system, adding a familiar visual
6-
interface to supplement ISAN's raw-numbers display.
5+
NavGrid is an all-in-one navigation system for Starbase. It builds upon Collective's ISAN2 GPS system, adding an easy-to follow visual interface that supplements ISAN's raw-numbers display.
76

8-
[NavGrid UI picture]
7+
It features 6 directional presets, up to 14 editable user-defined waypoints, and several navigational displays to help point you whichever direction you might be going.
98

10-
It features 6 directional presets, up to 14 editable user-defined waypoints,
11-
and a wide variety of optional displays to help point you whichever direction
12-
you might be going.
9+
It works while stationary and while flying at max speed.
1310

14-
[Navgrid + NavP + ISAN Picture]
11+
You can set waypoints at your current location and at far off destinations.
1512

16-
NavGrid is designed with the following audiences in mind:
17-
- Pilots who want to just choose a destination and fly to it, without needing
18-
to stare at numbers, without fiddling with transponder settings, and without
19-
puzzling over which way is "up".
20-
- Streamers who want to navigate without displaying their numbers on the
21-
screen.
22-
- Clans who want member to be able to easily navigate multiple company stations.
23-
- Ship designers who want to provide more navigational quality-of-life without
24-
losing compatibility with Starbase's most prevalent GPS system.
2513

26-
[Navgrid in action; pointing at Origin 14]
2714

28-
## Requirements and Features
15+
Coordinate displays are *totally optional*. If you don't want your coordinates on display (or if you just want purely visual navigation) you can hide all related displays on a memory chip with no loss in functionality.
2916

30-
Performance: *0.8s* refresh time with max *3.0s* processing latency
17+
Best of all, it is fully compatible with most other projects that use ISAN, as long as they are compatible with ISAN's `speed` setting.
18+
19+
**If you want to take NavGrid for a test drive *right now*, download and import my <a href=blueprints/NavGridDemoShip.fbe download>NavGrid Demo Ship</a> for a fully functional QUAD setup.**
20+
21+
<img src="img/demo_2.jpg" alt="Navigating at home..." width="800" height="600">
22+
23+
# Table of contents
24+
- [Features and Options](#features)
25+
- [Getting Started](#gettingstarted)
26+
- [Controls](#controls)
27+
- [Manual Installation](#install)
28+
29+
<div id='features'></div>
30+
31+
# Features and Options
32+
33+
**Performance:** *0.8s* refresh time with max *3.0s* processing latency.
3134

3235
**Core:**
33-
[Picture 3 nav recievers, 4 racks, and the required controls]
36+
37+
- NavGrid display: visual ASCII display for easy directional navigation.
38+
- 6 Directional presets for general navigation (2 for each x, y, z axis).
39+
- 10 user-defined waypoints.
40+
- ISAN MONO.
3441
- Triplicate ISAN synchronization: 3 individual ISAN units operate on separate
3542
synchronized chips to provide maximum accuracy with zero performance loss.
3643
- Full support for any other ISAN addons you might be using, as long as they
37-
let you run with ISAN `speed` enabled.
38-
- Nav "Ball" display: visual ASCII display for easy directional navigation.
39-
- 6 Directional presets for general navigation (2 for each x, y, z axis)
40-
- 10 user-defined waypoints
44+
are compatible with ISAN's `speed` option.
45+
46+
47+
**(Optional) QUAD:**
4148

42-
**(Optional) ISAN QUAD:**
43-
[Picture 9 more nav recievers]
49+
+ Improved response while turning.
4450
+ QUAD damage detection: QUAD mode has the same automatic damage detection as
45-
standard ISAN, with all three units entering MONO in unison if receivers are
51+
standard ISAN, with all three units entering MONO in unison if any nonessential receivers are
4652
damaged or destroyed.
47-
+ Significantly reduced jitter while turning.
4853

49-
**(Optional) Expansion modules:**
50-
[Picture 1 memory card and 1 chip]
51-
+ 4 more user-defined waypoints
52-
+ Display navpoint coordinates and ship attitude
54+
**(Optional) Expansion module:**
55+
56+
+ 4 more user-defined waypoints.
57+
+ Display navpoint coordinates and ship attitude.
5358

5459
**(Optional) Use your own waypoint system:**
55-
[Picture 1 rack]
60+
5661
+ Replace NavGrid's navpoint management with your favorite waypoint system, as
5762
long as it uses ISAN coordinates.
63+
+ Refer to the [euler_waypoint.yolol](optional/custom_waypoints/euler_waypoint.yolol) source code and the chip diagram in [Manual Installation](#install) for instructions.
64+
65+
<img src="img/demo_1.jpg" alt="...or in the belt" width="800" height="600">
66+
67+
<div id='gettingstarted'></div>
68+
69+
# Getting Started
70+
71+
### **1 - Remove your ISAN chip**
72+
73+
Don't worry: NavGrid includes [another one](required/isan.yolol).
74+
75+
If you are unfamiliar with ISAN, please refer to the [ISAN manual](isan.to/doc) for a really good explanation of how all this works.
76+
77+
### **2 - Download the <a href=blueprints/NavGridV1-0.fbe download>NavGrid V1.0</a> blueprint and import it into your SSC.**
78+
79+
[This reddit post](https://www.reddit.com/r/starbase/comments/p49nc1/tutorial_how_to_share_selfmade_blueprints_with/) has good directions for importing blueprints.
80+
81+
### **3 - Load the NavGrid blueprint and delete any modules you don't want.**
82+
83+
<img src="img/modules_core.jpg" alt="Core" width="270" height="200"> | <img src="img/modules_quad.jpg" alt="QUAD" width="270" height="200"> | <img src="img/modules_exp.jpg" alt="Expansion" width="270" height="200">
84+
85+
*My recommendation:* Use Core + the Expansion, but not QUAD. MONO requires a little more patience (just like regular ISAN) but it is sufficient for 90% of situations.
86+
87+
- If you are adding NavGrid to a ship in the SSC, select everything that's left and save as a submodule so you can import it into other blueprints.
88+
- If you are adding NavGrid outside the SSC, just buy the "ship". (Make sure there's nothing else in your hangar first or things will go flying)
89+
90+
### **4 - Add the included receivers to your ship**
91+
(IMPORTANT: If you are using QUAD, use those receivers *instead* of the receivers in core.)
92+
93+
This is the complicated step. You'll notice my receivers are in a specific formation:
94+
95+
<img src="img/installation_axes.jpg" alt="The 'L'" width="800" height="600">
96+
97+
NavGrid has three ISAN units: a main ISAN unit for getting coordinates, a `forward` ISAN unit for figuring out where you're pointed, and a `down` ISAN unit for figuring out your roll.
98+
99+
For NavGrid to be accurate, it is very important that all three units form an `L` with `forward` being forward and `down` being down, kind of like your flight control unit. Distance between the units does not matter much; units that are far apart help reduce jitter while flying, but NavGrid works even if the Receivers are right next to each other. *All that really matters is that they are in line with each other as shown above - that is **very** important.*
100+
101+
Once installed, make sure that your main receiver has a field named `a`, your forward receiver has a field named `e`, and your down receiver has a field named `i`.
102+
103+
**Additional information for QUAD ISAN:**
104+
105+
Pretend that each group of four is a single unit; try not to mix them up or move them out of formation when you install them.
106+
107+
The main ISAN receivers" have variables named A, B, C, and D. Receiver A has `SignalStrength` renamed to `a` and `TargetMessage` renamed to `at`. B has `b` and `bt` and so on.
108+
109+
Following that pattern, the "forward" and "down" receivers continue the alphabet from there:
110+
- Forward: E, F, G, and H
111+
- Down: I, J, K, and L
112+
113+
For maximum accuracy, each grouping of A/E/I, B/F/J, C/G/K, and D/H/L should form their own `L` shape as shown below. The recievers included in the blueprint are in the correct formation but you should always double-check after installation.
114+
115+
<img src="img/installation_quad_2.jpg" alt="QUAD L" width="400" height="300"> | <img src="img/installation_quad_1.jpg" alt="QUAD Naming" width="400" height="300">
116+
117+
### **5 - Add all chip racks and displays**
118+
119+
Almost done! All you need to do now is attach the included racks and displays wherever works best for you.
120+
121+
The big 3x3 display is best used while not actively flying, so it doesn't need to be in the cockpit.
122+
123+
### **6 - Take it for a spin!**
124+
125+
Once everything is installed, the NavGrid display should not be displaying any warnings if ISAN is working correctly. Try restarting ISAN if there are any errors.
126+
127+
If "Receiver Error" pops up it means you are out of ISAN range or one or more recievers can't be found. Check your receiver cables and try renaming their fields again.
128+
129+
Once NavGrid is displaying its crosshair, set your waypoint to 4 and follow the dot. If your receivers are properly aligned, you should end up pointed at Eos with :Pit near 0 and :Hdg near +/-180
130+
131+
<div id='controls'></div>
132+
133+
# Controls
58134

59-
## Installation
135+
### **Selecting navpoints:**
136+
Press nUp or nDn to change the selected navpoint.
60137

61-
Installation is similar to ISAN2, but with more units. Please refer to the [ISAN
62-
manual](isan.to/doc) for a really good explanation of how to install, name, and
63-
operate each unit.
138+
### **Set current navpoint to the current coordinates:**
139+
Press nSet. Press again to overwrite if a navpoint already exists at this index. Presets cannot be overwritten.
64140

65-
#### Chips and memory:
66-
[Picture mapping chip types to file names]
67-
[Picture of memory contents]
141+
### **Edit navpoint or set navpoint from coordinates:**
142+
Using the universal tool on the included displays, edit nName, nX, nY, and/or nZ as desired. Press nSave. Press again to confirm overwrite. Presets cannot be edited.
68143

69-
#### Receivers:
70-
It is very important that receivers are installed in the correct "L" shape. If
71-
your axes are misaligned, your navigation will be misaligned.
144+
<img src="img/controls_grid.jpg" alt="The Grid" width="300" height="300"> | <img src="img/controls_eng_panel.jpg" alt="Engineering Panel" width="470" height="350">
72145

73-
[Picture showing reciever axes]
146+
<div id='install'></div>
74147

75-
By default, NavGrid assumes your recievers will be "forward" and "down" from
76-
your primary ISAN receiver(s). You can use "rear" and "up" receivers instead
77-
with a small code edit:
148+
# Manual Installation
78149

79-
[Picture showing axis options]
150+
I highly recommend the blueprint-based installation in the [Getting Started](#gettingstarted) section. Copying multiple scripts by hand is much more tedius and error-prone.
80151

81-
For quad setups, name location is also very important. Make sure corresponding
82-
receivers for each ISAN direction are in-axis with each other as shown here:
152+
If you're still here then I'll assume you know your way around a yolol chip:
83153

84-
[Picture showing QUAD naming]
154+
1) Copy all `required` chips and any desired `optional` chips.
155+
- The source files in git have full documentation complete with usage, required controls (if any), and additional installation directions. Chip installation is pretty simple compared to receiver installation, but if you don't read the docstrings you'll probably miss something!
156+
2) Set up your receivers in the `L` formation shown in the [Getting Started](#gettingstarted) section.
157+
- Make sure each receiver has `SignalStrength` and `TargetMessage` renamed to the correct names, as shown in that section.
85158

86-
#### Controls and operation:
87-
TODO
159+
My core chips are arranged as follows, in case you want to pull chips from the blueprint instead of copying:
160+
<img src="img/installation_rack.jpg" alt="QUAD Naming" width="800" height="600">

blueprints/NavGridV1-0.fbe

51.3 KB
Binary file not shown.

blueprints/NavgridDemoShip.fbe

138 KB
Binary file not shown.

img/controls_eng_panel.jpg

463 KB
Loading

img/controls_grid.jpg

54.4 KB
Loading

img/demo_1.jpg

571 KB
Loading

img/demo_2.jpg

926 KB
Loading

img/installation_axes.jpg

623 KB
Loading

img/installation_quad_1.jpg

554 KB
Loading

img/installation_quad_2.jpg

685 KB
Loading

img/installation_rack.jpg

299 KB
Loading

img/modules_core.jpg

450 KB
Loading

img/modules_exp.jpg

296 KB
Loading

img/modules_quad.jpg

599 KB
Loading

img/title.jpg

45.6 KB
Loading

optional/expansion/extra_displays.yolol

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,17 @@ e*=e>0 e+=2*(:sy>A)*(e<5) IF e--<1 THEN m=at END :Attitude=m GOTO3
1818

1919

2020

21-
22-
23-
24-
2521
// ------------------ This line is 70 chars long ------------------- >
2622

2723
// extra_displays.yolol
2824
// by StandPeter
2925

3026
// ------------------ This line is 70 chars long ------------------- >
3127

32-
// This optional chip creates easy displays for your current vehicle
33-
// attitude and the ISAN coordinates of your navpoint target.
28+
// This optional chip formats some of navgrid's internal variables
29+
// into displays for extra information.
30+
31+
// Atttude: Displays your vehicles current roll, pitch, and heading.
32+
33+
// NavC: Displays the x, y, z coordinate of your current selected
34+
// navpoint.
File renamed without changes.

euler_attitude.yolol renamed to required/euler_attitude.yolol

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,6 @@ s=:sy err+=2*(err<9)*(:sy>"9") GOTO6-(err--<1) // euler_attitude.yolol
3434
// Heading is rotation along the ISAN Y axis (ie :Hdg=0 when you are
3535
// pointed directly into the belt) and Pitch is inclination along the
3636
// ISAN Y axis (ie :Pit=90 when you are pointed directly up toward the
37-
// top of the belt)
37+
// top of the belt)
38+
39+
// Outputs are saved to :Pit, :Hdg, and :Rol

euler_navp.yolol renamed to required/euler_navp.yolol

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ o=90 p=180 u=40 v=50 d=10 h=0.5 ds="$" ns="" nd=0 t="9843" r=17 GOTO3
22
:nPit=u*n3^3+v*n3 :nHdg=(1-2*(n1>0))*(-u*i^3-v*i+o) :nDist=nd
33
s0=:sy%4 x=1*nd n1=:nX-:x n2=:nZ-:z n3=:nY-:y nd=SQRT(n1^2+n2^2+n3^2)
44
:nStat="" x=1*nd n1/=nd n2/=nd n3/=nd nd=nd/1000*1000 //euler_navp by
5-
i=n2/SQRT(1-n3^2) x=:sy%4 GOTO5-(3-11*(ns!=:nStr))*(x!=s0)//StandPeter
5+
i=n2/SQRT(1-n3^2) x=:sy%4 GOTO5-(3-12*(ns!=:nStr))*(x!=s0)//StandPeter
66
s0=:sy err+=2*(err<9)*(:sy>"9") x=6-(err--<1) GOTOx+(14-x)*(ns!=:nStr)
77
s-- s*=s>0 p1="X+:\nPrograde0" p2="X-:\nRetrograde1" p3="Z+:\nRadial2"
88
s*=s<7 p4="Z-:\nAnti-radial3" p5="Y+:\nNormal4" p6="Y-:\nAnti-normal5"
@@ -28,7 +28,14 @@ ss="[ ERROR ]" :nStat=ss nn="Bad Format" :nName=nn GOTO13 //NavGrid
2828
// ADVANCED CHIP REQUIRED
2929

3030
// Computes the Euler Angles of your target navpoint to find its
31-
// alignment related to your current position.
31+
// alignment relative to your current position.
3232

33-
// Whenever a new navpoint is loaded into nStr by navp.yolol, this
34-
// chip decodes it into usable coordinates.
33+
// Euler outputs are saved to :nPit, :nHdg, and :nDist
34+
35+
// Whenever a new navpoint is loaded into :nStr by navp.yolol, this
36+
// chip decodes it into usable coordinates.
37+
38+
// Once loaded, navpoint attributes are saved to :nName, :nX, :nY, :nZ
39+
40+
// Navpoint status messages (such as loading, no waypoint, etc) are
41+
// saved to :nDist

euler_relative.yolol renamed to required/euler_relative.yolol

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,6 @@ s=:sy err+=2*(err<9)*(:sy>"9") GOTO6-(err--<1) // euler_relative.yolol
2929

3030
// Subtracts absolute attitude from navpoint alignment, and rotates
3131
// the result by your current roll to determine the relative pitch and
32-
// heading to your navpoint target.
32+
// heading to your navpoint target.
33+
34+
// Outputs are saved to :tPit and :tHdg
File renamed without changes.

isan.yolol renamed to required/isan.yolol

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
A=1000 n=1000 pr=0 sp=1 dv=(9.6+2.4*pr)*n so=1-sp o=160000 e=8*o c=""
22
z="origin_" mr=z+"north" br=z+"south" cr=z+"east" z+="west" sm="\nS: "
3-
u=e*3/13 l=2*o mm=l*13/19 k=e*3/19 :sy=0 q=15 x/=so sm=c ss=c
3+
u=e*3/13 l=2*o mm=l*13/19 k=e*3/19 :sy=4 q=15 x/=so sm=c ss=c
44
rr="ISAN2 :_\n " xm="\nX: " ym="\nY: " zm="\nZ: " nn=l*13/3
55
ej=17*sp h="Q" pj=15-pr b=0.5 p=1000000 :at=mr :bt=br :ct=cr :dt=z x=0
66
t=(p-:a)^2 i=(p-:b)^2 g=(p-:c)^2 f=(p-:d)^2 :sy=jj++%4+4/(:sy>3) gotoq
@@ -26,11 +26,10 @@ st=:_!=c :_=rr+"\n\n ISAN2\n OFFLINE" goto 20*st // by StandPeter
2626
// MODIFIED BY STANDPETER FOR USE BY NAVGRID:
2727
// - Set speed mode to 1.
2828
// - Save xx, yy, zz to :x, :y, :z respectively.
29-
// - line 3: update variable initialization to account for other
30-
// changes.
3129
// - lines 6-10: Save a synchronization heartbeat to :sy to help keep
32-
// all three ISAN chips in sync, so they will all take readings from
33-
// the same transmitter at the same time and will all move to MONO
34-
// once any of them switch to MONO.
35-
// - lines 6-13: Introduce power operations to save space. Move the
36-
// catch for basic chip syntax errors to line 13.
30+
// all three ISAN chips in sync so they will all take readings from
31+
// the same transmitter at the same time. This is necessary for
32+
// Navgrid to work while moving. :sy is also used for damage detection
33+
// and for displaying error messages.
34+
// - lines 6-13: Use power operations where appropriate to make room
35+
// for the :sy heartbeat
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

navp.yolol renamed to required/navp.yolol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ a=:np17 b=:np18 c=:np19 d=:np20 v=a+b+c+d-w-a-b-c-d GOTO2
3434
// - Up to 14 editable user-defined navpoints. Navpoints can be
3535
// selected, set, and edited using the controls below
3636

37-
// Controls:
37+
// Required Controls:
3838
// - nUp, nDn: Any button; ButtonStyle=1. Increase or decrease the
3939
// current navpoint index
4040
// - nSet: Any button; ButtonStyle=1. Set the selected navpoint to the

0 commit comments

Comments
 (0)