You are on page 1of 26

FPVTrackside Manual

Getting started

Event Selection
An event is basically a collection of pilots, races and settings that make up a particular race day.
The first time an event is created for you with some default parameters. After that you’ll use the
buttons towards the bottom of the page to make new events / remove events / clone events.

Event Name
Fairly obvious what this does. Names the event so you can find it later. Also when the software
is running it shows up in the top left to the screen so name it something appropriate!

Laps
How many laps to do. In a Race it specifies the end of the race, in TimeTrial it specifies the
number of consecutive laps that pilots will be timed.

PB Laps
The PB stands for Personal Best. This is a timed consecutive lap count that will show up on the
top of a racers screen. In a race you’d typically leave it as 1 lap so that each pilot's best lap time
is shown. In time-trial you’d likely match it to the Laps setting so their best consecutive laps are
shown. When a new PB has been made in this race it will come up in Green lettering. When a
pilot has the best PB of any pilot it will be Purple.
Race Length
At the end of this timer the announcer will call the pilots to finish their laps and land. Each pilot
can only record 1 lap after the timer and the rest will be marked invalid. They can be made valid
from the lap editor.

Min Start Delay / Max Start Delay


At the start of the race the announcer will call “Arm your quads, starting on the tone in under X”
where X is the Max Start Delay. Then a random amount of time less than Max Start Delay will
be waited and the race will begin. Additionally there is the Min Start Delay setting which is the
minimum time to wait so that there is always a pause between the end of the announcement
and the race start.

Race Start Seconds to Ignore Detections


This is the amount of time after the start of the race to ignore any detections. Some track
layouts have the pilots start near the timing system, you can use this to make sure they don’t
false trigger at the start of a race. The times are recorded just marked as invalid in the system.
They can be made valid from the lap editor.

Primary Timing System Location


This setting has 2 possible options and needs some explanation. It tells the timing system about
your track layout.

End of Lap
The first time the pilots fly through the timing gate marks the End of the first lap. Use this
option if your track starts and doesn’t immediately go through the timing system.

Holeshot
The first time the pilots fly through the timing gate marks the Start of the first lap. Use
this option if your track starts and the pilots fly through the timed gate right away. This
first detection will give the system a Holeshot time and is ideal for TimeTrials as the
pilots don’t waste time doing an uncounted first lap.

Race Length
The length of the race timer in seconds. At the end of the timer the announcer will beep, then
call out pilots to finish their lap and then land. However the race continues until the Race
Director presses the Stop Race button.

Smart Minimum lap time


If a lap is under this time it will be marked as invalid and not shown on screen or called out. This
is handy when your timing system is getting lots of impossibly short laptime false reads.
However because each lap is made out of 2 detections we have to determine which detection
was the false read. To do that we actually wait for the next detection so we can work out which
detection is more likely the false one by comparing lap time averages.
So the main things to be aware of
● Delayed. It only invalidates after the next lap.
● It only removes the clear false reads.
● It can’t invalidate the last lap or change final positioning.
● Leaves big decisions to the Race Director

Main Screen
Once you’ve set up your event and pressed Ok you’ll be brought to the main screen which is
laid out as follows..
● Pilot list on the left. All pilots in this event are shown here. Right click it to add pilots. The
pilot list will hide itself during races to maximise the size of the FPV feeds.
● Event and Race info at the top. Many of these items are clickable for quick changes. For
example laps or race type.
● Tabs are also shown across the top. Allowing you to choose what to display in the main
area of the screen.
● Race controls and settings are on the right hand side. The main way to access the
settings of the following options is the settings button near the top right of the screen. It
looks like 3 horizontal lines.

Timing Settings
Timing system settings are available from the Settings Button. Open up the settings and let's
configure a timing system.

Adding a Timing System


Press the Add button to the bottom of the page to pop up a list of the various timing systems the
software supports. Each one has different settings and I’ll go through that now.

Lap RF 8 way
The Lap RF defaults to an ip of 192.168.1.9. So trackside comes configured to connect
to that ip by default.

Your laptop will also need to be configured to have an IP in the same range, so
192.168.1.X where X is something between 1 and 255. Of course don’t use 9 as that’s
the address of the laprf.

if you’re plugging in directly just give yourself a static IP in windows network settings
within that 192.168.1.X range. Different versions of windows handle this differently, but
you should be able to youtube a guide on how to set it.

If you’re using a router you’ll need to setup your DHCP server to give ip’s in the
192.168.1.10 - 192.168.1.255 range. That way the router can provide an address to your
computer. Making the range start at 10 will stop it from ever conflicting with the LapRF.
Lap RF Puck
The puck is a little trickier to get going. For whatever reason the puck ships in a
communication mode that is incompatible with its own libraries. So to switch its USB
mode you need to use a terminal program (like Putty) to connect to it via the com port
and type the command Upp and press enter. Just Capital U then 2 p’s and enter.

