====== Software Architecture ====== The control box of the Otter ASV used by NTNU, use a customized version of [[https://lsts.fe.up.pt/toolchain/dune|DUNE]] running on the [[https://www.raspbian.org/|Raspberry Pi OS]]. {{ :otteroverallsw.png?400 |}} ===== Raspberry Pi OS ===== //Raspberry Pi OS// is a Linux based operating system optimized for use on the Raspberry Pi hardware. Due to the great amount of community support available, and previous experience, it was chosen as the operating system for the Otter. Raspberry Pi OS comes in two official flavors, one with a full desktop environment, and one meant for headless (No screen, keyboard or mouse used, only remote access.) use. The Otter is controlled over a network connection, and having a desktop would only waste valuable resources. That is the reasoning behind why the Otter uses the headless version called Raspberry Pi OS Lite. ===== The LSTS Toolchain ===== The software used to control the Otter is based on the LSTS [[https://www.lsts.pt/toolchain|Toolchain]], which is a software toolchain meant for developing networked vehicle systems. It aims at creating a modular system for heterogeneous systems of vehicles, in order to control them by much of the same software. The Otter is an autonomous surface vehicle (ASV), but it also supports autonomous underwater vehicles (AUV), unmanned aerial vehicles (UAV), remotly operated vehicles (ROV) and more. An important aspect in why it was chosen, was that it is open source. This makes it easier to know how the software actually works, and also gives anybody a chance to fix faults, and implement new features. The three main components are Neptus, IMC and DUNE. Neptus is the operators console, IMC is the communication protocol, and DUNE is the software controlling the vehicles. The next three sections give more details of these components. The LSTS toolchain is also being used by multiple other projects at NTNU: * [[http://autonaut.itk.ntnu.no/doku.php| The NTNU AutoNaut]] * [[http://uavlab.itk.ntnu.no/wiki/doku.php|The UAV lab]] (requires local IP address), there is also some [[https://www.itk.ntnu.no/english/lab/unmanned|public information]] available. ===== DUNE for the Otter ===== * [[dune_configuration|DUNE configuration]] * [[torqeedo_interface_dune_task|Torqeedo Interface DUNE task]] * [[tbr700rt_dune_task|TBR-700 RT DUNE Task]] * [[stratopican_watchdog|Strato Pi CAN watchdog DUNE Task]] ===== Guides ===== * [[sw_setup|Installing Raspberry Pi OS and enabling CAN bus]] * [[sw_run_startup|Starting DUNE while booting]] * [[ubuntu_cross_compiler|Ubuntu cross compiling with libraries]] * [[cmake|DUNE cmake tips]] * [[glued_cross_compiler|Glued cross compiling for the Raspberry Pi]] * [[neptus_tips_and_tricks|Neptus tips and tricks]] * [[enable_pps_support_raspian|Enable PPS support in Raspberry Pi OS]] * [[boot_config|]] * [[rpi_uart_setup|RPI UART setup]]