diff --git a/README.md b/README.md index e827adf..2fae26e 100644 --- a/README.md +++ b/README.md @@ -1,93 +1,93 @@ # Kirogi Kirogi is a ground control application for drones. Take to the skies, open source-style. ### Screenshot ![A screenshot of Kirogi's in-flight UI](https://kirogi.org/assets/img/kirogi.webp "Kirogi's in-flight UI") ### Features * Direct flight controls * Fly by touch on a Navigation Map * Trigger vehicle actions (e.g. flips, trim) * Gamepad/joypad support * Live video * Configure flight parameters (speed, altitude limits) * Support for Parrot (Anafi, Bebop 2) and Ryze Tello drones (more planned) ## FAQ ### How is Kirogi different from other ground control applications? Created from scratch in February 2019, Kirogi benefits from a lot of prior art. It aims to provide the following unique combination of features: * **End-user focus.** As a [KDE application](https://manifesto.kde.org/), Kirogi aims to be a polished experience that is fun and easy to use for novices and experts alike, with special emphasis on a premium direct control experience. * **Multi-vendor.** Kirogi aims to have wide out-of-the-box support for many vehicles by different manufacturers. Users should be able to use different vehicles without needing to switch ground control software. * **Highly portable.** Kirogi aims to support many different mobile and desktop platforms. Users should be able to switch platforms without needing to switch ground control software. * **Freedom.** Kirogi will always be freely-licensed. Users should have control over and be able to extend and modify their ground control on their own. * **Open governance.** Created and maintained by the [KDE community](https://manifesto.kde.org/), an organization with more than two decades of experience in hosting free software projects. ### Will Kirogi support my drone? The Kirogi project is currently in its early stages. For now it supports the following drones: * Parrot Anafi * Parrot Bebop 2 * Ryze Tello Support for additional vehicles, also by other manufacturers, is very much a goal. If your vehicle is not on the list yet, check back later! -In particular, we plan to add support for [MAVLink](https://en.wikipedia.org/wiki/MAVLink) to interface with open vehicle systems. +To build Kirogi with [MAVLink](https://en.wikipedia.org/wiki/MAVLink) is necessary to have MAVLink installed or defining `MAVLINK_INCLUDE_DIR` variable. The plugin is in progress and not stable at the moment. Vehicle support is subject to availability for development and testing. If you are a manufacturer and would like to see Kirogi support your hardware, please [contact the board of directors of KDE e.V.](https://ev.kde.org/contact.php) for this and any other business inquiries. ### Can Kirogi download photos and videos from my drone? Not yet. This feature is considered high priority and will be added before version 1.0. ### Does Kirogi support mission planning and upload? Not yet. A mission planning mode is a future goal. ### Do I need a touchscreen to use Kirogi? A touchscreen is not required to use Kirogi. It has basic support for two-stick gamepad/joypad controllers (it was tested with an Xbox One controller). ### Does Kirogi support the Parrot Skycontroller peripherals? Not yet. There is basic support for two-stick gamepad/joypad controllers, however. ### What does the name mean? The Kirogi project was started in South Korea. Kirogi (written "기러기" in the native writing system) is the Korean word for wild geese. _Wild_ geese are known as expert flyers. Kirogi's mascot is a farm goose with an adventurous spirit, who flies just as well thanks to the use of superior technology. ## Technology and License ### Does Kirogi support [MAVLink](https://en.wikipedia.org/wiki/MAVLink)? Not yet. MAVLink support for both manual control and flight plans is planned for future versions. ### What technology does Kirogi use? Kirogi is written in C++14 and QML. It uses the [Kirigami](https://www.kde.org/products/kirigami/) UI toolkit (part of [KDE Frameworks](https://www.kde.org/products/frameworks/)) and Qt Quick, supported on a diverse array of mobile and desktop platforms. ### What is the license? Kirogi's library in src/lib/ and bundled vehicle support plugins in src/plugins/ are licensed under LGPL v2.1 (or later), see COPYING.LIB. The frontend (UI and other business logic) is licensed under GPL v2 (or later), see COPYING. The app icon in data/icons/ is licensed under LGPL v2.1 (or later), see COPYING.LIB. The mascot artwork in src/ui/assets/ is licensed under CC-BY-SA 4.0, see COPYING.MASCOT. ### I have a supported Parrot drone. Do I need the Parrot SDK to use Kirogi? The Parrot SDK is not required to use Kirogi. It contains its own implementation of the protocol used to operate Parrot brand drones. diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt index 88005ad..e6fbce6 100644 --- a/src/plugins/CMakeLists.txt +++ b/src/plugins/CMakeLists.txt @@ -1,12 +1,12 @@ if (ANDROID) set(fileName ${CMAKE_BINARY_DIR}/kirogicore-android-dependencies.xml) file(WRITE "${fileName}" "\n" "\n" "\n" "\n") install(FILES ${fileName} DESTINATION ${KDE_INSTALL_LIBDIR}) endif() -#add_subdirectory(mavlink) +add_subdirectory(mavlink) add_subdirectory(parrot) add_subdirectory(ryzetello) diff --git a/src/plugins/mavlink/CMakeLists.txt b/src/plugins/mavlink/CMakeLists.txt index 63f3bc0..53ec127 100644 --- a/src/plugins/mavlink/CMakeLists.txt +++ b/src/plugins/mavlink/CMakeLists.txt @@ -1,47 +1,54 @@ add_definitions(-DTRANSLATION_DOMAIN=\"kirogimavlinkplugin\") +find_package(MAVLink) + +if(MAVLink_FOUND) + message(STATUS "MAVLink found: Kirogi will build with MAVLink integration.") +else() + message(WARNING "MAVLink not found.") + return() +endif() + set(kirogimavlinkplugin_SRCS mavlinkconnection.cpp mavlinkplugin.cpp mavlinkvehicle.cpp ) ecm_qt_declare_logging_category(kirogimavlinkplugin_SRCS HEADER debug.h IDENTIFIER KIROGI_VEHICLESUPPORT_MAVLINK CATEGORY_NAME "kirogi.vehiclesupport.mavlink" ) kcoreaddons_add_plugin(kirogimavlinkplugin SOURCES ${kirogimavlinkplugin_SRCS} JSON "${CMAKE_CURRENT_SOURCE_DIR}/kirogimavlinkplugin.json" INSTALL_NAMESPACE "kirogi/vehiclesupport" ) -find_package(MAVLink REQUIRED) - include_directories( ${MAVLINK_INCLUDE_DIR} ${MAVLINK_INCLUDE_DIR}/ardupilotmega ) set_target_properties(kirogimavlinkplugin PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" ) target_link_libraries(kirogimavlinkplugin PRIVATE Qt5::Core Qt5::Network Qt5::Positioning KF5::CoreAddons KF5::I18n KirogiCore ) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") target_compile_options(kirogimavlinkplugin PRIVATE -pedantic) endif() install(FILES kirogimavlinkplugin.categories DESTINATION ${KDE_INSTALL_CONFDIR})