After that give it a full reboot and it should now be in binary mode. If you’re having any
problem check out my biggest competitors youtube video on the subject
https://www.youtube.com/watch?v=14CA9nAUJSw

After that it’s just a matter of selecting LapRF Puck USB and using the drop down list to
select its com port. It should connect and behave just like its bigger brother, just less
accurately.

Video
Video lap detection is in very early stages of development but can actually work
reasonably well. First you need to set up a gate on your track that is a bright colour that
is unlike the surrounding colours. Red / Pink / Magenta are all good choices. The larger
the more colourful the gate is the more likely it is to work.
Then set the colour you’ve chosen into the RGB values of the video settings. For red
you’d put R as 255 (the max value).

Then, make sure “Show Info” is turned on and have someone fly the track. You’ll need to
bring up their pilot video feed. At the top of their feed you’ll see the information of how
much of the colour the timing system can see. The main number to watch is “max” and
see what it peaks at when the drone flies through coloured gate. Also watch how it goes
around the rest of the track. Then, go back into settings and pick an Activity Threshold
value a little less than the max value you saw as they went through the gate. Choose a
Trigger threshold of a value more typical of just cruising the track not near the coloured
gate.

Try it out now, if it isn’t working great try making sure your color is set correctly. You can
also lower the sensitivity to the particular color by changing the Color Sensitivity from its
default 0.9 to 0.8.

You may be able to time via video! Or maybe it won’t work at all. That’s how it is at the
moment!

Dummy
A little random number generator. Can be configured to spit out random times so that
you can debug your OBS feed and layouts with realish looking data.
Multiple Timing Systems
FPVTrackside supports having multiple timing systems. The way it works is there will be one
main timing system that does each Lap, then as many additional split timing systems as you
want to put on your track. Pilots are not required to have triggers on the split timers, if a split
timing system misses a trigger, the lap will count as normal.

When using multiple timing systems just press Add to add as many as you require. The list on
the left will show you in brackets what function each timing system is performing. They can be
dragged around to position them in the right spots.

Video Settings
FPVTrackside is all about video. ‘Video settings’ is accessible from the Settings button on the
main screen. Video to channel mapping is done on a left to right top to bottom order. Add an
additional “device” by using the add button at the bottom and then configuring the following
properties.

Channel Mapper / Video test


The top of the input screen shows the video feed coming in directly from the device. The config
set below will dynamically update and show in this little area.

Clicking on a section of the area will give you some options..

No Channel
Un-assigns this video feed. It won’t be used in FPVTrackside

Channel Assignment
Assigns the selected channel to this feed. When a pilot flies on this channel, this feed will be
shown.

Camera
Assign this feed to be a Launch or Commentator camera. Launch is typically pointed at the
launch blocks and commentator at the crowd or the race director. See the section on scenes for
more info.

Split
Splits this feed into multiple feeds. So if you have a 2x2 security system, you’d split it using this
option.

Any USB Port


If this is selected FPVTrackside will attempt to always find the video capture device based on its
name rather than which USB port it’s plugged into. It’s handy on race day when you’re in a rush
to get everything plugged in. However if you have multiple video input devices with the same
name you’ll definitely want to turn this off.
Video Mode
The Framework, resolution, frame rate and color space of the video input. These can affect
performance. Modes using Media Foundation will generally run significantly better than the older
DirectShow framework. I’d also recommend 30hz as that’s what most FPV drones output.

Flipped Vertically
Some devices are inverted. Use this to fix it.

Stop feed when not in use


This tells the video device to stop sending video data when it’s not being shown on screen. But
it’s done at a hardware level and some devices take a few seconds to get going again after
they’ve been stopped. So leave it un-ticked if you’re getting annoying delays.

Channel Splits
Generally the video sources used by FPVTrackside come via a security system that divides the
pilots video feeds up into sections of the screen. This is the setting you’d configure to match
your security system. For example, if you security system outputs 9 sub video feeds in a 3x3
grid you would select three by three. For a security system with 4 outputs, you’d choose two by
two. Or if each pilot gets their own video feed just choose Single Channel.

Channel Coverage Percent


Sometimes security system feeds bleed into each other slightly. This setting lets you slightly
shrink each pilots video feed to crop out any bleed from the other pilots feed or the security
systems interface. It’s a percentage that shrinks towards the middle of the feed as you lower the
number. Default value is 99%.

Overlay
For the non-fpv source types a text description will be added to the screen in the specified
position. It can also be disabled and renamed. This is now done on the main FPVTrackside
screen. Right click on the camera feed you want to change and you’ll see the overlay options.

Supported video devices


FPVTrackside should work with most DirectShow or Media Foundation compatible capture
devices. Including modern Elgatos, webcams and those little $15 thumbstick capture devices
bought on ebay. Incompatible devices however can always be used via OBS Virtual Camera
which I go into further a bit later.

