Audible altimeter part 1


As the skydiving season in Finland is nearing its end it is time to find something elso to do at weekends. As I just got the A-license I have been gathering necessary equipment for the sport. Only the audible altimeter is missing as I can not decide between Altimaster N3 and L&B Protrack (1, 2).

I have always had problems to finish electronics projects and I think that it might be related to the fact that the end result of the project would have not seen any actual use. By creating something which is useful at one of my hobbies I hope that I have enough motivation to finish the project.

Audible altimeters are used to alert skydivers with loud alarm when they pass certain altides in freefall or with the canopy. In Finland the audible altimeter can only be used as a secondary altimeter as some kind of visual (digital or analog display) altimeter is required by the regulations. As I’m going to be carrying a visual altimeter I feel it will be relatively safe to test my own electronic projects while skydiving.

I’m using Cookie G3 (3) which has two small pockets (~5cm x ~5cm) for audibles. If the electronics catches on fire I plan on installing simple cutaway system (4) for the helmet .

Even if the project fails, I hope it will create good material for some other website (5, 6).


  • Approximate size: 5cm x 5cm x 1cm
    • Neptune N3: 6.2cm x 4.3cm x 1.2cm
    • Optima II: 5.6cm x 4.1cm x 1.1cm
    • 5cm x 3.2cm x 1.6cm fits Cookie G3 nicely
    • Current PCB 50mm x 35mm
  • USB rechargeable battery
  • Audible alarm
  • Relatively good altitude accuracy (+-50m) with small lag
  • Simple logging capability

Advanced options

  • Accelerometer/attitude
  • GPS
  • Simple display
  • Led indicator for the alarms as in Optima 2 (7)


Wingsuit part 1

Few years ago I saw video (1) of a home build mianiature parachute made by my friend Tuukka. The video inspired me quite a bit as before the video I didn’t feel like you could actually build any real “hardware” for skydiving without going to rigging courses and practicing a lot. I felt that designing and building parachute would be too much for my skills, but maybe I could still make something from fabrics.

In 2017 Tuukka jumped his home build and desinged parachute (2).

At the end of 2016 skydiving season I borrowed a sewing machine, purchaced cheap fabric and spend one evening sewing my very first tracking pants without any sewing patterns. The pants were huge failure (air intakes tore and the pants functioned as a air brakes), but hey, at least I created something.

During the winter I designed first tracking pants which I tested on the first jump of 2017. Unfortunately the design was not very good and the crotch seam and fabric was torn after two jumps while squatting on the ground.

Next there was a design for tracking jacket, but the design for the shoulders was so bad that I didn’t jump any jumps with the thing.

Finally third tracking pants+jacket design was relative good and I was able to have glide ratio around 1.1.

Natural progress towards diy wingsuit required diy one-piece tracking suit so I build one in late 2017. The suit was little bit hard to fly and I’m still not sure of performance of the suit. But at least it looked quite nice.

In December 2017 I started designing the diy wingsuit. I looked at beginner/advanced beginner level wingsuits from different manufacturers and draw a outline of the wingsuit in Inkscape. I used my friends Colugo 2 wingsuit to get idea of the details. Design was done once again in Clo3d/Clo. It took approximately 10-15 hours to design the suit. I ordered the pattern from a printing company which specializes in construction design drawings. This way I didn’t have to tape more than a hundred A4s together to get the full pattern.

Cutting the patterns took only about one hour. Cutting and sewing the first arm wing took about 9 hours, with the second one I made few stupid mistakes and had to unpick the half finished wing back to its basic components.

Quite soon I realized that the leg wing had a design flaw as it did not extend over the buttocks as all commercial wingsuits. Unfortunately at this point modifications were too hard to make for my skills, but I decided to complete the suit.

After about total of 60-120 hours of work the suit was finished. The arm wings still were little bit rough as the sewing machine started to malfuncion at the very last hours.

Finally in 2018-04-22 I did first jump with the wingsuit (also my very first wingsuit jump). The suit was very stable and the jump went well. In 2018 I had about 6 jumps with the wingsuit, every one of them quite stable (except when trying backflying). I can achieve around 1.8 glide ratio (wind compensated) with the suit, but I think the GL could be much better with practice.

Unfortunately when moving away from Finland, I had to leave the suit to storage as space in the van was very limited.

Hopefully I return to the suit at some point, maybe I will get few jumps with ‘real’ suits in between.


Missing TensorRT documentation for createNMSPlugin layer

Update: Some of TensorRT plugins were released as open source. Old version of NMS is located at and new version can be found at .

While trying to convert Tensorflow detection network to TensorRT I needed to either implement new non-maximum suppression layer or to use NVIDIAs createNMSPlugin layer. After quick look trough the poor documentation (1, 2) I was forced to just experiment with the layer by feeding it different size inputs and hoping to get it working.

After few hours of frustrating trial and error experimentation I implemented new NMS plugin layer using 3. Unfortunately this implementation did not have very good performance which I think is because of synchronization operations used in 3. 4 would probably have been better alternative as it is lower level and leaves synchronization for the developer.

Fortunately with help of coworkers we were finally able figure out proper inputs for the plugin. Hopefully this helps some one else.


  • Prediction locations from the network. Shape of the tensor needs to be [4*number_of_boxes, 1, 1]. Or [4*number_of_boxes*number_of_classes, 1, 1] if shareLocation parameter is set to true in DetectionOutputParameters.
  • Class confidence tensor. Shape [number_of_classes*number_of_boxes, 1, 1]
  • Prior box locations and variances. Shape [2, number_of_boxes*4, 1].

You can change the input order by setting inputOrder parameter in DetectionOutputParameters.


  • Final prediction boxes. Shape [1, keep_topk, 7]. [ImageId, Label, Confidence, Xmin, Ymin, Xmax, Ymax]
  • Number of valid boxes [1,1,1]. This value is int32.

Input format of tensors

Prior box locations and variances must have format:

[[box1_prior1, box1_prior2, box1_prior3, box1_prior4]
[box2_prior1, box2_prior2, box2_prior3, box2_prior4]
[box1_variance1, box1_variance2, box1_variance3, box1_variance4]
[box2_variance1, box2_variance2, box2_variance3, box2_variance4]

The box format can be chosen using codeType in DetectionOutputParameters.