# Chapter 13: Walking a Quadruped ## Sample code - Directory: `docs/os-on-arduino/code/13_quadruped` ```bash uv run pio run -d 13_quadruped -t upload uv run pio device monitor -b 115200 ``` ## Source code The sketch for this chapter. Click a file name to expand. The code is mirrored automatically from the manuscript repository, so what you see here is always current. :::{dropdown} `src/main.cpp` — 203 lines :icon: code [Open on GitHub](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/13_quadruped/src/main.cpp) ```{literalinclude} ../../../../code/13_quadruped/src/main.cpp :language: cpp :linenos: ``` ::: :::{dropdown} `include/arduino_quad_policy.h` — 81 lines :icon: code [Open on GitHub](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/13_quadruped/include/arduino_quad_policy.h) ```{literalinclude} ../../../../code/13_quadruped/include/arduino_quad_policy.h :language: cpp :linenos: ``` ::: :::{dropdown} `include/leg_ik.h` — 13 lines :icon: code [Open on GitHub](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/13_quadruped/include/leg_ik.h) ```{literalinclude} ../../../../code/13_quadruped/include/leg_ik.h :language: cpp :linenos: ``` ::: :::{dropdown} `include/quad_calib.h` — 26 lines :icon: code [Open on GitHub](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/13_quadruped/include/quad_calib.h) ```{literalinclude} ../../../../code/13_quadruped/include/quad_calib.h :language: cpp :linenos: ``` ::: :::{dropdown} `include/quad_control.h` — 187 lines :icon: code [Open on GitHub](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/13_quadruped/include/quad_control.h) ```{literalinclude} ../../../../code/13_quadruped/include/quad_control.h :language: cpp :linenos: ``` ::: :::{dropdown} `include/servo_bus.h` — 24 lines :icon: code [Open on GitHub](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/13_quadruped/include/servo_bus.h) ```{literalinclude} ../../../../code/13_quadruped/include/servo_bus.h :language: cpp :linenos: ``` ::: :::{dropdown} `src/gait.cpp` — 56 lines :icon: code [Open on GitHub](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/13_quadruped/src/gait.cpp) ```{literalinclude} ../../../../code/13_quadruped/src/gait.cpp :language: cpp :linenos: ``` ::: :::{dropdown} `src/leg_ik.cpp` — 44 lines :icon: code [Open on GitHub](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/13_quadruped/src/leg_ik.cpp) ```{literalinclude} ../../../../code/13_quadruped/src/leg_ik.cpp :language: cpp :linenos: ``` ::: :::{dropdown} `src/leg_ik_test.cpp` — 33 lines :icon: code [Open on GitHub](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/13_quadruped/src/leg_ik_test.cpp) ```{literalinclude} ../../../../code/13_quadruped/src/leg_ik_test.cpp :language: cpp :linenos: ``` ::: :::{dropdown} `src/servo_bus.cpp` — 176 lines :icon: code [Open on GitHub](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/13_quadruped/src/servo_bus.cpp) ```{literalinclude} ../../../../code/13_quadruped/src/servo_bus.cpp :language: cpp :linenos: ``` ::: ## On the board ```{figure} ../_static/quadruped_walk.gif :name: fig-ch13-walk :width: 80% The quadruped walking on your own OS, driving 8 servos (1.5x speed) ``` ## Pitfalls (Collected from reader questions — ask via [GitHub Issues](https://github.com/iory/build-your-own-arduino-rtos/issues).)