OBS Virtual Camera Plugin


This lets you run OBS as an input into FPVTrackside. This means you can effectively use any
device / program that is OBS compatible. It works with all the cropping and scaling in OBS so
you can really do some rather advanced things with it.
Note: OBS built in this functionality directly into OBS. Unfortunately the built in version is not
supported yet. So please continue to use the plugin version.

The version compatible with FPVTrackside is below. https://github.com/Fenrirthviti/obs-virtual-


cam/releases

To also stream, you’ll need to run a second OBS instance capturing the FPVTrackside window
as normal.

Theme Settings
The visual theme of the software can be chosen in Theme Settings. There are a number of
defaults you can choose from on the left and a small example on the right. Press Set Theme to
apply it.

Custom Themes
Themes are stored in the themes directory. Each theme will have its own directory with the
name of the theme.

Inside the theme there are a number of images and also the theme.xml that contains all of the
colour/texture data. The images can be modified with club logos etc.

The default included themes will be overwritten when a new version is installed. So before
customizing a theme, copy and rename one of the directories. Name it the name of your new
theme. When you restart trackside it will be there.

Theme.xml
UI elements are grouped together in themes. Below I have an example from themes for the
Editor. Which is the UI element you use to edit settings, events, laps and races.

<Editor>
<Border R="23" G="15" B="25" A="185" />
<Background R="30" G="22" B="32" A="185" TextureFilename="" />
<Foreground R="35" G="27" B="37" A="185" TextureFilename="" />
<Text R="255" G="255" B="255" A="255" />
</Editor>

Each line contains the 4 attributes needed to assign a colour. Red, Green, Blue and Alpha
(Transparency). All values are in the common 0 - 255 scale with 0 being darkest and 255 being
full colour. For Alpha, 0 is invisible and 255 fully visible.

Many elements also include the “TextureFilename” option which will override the color set if a
matching image is found with the given name. Basically, it lets you set the background of
various panels to an image. The image will be stretched and scaled to fit the given panel, so
make sure it’s shaped to match.

Channel Colors
These are also stored in the Theme xml file.

They’re stored in frequency order. So the lowest frequency channel will have the first color.
Second lowest, second color etc.
Channels grouped together that share a common frequency will share the same color.

Scenes
FPVTrackside has 3 scenes that automatically change based on Race state and show the
various input video feeds.
● Pre Race - Launch cam, commentator cam, pit cams
● Race - The normal FPV feeds
● Post Race - Results, commentator cam, next race

Scenes work really well when combined with the Round generation system which you can read
about later in the document. Once you have rounds setup you can move through to the next
race directly from the post race scene. You can effectively run the entire event just by clicking
the next race.

Both Pre race and Post race can be disabled in General Settings. Pre-race will also be
effectively disabled if you have no extra video inputs.

Channels
Channels are editable from the Settings button. It defaults to IMD6c. More channels can be
Added with the Add button.

Each event has its own set of channels. A set of channels can be saved as a new event’s
default using the checkbox in the bottom left of the Channel Settings screen.
Channel Groups
If you add multiple channels on the same frequency (for example HDZero 1 and Raceband 1) it
will automatically group these channels together and combine them as one slot in the Rounds
screen. This is handy when managing digital as detailed below…

Analog / HDZero / DJI


FPVTrackside is aware that these channels are incompatible. A pilot on Digital DJI 1 can’t
simply swap to Analog Raceband 8. So when adding pilots to races the software will only add
pilots when there is a compatible free slot.

This is particularly handy when combined with Channel Groups if you add a pilot to a slot with
both a Digital and an Analog channel. When added, the pilot will automatically be added to the
appropriate type based on their past race, or the channel they’re set to in the left hand pilot list.

To correct any changes or mis-assignments; Right clicking on the pilot in the race will bring up a
channel change menu.

Managing Pilots

Adding pilots
The pilot list is on the left hand side of the screen. Right clicking on it will bring up a menu to
Add, Edit or import the pilots.
● To add one pilot just click add pilot and type their name in the popup window.
● To import an event's worth of pilots go to your spreadsheet and select all your pilot
names and press copy, then in trackside press the “Import from clipboard” menu item.
The pilots will be shown to you in the pilot editor window, to finish the import press save.
Pilots are shared between events based on their lowercase pilot name. So when you add a pilot
that has been in one of your events before the same pilot in the database will be added to this
new event. Eventually the software will have per-pilots statistics across multiple events.

Removing pilots
To just remove one pilot right click on the pilots list and press remove. Pilots will not be deleted
they will just be removed from this event.

Recovering removed pilots


Right click on the pilot list and press recover to bring back all the previously removed pilots.

Changing Channels
You can change the channel of each pilot by clicking on the channel next to their name. Right
clicking the pilot list in general will give you the option to redistribute the pilots evenly across all
channels.
Running Races

