37
3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Julian Oes - 2019-06-20

Page 2: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20
Page 3: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

What is Software In The Loop (SITL) simulation?

Simulator PX4

Sensor values

Actuator outputs

Local computer

Page 4: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development 4

https://makeameme.org/meme/the-simulation-environment

Page 5: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

1 Lockstep

Page 6: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Common problems with SITL● CPU load too high

● Interruptions can cause crashes

Page 7: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

How does lockstep work?Sensor valuesand timestamp

Actuator outputs

Simulator PX4

https://dev.px4.io/v1.9.0/en/simulation/#lockstep-simulation

Page 8: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

How does lockstep initialize?

Sensor valuesand timestamp

Simulator PX4

Actuator outputs

Page 9: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Why should I use lockstep?

● Bonus: Run simulations faster or slower than realtime 💡

https://beorganizing.com/2017/12/22/dear-old-computer-ive-moved/

● Pause to inspect or debug ✅● Runs better on slower computers ✅

https://giphy.com/explore/hamster-wheel

Page 10: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

How to pause?

Press P

Page 11: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

How to speed up or slow down?

https://dev.px4.io/v1.9.0/en/simulation/#simulation_speed

Page 12: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Demo

Page 13: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

2 Shell scripting

Page 14: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

NuttShell on NuttX

nsh>

https://docs.px4.io/en/flight_controller/pixhawk.html

Page 15: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

NuttShell

Page 16: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Startup

Page 17: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Startup

Page 18: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

./px4 sh rcS ekf2 start px4-ekf2 startaliasevaluatecall

IPC call

ekf2 threadspawn

What about SITL?

https://dev.px4.io/v1.9.0/en/concept/system_startup.html#posix-linuxmacos

How to use it

Page 19: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Use your system shell with SITL

https://dev.px4.io/v1.9.0/en/concept/system_startup.html#posix-linuxmacos

...

Page 20: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Demo

Page 21: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Page 22: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Page 23: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Page 24: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

3 Debugging with GDB, valgrind, callgrind

Page 25: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Debugging using GDB (or LLDB) in console

Page 26: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Debugging using GDB (or LLDB) in VSCode

https://dev.px4.io/master/en/setup/vscode.html (work in progress)

Page 27: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Demo

Page 28: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Page 29: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Memory error detection using valgrind● Find reads from uninitialized memory● Find memory leaks● Etc.

https://dev.px4.io/v1.9.0/en/setup/building_px4.html#make_targetshttp://www.valgrind.org/

Page 30: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Memory error detection using valgrind

Page 31: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Profiling using callgrind● Function call graph● Function call counts● Time spent in functions● And much more

https://dev.px4.io/v1.9.0/en/setup/building_px4.html#make_targetshttp://valgrind.org/docs/manual/cl-manual.html

Page 32: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Profiling using callgrind

Page 33: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

KCacheGrind visualization of callgrind data

https://kcachegrind.github.io/html/Home.html

Page 34: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

EKF2

Page 35: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

Page 36: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20

3 Hidden PX4 SITL tricks for everyday development

http://www.quickmeme.com/meme/3qjtpp

Page 37: 3 Hidden PX4 SITL tricks for everyday development · 2019-06-26 · 3 Hidden PX4 SITL tricks for everyday development Julian Oes - 2019-06-20