Graphical User Interface for remote monitoring and top-level control of UAVs.
Author:
Maintainers:
This code was written by the Control of Networked System (CNS) Group, University of Klagenfurt, Klagenfurt, Austria.
This software is made available to the public to use (source-available), licensed under the terms of the BSD-2-Clause-License with no commercial use allowed, the full terms of which are made available in the LICENSE
file. No license in patents is granted.
- Credit
- License
- Dependencies
- Requirements
- Installing
- Minimal Configuration Needed
- Manual
- Troubleshooting
All dependencies are listed requirements.txt
- CustomTkinter python UI-library based on Tkinter
- Paramiko provides high-level functionality to establish and manage SSH connections
- PyYAML full-featured YAML framework for the Python programming language
- Typing Extensions complements the standard-library typing module by providing runtime support for type hints
- tmux terminal multiplexer installed in the target device
Clone the repository
git clone https://github.com/aau-cns/birdwatch.git
Navigate to the repository and install the package
cd <path-to-repo>
pip3 install -e .
Launch from anywhere as (provided the minimal configuration has been performed)
Run via Python
birdwatch
Column A | Column B |
---|---|
-t or --target_device |
Allows to skip the target device selection, trying to connect directly to the specified device. The list of available devices is given by the .yaml files in config/target_devices |
-n or --network_name |
[not yet implemented] Provided the target device has also been provided, it allows to connect to the selected network instead of the last used. The list of available networks is defined in the configuration file for each target device under config/target_devices |
At least one target device needs to be specified (the file config/target_devices/Template.yaml
can be used as a template). The repository includes the file config/target_devices/Local.yaml
which allows to run BirdWatch without connecting to any remote device but rather run everything locally (this file should work out-of-the-box). Further explanation on target device configuration files can be found in here
To run ROS nodes, BirdWatch opens a tmux session with several windows and panes. In order for it to work it expects a certain tmux configuration. There should be a .tmux.conf
in the home directory of the target device including the lines:
# Set first window and pane to index 1 (instead of default 0) for more
# direct mapping to keyboard
set-option -g base-index 1
set-window-option -g pane-base-index 1
It is possible that an incompatibility with RQT occurs, displaying the following message (or similar) when trying to open a bag file that contains images:
RosPluginProvider.load(rqt_bag_plugins/BagImagePlugin) exception raised in __builtin__.__import__(rqt_bag_plugins.image_plugin, [ImagePlugin]):
Traceback (most recent call last):
File "/opt/ros/noetic/lib/python3/dist-packages/rqt_gui/ros_plugin_provider.py", line 79, in load
module = __builtin__.__import__(
File "/opt/ros/noetic/lib/python3/dist-packages/rqt_bag_plugins/image_plugin.py", line 35, in <module>
from .image_timeline_renderer import ImageTimelineRenderer
File "/opt/ros/noetic/lib/python3/dist-packages/rqt_bag_plugins/image_timeline_renderer.py", line 45, in <module>
from PIL.ImageQt import ImageQt
ImportError: cannot import name 'ImageQt' from 'PIL.ImageQt' (/home/lda/.local/lib/python3.8/site-packages/PIL/ImageQt.py)
This is caused by using different version of the Pillow library. To solve this, first make sure you have the version of Pillow RQT uses (7.0.0):
pip uninstall Pillow
pip install Pillow==7.0.0
Then, install the module from Pillow that BirdWatch uses that doesn't come by default in version 7.0.0:
sudo apt-get install python3-pil.imagetk