Adding pilots to the race


There are 3 ways to add pilots to a race..
● Round Generation - Use the round generator to create rounds for you. Then from the
rounds screen simply click the race you want to run. There is a section on this later in
the manual.
● Manual - Click the pilots name in the pilots list on the left. If their channel is free they will
be added to the race. If their channel is not free, you can force-add the pilot by holding
ctrl. The next free channel will be used by the pilot.
● Import from the clipboard - If you have a spreadsheet to manage your race day you can
copy the cells with the pilot names in your spreadsheet, then in FPVTrackside press ctrl-
V to paste in the pilots. There is also a button to do this on the right. It looks like a
clipboard going into 6 pilot windows.

Round / Race Types


Each race in a round shares the same type. They define the rules of each race.

Race
The pilots race to complete the specified number of laps. The announcer will call out the
pilot's position at the end of each lap. At the end of the race the result screen will show
pilots positions within this race.

Endurance / Aggregate Laps


Pilots try to complete the most laps in a specified time. If pilots complete the same
number of laps then the winner is whoever completed them faster.

TimeTrial
The pilots compete on consecutive lap times. However, the pilots can and will do more
than the specified laps and the best of those consecutive laps are chosen. The
announcer will call out consecutive lap times once the pilot has done the required
number of laps. At the end of the time trial when the race director presses stop the
results screen will show each pilot's best laps and their current position within the entire
event.

Practice
Very similar to the time trial in format however none of the times are ever counted
towards results. Basically a time trial that doesn’t count.

Casual Practice
Laps on all frequencies are recorded and there is no time limit. Pilots will be
automatically created with names based on the channel and race/round number, R1 (1-
1) for example. This mode is great if you just have a bunch of people who just want to
plonk down their drone and fly.
Freestyle
Timing system is disabled, lap related parts of the UI are hidden and the video feed is
shown front and center. The only active thing are the timers for Race Length.

Starting the race


Once you have pilots added to the race with their video feeds showing you’re ready to start the
race. A Play icon will appear on the right of the screen. Press it and the announcer will begin
starting the race.
If something has gone wrong in the software or in the timing system the announcer may cancel
the race start. Check your cabling / settings and try again.

Stopping the race


Once the start race button has been pressed the buttons a new stop button appears. Pressing
the stop button immediately ends the race. Stops detection. And the announce calls it out.

If stop is pressed during the pre-start, before the start tone, the announcer will tell pilots to
disarm and the race will not begin.

Clearing pilots
Once pilots have been added to the race a new button appears that Clears all the current pilots
in a race. It looks like a dusting brush. It can only be pressed before a race begins, or after it is
finished.
Once a race has finished it must be pressed to clear the screen ready to run the next race.

Copying Results
Once a race has been completed, a new button appears that looks like a podium going into a
clipboard. Pressing this will copy the results of the current race into the clipboard so you can
paste it back into any spreadsheet you are using to run the event. There are several export
options in General Settings to configure which columns you want.

Reset race
Another icon that appears after a race has finished is the reset button. It looks like an arrow
going back on itself. Pressing it will clear the race results and reset the race back to the start so
you can do a rerun. There is a confirmation popup so you don’t accidentally do it.

Lap Editing

How laps / detections work.


Each detection is a single point in time. To make a lap, we need 2 points in time, the start
detection and the end detection.
In the software a lap is created when we have an end detection. With the start being worked out
from the start of the race or the detection of the previous lap.
When you disqualify a lap, its detection will be removed and it will also no longer be the start
detection of the following lap. This means when a lap is disqualified, the lap after the disqualified
lap will become longer.
Basically, when you disqualify a lap, you are really disqualifying a “detection”. The laps shuffle
around their times to fit whatever detections are left. So when disqualifying laps, try not to look
at the lap times, try to work out which detections are invalid by asking pilots/spotters/video what
occurred. Often a small lap time means the previous lap detection is wrong, not the one with the
tiny time.

Disqualifying lap(s)
While a race is running the most typical problem you’ll get is an extra lap detection. Right click
on the lap and press Disqualify to remove that lap. As a faster method, you can also hold Ctrl
and left click that lap to disqualify it.

Splitting laps
If a detection has been missed by the timing system, but the lap after the missed detection was
correctly detected. You can split the longer lap into 2 laps with half the original time in each. To
do this right click the lap and select Split into 2.

Adding laps
Another solution to a missed lap is simply adding a lap at the current time. To do that right click
on the lap bar and select add. In a race this can be helpful as it will often give you correct
position information. However at the end of the race it will be worth going through and editing
the laps otherwise the manual add will often give the pilot new record times.

Editing laps / Undisqualifying laps


At any point you can right click the lap bar and go into the edit laps menu. In the edit laps menu
any laps that have been disqualified will be visible in a darker tone. You can un-disqualify them
in the right click menu or holding ctrl and clicking them.

You can also edit the times of laps by clicking on the lap and adjusting the time. Keep in mind
the lap after the adjusted lap will also change in length, in the opposite direction.

Replay / Video recording


Video recording can be enabled in general settings. Quick warning though it uses a lot of cpu
time and you need a very powerful machine to be able to record and stream with OBS at the
same time.

Each race will be recorded into a video file in the Videos directory. After the race has ended
you’ll have the option to open the Replay tab. The tab has the video feeds of all pilots with a
playback tracking bar and controls along the bottom.
On the tracking bar are flags marking the start / end of the race and arrows marking each pilot's
lap in their respective channel colour.

If you’re not interested in certain pilots views in a replay you can remove them with the top right
X button on each of their feeds. Bring them all back with the Show All button along the bottom.

Shortcut Keys
Space - Play / Pause
, - Step backwards 1 frame
. - Step forwards 1 frame

Editing Laps
So all the normal lap editing functions work here in Replay as well. With the important extra
feature of laps added Manually will be added at the current video time. So if a pilot's lap was
missed by the timing system you can find the frame they crossed the line and add the lap then.

Round Generation / History


FPVTrackside has a simple round generation algorithm. It’s not perfect, but is totally dynamic so
will handle things like people pulling out mid-race-day or people arriving late and odd numbers
of pilots.
If you don’t want to use the generation part, it also provides a history of previous races and their
results. Plus allows you to go to a past race and re-run it.

To open round generation press the Rounds tab on the top.

Generating rounds
If no races have yet been run, opening rounds is enough to generate the first round of the races.
However it is often worth right clicking the pilot list and redistributing all the channels before
starting the first round. That way everyone is nice and spread out over the channel range.

To add more rounds, press the + button and you’ll be given a few options.

Randomis, Keep Channels


Generate a new round but keep everyone's channels the same. Pilots will be shuffled as
much as possible to try to maximise how many other pilots each pilot races against. But
after a while you’ll run out of combinations and it's time to use the next option.

Randomise
Nearly all pilots will be given a new channel in such a way to maximise how many new
opportunities there are to race someone they haven’t yet raced. In general you’d
generate 1 round of channel changes around the middle of the days racing and then
you’d go back to keeping their new channels.
Clone
Duplicates the previous round. Races and channels will be identical. Handy for time
trials if you just want the same groups to repeat.

There are a few options that only exist after all the races in the round have been finished. This is
because generating these round types relies on the results of the round.

Final
The results from all the previous rounds will be added up and the pilots will be sorted
into divisions based on their results. Top pilots will be in A, next top in B, and so on.
Unwanted races can be right clicked on and removed.

Double Elimination
For the first round of double elimination you’ll need to auto-fill a normal round and run as
normal.
Then at the end of that round add a new Double Elimination Round. The results from the
previous round will be used to create 2 brackets of pilots, winners and losers. From now
on just keep adding double elimination rounds. The system will automatically eliminate
pilots who have lost twice.

Show Points
Adds a little summary of the points up to this point. Each Sum points only counts back to
the previous sum points (or the start of the event). So they can be used as a divider to
separate different areas of points.

Show PBs
Very similar to Points but it shows the PB’s per pilot instead.

Top 16 / Top 32 / Top X


If you’ve added either Show Points or Show PB’s you’ll also have the
option to add a few different “Top” options. These will cut the number of pilots down to
the number given and also format their races in 2 different ways.

Note: The numbers given as options to you will be multiples of the current channels set
in Channel Settings. So if you have 6 channels you’ll get Top 6, Top 12, Top 18 as
options. 8 channels you’ll get Top 8, Top 16, Top 24, Top 32 etc.

For the explanation below I’m going to assume you have 32 pilots, 8 channels and 4
races.

Ordered Top X
Pilots will be ordered so that the best 8 pilots will be in the first race. Pilots 9-16 will be in
race 2. Pilots 17-24 in race 3. Pilots 25-32 in race 4.
Seeded Top X
Pilots will be seeded into the races. So that the best pilot is in Race 1, Second best pilot
in race 2. Third best in race 3, Fourth best in race 4. Now, it wraps. So fifth best now in
race 1, sixth in race 2 etc.

Round Types
A round’s type can be changed via the hamburger menu on each round. To see the definitions
of what each type means see the round / race types section of the manual.

Removing rounds
To remove the current round press the - button.
Pilots will occasionally be required to change channels. Any channel changes will be highlighted
with a Δ (Delta/Change) symbol.

Auto fill round


If a round has been made manually, either by pasting or just running each race one at a time
but all the pilots have not yet had a go, a button called Fill will appear. Pressing it will auto-fill
the round’s races so that everyone at the event gets a race.

Pasting in a round
If no races in the current round have been run you can paste a round in from the clipboard using
the paste button next to autosum. The paste format should be each pilot on their own line. Pilots
will be mapped to the channels based on their order, you can skip channels with an empty line.

Re-ordering rounds
Rounds can be dragged around to change their order by grabbing them by their title. Their
round numbers won’t change, just the order they display on screen.

Opening a race
Click on a race's name and number and open it. Once you’ve opened it, it will show all the pilots
in the race and if the race has already been run; the results. If it's a new race you can just press
the Play button to start the race.

Deleting a race
To delete a race right click on it in the rounds screen and select delete. Everything from that
race will be deleted, including best lap times.

Moving pilots around


Pilots can be dragged between channels and even races to change where they are. The system
will still try to maximise how many other pilots they fly against in the following rounds. But
channel swaps will be remembered
Brackets / Divisions
Right clicking on a race will give you the option to change the Bracket. Multiple races can share
a bracket and this way you control which pilots race which other pilots. As when generating new
rounds pilots will only be matched against pilots with the same Bracket.

The software automatically uses these brackets in features like Double Elimination to handle
groups of pilots. For example, the Winners and Losers brackets.

Spreadsheet based formats


Rounds and Races can be generated to a specific format using a spreadsheet to define which
pilots go into which race. The library we use understands all common Excel formulas and can
be used to make a completely custom event format that generates rounds and races
automatically.
● The spreadsheet is a “template” that will become associated with specific Rounds.
● It’s read only, the results will only be stored in FPVTrackside and will not be written back
to the sheet file. Only in memory.
● Create the files with Excel or export them from Google Sheets. The modern .xlsx format
is required.
● Sheets live in the formats directory where FPVTrackside is installed.

Please send through any formats you use and I can include them in the installer!

Spreadsheet Setup
In a spreadsheet add a new sheet called “FPVTrackside”. This sheet needs to be formatted in a
specific way for the software to be able to read it and generate the heats.

Sample sheet below..


The very first row is used as headings which we FPVTrackside reads to understand what's in
each column. There are 4 column types…

Sheet details
The very first column contains details about the sheet..

Channels
The channel value should simply contain the number of channels used in this format. This also
defines how many pilots are in each race.

Lock Channels
Lock channels defines whether or not pilots must be on the specific channel shown by the
sheet. If it’s set to false a pilot just needs to be in the right race and will by default the pilot will
stay on their previous channel. This can massively reduce channel changes so unless your
format requires specific channels try to leave it set to FALSE.

Pilots
Because each sheet is a template of the format, pilots need to be referred to by reference as we
don’t yet know which pilots will be in the real event. Once the template is loaded, FPVTrackside
will map “Alfa” = “BMSThomas”, “Bravo” = “BMSPaul” so that everyone is put in the right spot.
So what you need to do in the Pilots column is just put as many unique pilot names as you have
pilots in your event. So in the sample above I have 16 pilots named based on the phonetic
alphabet.

Round {X} {Y}


X will be a race type {TimeTrial, Race, Endurance, etc}
Y will be the round number.
If there are pilots in this column FPVTrackside will make a Round of type X and Round Number
Y. Races will also be created if there are cells with a matching name in the “Pilots” column.
Pilots will be mapped to races by the order they appear in the column.

For example, in the above sample… “Alfa” will be the first pilot in Round 1 Race 1 and “Echo”
who is the 5th cell of an event with 4 channels, will be the first pilot in Race 2.

In my sample I’ve drawn borders around the divisions between each race. I find this super
handy for keeping track of everything when designing the sheet.

Result
The cell to the right of the pilots name is where the result will be written. Currently only really work
“position” style races and will write the order in which the pilot finished. So if the pilot “alfa” came first
fpvtrackside will put a “1” in the cell.

Lookup results and do things with those results


I’ve found the easiest way to look up results is using the index and match functions.

=INDEX(C2:C5;MATCH(3;D2:D5; 0))

Set Green as the result you are looking for.


Set Red to the range of cells where you are looking for the result.
Set Blue to the range of pilot names that match the result.
This is the formula for looking up the first pilot of Round 2 Race 1.

Pilot names are in C2:C5 and results are in D2:D5. We’re looking for the pilot in position 3.

The MATCH function searches for a specified item in a range of cells, and then returns the
relative position of that item in the range.

So MATCH(3;D2:D5; 0) looks at the cells D2 to D5 for the result of 3. It gives back the index of
that result. Which we put into the INDEX function which because it’s looking one column to the
left at C2 to C5 will return the pilot name.

Excel shows it working at bit more clearly

Most if not all excel functions are supported.

General Settings
There are a lot more configuration items in General Settings which can be accessed from the
settings button on the main screen.

Race data synchronisation with web services


We currently have two options with synchronising results up to a website. MultiGP and our own
FPVTrackside.com.

Both services are accessed by logging in on the event selection screen. But they do work
slightly differently.

FPVTrackside.com

Registration
The login window for FPVTrackside has a register button that will take you straight to the
registration form on the website. Once you’ve registered you’ll receive a confirmation email to
activate your account. This is very often blocked by spam filters so please check your spam
folder. If you’re still having problems email me at dan@fpvtrackside.com and I’ll re-send them.

Creating Events
FPVTrackside.com primarily works as a service you “push” events to. Basically you create
everything locally in the FPVTrackside software, then tick the “Sync” button on the event page
and all results will be synchronised up to our website.

When you’re running an event with Sync turned on, a Sync button will be on the right. And by
default it will also synchronise up the results after each race.

FPVTrackside.com works great as a way for the pilots at your event to see scores, lap times
and results without nagging the race director. The website is basic, but it’s all there.

MultiGP

API Key
MultiGP users will need to create / share their chapters API key. Which can be accessed from
the chapter Management page. As a side note, MultiGP uses the word ‘Chapter’ and we tend to
use the word ‘Club’. So please keep that in mind when using the software.

Once you have the API key it can be pasted into the login menu for MultiGP on the Event
selector. FPVTrackside will now pull down any events created on multigp.com.

Synchronising Down Events


Events for MultiGP synchronisation need to be created on the website. Event’s can’t be created
locally then converted, they need to be MultiGP from the start.

Once you’ve pulled down your events just select the one you want to run and everything in that
event will sync down. At the end of each Race results will be synchronised back up. But you can
also press the Sync button on the right.

ZippyQ
ZippyQ works great with FPVTrackside. The synchronisation at the end of the race is generally
very well timed to Sync down the next batch of pilots. If they don’t come through automatically,
just press the Sync button.

Streaming and OBS Setup


FPVTrackside does not have a way to stream directly to youtube/facebook/etc. To do that we
need to use OBS to capture the window and make a stream out of it.
I’m not going to go through setting up youtube/facebook to accept your stream. There are many
guides on the internet on how to get all that working.

Setting up FPVTrackside as a source


● Start FPV Trackside.
● Switch to OBS. From the main OBS screen click the add source button
● Choose Window Capture.
● Create New. Give it a reasonable name like FPVTrackside.
● Choose the one starting with [FPVTrackside.exe] from the window drop menu.
● Window Match Priority should be “Match Title, otherwise find window of same
executable.
● Click ok.
● FPVTrackside should have a red square around it. Drag the bottom grabber so that it
snaps to the bottom of the view.

Cropping the view to 16:9 in FPVTrackside


The software can crop-out the right hand side of the software and make sure the central area is
a nice 16:9 stream friendly view. This stops the buttons and other control items from being
visible on stream, plus gives more screen real estate to what is actually important, the FPV
feeds.
To enable cropping go to General Settings and set “Crop Content 16 by 9” to True.

Displaying the OBS Stream on a second screen.


If you have a second monitor / TV plugged in you may want to display the stream locally. To do
this set up your monitor as extending the desktop, then in obs right click your scene and choose
full screen projector and choose the second monitor to project to.

Web Server for OBS


Trackside can be configured to listen for connections on port 8080 and generate a simple web
page to allow for OBS to show various properties that exist on the EventManager object tree.

Access the webserver on http://localhost:8080 and browse through the tree of objects using the
links provided.

Example
The most common request is the Remaining Time in the race. The remaining time can be
accessed on the address http://localhost:8080/RaceManager/RemainingTime/TotalSeconds/

However OBS has no setting to auto-refresh webpages or a way to round numbers. So to


provide extra information to the server on what to do there are a few extra parameters that can
be given on the address line. As shown below.
http://localhost:8080/RaceManager/RemainingTime/TotalSeconds/?refresh=1&decimalplaces=0
refresh=1 will cause the server to set the page to refresh after 1 second
decimalplaces=0 will limit the number of decimal places put on the time.

Gate / LED Notifications


The notification system works by POST-ing JSON data to a remote HTTP server. The data is
relatively simple and should be easy to process into making start line LEDs, flashing as a pilot
goes through a gate or even using a separate screen to show who is up in the next race.

Turn it on in general settings by setting a URL for the system to POST to and setting it enabled.

There are 3 basic notifications.

Race / Pilot info notification


This will be posted as a race is selected in FPVTrackside. Handy for remote systems that need
to know which pilots are in the upcoming race.
{
"Round": 1,
"Race": 1,
"Type": "Race",
"Pilots": [
{
"Name": "BMS Paul",
"Phonetic": "BMS Paul",
"ChannelColorR": 255,
"ChannelColorG": 0,
"ChannelColorB": 0,
"ChannelBand": "Raceband",
"ChannelNumber": 1,
"Frequency": 5658
},
{
"Name": "BMSThomas",
"Phonetic": "BMSThomas",
"ChannelColorR": 255,
"ChannelColorG": 0,
"ChannelColorB": 255,
"ChannelBand": "Fatshark",
"ChannelNumber": 4,
"Frequency": 5800
}
}

Race State notification


This one is triggered twice as the race begins. First one will be for Arming and the second for
the actual race start
{
"Round": 1,
"Race": 1,
"Type": "Race",
"State": "Arm"
}

{
"Round": 1,
"Race": 1,
"Type": "Race",
"State": "Start"
}
As of 2.0.8.0 there is also a notification for “Cancel” when the race start is aborted.

Detection notification
On each time the timing system is triggered will post the following object.
{
"TimingSystemIndex": 0,
"LapNumber": 1,
"ChannelBand": "Fatshark",
"ChannelNumber": 4,
"Frequency": 5800,
"ChannelColorR": 255,
"ChannelColorG": 255,
"ChannelColorB": 0,
"Time": 20.2364233,
"IsLapEnd": true,
"IsRaceEnd": true,
"PilotName": "BMSThomas"
}

Performance
The FPVTrackside and OBS combination can be a fairly heavy load for the average laptop
sitting in a field at the local drone club. Here are some things to try to improve streaming
performance.
● Use hardware encoding in OBS. Like NVEnc if you have an nvidia graphics chip
● Video recording now defaults to on. It’s definitely the heaviest part of FPVTrackside so if
you’re not using it anyway, this is the first thing to try turning off.
● Lower the Max Frame Rate in FPVTrackside’s General Settings. This defaults to 60, a
value of 30 is fine for FPV.
● Lower the resolution / frame rate of the input devices in FPVTrackside’s video settings.
This is especially important for Commentator / Pits as web cams often default to very
high resolutions.
● Lower the video stream resolution in OBS.
● Set your video input devices to ‘stop feed when not in use’.
● Try different USB ports if you’re losing frames. USB ports are often shared with internal
components or other USB ports on the system. Some devices do not behave well with
others so once it works try to use the same ports every time.
● Make sure the laptop has access to clean cool air. More fans or those little laptop cooler
bases can help!

Data and config


Trackside is installed to a directory in your users account app data. To get there, open the
directory %localappdata%\fpvtrackside in explorer.

Logs
The least interesting but most important directory is logs. If things are broken, it’ll write to the log
in there. Send it to me and I’ll fix it! dan@melbournephotos.net.au

Data
Data holds all the important files for configuring trackside plus the actual database where results
are stored. A lot of these files generate on first run, so you may not even see them till after your
first launch.
Most files are .xml and editable in notepad.

● channels.xml - Stores which channels your setup uses.


● event.db - The main database that stores event info, pilots, races and laps. Delete it at
the start of a day to start fresh. (or use the delete function in the settings button)
● GeneralSettings.xml - Just some configuration options for you to play with.
● Videosettings.xml - This one has dragons in it. Best to leave it alone or edit it via the
software. Delete it to clear any weird video settings you’ve made in the past that are
breaking things

Shortcut keys
Space - Start / Stop a race. If pressed during countdown it will cancel start.
Ctrl-C - Copy race results to clipboard (for spreadsheet)
Ctrl-V - Paste pilots into race (from spreadsheet)
Left / Right arrows - Open / Close pilot list on left
Up / Down - Increase or decrease Pilot video feed visibility during a race.
O - Order the pilot video feeds. This happens now, as opposed to next lap.
L / K - Hide show the Lap bar below pilot feed.
F11 - Toggle showing FPS in top right
W - SHOW THE WORM. ALL HAIL THE WORM.
[ - Previous Race
] - Next Race

Recommended Setup

Hardware
● Laptop:
○ At least quad core
○ Dedicated GPU
○ Internal webcam
○ At least 2 USB ports.
○ Ethernet port. Can use USB ethernet device however make sure you have
enough usb ports.
● Video receivers with RCA cables. As many as you plan to have pilots in a race. Typically
6.
● 9 channel analogue camera security system DVR with HDMI output.
● RCA to BNC adapters. One for each receiver.
● Elgato HD60s to capture from security system DVR. Although I’ve been having a great
experience with these unbranded extremely cheap ones like this.
● LapRF 8 way.
● Long Ethernet cables for laprf. 30m at least.
● Launch webcam. Logitech c920 is a good choice.
● Long 15m+ usb for webcam.
Vi Vi Vi
Layout
de diagram
de de
o
Vi o
Vi o
Vi
Re
de Re
de Re
de
ocei ocei ocei
ver Re
Re ver ver
Re El
cei cei cei W
RCA - ga eb
ver Secuver ver to
BNC ca
Compo H
rity H m
DVR
site D D
USB3 USB3
Video M 60
I s
S
WIFI m
Lap
ar
RF
C Laptop tP
8wa
at h
y
6 o
n
e
H
D
M
I
Local TV

You might also like