├── .fig └── thumbnail.jpg ├── .gitignore ├── .gitman.yml ├── LICENSE ├── README.md ├── _config.yml ├── change_remote_to_local.sh ├── installation ├── dependencies │ ├── gdb │ │ ├── debug_ros2launch │ │ ├── debug_roslaunch │ │ ├── dotgdbinit │ │ ├── gdb_modules │ │ │ ├── eigen │ │ │ │ ├── __init__.py │ │ │ │ └── printers.py │ │ │ ├── gdb-dashboard │ │ │ │ ├── .gdbinit │ │ │ │ └── README.md │ │ │ └── gdb-imshow │ │ │ │ ├── .gitignore │ │ │ │ ├── Makefile │ │ │ │ ├── README.txt │ │ │ │ ├── cv_imshow.py │ │ │ │ ├── gogh.jpg │ │ │ │ └── test.cpp │ │ └── install.sh │ ├── general.sh │ ├── gitman.sh │ ├── mavlink.sh │ ├── mavros.sh │ ├── ros.sh │ ├── termviz.sh │ ├── tmux │ │ ├── dottmux.conf │ │ └── install.sh │ └── tmuxinator.sh ├── install.sh └── ros2 │ ├── 01_install_ros2.sh │ ├── 02_build_rosbridge.sh │ └── 03_run_ros_bridge.sh ├── lib ├── CATKIN_IGNORE └── mavlink-gbp-release ├── miscellaneous ├── automatic_nuc_shutdown │ └── shutdown.sh ├── blheli32_esc_config │ ├── Octa │ │ ├── Octa_M1.ini │ │ ├── Octa_M2.ini │ │ ├── Octa_M3.ini │ │ ├── Octa_M4.ini │ │ ├── Octa_M5.ini │ │ ├── Octa_M6.ini │ │ ├── Octa_M7.ini │ │ └── Octa_M8.ini │ └── Quad │ │ ├── Quad_M1.ini │ │ ├── Quad_M2.ini │ │ ├── Quad_M3.ini │ │ └── Quad_M4.ini ├── chrony │ ├── README.md │ ├── chrony-client.conf │ └── chrony-server.conf ├── configurator_scripts │ ├── autoscripts │ │ ├── 00.sh │ │ ├── 01.sh │ │ ├── 02.sh │ │ ├── 04.sh │ │ ├── 08.sh │ │ ├── 10.sh │ │ ├── 20.sh │ │ ├── 40.sh │ │ └── 80.sh │ ├── bt_conf │ │ ├── bt_app.py │ │ └── gatt_server.py │ ├── configurator.sh │ └── setup_configurator_call_with_sudo.sh ├── dotssh │ ├── afzal │ ├── afzal.pub │ ├── alvaro │ ├── alvaro.pub │ ├── carlos │ ├── carlos.pub │ ├── config_example │ ├── damian │ ├── damian.pub │ ├── dan │ ├── dan.pub │ ├── daniel │ ├── daniel.pub │ ├── denys │ ├── denys.pub │ ├── download_drone_ssh_key.sh │ ├── filip │ ├── filip.pub │ ├── franta │ ├── franta.pub │ ├── generate_ssh_config.sh │ ├── git_usernames │ ├── giuseppe │ ├── giuseppe.pub │ ├── honza │ ├── honza.pub │ ├── jiri │ ├── jiri.pub │ ├── matej │ ├── matej.pub │ ├── matous │ ├── matous.pub │ ├── parakh │ ├── parakh.pub │ ├── pavel │ ├── pavel.pub │ ├── petr │ ├── petr.pub │ ├── robert │ ├── robert.pub │ ├── stibipet │ ├── stibipet.pub │ ├── tim │ ├── tim.pub │ ├── tomas │ ├── tomas.pub │ ├── vasek │ ├── vasek.pub │ ├── viktor │ ├── viktor.pub │ ├── vit │ ├── vit.pub │ ├── vojta │ └── vojta.pub ├── git_scripts │ ├── change_remote.sh │ ├── change_remote_to_local.sh │ └── fork.sh ├── network_settings │ ├── 01-netcfg.yaml │ ├── README.md │ ├── generate_etc_hosts.sh │ └── interfaces ├── pixhawk_sdcard_config │ ├── pixhawk_4 │ │ └── etc │ │ │ └── extras.txt │ └── pixhawk_6x_6c │ │ └── etc │ │ └── extras.txt ├── profiler_viewer │ ├── profiler_exporter.py │ ├── profiler_viewer.py │ └── utils │ │ ├── __init__.py │ │ ├── figure_utils.py │ │ └── rosbag_utils.py ├── rocket_m5_config │ └── XW-44D9E7C0D527.cfg ├── scope_timer_viewer │ └── scope_timer_viewer.py ├── scripts │ ├── bag_to_csv_python3.py │ ├── check_uav.sh │ ├── config.sh │ ├── createRosSymlinkDatabase.sh │ ├── current_world_info.sh │ ├── detacher.sh │ ├── disable_hibernation.sh │ ├── disable_network_manager.sh │ ├── dockerhub_clean.sh │ ├── fix_dualboot_time_offset.sh │ ├── fix_network_interface_names.sh │ ├── get_ros_workspace_path.py │ ├── get_set_rc_variable.sh │ ├── hdd_space_info.sh │ ├── internet_sharing.sh │ ├── login_info.sh │ ├── nato2uav │ ├── network_info.sh │ ├── repo_status.sh │ ├── script_functions.sh │ ├── set_swap.sh │ ├── setup_adhoc.sh │ ├── setup_rc_variables.sh │ ├── setup_real_uav.sh │ ├── uav_check │ │ ├── check_uav.sh │ │ ├── helper_checker.py │ │ ├── helper_tmux.sh │ │ ├── px4_params.json │ │ └── px4_params.json.bak │ ├── uav_ros_params_info.sh │ └── ycm_extra_conf_test.py ├── shell_additions │ └── shell_additions.sh ├── thrust_constants │ ├── designing_simulation_params.m │ ├── motor_thrust_curve_estimation │ │ ├── air2216_880kv_T1045.m │ │ ├── readytosky_2312_920kv_8045.m │ │ ├── readytosky_2312_920kv_9450.m │ │ ├── tmotor_3110_780kv_1147_CF.m │ │ └── tmotor_3510_13inch.m │ └── uav_thrust_curve_estimation │ │ ├── b250.m │ │ ├── brocare.m │ │ ├── brus.m │ │ ├── dit2_initial.m │ │ ├── dofec.m │ │ ├── dofec1_2.m │ │ ├── eagle.m │ │ ├── eaglemk2.m │ │ ├── f330_9_inch.m │ │ ├── f450.m │ │ ├── f450_fake_ESCs_and_motors.m │ │ ├── f450_new_escs.m │ │ ├── f450_readytosky.m │ │ ├── f450_swarm.m │ │ ├── f450_tall_green_motors.m │ │ ├── f450_tall_grey_motors.m │ │ ├── f450_tii.m │ │ ├── f450_tmotor_small.m │ │ ├── f550.m │ │ ├── f550_new_ESCs.m │ │ ├── f550_velodyne.m │ │ ├── m690.m │ │ ├── naki.m │ │ ├── naki_v2.m │ │ ├── simulation_eagle.m │ │ ├── simulation_f330.m │ │ ├── simulation_f450.m │ │ ├── simulation_f550.m │ │ ├── simulation_naki.m │ │ ├── simulation_t650.m │ │ ├── simulation_x500.m │ │ ├── t18_mn501.m │ │ ├── tarot_650_1555_foldable.m │ │ └── tarot_650_1555_solid.m ├── tmux_automatic_start │ ├── README.md │ └── tmux.service ├── udev_rules │ ├── 99-usb-serial_F330_PCB.rules │ ├── 99-usb-serial_F450_PCB.rules │ ├── 99-usb-serial_T650_PCB.rules │ ├── 99-usb-serial_X500_PCB.rules │ ├── README.md │ └── datapodavac │ │ └── 99-usb-serial.rules └── what_to_change_after_image_restore │ └── tutorial.txt ├── ros_packages ├── mavros ├── mrs_bumper ├── mrs_lib ├── mrs_mavros_interface ├── mrs_msgs ├── mrs_rviz_plugins ├── mrs_uav_controllers ├── mrs_uav_general ├── mrs_uav_managers ├── mrs_uav_odometry ├── mrs_uav_status ├── mrs_uav_testing ├── mrs_uav_trackers ├── mrs_uav_trajectory_generation ├── pull_all.sh ├── push_all.sh └── thirdparty │ ├── nlopt_ros │ └── tf2 ├── tmux_scripts ├── README.md ├── just_flying.sh ├── swarming_template │ ├── custom_configs │ │ ├── automatic_start.yaml │ │ ├── constraint_manager.yaml │ │ ├── control_manager.yaml │ │ ├── landoff_tracker.yaml │ │ ├── mpc_tracker.yaml │ │ ├── nimbro.yaml │ │ ├── odometry.yaml │ │ ├── uav_manager.yaml │ │ └── uav_names.yaml │ ├── record.sh │ ├── tmux.sh │ └── world.yaml └── synchronized_tmuxinator │ ├── session.yml │ ├── start.sh │ └── tmux.conf └── utils ├── termviz ├── tmux └── tmuxinator /.fig/thumbnail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ctu-mrs/uav_core/539c2c85bbfb261df95bc0ac4430ae391612c23f/.fig/thumbnail.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # ignore temp files 2 | *~ 3 | 4 | # ignore vim temp files 5 | *.swp 6 | *.swo 7 | *.swn 8 | 9 | # Runtime-python 10 | *.pyc 11 | 12 | .gitman 13 | .gitman.old 14 | 15 | .ci/deploy_key_github 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2020, Multi-robot Systems (MRS) group at Czech Technical University in Prague 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-hacker 2 | exclude: [installation,ros_packages,.ci,miscellaneous,tmux_scripts,utils,change_remote_to_local.sh] 3 | -------------------------------------------------------------------------------- /change_remote_to_local.sh: -------------------------------------------------------------------------------- 1 | miscellaneous/git_scripts/change_remote_to_local.sh -------------------------------------------------------------------------------- /installation/dependencies/gdb/debug_ros2launch: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # This script serves to launch a ros2 node with gdb attached 3 | # to it in a separate tmux split. 4 | # It can also be launched separately by specifying path to the executable. 5 | 6 | if [ $# -lt 2 ]; then 7 | echo "You must specify the tty to be used and the path to the executable to be debugged. Ending." 8 | exit 1; 9 | fi 10 | 11 | if [ -z $TMUX ]; then 12 | echo "You must be in tmux in order to create the split. Ending." 13 | exit 1; 14 | fi 15 | 16 | orig_tty=$1 17 | shift 18 | tmpfile=$(mktemp /tmp/debug_roslaunch_env.XXXXXXXX) 19 | export -p > $tmpfile 20 | pre_cmd="source $HOME/.bashrc; source $tmpfile; rm $tmpfile" 21 | gdb_cmd="gdb -ex 'tty $orig_tty' -ex run --args $@" 22 | cmd="$pre_cmd; $gdb_cmd; exit " 23 | tmux split-window -h "bash -c \"$cmd\"" 24 | -------------------------------------------------------------------------------- /installation/dependencies/gdb/debug_roslaunch: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # This script serves to launch a ros node with gdb attached 3 | # to it in a separate tmux split. 4 | # It can also be launched separately by specifying path to the executable. 5 | 6 | if [ $# -lt 1 ]; then 7 | echo "You must specify path to the executable to be debugged. Ending." 8 | exit 1; 9 | fi 10 | 11 | if [ -z $TMUX ]; then 12 | echo "You must be in tmux in order to create the split. Ending." 13 | exit 1; 14 | fi 15 | 16 | orig_tty=`tty` 17 | tmpfile=$(mktemp /tmp/debug_roslaunch_env.XXXXXXXX) 18 | export -p > $tmpfile 19 | pre_cmd="source $HOME/.bashrc; source $tmpfile; rm $tmpfile" 20 | gdb_cmd="gdb -ex 'tty $orig_tty' -ex run --args $@" 21 | cmd="$pre_cmd; $gdb_cmd; exit " 22 | tmux split-window -h "bash -c \"$cmd\"" 23 | -------------------------------------------------------------------------------- /installation/dependencies/gdb/dotgdbinit: -------------------------------------------------------------------------------- 1 | ### EIGEN PRETTY PRINTER 2 | python 3 | from os.path import expanduser 4 | home = expanduser("~") 5 | import sys 6 | sys.path.insert(0, home + "/.gdb/eigen") 7 | from printers import register_eigen_printers 8 | register_eigen_printers (None) 9 | end 10 | 11 | ### OpenCV IMAGE SHOWER 12 | source ~/.gdb/gdb-imshow/cv_imshow.py 13 | 14 | ### DASHBOARD (shows source, vars etc. nicely) 15 | # uncomment the next two lines to activate gdb-dashboard 16 | # source ~/.gdb/gdb-dashboard/.gdbinit 17 | # dashboard -layout source expressions 18 | 19 | ### USER SETTINGS 20 | # this line is necessary to enable breakpoints in a not-yet 21 | # loaded program (which is needed for debugging roslaunched 22 | # programs) 23 | set breakpoint pending on 24 | # you can specify breakpoints which should be loaded below in a format 25 | # break filename.ext:line_number 26 | # such as 27 | # break utility_fcs.cpp:33 28 | -------------------------------------------------------------------------------- /installation/dependencies/gdb/gdb_modules/eigen/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ctu-mrs/uav_core/539c2c85bbfb261df95bc0ac4430ae391612c23f/installation/dependencies/gdb/gdb_modules/eigen/__init__.py -------------------------------------------------------------------------------- /installation/dependencies/gdb/gdb_modules/gdb-imshow/.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | -------------------------------------------------------------------------------- /installation/dependencies/gdb/gdb_modules/gdb-imshow/Makefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | FLAGS=$(shell pkg-config --cflags --libs opencv) -g 3 | 4 | .PHONY: clean 5 | 6 | all:test 7 | 8 | test: test.cpp 9 | $(CXX) $(FLAGS) $^ -o $@ 10 | 11 | clean: 12 | rm -rf test 13 | -------------------------------------------------------------------------------- /installation/dependencies/gdb/gdb_modules/gdb-imshow/README.txt: -------------------------------------------------------------------------------- 1 | GDB OpenCV imshow 2 | 3 | This is a simple python extension script to visualize interactively OpenCV 4 | images while debugging with gdb. 5 | 6 | INSTALL 7 | 8 | You need to have gdb (version 7.2 or newer). 9 | 10 | You can try to use the cv_imshow command by sourcing it first from within a gdb 11 | session with the command 12 | 13 | > source cv_imshow.py 14 | 15 | (insert the path to the cv_imshow.py file on your machine, if it is not in the 16 | gdb current working directory). You can also add the command to your .gbdinit 17 | file if you do not want to source it at each session. 18 | 19 | USAGE 20 | 21 | Usage is extremely simple, once you have sourced the file. If the variable you 22 | want to inspect (i.e., show) is a cv::Mat or an IplImage with name 'image', all 23 | you need to do is 24 | 25 | > cv_imshow image 26 | 27 | from within your gdb session. 28 | -------------------------------------------------------------------------------- /installation/dependencies/gdb/gdb_modules/gdb-imshow/gogh.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ctu-mrs/uav_core/539c2c85bbfb261df95bc0ac4430ae391612c23f/installation/dependencies/gdb/gdb_modules/gdb-imshow/gogh.jpg -------------------------------------------------------------------------------- /installation/dependencies/gdb/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG 6 | trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR 7 | 8 | # get the path to this script 9 | MY_PATH=`dirname "$0"` 10 | MY_PATH=`( cd "$MY_PATH" && pwd )` 11 | 12 | # install gdb and python3-pil for gdb-imshow 13 | sudo apt-get -y install gdb python3-pil 14 | 15 | # link the configuration and mods 16 | mkdir -p ~/.gdb 17 | 18 | ln -sf $MY_PATH/gdb_modules/gdb-imshow ~/.gdb 19 | ln -sf $MY_PATH/gdb_modules/eigen ~/.gdb 20 | ln -sf $MY_PATH/gdb_modules/gdb-dashboard ~/.gdb 21 | [ ! -e "~/.gdbinit" ] && cp -f $MY_PATH/dotgdbinit ~/.gdbinit 22 | 23 | # copy the scripts for debugging roslaunched programs 24 | sudo ln -sf $MY_PATH/debug_roslaunch /usr/bin/debug_roslaunch 25 | sudo ln -sf $MY_PATH/debug_ros2launch /usr/bin/debug_ros2launch 26 | -------------------------------------------------------------------------------- /installation/dependencies/gitman.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG 6 | trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR 7 | 8 | echo "$0: installing Gitman" 9 | 10 | distro=`lsb_release -r | awk '{ print $2 }'` 11 | 12 | debian=`lsb_release -d | grep -i debian | wc -l` 13 | [[ "$debian" -eq "1" ]] && ROS_DISTRO="noetic" && distro="20.04" 14 | 15 | if [ "$distro" = "18.04" ]; then 16 | 17 | sudo apt-get -y install python-pip python3-pip python-setuptools python3-setuptools 18 | 19 | sudo pip3 install gitman 20 | sudo -H pip3 install gitman 21 | 22 | elif [ "$distro" = "20.04" ]; then 23 | 24 | sudo apt-get -y install python3-pip python3-setuptools 25 | 26 | sudo pip3 install gitman 27 | sudo -H pip3 install gitman 28 | 29 | fi 30 | -------------------------------------------------------------------------------- /installation/dependencies/mavlink.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG 6 | trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR 7 | 8 | distro=`lsb_release -r | awk '{ print $2 }'` 9 | [ "$distro" = "18.04" ] && ROS_DISTRO="melodic" 10 | [ "$distro" = "20.04" ] && ROS_DISTRO="noetic" 11 | 12 | debian=`lsb_release -d | grep -i debian | wc -l` 13 | [[ "$debian" -eq "1" ]] && ROS_DISTRO="noetic" && distro="20.04" && DEBIAN=true 14 | 15 | # get the path to this script 16 | MY_PATH=`dirname "$0"` 17 | MY_PATH=`( cd "$MY_PATH" && pwd )` 18 | 19 | options=$(getopt -l "install,remove,dryrun" -o "" -a -- "$@") 20 | 21 | eval set -- "$options" 22 | 23 | while true 24 | do 25 | case $1 in 26 | --install) 27 | INSTALL=true 28 | shift 29 | ;; 30 | --remove) 31 | REMOVE=true 32 | shift 33 | ;; 34 | --dryrun) 35 | echo "$0: dryrun" 36 | DRYRUN=true 37 | shift 38 | ;; 39 | --) 40 | shift 41 | break 42 | ;; 43 | esac 44 | done 45 | 46 | [ -z "$INSTALL" ] && [ -z "$REMOVE" ] && echo "$0: Choose --install or --remove" && exit 1 47 | [ -n "$INSTALL" ] && [ -n "$REMOVE" ] && echo "$0: Options --install and --remove are mutually exclusive" && exit 1 48 | 49 | if [ -n "$INSTALL" ]; 50 | then 51 | 52 | echo "$0: Installing future" 53 | 54 | if [ "$distro" = "18.04" ]; then 55 | [ -z "$DRYRUN" ] && sudo pip install --user future lxml 56 | [ -z "$DRYRUN" ] && sudo -H pip install --user future lxml 57 | fi 58 | 59 | [ -z "$DRYRUN" ] && sudo pip3 install --user future lxml 60 | [ -z "$DRYRUN" ] && sudo -H pip3 install --user future lxml 61 | 62 | if [ "$distro" = "18.04" ]; then 63 | [ -z "$DRYRUN" ] && sudo apt-get -y install python-future python-lxml python3-future python3-lxml 64 | elif [ "$distro" = "20.04" ]; then 65 | [ -z "$DRYRUN" ] && sudo apt-get -y install python3-future python3-lxml 66 | fi 67 | 68 | echo "$0: Checking out the desired release" 69 | [ -z "$DRYRUN" ] && cd "$MY_PATH/../../lib/mavlink-gbp-release/" 70 | 71 | [ -z "$DRYRUN" ] && [ -e "/etc/ros/rosdep/sources.list.d/20-default.list" ] && sudo rm /etc/ros/rosdep/sources.list.d/20-default.list 72 | [ -z "$DRYRUN" ] && sudo rosdep init 73 | [ -z "$DRYRUN" ] && ( rosdep update || echo "$0: rosdep update failed" ) 74 | 75 | if [ "$distro" = "20.04" ]; then 76 | export ROS_PYTHON_VERSION=3 77 | fi 78 | 79 | [ $DEBIAN ] && OS_NAME="debian" || OS_NAME="ubuntu" 80 | [ -z "$DRYRUN" ] && bloom-generate rosdebian --os-name $OS_NAME --ros-distro $ROS_DISTRO 81 | 82 | echo "$0: Building mavlink" 83 | [ -z "$DRYRUN" ] && [ ! -e build ] && mkdir build 84 | [ -z "$DRYRUN" ] && cd build 85 | [ -z "$DRYRUN" ] && cmake ../ > /dev/null 86 | [ -z "$DRYRUN" ] && make > /dev/null 87 | 88 | echo "$0: Installing mavlink" 89 | [ -z "$DRYRUN" ] && sudo make install > /dev/null 90 | 91 | echo "$0: Cleaning after Mavlink compilation" 92 | [ -z "$DRYRUN" ] && cd "$MY_PATH/../../lib/mavlink-gbp-release/" 93 | [ -z "$DRYRUN" ] && git clean -fd 94 | [ -z "$DRYRUN" ] && [ "$distro" = "20.04" ] && gitman install mavlink-gbp-release 95 | 96 | fi 97 | 98 | if [ -n "$REMOVE" ]; 99 | then 100 | 101 | LOCATION=/usr/local/share/mavlink 102 | [ -z "$DRYRUN" ] && [ -e "$LOCATION" ] && (echo "$0: Removing $LOCATION" && sudo rm -r "$LOCATION") || echo "$0: Nothing to remove" 103 | 104 | fi 105 | -------------------------------------------------------------------------------- /installation/dependencies/mavros.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG 6 | trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR 7 | 8 | distro=`lsb_release -r | awk '{ print $2 }'` 9 | [ "$distro" = "18.04" ] && ROS_DISTRO="melodic" 10 | [ "$distro" = "20.04" ] && ROS_DISTRO="noetic" 11 | 12 | debian=`lsb_release -d | grep -i debian | wc -l` 13 | [[ "$debian" -eq "1" ]] && ROS_DISTRO="noetic" && distro="20.04" 14 | 15 | # get the path to this script 16 | MY_PATH=`dirname "$0"` 17 | MY_PATH=`( cd "$MY_PATH" && pwd )` 18 | 19 | options=$(getopt -l "download,compile,dryrun" -o "" -a -- "$@") 20 | 21 | eval set -- "$options" 22 | 23 | while true 24 | do 25 | case $1 in 26 | --download) 27 | DOWNLOAD=true 28 | shift 29 | ;; 30 | --compile) 31 | COMPILE=true 32 | shift 33 | ;; 34 | --dryrun) 35 | echo "$0: dryrun" 36 | DRYRUN=--dryrun 37 | shift 38 | ;; 39 | --) 40 | shift 41 | break 42 | ;; 43 | esac 44 | done 45 | 46 | [ -z "$DOWNLOAD" ] && [ -z "$COMPILE" ] && echo "$0: Choose --download or --compile" && exit 1 47 | [ -n "$DOWNLOAD" ] && [ -n "$COMPILE" ] && echo "$0: Options --download and --compile are mutually exclusive" && exit 1 48 | 49 | if [ -n "$DOWNLOAD" ]; 50 | then 51 | 52 | echo "$0: Removing custom-compiled Mavlink" 53 | $MY_PATH/mavlink.sh --remove $DRYRUN 54 | 55 | echo "$0: Downloading Mavros" 56 | [ -z "$DRYRUN" ] && ( sudo apt-get -y install ros-$ROS_DISTRO-mavros ros-$ROS_DISTRO-mavlink ros-$ROS_DISTRO-libmavconn ros-$ROS_DISTRO-mavros-extras || echo "Failed to remove pre-installed Mavros" ) 57 | 58 | fi 59 | 60 | if [ -n "$COMPILE" ]; 61 | then 62 | 63 | echo "$0: Removing pre-installed Mavros and Mavlink" 64 | [ -z "$DRYRUN" ] && ( sudo apt-get -y remove ros-$ROS_DISTRO-mavros* ros-$ROS_DISTRO-mavlink* ros-$ROS_DISTRO-libmavconn ros-$ROS_DISTRO-mavros-extras || echo "Failed to remove pre-installed Mavros" ) 65 | 66 | echo "$0: Running custom Mavlink install script" 67 | [ -z "$DRYRUN" ] && $MY_PATH/mavlink.sh --install $DRYRUN 68 | 69 | echo "$0: Installing geographic lib" 70 | [ -z "$DRYRUN" ] && ( sudo $MY_PATH/../../ros_packages/mavros/mavros/scripts/install_geographiclib_datasets.sh || sudo $MY_PATH/../../ros_packages/mavros/mavros/scripts/install_geographiclib_datasets.sh || sudo $MY_PATH/../../ros_packages/mavros/mavros/scripts/install_geographiclib_datasets.sh || echo "$0: \e[1;31mGeographic lib installation failed even after several attempts. This often happends due to poor network connectivity.\e[0m\n") 71 | 72 | fi 73 | -------------------------------------------------------------------------------- /installation/dependencies/ros.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG 6 | trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR 7 | 8 | sudo apt-get -y install wget lsb-release gnupg curl 9 | 10 | distro=`lsb_release -r | awk '{ print $2 }'` 11 | [ "$distro" = "18.04" ] && ROS_DISTRO="melodic" 12 | [ "$distro" = "20.04" ] && ROS_DISTRO="noetic" 13 | 14 | debian=`lsb_release -d | grep -i debian | wc -l` 15 | [[ "$debian" -eq "1" ]] && ROS_DISTRO="noetic" && distro="20.04" 16 | 17 | echo "$0: Installing ROS" 18 | 19 | sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' 20 | 21 | curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - 22 | 23 | sudo apt-get -y update 24 | 25 | sudo apt-get -y install ros-$ROS_DISTRO-ros-base 26 | 27 | num=`cat ~/.bashrc | grep "/opt/ros/$ROS_DISTRO/setup.bash" | wc -l` 28 | if [ "$num" -lt "1" ]; then 29 | 30 | # set bashrc 31 | echo " 32 | source /opt/ros/$ROS_DISTRO/setup.bash" >> ~/.bashrc 33 | 34 | fi 35 | 36 | -------------------------------------------------------------------------------- /installation/dependencies/termviz.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | distro=`lsb_release -r | awk '{ print $2 }'` 4 | [ "$distro" = "18.04" ] && ROS_DISTRO="melodic" 5 | [ "$distro" = "20.04" ] && ROS_DISTRO="noetic" 6 | 7 | # get the path to this script 8 | MY_PATH=`dirname "$0"` 9 | MY_PATH=`( cd "$MY_PATH" && pwd )` 10 | 11 | echo "Installing termviz" 12 | 13 | sudo apt-get -y install cargo 14 | 15 | 16 | export ROS_WORKSPACES_STORE=$ROS_WORKSPACES 17 | export ROS_WORKSPACES="" 18 | echo "Re-sourcing ROS setup" 19 | source /opt/ros/${ROS_DISTRO}/setup.bash 20 | cd $MY_PATH/../../utils/termviz 21 | echo "Running cargo build on termviz" 22 | cargo build --release 23 | # touch ./CATKIN_IGNORE 24 | export ROS_WORKSPACES=$ROS_WORKSPACES_STORE 25 | # source $HOME/mrs_workspace/devel/setup.bash 26 | 27 | sudo ln -sf $MY_PATH/../../utils/termviz/target/release/termviz /usr/local/bin/ 28 | -------------------------------------------------------------------------------- /installation/dependencies/tmux/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG 6 | trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR 7 | 8 | # get the path to this script 9 | MY_PATH=`dirname "$0"` 10 | MY_PATH=`( cd "$MY_PATH" && pwd )` 11 | 12 | echo "$0: uninstalling pre-installed tmux" 13 | sudo apt-get -y remove tmux 14 | 15 | echo "$0: installing tmux build dependencies" 16 | sudo apt-get -y install libevent-dev bison 17 | 18 | echo "$0: building tmux" 19 | 20 | # compile and install custom tmux 21 | cd $MY_PATH/../../../utils/tmux 22 | ( ./autogen.sh > /dev/null && ./configure > /dev/null && make > /dev/null && sudo make install-binPROGRAMS > /dev/null ) || ( echo "Tmux compilation failed, installing normal tmux" && sudo apt-get -y install tmux) 23 | git clean -fd 24 | 25 | FILE=$HOME/.tmux.conf 26 | if [ -e "$FILE" ]; then 27 | echo "$0: .tmux.conf exists, not copying" 28 | else 29 | echo "$0: copying .tmux.conf" 30 | ln -sf $MY_PATH/dottmux.conf $FILE 31 | fi 32 | -------------------------------------------------------------------------------- /installation/dependencies/tmuxinator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG 6 | trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR 7 | 8 | # get the path to this script 9 | MY_PATH=`dirname "$0"` 10 | MY_PATH=`( cd "$MY_PATH" && pwd )` 11 | 12 | cd $MY_PATH/../../utils/tmuxinator 13 | 14 | echo "$0: installing tmuxinator" 15 | 16 | sudo apt-get -y install ruby gem 17 | 18 | gem build tmuxinator.gemspec 19 | sudo gem install tmuxinator -v 1.1.5 20 | -------------------------------------------------------------------------------- /installation/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG 6 | trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR 7 | 8 | # get the path to this script 9 | MY_PATH=`dirname "$0"` 10 | MY_PATH=`( cd "$MY_PATH" && pwd )` 11 | 12 | ## | --------- change to the directory of this script --------- | 13 | 14 | cd "$MY_PATH" 15 | 16 | ## | ----------------------- install ROS ---------------------- | 17 | 18 | bash $MY_PATH/dependencies/ros.sh 19 | 20 | ## | -------------- install general dependencies -------------- | 21 | 22 | bash $MY_PATH/dependencies/general.sh 23 | 24 | ## | --------------------- install gitman --------------------- | 25 | 26 | bash $MY_PATH/dependencies/gitman.sh 27 | 28 | gitman install --force 29 | 30 | ## | ---------------------- install tmux ---------------------- | 31 | 32 | bash $MY_PATH/dependencies/tmux/install.sh 33 | 34 | ## | ------------------- install tmuxinator ------------------- | 35 | 36 | bash $MY_PATH/dependencies/tmuxinator.sh 37 | 38 | ## | ----------------- install debugging tools ---------------- | 39 | 40 | bash $MY_PATH/dependencies/gdb/install.sh 41 | 42 | ## | --------------------- install mavros --------------------- | 43 | 44 | bash $MY_PATH/dependencies/mavros.sh --compile 45 | 46 | ## | ------------------- install termviz ---------------------- | 47 | 48 | bash $MY_PATH/dependencies/termviz.sh 49 | 50 | ## | ------- add sourcing of shell additions to .bashrc ------- | 51 | 52 | num=`cat ~/.bashrc | grep "shell_additions.sh" | wc -l` 53 | if [ "$num" -lt "1" ]; then 54 | 55 | TEMP=`( cd "$MY_PATH/../miscellaneous/shell_additions" && pwd )` 56 | 57 | echo "Adding source to .bashrc" 58 | # set bashrc 59 | echo " 60 | # MRS uav_core shell configuration 61 | source $TEMP/shell_additions.sh" >> ~/.bashrc 62 | 63 | fi 64 | 65 | # add configuration variables 66 | $MY_PATH/../miscellaneous/scripts/setup_rc_variables.sh 67 | -------------------------------------------------------------------------------- /installation/ros2/01_install_ros2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG 6 | trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR 7 | 8 | echo "$0: Installing ROS2" 9 | 10 | # set locale to UTF-8 11 | sudo apt update && sudo apt install locales 12 | sudo locale-gen en_US en_US.UTF-8 13 | sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 14 | export LANG=en_US.UTF-8 15 | 16 | sudo apt-get -y update && sudo apt install curl gnupg2 lsb-release 17 | curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - 18 | 19 | sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list' 20 | 21 | sudo apt-get -y update 22 | sudo apt-get -y install ros-galactic-desktop 23 | 24 | # command line autocompletion 25 | sudo apt-get -y install python3-pip 26 | pip3 install -U argcomplete 27 | 28 | # install colcon 29 | sudo apt install python3-colcon-common-extensions 30 | -------------------------------------------------------------------------------- /installation/ros2/02_build_rosbridge.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG 6 | trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR 7 | 8 | echo "$0: Building ros1_bridge" 9 | 10 | ROS_BRIDGE_WS_PATH=~/ros2_bridge_workspace 11 | 12 | # create ros2_workspace 13 | [ ! -e $ROS_BRIDGE_WS_PATH/src ] && mkdir -p $ROS_BRIDGE_WS_PATH/src 14 | 15 | clone_ros1_bridge() { 16 | cd $ROS_BRIDGE_WS_PATH/src 17 | [ ! -e ros1_bridge ] && git clone https://github.com/ros2/ros1_bridge 18 | cd ros1_bridge 19 | git fetch 20 | git checkout galactic 21 | } 22 | 23 | clone_mrs_msgs() { 24 | cd $ROS_BRIDGE_WS_PATH/src 25 | [ ! -e mrs_msgs ] && git clone https://github.com/ctu-mrs/mrs_msgs 26 | cd mrs_msgs 27 | git fetch 28 | git checkout ros2 29 | } 30 | 31 | build_mrs_msgs() { 32 | cd $ROS_BRIDGE_WS_PATH 33 | source /opt/ros/galactic/setup.bash 34 | colcon build --symlink-install --packages-skip ros1_bridge 35 | } 36 | 37 | build_ros1_bridge() { 38 | cd $ROS_BRIDGE_WS_PATH 39 | source ~/mrs_workspace/devel/setup.bash 40 | source $ROS_BRIDGE_WS_PATH/install/setup.bash 41 | colcon build --symlink-install --packages-select ros1_bridge --cmake-force-configure 42 | } 43 | 44 | clone_ros1_bridge 45 | clone_mrs_msgs 46 | build_mrs_msgs 47 | build_ros1_bridge 48 | -------------------------------------------------------------------------------- /installation/ros2/03_run_ros_bridge.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG 6 | trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR 7 | 8 | echo "$0: Running ros1_bridge, make sure you have ROS1 core already running" 9 | 10 | source ~/mrs_workspace/devel/setup.bash 11 | source ~/ros2_bridge_workspace/install/setup.bash 12 | 13 | ros2 run ros1_bridge dynamic_bridge --bridge-all-topics 14 | -------------------------------------------------------------------------------- /lib/CATKIN_IGNORE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ctu-mrs/uav_core/539c2c85bbfb261df95bc0ac4430ae391612c23f/lib/CATKIN_IGNORE -------------------------------------------------------------------------------- /lib/mavlink-gbp-release: -------------------------------------------------------------------------------- 1 | ../.gitman/mavlink-gbp-release/. -------------------------------------------------------------------------------- /miscellaneous/automatic_nuc_shutdown/shutdown.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$(id -u)" != "0" ]; then 4 | exec sudo "$0" "$@" 5 | fi 6 | 7 | echo "Shutting down the computor in 5 s" 8 | 9 | sleep 5 10 | 11 | sudo shutdown -P now 12 | -------------------------------------------------------------------------------- /miscellaneous/blheli32_esc_config/Octa/Octa_M1.ini: -------------------------------------------------------------------------------- 1 | [ESC0] 2 | Eep_Name=M1 3 | Eep_ESC_Layout=Flycolor_X_Cross_BL_32_35A 4 | Eep_ESC_Mode=2 5 | Eep_FW_Main_Revision=32 6 | Eep_FW_Sub_Revision=80 7 | Eep_Layout_Revision=46 8 | Eep_Pgm_Direction=1 9 | Eep_Pgm_Rampup_Pwr=50 10 | Eep_Pgm_Comm_Timing=16 11 | Eep_Pgm_Demag_Comp=2 12 | Eep_Pgm_Ppm_Min_Throttle=1000 13 | Eep_Pgm_Ppm_Center_Throttle=1500 14 | Eep_Pgm_Ppm_Max_Throttle=2000 15 | Eep_Pgm_Enable_Throttle_Cal=1 16 | Eep_Pgm_Temp_Prot_Enable=140 17 | Eep_Pgm_Volt_Prot=0 18 | Eep_Pgm_Enable_Power_Prot=0 19 | Eep_Pgm_Brake_On_Stop=0 20 | Eep_Pgm_Beep_Strength=40 21 | Eep_Pgm_Beacon_Strength=80 22 | Eep_Pgm_Beacon_Delay=0 23 | Eep_Pgm_LED_Control=0 24 | Eep_Pgm_Max_Acceleration=50 25 | Eep_Pgm_Nondamped_Mode=1 26 | Eep_Note_Config=128 27 | Eep_Pgm_Sine_Mode=1 28 | Eep_Pgm_Auto_Tlm_Mode=1 29 | Eep_Pgm_Stall_Prot=1 30 | Eep_Pgm_SBUS_Channel=17 31 | Eep_Pgm_Pwm_Frequency_Lo=24 32 | Eep_Pgm_Pwm_Frequency_Hi=48 33 | Eep_Hw_Voltage_Sense_Capable=0 34 | Eep_Hw_Current_Sense_Capable=255 35 | Eep_Hw_LED_Capable_0=1 36 | Eep_Hw_LED_Capable_1=2 37 | Eep_Hw_LED_Capable_2=3 38 | Eep_Hw_LED_Capable_3=0 39 | Eep_Hw_Pwm_Freq_Min=255 40 | Eep_Hw_Pwm_Freq_Max=255 41 | Eep_SPORT_Capable=0 42 | Eep_Nondamped_Capable=1 43 | Eep_Note_Array=C62P2P2P2P2P2P2P2 44 | 45 | -------------------------------------------------------------------------------- /miscellaneous/blheli32_esc_config/Octa/Octa_M2.ini: -------------------------------------------------------------------------------- 1 | [ESC0] 2 | Eep_Name=M2 3 | Eep_ESC_Layout=Siskin_ST_32_Plus 4 | Eep_ESC_Mode=2 5 | Eep_FW_Main_Revision=32 6 | Eep_FW_Sub_Revision=80 7 | Eep_Layout_Revision=46 8 | Eep_Pgm_Direction=1 9 | Eep_Pgm_Rampup_Pwr=50 10 | Eep_Pgm_Comm_Timing=16 11 | Eep_Pgm_Demag_Comp=2 12 | Eep_Pgm_Ppm_Min_Throttle=1000 13 | Eep_Pgm_Ppm_Center_Throttle=1500 14 | Eep_Pgm_Ppm_Max_Throttle=2000 15 | Eep_Pgm_Enable_Throttle_Cal=1 16 | Eep_Pgm_Temp_Prot_Enable=140 17 | Eep_Pgm_Volt_Prot=0 18 | Eep_Pgm_Curr_Prot=30 19 | Eep_Pgm_Enable_Power_Prot=0 20 | Eep_Pgm_Brake_On_Stop=0 21 | Eep_Pgm_Beep_Strength=40 22 | Eep_Pgm_Beacon_Strength=80 23 | Eep_Pgm_Beacon_Delay=0 24 | Eep_Pgm_LED_Control=0 25 | Eep_Pgm_Max_Acceleration=50 26 | Eep_Pgm_Nondamped_Mode=1 27 | Eep_Pgm_Curr_Sense_Cal=100 28 | Eep_Note_Config=128 29 | Eep_Pgm_Sine_Mode=1 30 | Eep_Pgm_Auto_Tlm_Mode=0 31 | Eep_Pgm_Stall_Prot=1 32 | Eep_Pgm_SBUS_Channel=17 33 | Eep_Pgm_SPORT_Physical_ID=0 34 | Eep_Pgm_Pwm_Frequency_Lo=24 35 | Eep_Pgm_Pwm_Frequency_Hi=48 36 | Eep_Hw_Voltage_Sense_Capable=0 37 | Eep_Hw_Current_Sense_Capable=0 38 | Eep_Hw_LED_Capable_0=1 39 | Eep_Hw_LED_Capable_1=2 40 | Eep_Hw_LED_Capable_2=3 41 | Eep_Hw_LED_Capable_3=0 42 | Eep_Hw_Pwm_Freq_Min=255 43 | Eep_Hw_Pwm_Freq_Max=255 44 | Eep_SPORT_Capable=1 45 | Eep_Nondamped_Capable=1 46 | Eep_Note_Array=P2D62P2P2 47 | 48 | -------------------------------------------------------------------------------- /miscellaneous/blheli32_esc_config/Octa/Octa_M3.ini: -------------------------------------------------------------------------------- 1 | [ESC0] 2 | Eep_Name=M3 3 | Eep_ESC_Layout=Siskin_ST_32_Plus 4 | Eep_ESC_Mode=2 5 | Eep_FW_Main_Revision=32 6 | Eep_FW_Sub_Revision=80 7 | Eep_Layout_Revision=46 8 | Eep_Pgm_Direction=1 9 | Eep_Pgm_Rampup_Pwr=50 10 | Eep_Pgm_Comm_Timing=16 11 | Eep_Pgm_Demag_Comp=2 12 | Eep_Pgm_Ppm_Min_Throttle=1000 13 | Eep_Pgm_Ppm_Center_Throttle=1500 14 | Eep_Pgm_Ppm_Max_Throttle=2000 15 | Eep_Pgm_Enable_Throttle_Cal=1 16 | Eep_Pgm_Temp_Prot_Enable=140 17 | Eep_Pgm_Volt_Prot=0 18 | Eep_Pgm_Curr_Prot=30 19 | Eep_Pgm_Enable_Power_Prot=0 20 | Eep_Pgm_Brake_On_Stop=0 21 | Eep_Pgm_Beep_Strength=40 22 | Eep_Pgm_Beacon_Strength=80 23 | Eep_Pgm_Beacon_Delay=0 24 | Eep_Pgm_LED_Control=0 25 | Eep_Pgm_Max_Acceleration=50 26 | Eep_Pgm_Nondamped_Mode=1 27 | Eep_Pgm_Curr_Sense_Cal=100 28 | Eep_Note_Config=128 29 | Eep_Pgm_Sine_Mode=1 30 | Eep_Pgm_Auto_Tlm_Mode=0 31 | Eep_Pgm_Stall_Prot=1 32 | Eep_Pgm_SBUS_Channel=17 33 | Eep_Pgm_SPORT_Physical_ID=0 34 | Eep_Pgm_Pwm_Frequency_Lo=24 35 | Eep_Pgm_Pwm_Frequency_Hi=48 36 | Eep_Hw_Voltage_Sense_Capable=0 37 | Eep_Hw_Current_Sense_Capable=0 38 | Eep_Hw_LED_Capable_0=1 39 | Eep_Hw_LED_Capable_1=2 40 | Eep_Hw_LED_Capable_2=3 41 | Eep_Hw_LED_Capable_3=0 42 | Eep_Hw_Pwm_Freq_Min=255 43 | Eep_Hw_Pwm_Freq_Max=255 44 | Eep_SPORT_Capable=1 45 | Eep_Nondamped_Capable=1 46 | Eep_Note_Array=P2P2E62P2 47 | 48 | -------------------------------------------------------------------------------- /miscellaneous/blheli32_esc_config/Octa/Octa_M4.ini: -------------------------------------------------------------------------------- 1 | [ESC0] 2 | Eep_Name=M4 3 | Eep_ESC_Layout=Siskin_ST_32_Plus 4 | Eep_ESC_Mode=2 5 | Eep_FW_Main_Revision=32 6 | Eep_FW_Sub_Revision=80 7 | Eep_Layout_Revision=46 8 | Eep_Pgm_Direction=1 9 | Eep_Pgm_Rampup_Pwr=50 10 | Eep_Pgm_Comm_Timing=16 11 | Eep_Pgm_Demag_Comp=2 12 | Eep_Pgm_Ppm_Min_Throttle=1000 13 | Eep_Pgm_Ppm_Center_Throttle=1500 14 | Eep_Pgm_Ppm_Max_Throttle=2000 15 | Eep_Pgm_Enable_Throttle_Cal=1 16 | Eep_Pgm_Temp_Prot_Enable=140 17 | Eep_Pgm_Volt_Prot=0 18 | Eep_Pgm_Curr_Prot=30 19 | Eep_Pgm_Enable_Power_Prot=0 20 | Eep_Pgm_Brake_On_Stop=0 21 | Eep_Pgm_Beep_Strength=40 22 | Eep_Pgm_Beacon_Strength=80 23 | Eep_Pgm_Beacon_Delay=0 24 | Eep_Pgm_LED_Control=0 25 | Eep_Pgm_Max_Acceleration=50 26 | Eep_Pgm_Nondamped_Mode=1 27 | Eep_Pgm_Curr_Sense_Cal=100 28 | Eep_Note_Config=128 29 | Eep_Pgm_Sine_Mode=1 30 | Eep_Pgm_Auto_Tlm_Mode=0 31 | Eep_Pgm_Stall_Prot=1 32 | Eep_Pgm_SBUS_Channel=17 33 | Eep_Pgm_SPORT_Physical_ID=0 34 | Eep_Pgm_Pwm_Frequency_Lo=24 35 | Eep_Pgm_Pwm_Frequency_Hi=48 36 | Eep_Hw_Voltage_Sense_Capable=0 37 | Eep_Hw_Current_Sense_Capable=0 38 | Eep_Hw_LED_Capable_0=1 39 | Eep_Hw_LED_Capable_1=2 40 | Eep_Hw_LED_Capable_2=3 41 | Eep_Hw_LED_Capable_3=0 42 | Eep_Hw_Pwm_Freq_Min=255 43 | Eep_Hw_Pwm_Freq_Max=255 44 | Eep_SPORT_Capable=1 45 | Eep_Nondamped_Capable=1 46 | Eep_Note_Array=P2P2P2F62 47 | 48 | -------------------------------------------------------------------------------- /miscellaneous/blheli32_esc_config/Octa/Octa_M5.ini: -------------------------------------------------------------------------------- 1 | [ESC0] 2 | Eep_Name=M5 3 | Eep_ESC_Layout=Flycolor_X_Cross_BL_32_35A 4 | Eep_ESC_Mode=2 5 | Eep_FW_Main_Revision=32 6 | Eep_FW_Sub_Revision=80 7 | Eep_Layout_Revision=46 8 | Eep_Pgm_Direction=1 9 | Eep_Pgm_Rampup_Pwr=50 10 | Eep_Pgm_Comm_Timing=16 11 | Eep_Pgm_Demag_Comp=2 12 | Eep_Pgm_Ppm_Min_Throttle=1000 13 | Eep_Pgm_Ppm_Center_Throttle=1500 14 | Eep_Pgm_Ppm_Max_Throttle=2000 15 | Eep_Pgm_Enable_Throttle_Cal=1 16 | Eep_Pgm_Temp_Prot_Enable=140 17 | Eep_Pgm_Volt_Prot=0 18 | Eep_Pgm_Enable_Power_Prot=0 19 | Eep_Pgm_Brake_On_Stop=0 20 | Eep_Pgm_Beep_Strength=40 21 | Eep_Pgm_Beacon_Strength=80 22 | Eep_Pgm_Beacon_Delay=0 23 | Eep_Pgm_LED_Control=0 24 | Eep_Pgm_Max_Acceleration=50 25 | Eep_Pgm_Nondamped_Mode=1 26 | Eep_Note_Config=128 27 | Eep_Pgm_Sine_Mode=1 28 | Eep_Pgm_Auto_Tlm_Mode=0 29 | Eep_Pgm_Stall_Prot=1 30 | Eep_Pgm_SBUS_Channel=17 31 | Eep_Pgm_Pwm_Frequency_Lo=24 32 | Eep_Pgm_Pwm_Frequency_Hi=48 33 | Eep_Hw_Voltage_Sense_Capable=0 34 | Eep_Hw_Current_Sense_Capable=255 35 | Eep_Hw_LED_Capable_0=1 36 | Eep_Hw_LED_Capable_1=2 37 | Eep_Hw_LED_Capable_2=3 38 | Eep_Hw_LED_Capable_3=0 39 | Eep_Hw_Pwm_Freq_Min=255 40 | Eep_Hw_Pwm_Freq_Max=255 41 | Eep_SPORT_Capable=0 42 | Eep_Nondamped_Capable=1 43 | Eep_Note_Array=P2P2P2P2G62P2P2P2 44 | 45 | -------------------------------------------------------------------------------- /miscellaneous/blheli32_esc_config/Octa/Octa_M6.ini: -------------------------------------------------------------------------------- 1 | [ESC0] 2 | Eep_Name=M6 3 | Eep_ESC_Layout=Flycolor_X_Cross_BL_32_35A 4 | Eep_ESC_Mode=2 5 | Eep_FW_Main_Revision=32 6 | Eep_FW_Sub_Revision=80 7 | Eep_Layout_Revision=46 8 | Eep_Pgm_Direction=1 9 | Eep_Pgm_Rampup_Pwr=50 10 | Eep_Pgm_Comm_Timing=16 11 | Eep_Pgm_Demag_Comp=2 12 | Eep_Pgm_Ppm_Min_Throttle=1000 13 | Eep_Pgm_Ppm_Center_Throttle=1500 14 | Eep_Pgm_Ppm_Max_Throttle=2000 15 | Eep_Pgm_Enable_Throttle_Cal=1 16 | Eep_Pgm_Temp_Prot_Enable=140 17 | Eep_Pgm_Volt_Prot=0 18 | Eep_Pgm_Enable_Power_Prot=0 19 | Eep_Pgm_Brake_On_Stop=0 20 | Eep_Pgm_Beep_Strength=40 21 | Eep_Pgm_Beacon_Strength=80 22 | Eep_Pgm_Beacon_Delay=0 23 | Eep_Pgm_LED_Control=0 24 | Eep_Pgm_Max_Acceleration=50 25 | Eep_Pgm_Nondamped_Mode=1 26 | Eep_Note_Config=128 27 | Eep_Pgm_Sine_Mode=1 28 | Eep_Pgm_Auto_Tlm_Mode=0 29 | Eep_Pgm_Stall_Prot=1 30 | Eep_Pgm_SBUS_Channel=17 31 | Eep_Pgm_Pwm_Frequency_Lo=24 32 | Eep_Pgm_Pwm_Frequency_Hi=48 33 | Eep_Hw_Voltage_Sense_Capable=0 34 | Eep_Hw_Current_Sense_Capable=255 35 | Eep_Hw_LED_Capable_0=1 36 | Eep_Hw_LED_Capable_1=2 37 | Eep_Hw_LED_Capable_2=3 38 | Eep_Hw_LED_Capable_3=0 39 | Eep_Hw_Pwm_Freq_Min=255 40 | Eep_Hw_Pwm_Freq_Max=255 41 | Eep_SPORT_Capable=0 42 | Eep_Nondamped_Capable=1 43 | Eep_Note_Array=P2P2P2P2P2A62P2P2 44 | 45 | -------------------------------------------------------------------------------- /miscellaneous/blheli32_esc_config/Octa/Octa_M7.ini: -------------------------------------------------------------------------------- 1 | [ESC0] 2 | Eep_Name=M7 3 | Eep_ESC_Layout=Flycolor_X_Cross_BL_32_35A 4 | Eep_ESC_Mode=2 5 | Eep_FW_Main_Revision=32 6 | Eep_FW_Sub_Revision=80 7 | Eep_Layout_Revision=46 8 | Eep_Pgm_Direction=1 9 | Eep_Pgm_Rampup_Pwr=50 10 | Eep_Pgm_Comm_Timing=16 11 | Eep_Pgm_Demag_Comp=2 12 | Eep_Pgm_Ppm_Min_Throttle=1000 13 | Eep_Pgm_Ppm_Center_Throttle=1500 14 | Eep_Pgm_Ppm_Max_Throttle=2000 15 | Eep_Pgm_Enable_Throttle_Cal=1 16 | Eep_Pgm_Temp_Prot_Enable=140 17 | Eep_Pgm_Volt_Prot=0 18 | Eep_Pgm_Enable_Power_Prot=0 19 | Eep_Pgm_Brake_On_Stop=0 20 | Eep_Pgm_Beep_Strength=40 21 | Eep_Pgm_Beacon_Strength=80 22 | Eep_Pgm_Beacon_Delay=0 23 | Eep_Pgm_LED_Control=0 24 | Eep_Pgm_Max_Acceleration=50 25 | Eep_Pgm_Nondamped_Mode=1 26 | Eep_Note_Config=128 27 | Eep_Pgm_Sine_Mode=1 28 | Eep_Pgm_Auto_Tlm_Mode=0 29 | Eep_Pgm_Stall_Prot=1 30 | Eep_Pgm_SBUS_Channel=17 31 | Eep_Pgm_Pwm_Frequency_Lo=24 32 | Eep_Pgm_Pwm_Frequency_Hi=48 33 | Eep_Hw_Voltage_Sense_Capable=0 34 | Eep_Hw_Current_Sense_Capable=255 35 | Eep_Hw_LED_Capable_0=1 36 | Eep_Hw_LED_Capable_1=2 37 | Eep_Hw_LED_Capable_2=3 38 | Eep_Hw_LED_Capable_3=0 39 | Eep_Hw_Pwm_Freq_Min=255 40 | Eep_Hw_Pwm_Freq_Max=255 41 | Eep_SPORT_Capable=0 42 | Eep_Nondamped_Capable=1 43 | Eep_Note_Array=P2P2P2P2P2P2B62P2 44 | 45 | -------------------------------------------------------------------------------- /miscellaneous/blheli32_esc_config/Octa/Octa_M8.ini: -------------------------------------------------------------------------------- 1 | [ESC0] 2 | Eep_Name=M8 3 | Eep_ESC_Layout=Flycolor_X_Cross_BL_32_35A 4 | Eep_ESC_Mode=2 5 | Eep_FW_Main_Revision=32 6 | Eep_FW_Sub_Revision=80 7 | Eep_Layout_Revision=46 8 | Eep_Pgm_Direction=1 9 | Eep_Pgm_Rampup_Pwr=50 10 | Eep_Pgm_Comm_Timing=16 11 | Eep_Pgm_Demag_Comp=2 12 | Eep_Pgm_Ppm_Min_Throttle=1000 13 | Eep_Pgm_Ppm_Center_Throttle=1500 14 | Eep_Pgm_Ppm_Max_Throttle=2000 15 | Eep_Pgm_Enable_Throttle_Cal=1 16 | Eep_Pgm_Temp_Prot_Enable=140 17 | Eep_Pgm_Volt_Prot=0 18 | Eep_Pgm_Enable_Power_Prot=0 19 | Eep_Pgm_Brake_On_Stop=0 20 | Eep_Pgm_Beep_Strength=40 21 | Eep_Pgm_Beacon_Strength=80 22 | Eep_Pgm_Beacon_Delay=0 23 | Eep_Pgm_LED_Control=0 24 | Eep_Pgm_Max_Acceleration=50 25 | Eep_Pgm_Nondamped_Mode=1 26 | Eep_Note_Config=128 27 | Eep_Pgm_Sine_Mode=1 28 | Eep_Pgm_Auto_Tlm_Mode=0 29 | Eep_Pgm_Stall_Prot=1 30 | Eep_Pgm_SBUS_Channel=17 31 | Eep_Pgm_Pwm_Frequency_Lo=24 32 | Eep_Pgm_Pwm_Frequency_Hi=48 33 | Eep_Hw_Voltage_Sense_Capable=0 34 | Eep_Hw_Current_Sense_Capable=255 35 | Eep_Hw_LED_Capable_0=1 36 | Eep_Hw_LED_Capable_1=2 37 | Eep_Hw_LED_Capable_2=3 38 | Eep_Hw_LED_Capable_3=0 39 | Eep_Hw_Pwm_Freq_Min=255 40 | Eep_Hw_Pwm_Freq_Max=255 41 | Eep_SPORT_Capable=0 42 | Eep_Nondamped_Capable=1 43 | Eep_Note_Array=P2P2P2P2P2P2P2C72 44 | 45 | -------------------------------------------------------------------------------- /miscellaneous/blheli32_esc_config/Quad/Quad_M1.ini: -------------------------------------------------------------------------------- 1 | [ESC0] 2 | Eep_Name=M1 3 | Eep_ESC_Layout=Siskin_ST_32_Plus 4 | Eep_ESC_Mode=2 5 | Eep_FW_Main_Revision=32 6 | Eep_FW_Sub_Revision=80 7 | Eep_Layout_Revision=46 8 | Eep_Pgm_Direction=1 9 | Eep_Pgm_Rampup_Pwr=50 10 | Eep_Pgm_Comm_Timing=16 11 | Eep_Pgm_Demag_Comp=2 12 | Eep_Pgm_Ppm_Min_Throttle=1000 13 | Eep_Pgm_Ppm_Center_Throttle=1500 14 | Eep_Pgm_Ppm_Max_Throttle=2000 15 | Eep_Pgm_Enable_Throttle_Cal=1 16 | Eep_Pgm_Temp_Prot_Enable=140 17 | Eep_Pgm_Volt_Prot=0 18 | Eep_Pgm_Curr_Prot=30 19 | Eep_Pgm_Enable_Power_Prot=0 20 | Eep_Pgm_Brake_On_Stop=0 21 | Eep_Pgm_Beep_Strength=40 22 | Eep_Pgm_Beacon_Strength=80 23 | Eep_Pgm_Beacon_Delay=0 24 | Eep_Pgm_LED_Control=0 25 | Eep_Pgm_Max_Acceleration=50 26 | Eep_Pgm_Nondamped_Mode=1 27 | Eep_Pgm_Curr_Sense_Cal=100 28 | Eep_Note_Config=128 29 | Eep_Pgm_Sine_Mode=1 30 | Eep_Pgm_Auto_Tlm_Mode=1 31 | Eep_Pgm_Stall_Prot=1 32 | Eep_Pgm_SBUS_Channel=17 33 | Eep_Pgm_SPORT_Physical_ID=0 34 | Eep_Pgm_Pwm_Frequency_Lo=24 35 | Eep_Pgm_Pwm_Frequency_Hi=48 36 | Eep_Hw_Voltage_Sense_Capable=0 37 | Eep_Hw_Current_Sense_Capable=0 38 | Eep_Hw_LED_Capable_0=1 39 | Eep_Hw_LED_Capable_1=2 40 | Eep_Hw_LED_Capable_2=3 41 | Eep_Hw_LED_Capable_3=0 42 | Eep_Hw_Pwm_Freq_Min=255 43 | Eep_Hw_Pwm_Freq_Max=255 44 | Eep_SPORT_Capable=1 45 | Eep_Nondamped_Capable=1 46 | Eep_Note_Array=C62P2P2P2 47 | 48 | -------------------------------------------------------------------------------- /miscellaneous/blheli32_esc_config/Quad/Quad_M2.ini: -------------------------------------------------------------------------------- 1 | [ESC0] 2 | Eep_Name=M2 3 | Eep_ESC_Layout=Siskin_GD_32_Plus 4 | Eep_ESC_Mode=2 5 | Eep_FW_Main_Revision=32 6 | Eep_FW_Sub_Revision=80 7 | Eep_Layout_Revision=46 8 | Eep_Pgm_Direction=1 9 | Eep_Pgm_Rampup_Pwr=50 10 | Eep_Pgm_Comm_Timing=16 11 | Eep_Pgm_Demag_Comp=2 12 | Eep_Pgm_Ppm_Min_Throttle=1000 13 | Eep_Pgm_Ppm_Center_Throttle=1500 14 | Eep_Pgm_Ppm_Max_Throttle=2000 15 | Eep_Pgm_Enable_Throttle_Cal=1 16 | Eep_Pgm_Temp_Prot_Enable=140 17 | Eep_Pgm_Volt_Prot=0 18 | Eep_Pgm_Curr_Prot=30 19 | Eep_Pgm_Enable_Power_Prot=0 20 | Eep_Pgm_Brake_On_Stop=0 21 | Eep_Pgm_Beep_Strength=40 22 | Eep_Pgm_Beacon_Strength=80 23 | Eep_Pgm_Beacon_Delay=0 24 | Eep_Pgm_LED_Control=0 25 | Eep_Pgm_Max_Acceleration=50 26 | Eep_Pgm_Nondamped_Mode=1 27 | Eep_Pgm_Curr_Sense_Cal=100 28 | Eep_Note_Config=128 29 | Eep_Pgm_Sine_Mode=1 30 | Eep_Pgm_Auto_Tlm_Mode=0 31 | Eep_Pgm_Stall_Prot=1 32 | Eep_Pgm_SBUS_Channel=17 33 | Eep_Pgm_SPORT_Physical_ID=0 34 | Eep_Pgm_Pwm_Frequency_Lo=24 35 | Eep_Pgm_Pwm_Frequency_Hi=48 36 | Eep_Hw_Voltage_Sense_Capable=0 37 | Eep_Hw_Current_Sense_Capable=0 38 | Eep_Hw_LED_Capable_0=1 39 | Eep_Hw_LED_Capable_1=2 40 | Eep_Hw_LED_Capable_2=3 41 | Eep_Hw_LED_Capable_3=0 42 | Eep_Hw_Pwm_Freq_Min=255 43 | Eep_Hw_Pwm_Freq_Max=255 44 | Eep_SPORT_Capable=1 45 | Eep_Nondamped_Capable=1 46 | Eep_Note_Array=P2D62P2P2 47 | 48 | -------------------------------------------------------------------------------- /miscellaneous/blheli32_esc_config/Quad/Quad_M3.ini: -------------------------------------------------------------------------------- 1 | [ESC0] 2 | Eep_Name=M3 3 | Eep_ESC_Layout=Siskin_GD_32_Plus 4 | Eep_ESC_Mode=2 5 | Eep_FW_Main_Revision=32 6 | Eep_FW_Sub_Revision=80 7 | Eep_Layout_Revision=46 8 | Eep_Pgm_Direction=1 9 | Eep_Pgm_Rampup_Pwr=50 10 | Eep_Pgm_Comm_Timing=16 11 | Eep_Pgm_Demag_Comp=2 12 | Eep_Pgm_Ppm_Min_Throttle=1000 13 | Eep_Pgm_Ppm_Center_Throttle=1500 14 | Eep_Pgm_Ppm_Max_Throttle=2000 15 | Eep_Pgm_Enable_Throttle_Cal=1 16 | Eep_Pgm_Temp_Prot_Enable=140 17 | Eep_Pgm_Volt_Prot=0 18 | Eep_Pgm_Curr_Prot=30 19 | Eep_Pgm_Enable_Power_Prot=0 20 | Eep_Pgm_Brake_On_Stop=0 21 | Eep_Pgm_Beep_Strength=40 22 | Eep_Pgm_Beacon_Strength=80 23 | Eep_Pgm_Beacon_Delay=0 24 | Eep_Pgm_LED_Control=0 25 | Eep_Pgm_Max_Acceleration=50 26 | Eep_Pgm_Nondamped_Mode=1 27 | Eep_Pgm_Curr_Sense_Cal=100 28 | Eep_Note_Config=128 29 | Eep_Pgm_Sine_Mode=1 30 | Eep_Pgm_Auto_Tlm_Mode=0 31 | Eep_Pgm_Stall_Prot=1 32 | Eep_Pgm_SBUS_Channel=17 33 | Eep_Pgm_SPORT_Physical_ID=0 34 | Eep_Pgm_Pwm_Frequency_Lo=24 35 | Eep_Pgm_Pwm_Frequency_Hi=48 36 | Eep_Hw_Voltage_Sense_Capable=0 37 | Eep_Hw_Current_Sense_Capable=0 38 | Eep_Hw_LED_Capable_0=1 39 | Eep_Hw_LED_Capable_1=2 40 | Eep_Hw_LED_Capable_2=3 41 | Eep_Hw_LED_Capable_3=0 42 | Eep_Hw_Pwm_Freq_Min=255 43 | Eep_Hw_Pwm_Freq_Max=255 44 | Eep_SPORT_Capable=1 45 | Eep_Nondamped_Capable=1 46 | Eep_Note_Array=P2P2E62P2 47 | 48 | -------------------------------------------------------------------------------- /miscellaneous/blheli32_esc_config/Quad/Quad_M4.ini: -------------------------------------------------------------------------------- 1 | [ESC0] 2 | Eep_Name=M4 3 | Eep_ESC_Layout=Siskin_GD_32_Plus 4 | Eep_ESC_Mode=2 5 | Eep_FW_Main_Revision=32 6 | Eep_FW_Sub_Revision=80 7 | Eep_Layout_Revision=46 8 | Eep_Pgm_Direction=1 9 | Eep_Pgm_Rampup_Pwr=50 10 | Eep_Pgm_Comm_Timing=16 11 | Eep_Pgm_Demag_Comp=2 12 | Eep_Pgm_Ppm_Min_Throttle=1000 13 | Eep_Pgm_Ppm_Center_Throttle=1500 14 | Eep_Pgm_Ppm_Max_Throttle=2000 15 | Eep_Pgm_Enable_Throttle_Cal=1 16 | Eep_Pgm_Temp_Prot_Enable=140 17 | Eep_Pgm_Volt_Prot=0 18 | Eep_Pgm_Curr_Prot=30 19 | Eep_Pgm_Enable_Power_Prot=0 20 | Eep_Pgm_Brake_On_Stop=0 21 | Eep_Pgm_Beep_Strength=40 22 | Eep_Pgm_Beacon_Strength=80 23 | Eep_Pgm_Beacon_Delay=0 24 | Eep_Pgm_LED_Control=0 25 | Eep_Pgm_Max_Acceleration=50 26 | Eep_Pgm_Nondamped_Mode=1 27 | Eep_Pgm_Curr_Sense_Cal=100 28 | Eep_Note_Config=128 29 | Eep_Pgm_Sine_Mode=1 30 | Eep_Pgm_Auto_Tlm_Mode=0 31 | Eep_Pgm_Stall_Prot=1 32 | Eep_Pgm_SBUS_Channel=17 33 | Eep_Pgm_SPORT_Physical_ID=0 34 | Eep_Pgm_Pwm_Frequency_Lo=24 35 | Eep_Pgm_Pwm_Frequency_Hi=48 36 | Eep_Hw_Voltage_Sense_Capable=0 37 | Eep_Hw_Current_Sense_Capable=0 38 | Eep_Hw_LED_Capable_0=1 39 | Eep_Hw_LED_Capable_1=2 40 | Eep_Hw_LED_Capable_2=3 41 | Eep_Hw_LED_Capable_3=0 42 | Eep_Hw_Pwm_Freq_Min=255 43 | Eep_Hw_Pwm_Freq_Max=255 44 | Eep_SPORT_Capable=1 45 | Eep_Nondamped_Capable=1 46 | Eep_Note_Array=P2P2P2F62 47 | 48 | -------------------------------------------------------------------------------- /miscellaneous/chrony/README.md: -------------------------------------------------------------------------------- 1 | # how to install chrony for syncing time on drones 2 | 3 | ## README 4 | 5 | Chrony **should and will not do automatic step synchronization**, that will break ROS. If you want to do a step sync (the time difference is too large), issue it manually by: 6 | ```bash 7 | sudo chronyc -a makestep 8 | ``` 9 | 10 | BTW, the computers should (probably) be in the same timezone. 11 | 12 | ## install chrony client 13 | 14 | ```bash 15 | sudo apt-get -y install chrony 16 | sudo cp chrony-client.conf /etc/chrony/chrony.conf 17 | sudo vim /etc/chrony/chrony.conf 18 | ``` 19 | Edit the lookup server by adding a new line to list of NTP servers. 20 | ``` 21 | server [SERVER IP ADDRESS - e.g. 192.168.69.5/SERVER HOSTNAME] offline iburst 22 | ``` 23 | Make sure to have the `SERVER HOSTNAME` in the `/etc/hosts` if you want to use the hostname. 24 | 25 | ```bash 26 | sudo service chrony restart 27 | ``` 28 | 29 | ## how to install chrony server 30 | 31 | ```bash 32 | sudo apt-get -y install chrony 33 | sudo cp chrony-server.conf /etc/chrony/chrony.conf 34 | sudo vim /etc/chrony/chrony.conf 35 | ``` 36 | Edit the `allow` ip address in the configuration file that defines the server's accessibility by NTP clients as follows 37 | ``` 38 | allow [SERVER IP ADDRESS (replace the last digit with zero) - e.g. 192.168.69.0.]/24 39 | ``` 40 | ```bash 41 | sudo service chrony restart 42 | ``` 43 | 44 | ## testing chrony 45 | 46 | ```bash 47 | chronyc tracking 48 | chronyc sources 49 | ``` 50 | -------------------------------------------------------------------------------- /miscellaneous/chrony/chrony-server.conf: -------------------------------------------------------------------------------- 1 | # This the default chrony.conf file for the Debian chrony package. After 2 | # editing this file use the command 'invoke-rc.d chrony restart' to make 3 | # your changes take effect. John Hasler 1998-2008 4 | 5 | # See www.pool.ntp.org for an explanation of these servers. Please 6 | # consider joining the project if possible. If you can't or don't want to 7 | # use these servers I suggest that you try your ISP's nameservers. We mark 8 | # the servers 'offline' so that chronyd won't try to connect when the link 9 | # is down. Scripts in /etc/ppp/ip-up.d and /etc/ppp/ip-down.d use chronyc 10 | # commands to switch it on when a dialup link comes up and off when it goes 11 | # down. Code in /etc/init.d/chrony attempts to determine whether or not 12 | # the link is up at boot time and set the online status accordingly. If 13 | # you have an always-on connection such as cable omit the 'offline' 14 | # directive and chronyd will default to online. 15 | # 16 | # Note that if Chrony tries to go "online" and dns lookup of the servers 17 | # fails they will be discarded. Thus under some circumstances it is 18 | # better to use IP numbers than host names. 19 | 20 | server tik.cesnet.cz offline iburst 21 | server tak.cesnet.cz offline iburst 22 | server ntp.nic.cz offline iburst 23 | 24 | # Look here for the admin password needed for chronyc. The initial 25 | # password is generated by a random process at install time. You may 26 | # change it if you wish. 27 | 28 | keyfile /etc/chrony/chrony.keys 29 | 30 | # This directive sets the key ID used for authenticating user commands via the 31 | # 'chronyc' program at run time. 32 | 33 | commandkey 1 34 | 35 | # I moved the driftfile to /var/lib/chrony to comply with the Debian 36 | # filesystem standard. 37 | 38 | driftfile /var/lib/chrony/chrony.drift 39 | 40 | # Comment this line out to turn off logging. 41 | 42 | log tracking measurements statistics 43 | logdir /var/log/chrony 44 | 45 | # Stop bad estimates upsetting machine clock. 46 | 47 | maxupdateskew 100.0 48 | 49 | # Dump measurements when daemon exits. 50 | 51 | dumponexit 52 | 53 | # Specify directory for dumping measurements. 54 | 55 | dumpdir /var/lib/chrony 56 | 57 | # This directive lets 'chronyd' to serve time even if unsynchronised to any 58 | # NTP server. 59 | 60 | local stratum 10 61 | 62 | # This directive designates subnets (or nodes) from which NTP clients are allowed 63 | # to access to 'chronyd'. 64 | 65 | #allow foo.example.net 66 | #allow 10/8 67 | # allow 0/0 (allow access by any IPv4 node) 68 | #allow ::/0 (allow access by any IPv6 node) 69 | allow 192.168.69.0/16 70 | 71 | # This directive forces `chronyd' to send a message to syslog if it 72 | # makes a system clock adjustment larger than a threshold value in seconds. 73 | 74 | logchange 0.5 75 | 76 | # This directive defines an email address to which mail should be sent 77 | # if chronyd applies a correction exceeding a particular threshold to the 78 | # system clock. 79 | 80 | # mailonchange root@localhost 0.5 81 | 82 | # This directive tells 'chronyd' to parse the 'adjtime' file to find out if the 83 | # real-time clock keeps local time or UTC. It overrides the 'rtconutc' directive. 84 | 85 | hwclockfile /etc/adjtime 86 | 87 | # This directive enables kernel synchronisation (every 11 minutes) of the 88 | # real-time clock. Note that it can’t be used along with the 'rtcfile' directive. 89 | 90 | rtcsync 91 | -------------------------------------------------------------------------------- /miscellaneous/configurator_scripts/autoscripts/00.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sed -i 's/mrs_ctu.*"/mrs_ctu"/g' /etc/netplan/01-netcfg.yaml 3 | netplan apply 4 | 5 | -------------------------------------------------------------------------------- /miscellaneous/configurator_scripts/autoscripts/01.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sed -i 's/mrs_ctu.*"/mrs_ctu_1"/g' /etc/netplan/01-netcfg.yaml 3 | netplan apply 4 | 5 | -------------------------------------------------------------------------------- /miscellaneous/configurator_scripts/autoscripts/02.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sed -i 's/mrs_ctu.*"/mrs_ctu_2"/g' /etc/netplan/01-netcfg.yaml 3 | netplan apply 4 | 5 | -------------------------------------------------------------------------------- /miscellaneous/configurator_scripts/autoscripts/04.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sed -i 's/mrs_ctu.*"/mrs_ctu_3"/g' /etc/netplan/01-netcfg.yaml 3 | netplan apply 4 | 5 | -------------------------------------------------------------------------------- /miscellaneous/configurator_scripts/autoscripts/08.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sed -i 's/mrs_ctu.*"/mrs_ctu_4"/g' /etc/netplan/01-netcfg.yaml 3 | netplan apply 4 | 5 | -------------------------------------------------------------------------------- /miscellaneous/configurator_scripts/autoscripts/10.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sed -i 's/mrs_ctu.*"/mrs_ctu_5"/g' /etc/netplan/01-netcfg.yaml 3 | netplan apply 4 | 5 | -------------------------------------------------------------------------------- /miscellaneous/configurator_scripts/autoscripts/20.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sed -i 's/mrs_ctu.*"/mrs_ctu_6"/g' /etc/netplan/01-netcfg.yaml 3 | netplan apply 4 | 5 | -------------------------------------------------------------------------------- /miscellaneous/configurator_scripts/autoscripts/40.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sed -i 's/mrs_ctu.*"/mrs_ctu_7"/g' /etc/netplan/01-netcfg.yaml 3 | netplan apply 4 | 5 | -------------------------------------------------------------------------------- /miscellaneous/configurator_scripts/autoscripts/80.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sed -i 's/mrs_ctu.*"/mrs_ctu_8"/g' /etc/netplan/01-netcfg.yaml 3 | netplan apply 4 | 5 | -------------------------------------------------------------------------------- /miscellaneous/configurator_scripts/configurator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | this_script_path="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" 3 | device=$(lsusb | grep -o ffff:ff..) 4 | script_name=${this_script_path}"/autoscripts/"${device: -2}".sh" 5 | 6 | is_connected=false 7 | was_connected=false 8 | 9 | if [ -f "/tmp/mem_conf" ]; then 10 | was_connected=true 11 | else 12 | was_connected=false 13 | fi 14 | 15 | if [ -z "${device}" ] 16 | then 17 | is_connected=false 18 | else 19 | is_connected=true 20 | fi 21 | 22 | if [ "$is_connected" = true ] ; then 23 | if [ "$was_connected" = false ] ; then 24 | eval $script_name 25 | touch /tmp/mem_conf 26 | fi 27 | else 28 | rm /tmp/mem_conf 29 | fi 30 | -------------------------------------------------------------------------------- /miscellaneous/configurator_scripts/setup_configurator_call_with_sudo.sh: -------------------------------------------------------------------------------- 1 | touch /etc/systemd/system/uav_configurator.service 2 | > /etc/systemd/system/uav_configurator.service 3 | echo "[Unit] 4 | Description=MRS UAV Configurator service 5 | After=network.target 6 | StartLimitIntervalSec=0 7 | [Service] 8 | Type=simple 9 | Restart=always 10 | RestartSec=1 11 | ExecStart=/home/mrs/git/uav_core/miscellaneous/configurator_scripts/configurator.sh 12 | [Install] 13 | WantedBy=multi-user.target" >> /etc/systemd/system/uav_configurator.service 14 | systemctl daemon-reload 15 | systemctl enable uav_configurator 16 | systemctl start uav_configurator 17 | 18 | touch /etc/systemd/system/uav_configurator_bluetooth.service 19 | > /etc/systemd/system/uav_configurator_bluetooth.service 20 | echo "[Unit] 21 | Description=MRS UAV Bluetooth Configurator service 22 | After=network.target 23 | StartLimitIntervalSec=0 24 | [Service] 25 | Type=simple 26 | Restart=always 27 | ExecStart=/usr/bin/python3 /home/mrs/git/uav_core/miscellaneous/configurator_scripts/bt_conf/bt_app.py 28 | [Install] 29 | WantedBy=multi-user.target" >> /etc/systemd/system/uav_configurator_bluetooth.service 30 | systemctl daemon-reload 31 | systemctl enable uav_configurator_bluetooth 32 | systemctl start uav_configurator_bluetooth 33 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/afzal.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDAgB6EUIIlyRRthFGZb6idI8y5Medz3fQqcQHReoBHw4c3BE4YW40RHX4GGhf+qrwaYprBXQVWLFvqOtAxdj8XzQ1PwkggU7Z1rJbMnzU8kBbKJ/DgyxDpFMM8jSdggIdRDGvzm2qkD1IS06xWbIFCU9rZMn1RlHX45DE1flpaGQlTSIG3eL2Zq892ShCpQmipvhXZk9ovLmHDJWMdWbNIUf3UWQ5/7MOkFXfKjR7BwKbBreG+mULfm5yO60+P8vpb1jC8k/BPCX+ZsE71qiD4nK3tBbhIO6WZbCXQ0Y+Z3/yzWbageIEGanP3GHbX7AxPObozcabFDMzZnp1IeVKCCOe+6Vb/VUExep/K2aa9nDTBurUBDwrBYfpVEjmoDXQl2EG1bHzwynIPRpOEQLY3l2eXaGbpMXiERS59XdkUZe2AObclSHLKQmXJW9xWeVejza65VTmgrg8GFEk3yOy2Rtht03jw6Nbf84oglX6hCxxnes3C1r6h70kIDg2t5gg+Twiub/tw9z8yrv00L45QHNoRgLonRysGqZsaFz6U5BMWkxWHR7h+0p7jh7/b1rLpM+cH8SaYMvCbcuq8qJiOG0MixR5P2xgLurgJaEoZVbfahxFEVurs9o6vryBASei12Fsv9C1t7gyxfgw5Lm4tYwrbduw2jp3JVEfaxkb/LQ== afzalhmd14@gmail.com 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/alvaro.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDrM16ZufT8pBeJyCyJhj9IrEvvFpQjyUGpOjFYaxdfSjuoJwntSh+fRJB07juBoti5wMQEKxVFMXbqzqBqHzxFxHc36q/X7t1nNwRjaPqw6yPedgvX6iTA6hLg/lCig3IuhXcw3XVsRzMuFObBC22cYV8k8r28aacy8z7H+WneSERG5MSCtvlQmtpyjdrlKeuek320oXDDkZnrSba45Xq9R8Hwe759Z4uFXqFhKJZKU4K7C/ID2Ojy9zqLfHFac8bp35H3xColUGn9BIwQbUZYIRzSgwaMMswaCKkXVhK8ozUdcEEre7t8vDYcrq9XLm6MzaCZ6ynyCtlBfSKptEiQhUa3UPTFLSu/H8ugywq4yoXJgZipCNOw3N86pMNgstv55yU7TYzrMfHvnp4+5MVtCe2bv2HxengacY9myDrm79kJsEXgo3oPE2gEOodgFUeb0yTKEKBkwMuuog5F8Ci3IllZ7oao7GmwvlXFapxZVpTYVbILIRSEXz6ONoaP2h1R/OYHeGuZqLJYUgTOMo2hoRkvozHUyCVIEvxZvva/rTxbSRMoHk+w0WyaDgfd7uPB81THpGyWTPf3+f7XPS+tvJWR3ua0IvJ5yDfXnAQZw99GulGIbPGh2bf1tXNQ/yrG2b3Gglc9d2z4faCFk/xzI8Se7VtK0+KvXKrccY/VuQ== baldman@Lenovo-ideapad-330-15IKB 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/carlos.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1q7mMIawhn8b+CYie3RrVir+iTlqwvGk+Lg9cobrvFKRH4Tk1XicAR0UrB4FHYr1evrxQSlyqeLvoiCo9nWu0OBvSo4x/ZkE651MACeqtwvqFtDrwAEo/6olZHyEFUEhZwiRAfTGB5aXzsuu4vRd+FGMPEwHBhy1+9rxff6K0HaKkGPG/WkICnNyO9IMpITthY9toib5dk+H72YmxPUXczxtmOWGQWaKyRzRq52h2rKQ/Tbdn6eJH1iNx7j2z82VxyqvxPmIg0Up65zv8mJ2jYN1inV5V9z15f7xG8NnhdU5fz6ofxgd0qc4hIsUSRivgT1sGViOeM8BYEinfdPNK61ywPmzSTK9a6mCPVL3nOqNs6bMj5I2Bzorv3oEqQoYvMoPv+6LDER2dz6N9DFzbh9GqCt+FlUCIGLcpysBtlJzxIR3SQshY7bG7oKFztQhSHV3TmvY6V9BIVsno8XbJkLIMNdQsxtg92Vb1q+LtTC8S33lnwc3rEFAhiDgE/x11gKXAM8uG9VHdUF9yna2WCKdwQtj3FtP9AcbxF8NYR47g6Ghrfu23U6BbJYbwnEQPw2qyuXyRpn1tzYrw0WajkVv9qnnPgCuWHcgDRxRbhB8IpjO1R/7LaiF+a7F3Q69Ck3jGI/Su/bfyLXiXJE5ptHxdjTO1SdjUU6RxjKM5kw== cscarbone@cscarbone-XPS-13-9380 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/config_example: -------------------------------------------------------------------------------- 1 | host mrs.felk.cvut.cz 2 | hostname mrs.felk.cvut.cz 3 | user git 4 | identityfile ~/.ssh/id_rsa_drone_login 5 | 6 | host github.com 7 | hostname github.com 8 | user git 9 | identityfile ~/.ssh/id_rsa 10 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/damian: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | 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 49 | -----END OPENSSH PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/damian.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDMCRNGXhR9U7U9lnr0c5ezRSkhBMiJlOHF1r04P3LpC23iXcfR4mgssk0NeWOoMfS7U8R7wC0esQ1WY97EEudw2baXcBXe8EyEX0QcD6xokQnwmSRB2AwB7xVfVRHS89Bk/BEDyNzdIVvqt9QeTK4dSICS/lvCLd+TeKRA4WjO5eUfuF952UAlPoFSsZYy97N5MFm2wwaotSy9423VuEGFXqndlYozzfmsa+1l9M9HFposHrmDCnz1oERmQdrPTsDSTW+kOHyH27yvhm2beVlZpWyeZ7Fx2CjvETt0i9ujp81c9uMw4A6YwIlwwSyhsm8uGmfTgklWAhFZMxeWr/SwF0zcLh+WWUsl4uuf7YDzlFIGmBgAiz8NWxMMYxeUmF+8G8q/+nUTkmFs3bBhGG1N3VmW/jGhLPohSLJTNG1v5FtGNkeJtUrofyeXt1/8wqtcfki1soj7JeDeOzpCG6ZAu9gZf+xCP4Q1biqBOTATCOJvJL0B6W6ss84w/rm+9Ev1ufEmsRleH4uajJ+pPVd+2FHPlkGhJYeoI6+fAltRX23G1w0fVhscMR9zfXYnMgDSB5qgJQe/fzt6lcGjZkNrlMGVlQGEsXJLNcKD8XKukLXBeuW4+yI/ynNURVY3p6V1DDdOllGao5wD8JHWvx3z04/Y97p922MxgruvTyVAjw== grvc@grvc-grvcPC 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/dan: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,D1B473EB3345DC0CC2EC57646E67C87B 4 | 5 | Ka8szAlvFf+/IKGjyaNKuHHrYboRBHMrDwCl+Hl4/tA+Kj5Pwd3q1zMVt/hWbIGZ 6 | 1LGdsnVMFBB5lMUim1Jarb4cN6je6W/dpmKdbAZY5xStyo7QD1iY6JDaKQAiRZZ6 7 | ggSendKtd6xznN8nT+Ie6efph60Jwe64nV0sTiUH/sTxwF5oHSB1TcBktrHTID1C 8 | 500xbeygThWBv9P6GXfBZtVK8wAOGOcW9yFSndG6OJ7G0YANmsutphR0ZpN68i+T 9 | 816EzE+LNcGcmz0JMiQVhhSOEwfZopi/Bbk7UThX5rwJmTVKjsh/tGPzLJCx4Ugz 10 | Xg3EaKe7GD1XIviQhaphAsOVdGsyqUeh/qBJQNYOe/rD6tnwj9d/Fg4JNxJp7ZpS 11 | aibS5LUyR0t7bNI/a8rY+4hgJhALInwJAenH1IrvambYbLLoSCo4DqcgwlSKNa9h 12 | H1o2b9l7I+pj0d/cYY02jrjpnMQHDol5FLR09TnSpc2VyIXOLMWWoHDgI+S/aBCM 13 | HiE0VNSM58krWO8Ekq1C9AU0/9HYDBPKTsQQDAdvVAwrf/2cPTkMgz9AZ7Aru0BP 14 | pGp6bFTfY/D1VwozctxcicHrzXyhOAlPdYwCieu4XmWdoti1eS9W6Y618Nm9ben7 15 | U/HjCbwAHOT57QmXr1PLxc6xx3p0m6Sdf74tYJaxXr/XQOpbr62e3WH1BN5on3mo 16 | bOnt67/a4aKiN+hI3xc+r6uPEAZ2ySVALEmtrN+YDGlW+r3x7wlFvGZNSiFzzgmW 17 | JOhKB/uNxYlX7pDphmaLfc6sATaAyD7DE/C85VdYws8b2ofnIVtKAc9w9sB8g/HH 18 | 9WvRzscC0dfMItmOTGSvQOzab9jg+I//fxmrTEzatHBXM7YUKmoe96YWBsxOrf3f 19 | 4pjaEWzJzBVZ2xU1wNfHW/GsOtkcMx0jEvQyuIpDDXvy5nolLoPwDP88BhjdPtVF 20 | ZNNEIfvVVsPUMm/Sk/l/J4XkSlDwNfww17UHnqN638wEksl8kaMAESPPJ55kbZBb 21 | 3RE8oeV7Ra5qAVzAO4hEDs0CYJoT7y5E4vd8nIWbei18B4Ay0C69FqJNy4c5Ot5m 22 | rZQ7xmhJU8OAY4ll++I69wvJ04Q4tibIqu3ZD2NbL8cAZgi49NFVIbDjwONRxz2i 23 | ANFfiAe1W3iqCCw8qyhM4Kyadx4UI1fCbQObm0keMgC18raDwcB0ZTxkTdIWnWDa 24 | +b9A1+7GjHJCWzmsNwqULIl8/4weyB7abb9Dt7c1Qtf1HbOI5U7TfAP58W6JwGln 25 | 5a1qLb/5wiAp6wvDaXZacMQtnJQkGv4BxO9yZJPSMWdpH40GG+r9LIEeSMGjTHVU 26 | cLv0SfUtJUfvS/E+AxxnyXU7UjNT0HCMRoDvKlZPaFUrxuC/CLdGnBBO3ZHlrJYd 27 | INHQLLx45NO67hxdbZfrG/+y+Eru6Vw462nu81mZPhx8nTztKk655pxfXGavtPXn 28 | 3sDSATVJFr97aXk1/jxoPkzAjYPXZtXbOa48F0hnVpBSM5BGQXgO2YuWX0IOzPkn 29 | OI/aJ5kcdXALlC31jCB4zyqQcWv50FKZY/tkyJqlG6iaczX9DvUTKB3fi9dz5j/w 30 | -----END RSA PRIVATE KEY----- 31 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/dan.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDE5v687lafA/k+ABzK5imtveSJa0cIfWYpapW2EUCBfoY+8xSJ/hZvNgWv6+xfJzv63WI2W3rBnsqIof4f1zwUhv9Irudecc0ooCyobUWafiUI3pZxNfiUhW+Yp8Tzs4t50JYHvaiIBQ7lO06lIEM7hseRT3jP2n9t7zIBiIyRbQXSiVkZJrvZDvYt/AhxASHvm3jpuyxI+C2//KOTBlKTi2JMevZymgI5dXg/UwG4gcWy1O+dVMRJPe/Sh9vEu/xpuer+IFFdPnjLeRhZOmRa4Ny65BeH7/ttwsuwcmjfVu5kxB5mgcWGsLCjUVXSa8EBCH4OSZfHDUWu94Z13s2/ hertdani@fel.cvut.cz 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/daniel.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDcsIYaXv2YzOJsZ6w7U9IbPNDXJASLgn38hUtURUhDx2fP28de4rW+1FFRy9dkum+NdlunYUjr95gpwfsHHtjl3iC1PU9V8zB4U/E9p8sc9FIKQCoRXvwaXXHHg5T6Qo/c+uykKsoZtf//PhPdTOn9dKz4u4vmJHSjGcYzk0A6kePoPaWayqd0jrPO5Oif2JeUfBX3XhmWiIuuAd2eE1wZ/2/GX147Bz3kpvaXQiHLMpvhkOO9WiNt2oU/HyWj5WAZBQp5m3T9hGdQTb+vRZyqGokCauXums8j5JCM5u+NdcmnsTlUYBQJBopogKR9if5OpPss6AlWl9Sf5v4yPIMhuCFuCKgXufiyWf09ovnGep3tcArxJ0FomgXx9XZOfl6vqXgdLwIjx4V+iX+Mu9IKfCUmjcVyWGBlaKQCeZXCgVdvgSw6Yx42DfPX9XVhKGJw9+rmUfUP5J1sr9Z2OdD6ht5exCHhMMe6/3lKRZohrAmUAjxIDSDQY8/ZH0DvNuQG10puO6TdUb2GTrs7LezXJh0ShpIDcxD8gRaL6vFWGpcfTTvMMXHfCga9VeQHHxQzyc52BuIa6bTqLU0cRNeVcMKwdRbhIGMwsssKf6vgn3ZIj1ONgRKofJClBmhhIDNsatK6mhGvfG2voPtGYB6GcqpGbMTA1uvUhe5Ge7x4bw== smrckda1@fel.cvut.cz 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/denys: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | 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 38 | 6p/NuiHBSUkTug9A8goVgVgFOw8= 39 | -----END OPENSSH PRIVATE KEY----- 40 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/denys.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqAI45oJhMnYqxcrixnIEUOV4slY8cuI3POMVZ0K2R+tphMmVvKQ4pif4HK8m3SKiHTW67i8qF/ue+3/LsCViyguASaIL5NGj8VPlSeOetYMVuHzNLWwdN843m5DhbErattzWteujVFyvMVEkfyqU3g20LGY1n1IM+HmRMOFVURUxQvjdTtOvdKbsbJncLx9vmGun8XdKZkGY5iIvtw9mTWGR0nOixIwIDfN8trQT6ilJ00Vd8Hk0N3Qnnp+ISWP1w3qznPmDdw3LTv0VybnWPNrgayTzgICGeByqjGNeW+mw7xFGa/o9j73DrWqgFT7Z0wUP1pz8MdJH1g+q6poqRPYTzUTm+psACVmUsX6LoTjJUi/CUpu+iucePnvfAhhZLAkR2KOn5iGjsQ8+du0WZydmIANHVaQB/GFDBfj6j0fpS8Nv2Ho+o0sVtyN2FDvBikoSU2onAH8U2fnKOqcDqVTxE2tOM/VOxp41MTTW/TrLdWyfx7A5t9rkU2/iG8NM= ddatsko010101@gmail.com 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/download_drone_ssh_key.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sudo apt-get -y install curl 4 | 5 | # location of the nas share is - https://nasmrs.felk.cvut.cz/index.php/apps/files/?dir=/shared/for_sharing/dotssh_drone&fileid=506475 6 | 7 | mkdir -p ~/.ssh/ 8 | cd ~/.ssh/ 9 | echo `pwd` 10 | 11 | function ask_yes_or_no() { 12 | read -p "$1 ([y]es or [N]o): " 13 | case $(echo $REPLY | tr '[A-Z]' '[a-z]') in 14 | y|yes|Y) echo "yes" ;; 15 | *) echo "no" ;; 16 | esac 17 | } 18 | 19 | echo -n Password for downloading drone keys: 20 | read -s szPassword 21 | response=$(curl -s --insecure -w "%{http_code}" -u WpSAIFfCqUds99l:$szPassword "https://nasmrs.felk.cvut.cz/public.php/webdav/id_rsa_drone_login" -o id_rsa_drone_login_tmp) 22 | 23 | if [ "$response" = "200" ]; then 24 | echo -e "\nid_rsa_drone_login downloaded successfuly" 25 | mv -f id_rsa_drone_login_tmp id_rsa_drone_login 26 | chmod 400 id_rsa_drone_login 27 | else 28 | echo -e "\ncan not download id_rsa_drone_login" 29 | rm -f id_rsa_drone_login_tmp 30 | fi 31 | 32 | response=$(curl -s --insecure -w "%{http_code}" -u WpSAIFfCqUds99l:$szPassword "https://nasmrs.felk.cvut.cz/public.php/webdav/id_rsa_drone_login.pub" -o id_rsa_drone_login.pub_tmp) 33 | if [ "$response" = "200" ]; then 34 | echo "id_rsa_drone_login.pub downloaded successfuly" 35 | mv -f id_rsa_drone_login.pub_tmp id_rsa_drone_login.pub 36 | chmod 400 id_rsa_drone_login.pub 37 | else 38 | echo "can not download id_rsa_drone_login.pub" 39 | rm -f id_rsa_drone_login.pub_tmp 40 | fi 41 | 42 | 43 | response=$(curl -s --insecure -w "%{http_code}" -u WpSAIFfCqUds99l:$szPassword "https://nasmrs.felk.cvut.cz/public.php/webdav/config" -o config_tmp) 44 | if [ "$response" = "200" ]; then 45 | echo "config downloaded successfuly" 46 | if [[ -f "config" ]]; then 47 | echo "config already exists" 48 | if [[ "yes" == $(ask_yes_or_no "Do you want to replace it?") ]];then 49 | mv -f config_tmp config 50 | chmod 644 config 51 | echo "replaced" 52 | else 53 | rm -f config_tmp 54 | echo "skipped" 55 | fi 56 | else 57 | mv -f config_tmp config 58 | chmod 644 config 59 | fi 60 | else 61 | echo "can not download config" 62 | rm -f config_tmp 63 | fi 64 | 65 | 66 | response=$(curl -s --insecure -w "%{http_code}" -u WpSAIFfCqUds99l:$szPassword "https://nasmrs.felk.cvut.cz/public.php/webdav/authorized_keys" -o authorized_keys_tmp) 67 | if [ "$response" = "200" ]; then 68 | echo "authorized_keys downloaded successfuly" 69 | if [[ -f "authorized_keys" ]]; then 70 | echo "authorized_keys already exists" 71 | if [[ "yes" == $(ask_yes_or_no "Do you want to replace it?") ]];then 72 | mv -f authorized_keys_tmp authorized_keys 73 | chmod 644 authorized_keys 74 | echo "replaced" 75 | else 76 | rm -f authorized_keys_tmp 77 | echo "skipped" 78 | fi 79 | else 80 | mv -f authorized_keys_tmp authorized_keys 81 | chmod 644 authorized_keys 82 | fi 83 | else 84 | echo "can not download authorized_keys" 85 | rm -f authorized_keys_tmp 86 | fi 87 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/filip: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABD5Z0SvfJ 3 | IH44ykd4gOrHdUAAAAEAAAAAEAAAEXAAAAB3NzaC1yc2EAAAADAQABAAABAQDNOW4Lt5Uu 4 | 8IG0tHFBhHnbIE6i2e+d7SB1debVpO22dclzc/TPLjYgoyLhOyFwhWIQy4h3O16iAen3Uh 5 | DF6m4JjygkXXEv493ZXrOIgXpmZtBEdmN3kOpadCbFVzkPhMbVjLcgfQ4tNB8Yy7S7wFxl 6 | 9MfzezsbGqujS0M0/sEPk6+XRgocqLEdCXtZL0l02wGGmaOOVwbZwc84YNaJBeScidMEit 7 | NdWA1hlXKUipHeqXURj0nGrEHKSgasnbmfhGD8+PXASRd18LuD1ESsXuYaq07XAaU6fMZ6 8 | 6Gi+VRpib0w1BWG4bHu2PpHsFHJD9bzJvyowk8VxGJsnZqGGuUu5AAAD0HkY61O3K0v6at 9 | +CW4UKc2JyX2vfMnL+UEzz4LAbI5honQf6wN7uzrZoWDIuUneYdpIyKg4v7E5yx8xgGYNC 10 | EUgRqv6QbQ8kHfxg6tWozGhabXTzDAmmxN1OYa5kq0tidFGsP/aJneiA0B6tZVvdt3hBew 11 | D+ApK8C4TXj2Cw+yk5btPXyRMCnoEAa5+ZBFMpGIWcOB1hkeW8LSP7oQAYNUm5+PUjPBED 12 | 0ouCxrA1glC9pEBFWIIKrDDpbI+1jSqbtlwPkNy/VarudvN7fSj2bhQ0kbtCd1oWD817pW 13 | D3HwVkh+e5Vyz7ulQQKj0iewO1Us7ke+g7I1R6vez+IqWtT6E1/bns0gqIgTgMXZG0HJc9 14 | kQzld1EbO4wbXxJ27loY57BorDg7S68WNPCowYwHojKPWVj3PMoeKnlvN/phrW6MMRsVmJ 15 | +CvECbEmbiJcdlGsEgP3iFYZpjXM9QCgDhZtYLKDFLq1VRwC8XWAN1VhanzYxGLX6jTnJH 16 | ieR3syi7nhZH4aYc47IS+grkXdgG20FFfWNGEHonskRhWjvHdMVVku8HdsocujPP6f2/66 17 | of/xAHcKa7nHkdyg9i7w2F0tNsWYoHAOUyKyJtXZuD8muQlAKLzHnyouHZ2kvbea758lBY 18 | oFUiTUjpOqd6+5+DGL3gnZRNYeElio08HYsf4yQJDU14NBqXoxJP6sGTqb0F7KZS/fN2wc 19 | oqBTz9QJ3yiQzK/ye3VM7nvboyctmgoJxqjjFj7GsPiINuERHMM0l0YRLWzFUxKCsXno1X 20 | 8co+6ZKFvNd4r+q2smnuWHHjiOfXZJgqOa4Sjjl2zs1ohjo6iWqUT4i2mR+G/AoyCja2Bw 21 | aoC1SLmB6qhsCanaJsqUayGKn3ZRtR9B8pqlVeXzh3it7yflyyxKX8uF1k7r4oZEhpmNbq 22 | 8eW7pyonbLPFDUq2FAnNF1cVvyazL+rUpXdaypOhhFakrZpIFXPd70OjmEI1vMDDo63U5/ 23 | 7ci0qjkQ/laIyTk3jKas0GStvH0gkqx2CXwjUE3qxSA/HAtfme2kx2ncj1gV+zTFafsgH6 24 | zd9D/ZE+eVT0Gr+o/tMatPb2bh9EEFKZ7RXFNi2xq3ZrAIpm58Z6OLX7+BtHuo9LqDXyf8 25 | IbG9Autz2XFZAKUywH386Kue0jhzMXqF5c0XQmUWZOPv4/tew/hHtskMnm8pDekPgKjr+X 26 | cVeKditSXbBWrhqPdiIuP6lzS3blUAbOiKOz75duHNBmZ+LLdDNvK5p3XOKDgJzzKdon6D 27 | lxBSWzmElGGES+mOG7hEWrbsxVNdE= 28 | -----END OPENSSH PRIVATE KEY----- 29 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/filip.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNOW4Lt5Uu8IG0tHFBhHnbIE6i2e+d7SB1debVpO22dclzc/TPLjYgoyLhOyFwhWIQy4h3O16iAen3UhDF6m4JjygkXXEv493ZXrOIgXpmZtBEdmN3kOpadCbFVzkPhMbVjLcgfQ4tNB8Yy7S7wFxl9MfzezsbGqujS0M0/sEPk6+XRgocqLEdCXtZL0l02wGGmaOOVwbZwc84YNaJBeScidMEitNdWA1hlXKUipHeqXURj0nGrEHKSgasnbmfhGD8+PXASRd18LuD1ESsXuYaq07XAaU6fMZ66Gi+VRpib0w1BWG4bHu2PpHsFHJD9bzJvyowk8VxGJsnZqGGuUu5 novakfi8@fel.cvut.cz 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/franta: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABBBJPUKzH 3 | wLa+dW3E0fA83YAAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIIi9Q3tgVfpNcB2V 4 | lifg/UiCAGARuKvOxGn5QCwNRebgAAAAoNY+wNM/Rh6wmRjYl7PMN1inYGPrgYnI9BDDAJ 5 | G37e1Q1X08It6hvF5+2qfLIVAfhaO6EonNzcOgJhYETWB3u/CdxhtxZSNMZ19Br2dKISm6 6 | rwmaP3b3pjIwTsidK+BK9UVzPUrJONz8MMKzgnuivEk4dyKe3T0mQpcid0GNz0bN3FJTZH 7 | 3S6Oze4O2QZvN0eeeTVjjDjcue5SJQDWneINE= 8 | -----END OPENSSH PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/franta.pub: -------------------------------------------------------------------------------- 1 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIi9Q3tgVfpNcB2Vlifg/UiCAGARuKvOxGn5QCwNRebg fnekovar@gmail.com 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/git_usernames: -------------------------------------------------------------------------------- 1 | key username 2 | vit Vit Kratky 3 | pavel Pavel Petracek 4 | matej Matej Petrlik 5 | tomas Tomas Baca 6 | dan Dan Hert 7 | jiri Jiri Horyna 8 | filip Filip Novak 9 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/giuseppe.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCwYe4riO9OMUVRNggxPYmp2m6Hij2GbTU4mTGUsqO7KDrimfUGVBnnzmzXajuUEBUnX8WFRxmslhFvESZu9ansOSyAHM1LV60X7TeS3mnEZ7rggzIGsy43GCZ6EsHIf7Pg7j7IuTbOJ6m6a869rHPDVw7ce29XpnQ6OEnGJc3WnZsYO7iX05wyfYBPjstCphWOb6v8qPcuchbjA+ffbcRzA1dSir8QMVOmiZtVwpkNd0P/q2x21p+2sHpRItTFa1AS8G7TPudAouC9xxzxdcMSFE9uC930hMT+k/a+0Nz1us5cOlb1ORWLoZn3kSYcefCPY2tPTsDMWJCoAL2rzfyOyVQ4Ldsl7lbKlO139CIS4uIp/UKY/+/gjQsYmcT+E8/H+lbeDSEOPsjJ1DcuFO+dTnSErpl4r3peAPaMsJAjiPrZpcw5pzLvcglk13L9AF+t+CQltfufq3TzTvVzd4/N8sixoUP/YbuTu6vYBGZBTtXQIc7BV4M+7J584SVPMOaMs4PlhAOfA+aJExUrs95TeCMpIXhX60CbAhNRRKGOPxYZo/pS1KVtHNiGU+xvZprqmaQMh28OrtIfPFqLMyyzTBsw1X0JuPR6dtGeIX3937s47dn9TfMYKYBfukg9NDF5zg+aqadXsnedDkBkpfulwTM8rSdV+BGScNqgT4knrw== g.silano89@gmail.com 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/honza: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,8E0B7761D834949E810B373E8D25E74B 4 | 5 | HOx3gxcJmglGhUndY4gWfqe1VM0elr1R2mWAlM38RxQx1ZSN0V7ksyUYOR6OWmKB 6 | cX3HF/cm+uQrEJrUTcToBLbLrFzl0tLcPYXuWYw+7CRpxBhY++87nYorkTGSladf 7 | XqQ9xcjVjgdoPX1JAaAsS2T36wnPZbHqndCYacUniN+j8Fk73h0pic9cWeZ2EyxX 8 | BR7jANNGfZgz6fjanymx6T/kXHcI6FPON+5xAkddLNAB4q2KFq1atwzrnDd/87Js 9 | DINtnPhojZO6AclqLa//vRRdLtmMS/trwG2QMiH9ZOz3lBuS7U6e52baZh67tTYO 10 | p/SlkNrifpgkLvHmjc81sy1BXenkeu7Q3UP8IRE2QddpSHxgJGx2EGvKH4+CleVZ 11 | 1awKtayeQpaZZTDbiYqNVJT1fWBp3TbvCEX6vjheomNlfrZHSfJ79tU9hTxNia1F 12 | DrkmTKXsjLnNnXn/X9pQT/dPKn+l00BmuVQ3RvmwGta67tHfXrJL/jl7Xo1skARS 13 | 76h9rtgxO9DYJs5/9o+xkXTuFmMLzr3s9deAyvjwfapZ1Ahjj/dXC2aQDC8ErqP4 14 | SiJC0rkSEA6otnJesWdbc80iRj4UsPVgY1qb8A5mqAm3Y2f4BIRH/2rPZhrCdKh6 15 | 1shK4LhiAX/seJxTlRRba86iLPajVk7iXJNvIYcJ2PTthpGI7E3OcqBNBiNqMst+ 16 | EnhhpCwnF2ZJHmK+7A8SQ7/n3czeId/+21Y6jb0h4BgPY1MGVYzm/O7qFQ5UnlNr 17 | 1Xf8E4MpgAVkx/vxqitR5EXi0lqPih6PCq4dXl8IPZBIvgG9kU8iwUKNk35NhtUS 18 | t/gSl19ds68v3dGkTWDP4PyR19ZR/O/N05cqZjE1Gmg5TLn61gTTtRSBFXgpyb74 19 | hP6QKewhcd+Q4MYn+t4gUeUEDSkxomERjilm/hO1BnDcKq2vGBqGPnILr4N9AvDm 20 | jnrC8iudDsAaZZp7Lerrx3KJMFmGIBu+cnxPosmPtfu2GrfaJBAbmeGQmZLGOrkc 21 | JY92ye0tkDf2e9Fdevh065gEzM3kIccLMdB3Hn7nP6df2NzfWnKhh8pOvRSbPQxM 22 | PYmQaktPPPR50u+JihfLU0Os6W57Mal0BopiElTlgszaa2KKD9CS0VKyYFfwbxly 23 | A1wwDKR/Y9NWWa5D7N2wHXDcdjsqpnBt530ASYNb0/MiIgfgfZ6dHN5XZ8c2h6Rs 24 | C96eMxKM9yYlgO6WRHFHyr0sEm6WAOE3HU/HNaQ7nJJXYanLbnyC1HkbzKPpQCiW 25 | OXryMknIMMCnieaBZUwFBWL1UHC82MtkB2F5s+EcBSNpRRzSwcExrbXbr/pgCg3/ 26 | C8BXg6uvXMKEoamRRVKQ9gWZ3mN8kasGPLTFe7pYfzCRB2ynFWYelqU0GMWuxLmp 27 | gAd9EAnkDEDOVkGgZUYiMM+ID9OaGEj5eSNoczOxVS+W+vOtajEFAYfIKJ0wq8WY 28 | 0Ac6pv9+LzuXKoEG2Zy5q1c3EyM/LHnrtCPr1/wPFCpxosXpl2hrrtTdCBygGu46 29 | obLRI1JLH+LCsM0oiWciLc+emvxhyVO5SCHngmbJIlx1U+acxWSNJooQnCoBsQ5z 30 | Q6UUvQAavwV66rnf+GlddBKIPeRLDAKyO8jBFEjdL0yuc2Z0q9e0HF5IEPbgJPs/ 31 | IjPdcli4WdoqS4KX1/rnV3aiKOzXhOsuAyPRiCC9vqbREO3kQvrsky5PScHjZX2E 32 | /VssWaYeM/Gbw4xzmh3N/VAm08an0VHLqfBs/Wj0WATaP9Z5gJq05LMOvQVd1GqI 33 | rRKX/75D2Kx4jFZ4OSaxgszxO1L46AMV8JnlgUY3+JyjxF95Qp0hhaN/f8wrvoqM 34 | hP0C1KsvALtGf9Awwxwq+XKKBhY4ZsjM9nFv01WaMg3O6YD9IxnSMT8u+ZymGVEY 35 | OxzMetFmA+aru9uzkJRoiYlIbES8N+3+FUlJDGrrbMfkQsEpk090BXTOGHUzN16x 36 | LfM+9RM6E0YYQcoD8NAloGbXckE9FE2gAKw6U9B4PBqR6+tAXbqVZN+nZ1IEcYfH 37 | o0ZYgJ+l/zRaxcSYcpBQciLxcTuuG3sKMuQ2XY03RfR604VJGAPBwcbKldE5B+TA 38 | mZJYcP6a5rguahYwoz6+r1ZdrMv4QbPPnhWOzyAI9mIkQVL9J18hEPH5VSBMwwRm 39 | mROPbO+mgPBXA/dp2LuqXOOl2KnGljWHRNy4sCBUXYsEYEgpY6FDhWw14758QFbm 40 | 02T6HZP+CKORlF7pB+kaO/QpAoYTWf9Runp7hICDnfe5LGnN+KTK/xRrk8kBcGKU 41 | /RSrsd2ISLj24dhIAHKuBAs1R+a95KoPtSQcT6WAu6iN6zRf15ycDw6LGEruCc/O 42 | 2YGx8c/vqss9Y2s593WhGJVKE65+pW8JPMh9yTHcz+3rNCcQED4huQYDCU8YxW6T 43 | kTQiuAvmD+geCWAKnkL2kUsTl7Joyf/DnNDgP3RMofbRxpwu7ey+LNth7THAs4kl 44 | Jdb3zcpZJSOscozUVQy9UT8Revfhc/JtXXYEj8UtJqqO6eizDTU1QjdivxUJhsO6 45 | Ro+zT4uEjOqcWIaoikG28syLvzieXB/sTGH9Z6vPPu0/QwQ/DXlIjoFc25D3omW4 46 | o2NkCgo1iov9DBb88QS2/EeF2VWnlmJO8zfjUPLhcdkJT92W1SWDYvxgjj7Qi+wM 47 | Z38hgDjgIafwyDMb3db/ffQUZ2gyKpb+1JHV1CMuLSFpOtssfjheATIOWe2NkPSa 48 | j44dRGMtdQ2BTu3moC1HNXzZeC6qVgRD5olJrJdvXuumiglyEC0/cb+pVqT4R8t2 49 | bYjsLe1xswZh+aUe1DJh94YD84nDXk/zGQdGSKmgo0kdmv9e8yHQjugUZb0NHDsE 50 | VVc4CX1vByp5f4IFxEiyIHTbFuSiDFP8sTzjUwo/Nq0MqDpuiVl/Jl/ZufJvhNWx 51 | lpJ2JJE8MCctGvu4JheJBih9ny87nchcqTaS9N9auMu+MC8bGo+HfRN2KONH6plJ 52 | b1j4WH7C/uWlHVNiqUUWaOT66GF7+wA2bNl8u+terxhvFcDk1lfziiOZ0yQUub1x 53 | SGJZ3YsIcmij/r2TMBlnL77ZN+2IhR9vyVgfgg47jfNjYmTLkAi5VGTkc4BJUF5h 54 | -----END RSA PRIVATE KEY----- 55 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/honza.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDqiL3fGxG2ZZAkRd4fAUMh4eGKUBKlVky1G93p6SVbbmx2FXyJlNxFuJpuTnOMF4pOrUEuTdVXeOWwwqYxYXL6snnWrkwOkw62Cf6uPy9vBBJBZ96WwCvoCzmv7su1dTRyuNNSiyX+uUIqmwkKqHMxKKLGRpzBEu9ucFeru5lgLqiFo0/lxi/w8OsxO3o6zgTpf4r3B6GS56LbDGsjnLu+D2NfPJrh/YapRNk9rR5SywUbFcNlSzv/VSDy4mqW+bEENhkiEdLcb6Dxe9FMuSVOV80JJ1CMk2RWS6QxkN99TOwM5EqzDnVheg+26/pH6p076IdrpnIDg2CdR3yo1/LtxTWKmL25OXBRxEuO4fKwJwRMLAQ6g9hyT10h9QQId3nRIud3cPnCy37S7q8jjNcXoHNjAv/C0FHsraAMBVzCnUFv59T8QcMDIE7YZEzTk7oBOA6ZEf3mbetX9bCe3rmEls3bqW9GUTr91iszyDhC3F/C90UR1WNjy9PcrgSPCbwPtMfxOZMfvJfAQuUqlU0Oyzm39se5c7rUNYc+bNxmo96b6WlIgKjMTXv/YYcQvJc43BAxsO/MVJEMogHg8QifKV0FlRceEn9495FxqqHK3O0ACTIomCDnPKTVfQZekY7ZfSK5WLvAJ261DdoXTvoCiVhJsw5Q2awKvMWHjG3+Vw== bednaj14@fel.cvut.cz 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/jiri: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | 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 39 | -----END OPENSSH PRIVATE KEY----- 40 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/jiri.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCUi/5oibjMn3ljoQqLWkyFiqWDE5cTZANNOL+Pe1lI21+Fc6oCUk0XA9zcT/7CHAE0dD4ETJaPOQ4r5TYCevRmJgV+xFLSOU65LUVFtuiun+INigzGHECev+w41NBhoS6ZH6WAiRkUDEHCYH3mjwwEX+oFDn8F39JDid8Op+rMn2AJJJjzcuOjrBEwxbQupUYGCcTTY8zro0OANUXBIuMhxVkJ/1z/R/Omt0MaufAtVYMcv0e0u3WY9NCNeBxBooqF5smG0ebJilwOBhtgW8rECo3eA9BgBylh/y6pBp/Q9eenQAxX9DDyaWSwd0uZZs5f2iXxHaofZB5ZpC9yeyuEZFAYQQuokxcEwCm4kLkK4sm7PV4I4P0tRSskTB4BVfIiTnvjZPZ3zKRNe8BM5XQWeV4UeHW2nX2X4Oh1kl7t9pk6itG6NIzzWZkOttRCMbOi1T0t5744ugOy1PJ+QY1005+He7GXAP4nK3fQz6EFPXAzR2b4UOgPD06AzZ/VexE= horynjir@horynjir-ThinkPad-T14s-Gen-1 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/matej.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCbNq3BtAAI/Xao3DJhRQ9rncRNjafPwcp/XqDkUVSSwvDQlOI444mAhsMU6tbkYc04UmpEGlX1MAntocGabfnFoGF+e62DjAEN9/FIkswAXGctVh4xoDWGlrD9IkyIkgsG6z70nGaNldCh1jOohmdtDVjic00C/QfMooKd8tJO+zEht+6zqeZpNTaE5dmFTpYd6YQhl19DBXRSaricgwL+kERHDIzQEsBFQXxj9fXRFwD0n3smV6tXCscydg5hUAudUFXtBwGPapVbr+jkGWETgYPSu/gX3BbJQ3WiwL52eesi16dtkHeVSLpUoH7IQSyZ88Z0j6KhKNDlYHNN1gH0yoMjCj01tRpEH8vGYDTvxrVwKO+l4Ga432rDA3mz/7xiiIILQ+aUWTcmz4sqt6ehFfydj3S546zSQUuE8uzCL9CYBRoiE2mq5oT0vs3tkGfNeA456qLwZxUtSZVQhaq+HeZJ+VeB9NYE8cygUEs1NZ0mKx1wm/YE9xZ/YkpmlWEdnVXwyGAHvkpsEsLIhhO9MnJBZ0UQf8tlIOMucBK21q8zH002My2KbYS5dCsn2YyQnW+KE6o5iiYDKVHscXS22XUkua7Qp4nws0MsBthzUQlsNYi+1RAAfuW1UCUs9vvGVQtZ0W542KnX7HwuUqDZ3V/q5uhKUKLDhYiLQofjRw== petrlmat@fel.cvut.cz 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/matous: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,C800FA71AD8499D217A81C1FE9F242D2 4 | 5 | hGft24XYTDPVoeM0kl2FdR1e6FWLEvCxtGCZkKjMeL6aZTrD4uJ5LnA0NR3gk5ko 6 | S3x1Q4TNrPvAJK3P7r6eaMsyFVeFXFa4qzlKD6xqJstJJzm9hpzRJ3kVVG/3CzX7 7 | W4G1FpoG6f+0LgqnHwYCf6hg3UdQeMWUfPC8O38HC0yePhPo7U/tOUayqpJUGC2/ 8 | azqgqvzhGJthnSL4bkgpcqbZrj68FVO2KT9xwiprmrzZOYrXspgBiaz5Prvp4DgK 9 | vXasqzRO1O6rFsCyDRnI5QBkUV5AilOHCuIy5Kp5N4vBEdZ0lb6BBZp6xEuBm6U5 10 | crU3vpZwdsGvJ3CnM2oQTtEtfE5x+TO1w83QFc+IthR+ihw11ZaMGfVItYVaVajT 11 | lqMV7WxkoIlxbzGqR3W5pi4Q5pqtQCHj8YMbj+1oGEX5gXKxl+z8VJiXbJAikLUv 12 | 8MCNz0X4/XATErRPWX/pGs8F0CPJ8w0JtCACBZGrv8o1GWd76JTLk8cx/uVG5+DP 13 | fcuquWIDzFipmv7UhrB8NLZBL+10kyOp2+xkVkwE4Z7fKgcLCKHdHLje5xji9jSM 14 | ZNVvCBPxIKPQ6UIPQhtirhL4NmAUS9HalueeNUw+6UjCVcpb6QHZIXEyUwMxqcVc 15 | k7dxWRFSgvzRhK29NAp3DB6vMtnWzlc73WoFZOiEuKrPGX2nckRPMaV0C/tOZyXh 16 | dchG+VTH1DKd1YEyLKmW4cEsBMwHtG69R/M6CCSovwE0F/snkrO+tX8FGWFbJBXV 17 | uJLXlFgfLnmrAOELuTkaK1LeUKYNrXyNiUMTx+ZWD8JxKPxMn+WoQJysM3QOvgqh 18 | Rc0bA7D+sqIFanq2qxHUMAdiOa6Lgv7gEF6ZKK6iHuUfgMEJzJJCgwfRQwAT5SCy 19 | DU/4RipEFLhJjtlIzB8iz/QgcRnuLQ8xEW9h4utFjIojADAMVViF6Bd4VE1tkgKm 20 | kIlsERnygV/tfjalqT9bOZ3KfwkRy8AQVG2ERr282WrkrauVHHRFeh2tBAIG9UIy 21 | NPG9S/lXTDT36v7H77UiWw5na4Ym0RX3SMFf1Vr0yNtSFBGq3+lz5HNY61L/SAmR 22 | F5yxnPMg9n4UrXb/IEn/LWWdHzXa6oVbmINtPgZ0aYkq+2Kzl4BE9uuEFdf5C/so 23 | nbWWZNVbtH0n5LJ8bEOeldjavwuBy3NNM30DDxdcfhrVfOtLO4/m5JwI2W0B+HX0 24 | rVrR1NAROd1uDFnKXGp3/wGwZ3i+vbIJz0xM1Yas+g/kTO8QO9fJswOVC1kz5x9y 25 | PTpE1p5e48J1uD9COONx4pwjFgEpSFcAl0HqDxUrx5B0kPPXnkCkGUGpaOBqIiqV 26 | yP0PZUA+aCeQpLvuWkfZ1mJnBwKKCTclVK0H0A7d8EF4HrnB/4vUo4yNA5TYVELH 27 | lyvaZvlcXKvtZdNlP6Ybu47bBMxp1M1wX1oOBlNccAB2slVJJLFpTAWwNCy66U+c 28 | YhytxMIbHDXZc9QYtsLAiFt+kNCMW+w83p+BMc3CJCCq0hva6vCsKERHng7sGACO 29 | KTAz24KyLHq4J18TG2qB8o2Fbgal+tY9/W6DNI84zp9WwIAofTlgpw4c9Y/oSKz5 30 | -----END RSA PRIVATE KEY----- 31 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/matous.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChxj9jn31FiJ4PzMTKQ4MBEYFAfKWRs0GzPU98Wq/iItSEGEhLn3w2/oKh4VmUAKyDrcTevdKztRXyWQpiPD49Xei/KDDhj5AJRwicf622i/UohvZ29PDt37ZJGWFDMOlTMXe+CwpyYhfRr0bqnSAT/3MIl5HMeZmBrZXU5D+KEpeGXIyVcGSz6+xrowlws76ofVkEpRGOa42bswAhZ1E/W96Ti5piiGgSmw2bTP1Mojb+d01aUvrnDaUMhIXOEJTbnCKAMMF8mcrLZZwOWelVeA28JCjOqTR6aGfsGy6wAFWSM/8n/Y3NSfraDgZNSFMAtUaBzjECkCYe4nV9mGIn vrbamato@fel.cvut.cz 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/parakh: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | 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 38 | sczD6q8rtSkm24up561s0/IkFLI= 39 | -----END OPENSSH PRIVATE KEY----- 40 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/parakh.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDL0oR/Z92+bEKF5y40C9cI/iFpK8A/jlmey6005IvpQyo76pF3ZKpzg/fqs02y65a4AtkpTx/KMmZyhCWZTbeR7qIu4iCLjWlwHD0BabF/+pA9V0JlWozFb+kLMgV2O4PpN0iAh2FS+jysOp7Grek16R6CN9wyaAIOEK1AQidxjSjf/u3OiYr3713qG/zGYeSK648L7ZJQ31wjAPvk4SYMxqGzlkffAGNO6MKeF2Kttw9kNCi/ULQ+Uhezjw+29OBfVIs4i+Y5jDAOfgL/VUIc0FPiIXVw5u1npczF45L3kg+3GZLvGYHjPK8vyyo3Jqt7qx8V1+9GaPfZQ0eD/fImBTQO9/x8z9cFb089uab0QIynA/xIvyNrwGHbTJEHs07GPsGtu+AauGTlvi25pY6Bkk9ACP3vaoyoInXXi3jxofRQ3jm9bDefsUKQ4ztMh7+uZ7S+N0chkO+4j+DdE7DcC2nhF0U7cCdrwRHa/q8MCoICM482mO97H1SQQGY7mCk= pmg@pmg-XPS-15-9500 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/pavel: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,5022CBEDD39DFA2CDB26BE124BBF2077 4 | 5 | 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 54 | -----END RSA PRIVATE KEY----- 55 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/pavel.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1BwT77S7USENPwhXFCccYPPmqiUd1jFlN7AyOn1fhGwi9vc1nimD6NeVBr4N13T9BWxN7zmjwOUdbNHB1bqmwVRDb26fQeifZ+rfqbB16fxVuwhZuwrZBr1fTfqWT8mflmBMta7uiPqI14jihkE7UIq9H+26sWzmQiAMSf8MQ7LvHtsQJ7msvRX1Dri3SZUQLKN7bPX5xItx4imLMndwIBAfYlcFg3GNgHXMZTTYsVNcR6JYxmgesbfCv3YVQ7R/fiuTV+2/ty/bxgiwLJCPKXA71N9zXRg8bH5Abg2DVb/8uFiMx1HuS8ado3B/2Hu1dyGDTeEclUgqdR4fo3eJr/+ng2DHJqRcoTOOZ16aCQqEO10zNdKDwvnmIcZYfFw8fY0nSMaLY8ClvV68dmSKLDNZzsuECIc37fYTG+qZ1BcRxEJmqpuTjTg2AjIVK6n2WLqMtpXWKidPwPIBnA9NHkV67RnFwz43aSu8MJ6YvDjwXTOqnKKHN+QCfZiae6msf4DPkWjOnh65AnppoHmYb1iOdBb6YCZZDGaahEk0x2NBbBDDvhJIdBzRZ7DCEwvl7beEJwOxdAsQrrqDnHx2JOWseQbzqkjrpg2djKPD8HWbiX5WKyiJmOLu4cNVkc96JQYuoYhJNuFWToeCj3hLBbzUTTA7500W/QCgswqL7UQ== petrapa6@fel.cvut.cz 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/petr: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,13024DBD051A688422ECD96609C431E8 4 | 5 | lgKxBhURBKYj4jKWfIDKk+OE9+6diMH6ussCM/YgGnplW3NqnAvbEp+wNx7GzA0z 6 | I1xOuT7zCToaY9EwTpqo6W1Y8p92nSKotSMwpEJce9n4YV8zo16Jsks34XkN8R6a 7 | ggSCsbh+hpSt/xOuSlsAJZRmKdcCUBHf4MDZublG3QbEfUrHwFVv1psLIM2lMc1e 8 | b3/X/vGW5OFvWw47x+Jj7ci1eViQ92r3PTnSxybTO/CCVQIhRxlMNkS50gXh2yHG 9 | GzF+cDyX9MZDKLzhwxNGiy/kGiNfRGPU/qgJrqQc+u0nh++mdDFJY6mMNrajfG5i 10 | wqepJ0+ZyqrdCAQ4Q9n0USC314KJp6HnF0SPJLiCdYcjRAyjlVoNn//m2vjLHDI1 11 | 6tK6W+DWOB5H1qK76Au1qX1cmjjOzS3Tdg2ZVAGwZJhPFZiN5/kHPhQsLIHa3D/v 12 | LhB41h6NVOGLxNwrZhyjA5ZBXZgPOizkKAv0zgXPphTQh6htUAXbcsUmjz1g5nwF 13 | sqbdW58ET537fLk0Qz+ZJCHy2GX47DE8bZlzbzHbngYaPsNsnl0+MZ8Mwp/tBSZT 14 | nYQVoY543QXTfg90z7wC9/uXYnnUo9rzt9+4Zlz3O/kC/B+Di+Vt9cj3QO70KypD 15 | q0Km8wSiRxl8IFywUVPqgEhLDyFa1PfZazUThQV4ownqeZ16XxpWpZVIfxKY1pim 16 | EDWQb//xDruKhixbC7TYIvuYcCgrxoZDodaFdBZlGyJD+IZ+DTzBlp5MC5ZESR5D 17 | lsTgCHUbOL4/zson2xEUiIhJYCkL+6odaPD2OXWKfxPyT3U+IW9VpQSWn7rDvxRl 18 | FaidkSYRzB4riPtz5mF0xlrFG1md1acpgDRDixefcNS8XVdOjYRMep7nh8n53dnT 19 | dNMTlqfbRZTlhOIGkEBQI9TKckMF//RMvg1Ylpf55afp8LvvMy2gpVsvDi1TYxgN 20 | sk5xsZUF6W+sN0jWJMAs08GslqM4Oi82hWoZwe4xpe4U5kygjt49xt6sINELZ+ol 21 | lDR+Q11xoKWJBR0RW/Q4Bge4u4judeSB4LGMcDe3NSSPkqekWfMUkyJjH5RNHkwO 22 | tCOQd0DzvRpm3M4ieo7NJjI3Y4FsxuzOPsIQwh50K2XRW9ybk6BMJU7wWYh6/CGb 23 | S7MPowzAeLg7nQGtACWouWmabZh5u6lTkwV+hqc8s6O4NSCe3DlVA8Sn8GV+Vsxz 24 | spZ+hO6Gj6GPN87OE+uSqwARD4WcfThkYncZmB1fWI7XDJ8NzlOwPisgnpbihmTF 25 | BPlWCjFSQM8RCMhGirfZZ8/j5qPnj1rNN79Gy7RtsfoUTAqRwOpdcfDY3SDg7ngK 26 | 8X4+9seJyzwdrMqH5Q7VrwUBhlCgPZ6QRz6xZczMksgzV07jKZTdxQrD7xdAKSpE 27 | T6kvk5DfdQpifKPsujVWugKOS2YWZUkkruz4e6DfSt4ExC51al1vvmlerVbTO2Dq 28 | st6fhd4BzCGTAi8esEWYW4zxRRJDahCRaye6aFukhwUKVgdM2xyP113aHZ+K4adi 29 | qv8HfCNQhPm/zjdrM8u16Xy9Ck6fabGXxDspBU9lKkYVYKaZa3h8LsOXhoK7DBtX 30 | -----END RSA PRIVATE KEY----- 31 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/petr.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6fyZCfap8s4vxwo0JUX8gsOuqTxgv0MnWfVPvSc9za+zkkKPIeKXR6CQTe3YuNFdcNhutFasr58GqqYLAfEgQwaarqq+J+Iv4hYRe8qDgxSnXpA6Npti4qC7/Qy/ZJSazd323wYHbb7KX2JD8VqLXA5tORypqjyLOG9/PQXnl0tL6a4w25qCu3cvW9EUKvhQ9cblbfXbSyijzTVtDlKaM5hPoBDUKMM+YgUffqZRlPJrQHmWzG7MrGjl99WCmSMdjGWCdXcrS4GO3N+gIj3c1/+/Ig1KWAoPVrV/dLe0hjM/gdSYhP/eO2dkpy6d3jjaUv1t3s97vZVlwgVnjP/ur mrs@uav64 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/robert.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3IonTPcZk2gr2fM9cHp3d8zytAclcZEGtYoB+QThbqm0mf9ktFn7TcowOFhbJRJCM6ZhUdtehUMV4DBzVfAe2RU8VlaXg9obdXJZU5kewiaSJWzgOzaJadu1VvxP0YB+AG8WL1ccrG7JYyCwe9JprHSrKEqZAaFwySIxzGghxEw4rLUwAhV4HKk3KRfU42ji8Gnch/xtkYubcpe0WGm2pqqToAHrMvGgQtxpR9sF9p+MCCbyf6noF+QqGip57O0r6a5fZ90dypOXn51HQFlNflnMCWgUErxRQb44muCx/Y6mJGQZd+WUkhIHMR+b3oj0hcB68St/+wkPjZWvSdMG+G7KrtiShCroo6F7swvWI1ocAPt6noGwFg4xjqdq7u7A3nVAsBHthCUy/c+lIkxs2WzFP74gb1GEDsP/unnJlsqNuACte0jQuFml14AhhN12laMzOdrKC0hhoolvQyGstVb02wej2+TymDB+5YvRfy+Ngjx2hGirpg9g/R7DNu6Yq/XYZQFfrijerQw6hlpkaP0bm/zBXBHxQYedZL0lUJX4gzQ7L6aWLAW79IjjQJt/GAqhaOoNrRvjEGZ5Gi1W6T6izvlWgvLnmszOjcQYyJAol8KMB9DJpmpOpx2RW59eQa4e13YcFMHvAhCvhLabu2EiXiKPWsmFe45FruERH+w== penickar@gmail.com 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/stibipet.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCtDi01lwZFvZel/yvVKTUYjRCoVkm9RVxVjH9tdNu2S1k0+1OvYvO9GasSG1hLyX5sU9awLpxhSyzTMZJRl8IqHLPPzOQn+kSHUeMj6TwrwFVakc3ot+7gQpAhpckVN4HTefKLNODD0iHMJoePCYr7CP/YzhGr3Ys8F7K/Ex6vLeis9XD6EDF+NTG11XFfrvPqSxFmajoSL7XYq9wZS4eZP0LfrJe3B23vfzdzLB3izq/hjSvHDJqrXyfc95ai9539e4u6sbyBqA4ynHPPfZKmF/jN33v53jzid14TcSm/GTOrkCamm8KruEbH/WsgfAgDi+hR4D5Rq9ghuV2Mss6pyAZ6OnJJWag/VbcAyZH5B/H9ACVv88zu5W9/+AZolFEo2e75O8jpwhUa1l/HrltsTGKNugGYSJ1lWy8XdeEfGN0OQ/VU9DiNnpvJS//NJdLqS0JE8eBSLEf3AzBegGKaMoQHMMtu5pzHuWz8sDFpqBX6SqK/TBqQsi7yP1C7e43/SBT6ZEdf+kvmjUPfRodYefMTZgkjFzqiFUAknd3DqhQXffU4YvaVprKIb7hfVhZW+EwEHqOnCu5xsCRpwA13BJejiWSY1TnLolL/yjbz0INY4y30OOgg14vSZPTHCaQsmgKug0IpfbDjVFhwIbTv7Rc2AQQ/d6bd0bY2V2GYiw== stibipet@fel.cvut.cz 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/tim.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBQRDzgT21C73fv8aOZ8ybAlVSuQAzWAASNPuL9+Yhh1whe1N7JVwEITsl/zcSCxsccvqqLysT40eTlikceiKo04ifmkuxDeI1JGFhGUvsuPEbYMzNMp5Y5EIZEL47CL61r7RskYNDfZs1MD8VJ6xqE5aBuF2OR65xptBaAqDJWJUgT05yv9DDqA2Q/fFAl5pqWNbTKwZXelkacN34SdD5XWO1tQxaar3vdAaJLHDc1nqjHw8lLhOu9hG4aq6hG/vlPRDsZ6lHfuWDodrVK4Oy4J+145d/lVPw/FlL12qsmIANBTyQR0EGEEQAAwaxWPAkZNIv91UYYV3gCJ3J+PVhMFqnbhoCP6VLo+bcdyAweBQGMDDZrXVXFp7569pmva8K2m6/NRR1xMQlD8YajbSHWsbvdNMbqwKU493YnrNvmrjg2O66Ffr3LaRHXiL9ivrOgdlirCOLCAeJ+HD4kHFkWXHS+UDaJh3C9s3eMxFsrujkc6aaACyMjCzliCWjYTv7+8zJxpbPxl30SHo/DRfAYi966Qp7bAmAF2TWe1scNlJH3QA3uzNM9Kv0xXGqQEtFPzIkX5dldp3PQ70qDRNXYfYbcL7KvJxsmvD6nf20p5dfl5qczSsY/a7/qtmwAnKBVZx8IVeJAr2QSK3vLielYOtuIscuAauPAZp4au3iNw== mrs@mrs-T 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/tomas: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,FCF68B667941E6FB275C161544E30546 4 | 5 | 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 54 | -----END RSA PRIVATE KEY----- 55 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/tomas.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ6gse4yU6rYGXjmQrx02frG0vg5txJtFic7MtBF6J7tV9gmgl3BWu2sOSznnq//CoW+HkMZP85CbK+hV2Xdd/ImzutoHS6Sn3oZaDEgIkOTCri2TLxk6oNI12Iq1QQyjJNnGJwfUBE3A0QxcRdNI5DmwQPN4cmGQqVHbwwGMkqO4mi6dkWmezpyzcC6iRMNvNeD3mP0GgxKmQnCxtnH+GSDiaOeXh6XEW2JfalAcRFstqEp6+auG1Y6J0JPlw+4vvocfwRmfyzVvoEnKvU8fpAuHsr9qznYTSxraRZLA31y+gPIzURO588pnqZUvD1lOlj0C4RpWsxmosBih3rMgVRrEMDd8ay3nMWZl1NyNjGiGpNktnUC+kVlNjdSbjDPMOBhUk5Lnaf1VAYN02/XTwEMvWg9qy49rNjwmCdvulDrHAAQS54cLovD4ZJ3nz27xUHP+N+bzVk6zLXRULUNZJrWWV933e8+0qO6OTnK6/jM+koBxP3R3MS+akQp4K4vDbrvqNjTcxVKkUiwKMhmsAO4J2PgZP4fEt5vxox1+OR24uthbYa74poMPa42oDnVb6701bBsV9mgCvLxX6RjG4Yj9/EAXVaq0BSb6HHNZ1krqtnhiJgFxTgyem3vN+FEU4Gte/TVjnV8NCb4KkPZaQNwKtGlzHKOXzQWoE/NcLHw== tomas.baca@fel.cvut.cz 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/vasek: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAmQLnP9L 3 | cNbgSB33wWtDO0AAAAEAAAAAEAAAEXAAAAB3NzaC1yc2EAAAADAQABAAABAQDFbhkJOjrX 4 | pvQYpEkta4CWi9/liObK26Pj6Paa0Ikep65pEMvmI7fgcwk8PDDaePh1lS+BY4TIQ/FSsP 5 | 6Qs9g1W6giJ+hW2HUId/IJ674d+Pl3/bXaS0Dv6sVbJ2Tt+91jkz5HL2/nhAqWBiqvd0J6 6 | z5W4GrKcHT1iQoReD0q1pUR9bMRQGH0/EE0+9XRbSf64alPVMClHX6BDYZvpcM2y2bcwgN 7 | UxPF8zNXT2Cawh915PguVvLMQaqg6oscIfGsPUH/MJQ/FXOvlab2TW95ykDPAtb3SKJLQr 8 | /jrzP9kbjtC9rUiPRH90+BlbxTnZKqNwykUEfFeZ1q68KcHSbNp7AAAD0LEEc95kynZEhP 9 | kHCCf+7K8WY1SrU3weMFLwGL1UisPfTgAJmNp5kpe3UoOT+Ssypxy7CBX+/0G9ntLwvGVP 10 | Alcr97qzRSLXS8hBHfw8XqTUyEUA+7C9LKYFEYXSVULeNdK0PCeu4tj6/1SLyiOs18ReLr 11 | q+2G09T2YTegfJUd+eDZZ4JVT9uhurUuSDgKoQY7Cwu6rZZ8vA1os204x/Nf2TbnZigpc5 12 | FzZtvqx0wRUk8Jl0aKEVs0IKwuOuRTJ5471D1D2f2ZZsYJUJw22kgHksH5iek5B+byogCm 13 | hmulmXpgtFgEdfuWSqTd2RMpfebLoqeAeovxwuHQcpVcoJGCN+nW4bh0M4V5QOK6NGfsvC 14 | Chi4XlNRrwsFIEl07E3ochT9oCYIehOHTal0jSss03eZXIUzy94EysZtpO8TmBh0VaUXB0 15 | Qqxgz4q3mT9TU2H+0AojcrtN64oh8gllbrGC1+KdVhZBVaxxyaza7D4lNDA+cjaX9PRjtL 16 | cT2TdFJRRLGliQo17htNk4U+/IoO9af5bzvO+qEA7j+f3ylKxVsKb4DFSXaMzkZeyY/4gU 17 | 1+hPk54L2qZZPrjjsC89l7OXHBXd59/efQmhzVI1AkckrX3KhbEnETC/inWMuHx6jv7rW0 18 | I9FjDlDrYPEeLOySKelZOUJ7eEqqPkI7gAkP7P80IAVwP/PFUh2e0EnxnUtGlsw5fpNFh0 19 | dHGxUbiQutaMmDcZY6rN2sWPmBYsAPDUmUgAic7Jq29Lb4tLp/hQ0PTCLabKWmzX2V0qyW 20 | FXid3r6T3cQRJlGY6I2Zzow+eSUeg5jtzzKIZzxSiwXKUOPMblIbEzXI+uHPVtGQWj/6dq 21 | fIuqa/JShoUSyVxIayl+g3lPCj9u+H6rV3ovjBvo+pWlM24KgjFz61DBIcysIi8XR3Sqr+ 22 | giaTwTeKg1SVEOLixo51Cq8OH8JYq0AU2nFZ0wqyUJzl39sOgTFMey6WusHl5Mu5HKNVLc 23 | neAvYNfg00qrBLhNvh1S6EVSutKpvub2g3bsSPj4N7cWwoK5qxu03CFfJNJ3DRQGrxBtGC 24 | eBGXw81kuvoQYvuby5znfeWY5fsrnmA9B08GIlec6BF0pOQv9sHRXejwdPSJFr604EYpje 25 | LNEePyux0OHBbIq5OAnbqxqlslI2e29JnehyjlJmFs1GZrWRFfU/j5EG/fgSRPGdIamqye 26 | sG3o9QUmxUgRaBoX2dVXtGDvwCPiztoIdLTTmArsMQ+qZCWKRbafkwdOtjOGbw0utgh/KZ 27 | 6X7PRgU/5jF3wCehUc7nGly1PA8NQ= 28 | -----END OPENSSH PRIVATE KEY----- 29 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/vasek.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFbhkJOjrXpvQYpEkta4CWi9/liObK26Pj6Paa0Ikep65pEMvmI7fgcwk8PDDaePh1lS+BY4TIQ/FSsP6Qs9g1W6giJ+hW2HUId/IJ674d+Pl3/bXaS0Dv6sVbJ2Tt+91jkz5HL2/nhAqWBiqvd0J6z5W4GrKcHT1iQoReD0q1pUR9bMRQGH0/EE0+9XRbSf64alPVMClHX6BDYZvpcM2y2bcwgNUxPF8zNXT2Cawh915PguVvLMQaqg6oscIfGsPUH/MJQ/FXOvlab2TW95ykDPAtb3SKJLQr/jrzP9kbjtC9rUiPRH90+BlbxTnZKqNwykUEfFeZ1q68KcHSbNp7 pritzvac@fel.cvut.cz 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/viktor: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | 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 38 | 1oDfmgKJ+agB7Oruy/YqRa4dD68= 39 | -----END OPENSSH PRIVATE KEY----- 40 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/viktor.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDOTFjNqk63N2YActppp2T+VBCAlR0EOds3dlejOEyY43YUdn7rYD+vhsYj7CNKfnoqhOPHyGNUgTMd13VV5n9RkhX0uldgzgviGA9gvjkR/cYghkSqEyXKIA4qdMwgFIXW02ud68x0LnmbH5qG8T3Jg9E9XGzAnt/mazZP92tpoUzKDx06ag6h+n3R0eHvJ5SckLwQzDs9Dxs2n0CMCudnjQeTIaf9YSE56d54+nlQDI+tgnMZY+mtmSb8JOWM18Iy4PZ+nKSjFkYCueemL2blal3kKslC/CJJg2cHANArHGL6V7ksuqCJWFdbDgGyujuttHLeP+DP7Sia3pebyAqXMDLnQOgn0uffHb1bJhk6ThUA/eo8K2+bH6ISNa9BQQtvbR33CvCtzJn89G11RWSZOw1WTDkMDD7Ozeb/hFflajssP3dWb6c4kie5XujIMhoHKvHqH9wv1RQ3ciNcTeR8NQrWCbos2ILVGLZeHcKDaZt7YqZbW4oHZLTJAVNm2h0= viktor@viktor-TP 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/vit.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDZa9sOOyiMLWDmcdJlR6xEWt4TiImO6fes568Ve6AZfvmN+0BXQW+514GGpsNDzAii4bBetmkTdkz4ziqbJioFsj0K7rW9S0WBHIK+nX5+6svkajJGbX+gNRnrLxdXPrgg5o09qLBe5XxhK724NMKtk0Kqm6bZ/LL9zRfKrIP+JLxanXvIvlhy5UXk8WOSDFaKyPX5CgE4YmimOEIaCRiwp3ze/0iP6WcBupfnrRf4CyA2IMDo/f/xr8hpsR/Mwra5q46NLht8NJkvVSCpx0z0671C51ms6aD7LHoz16fXcYxeQqSSg/jw4bUDhFD/hweNtasJZQw+uQNP01H8mkRJx03dA1EM/wIHGCmdC7WsknHFtilgXRBM8RVWtPhuRzxp5iHVjT9DcIRd8+W7cBrDkilO0ZC9pyJqll4MLppde1Q2H/bI0e3ywh6s8HeAu9sg5UdZ4BA/jwtEUBD+4h7vbCL/Qw0nwZwMLEZOeyC5qC6TJnDHC+JjBg6qfhb3pfepMFvBIH4pB4+goQwuEjbk5UOVAU5v7VPkBIXYIA65c1utwPCPnTlkfKxUnpFrwA1RfChl2QnYUP7ErtXXOYf34f/yJSXKuuQinDVaxp+yZjaMch/xr/weT+LB+uFh0FlQH3YGyNPDxtxR1/pKohP/nI6wRKEyrt0XLPAzynL5Zw== kratkvit@fel.cvut.cz 2 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/vojta: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,3705D13A140795161485DF10F8B84E05 4 | 5 | 8f0XUSadSDp4r9LUOuNHz/iakN+6m4Qkd8j1Sgs7TdntB7gmMyATx63CS7Vh/m2H 6 | vk6b7dOcEwe214A+Ynu/1Qp4+exglk9cQPg6mT0JpNz0vycprFO6z4Mn62VS/VLt 7 | 10lp08VkhRiKfTKPLXqDTNdKcdIi9oRfWUktPIhozGWZbx51pryfx8U8kieBP2rV 8 | vrlLtpobVZsr5zHOiI5J31MhfXuJ+5F1KzPpKudS40b3XgjHfyay5B7uC9u8MsKb 9 | e5UdVvDfkP2GUfXPcsk7FympKemjvPSaPCCuq2i/6IsZxFLbAaGIsmUegamja7ks 10 | jO2ZM+u1tgI2y49OICZR9zcAu6oBQCLCHYjjl7QsvwNrMMjBKLGQL3iLkLF1UaTT 11 | y1i81EwjO0hflLRSrpU6bUVW/SLyjGdVyjvC8q5lrnUyMqvZDlWnYSY/pXQKYaaP 12 | u1ORCXMPeE17fDNbhpmxxbGTGFLEDxLOGv25UBDp4H5LhLcZ6kXJdVZkanCiTyh2 13 | P44aNb0A6X5v5D5U+uPoBIcHnsLclFJAjyIZFbnW+q7cGlalNWXuevSnftlbQ9uc 14 | sPuujVrshFpG+9ltQF6d7RlSLFTHRoWDgosIdgDhnLsXR8N3Ui2mZiahSre68YdP 15 | kLy1oQzGAaUV6n52szq0msB1upShPBY2Yv23mUjb5lMDOoJt5vSHNSFQZIrrjsqe 16 | Bbg0W4KXOZjqxkCkMKvGcrOgTHu4fWlRgNkKyAyYrgvwDifVWXd3Ywa8y77F0xIF 17 | UHNhOQxVgY3QAiilj+rBPGDvK/jM+kV14OTmA+AJUq5NJA2HN7f3c7OU/US3y4SC 18 | Z4iueEZQX88IZ2+bFuffWdVWk8/y+v2qg7LBegH8xwVGBlInaXhg2p3pXd5b5M5P 19 | YNyZRMtu+XlCF89A3TwBiwNdxEi1OSAGwLQ3rL63k6+8HgyxAJK1cEB9ZpqOnUOm 20 | RZCYl9tI+amM2IixOBc5ZCVwCzp+N3ZE8RdXaom+d9drLH7H6KLql9cO7GbK1z/e 21 | qGkFn8/2hO6W7XLo6c+0QpeE36e0NPv3aRx9kVQT/lbbR3FzuRpDCaUD9aK86tjc 22 | OxcaRt1aakYiyFWKXRPdnJDkDd2XPXFYA6CRbZSQRfQLkqPY20u7c4uQbFB4lYRr 23 | a7/EvxZ96ruGM8EQMJsY2Tvlykq5CZ2TCFSxH1JoCho2Qkm24yLdtzznmmJ5DT9o 24 | ArJiGlcoyTTKU4GbfXyY9+IU/keI3JnL+/Vo8OVhoZ05AnWkvCx7KJL0F94PUFuR 25 | VDdgDhFMmlEVSRupXAo2pFulA6i65E22v2g8DuIePFAxfRLetGCnt6t0YC1xPi37 26 | gZK6e8qto/6RN6JueKNvQBI9YE6lL0wZhil58EZaiTBQA9LYicK09PY9BBUlXNsV 27 | +hefhOk2elRfCbpYUtbjZ1xAyib6OHK9CQuViJTCn/6DnjZd3FGdYu7xt2F3rMpE 28 | y5Pqda4f1uJL0TqpM+c3RBzeJZu9RQr0rJfcjS8vDHOnPIgLCVW3mL0wzOIW29+C 29 | r1ewHOmFmT7T5Tn53sp5+niZebcKn/80znPTpUEcSDTGtD6hYFkiSPbSc/NZDUDo 30 | -----END RSA PRIVATE KEY----- 31 | -------------------------------------------------------------------------------- /miscellaneous/dotssh/vojta.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCo7Yn5Y7T23rQS1/en4vzJiP84KJrBxmVUxpsumGhT3gurI6MmO7KAC/kXxPqRqiVYT9vkmaUGglHUQcwy6BvMJwk9o+px6aksDIr67HrYJXktTVy6wUfAS9M2jZLmsvrbFJk62JojW7Eo+1LCwufz0Z3K52DyGupN6JI+ZE/4ip8bMMnZtFQ8Am1CgrGQFW91dL1a1iD2rtKw0i97fd+NIbhRqt6nyFx+IlWvHmxKtaqX4CdjhIeuGoXOprVowtDj2cLxHXo2vwpFTC3DdsToIRqP5ftsl3n8Cs6KDR9JGKGByQD2b4kyjoQzx6GOqwvEGPKD5ZkURSYg4EE/N0+/ vojta@vojta 2 | -------------------------------------------------------------------------------- /miscellaneous/git_scripts/change_remote.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | USERNAME="git" 4 | ADDRESS="mrs.felk.cvut.cz" 5 | 6 | ############################################# 7 | 8 | # MY_PATH=`dirname "$0"` 9 | # MY_PATH=`( cd "$MY_PATH" && pwd )` 10 | 11 | MY_PATH="./" 12 | 13 | # parse the .gitmodules files in the PATH 14 | if [ -f "$MY_PATH/$1/.gitmodules" ]; then 15 | 16 | # find each module in the .gitmodules file and extract its relative path from the doublequotes 17 | SUBMODULES=($( cat "$MY_PATH/$1/.gitmodules" | grep "^\[submodule" | cut -d "\"" -f2 | cut -d "\"" -f1 )) 18 | 19 | cp $MY_PATH/$1/.gitmodules $MY_PATH/$1/.gitmodules_new 20 | 21 | # for each submodule 22 | for submodule in $SUBMODULES; do 23 | 24 | # recursively find its submodules 25 | if [ -z "$1" ]; then # if we are in the root repo 26 | repo_to_local "$submodule" 27 | else 28 | repo_to_local "$1/$submodule" 29 | fi 30 | 31 | # extract the name in the superrepo 32 | echo SUBMODULE: $submodule 33 | REPO_NAME=$( echo $submodule | sed -r 's/.*\/([^\/]+)/\1/g' ) 34 | echo REPO_NAME: $REPO_NAME 35 | 36 | # extract the submodule server path 37 | CMD="cat '$MY_PATH/$1/.gitmodules' | grep -e 'url.*$REPO_NAME' | sed -r 's/.*:(.*)$REPO_NAME.*/\1/g'" 38 | SUB_PATH=$( eval $CMD ) 39 | echo SUB_PATH: $SUB_PATH 40 | 41 | # change the remote 42 | git config --file=.gitmodules_new "submodule.$submodule.url" "$USERNAME@$ADDRESS:$SUB_PATH/$REPO_NAME" 43 | git submodule sync > /dev/null 44 | cd "$MY_PATH" 45 | 46 | done 47 | 48 | mv "$MY_PATH/$1/.gitmodules_new" "$MY_PATH/$1/.gitmodules" 49 | 50 | fi 51 | 52 | # fix the super repo 53 | if [ -z "$1" ]; then 54 | 55 | # extract the name in the superrepo 56 | CMD="git remote -v | grep origin | head -n 1 | cut -d ":" -f2 | sed -r 's/.*\/(.+)\s.*$/\1/g'" 57 | REPO_NAME=$( eval $CMD ) 58 | echo REPO_NAME: $REPO_NAME 59 | 60 | CMD="git remote -v | grep origin | head -n 1 | cut -d ":" -f2 | sed -r 's/(.*)$REPO_NAME.*/\1/g'" 61 | SUB_PATH=$( eval $CMD ) 62 | echo SUB_PATH: $SUB_PATH 63 | 64 | # push the local repo 65 | git add .gitmodules 66 | git commit -m "switched .gitmodules to local" 67 | git push 68 | 69 | fi 70 | -------------------------------------------------------------------------------- /miscellaneous/network_settings/01-netcfg.yaml: -------------------------------------------------------------------------------- 1 | network: 2 | version: 2 3 | renderer: networkd 4 | ethernets: 5 | eth0: 6 | dhcp4: no 7 | dhcp6: no 8 | addresses: [10.10.20.210/24] 9 | wifis: 10 | wlan0: 11 | dhcp4: no 12 | dhcp6: no 13 | addresses: [192.168.69.110/24] 14 | gateway4: 192.168.69.1 15 | access-points: 16 | "mrs_ctu": 17 | password: "mikrokopter" 18 | nameservers: 19 | addresses: [8.8.8.8] 20 | 21 | -------------------------------------------------------------------------------- /miscellaneous/network_settings/README.md: -------------------------------------------------------------------------------- 1 | # interfaces identification 2 | Check naming of interfaces by command `ifconfig` because your network interfaces have to be identified as **eth0** and **wlan0**. 3 | If they are not, modify the file `/etc/default/grub` where line with **GRUB_CMDLINE_LINUX=""** has to be change to **GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"**. 4 | Finally, call in terminal `sudo update-grub` and `sudo update-grub2` and reboot machine. 5 | 6 | # Configuration for static ip addresses 7 | 8 | ```bash 9 | sudo cp 01-netcfg.yaml /etc/netplan/. 10 | ``` 11 | 12 | Modify the ip address for **eth0** and **wlan0** depanding on the name of the uav. 13 | For example: 14 | * **uav2** will have address for **eth0** *10.10.20.202* and **wlan0** *192.168.0.102* 15 | * **uav6** will have address for **eth0** *10.10.20.206* and **wlan0** *192.168.0.106* 16 | 17 | ```bash 18 | sudo vim /etc/netplan/01-netcfg.yaml 19 | ``` 20 | 21 | Remove network manager netplan 22 | ```bash 23 | sudo rm /etc/netplan/02-network-manager-all.yaml 24 | ``` 25 | 26 | To apply changes call 27 | ```bash 28 | sudo netplan apply 29 | ``` 30 | 31 | ### For older version of ubuntu than 18.04 LTS 32 | ```bash 33 | sudo cp interfaces /etc/network/interfaces 34 | ``` 35 | 36 | Modify the ip address for **eth0** and **wlan0** depanding on the name of the uav. 37 | For example: 38 | * **uav2** will have address for **eth0** *10.10.20.202* and **wlan0** *192.168.0.102* 39 | * **uav6** will have address for **eth0** *10.10.20.206* and **wlan0** *192.168.0.106* 40 | 41 | ```bash 42 | sudo vim /etc/network/interfaces 43 | ``` 44 | 45 | Finally, reboot machine to apply changes. -------------------------------------------------------------------------------- /miscellaneous/network_settings/generate_etc_hosts.sh: -------------------------------------------------------------------------------- 1 | ../dotssh/generate_ssh_config.sh -------------------------------------------------------------------------------- /miscellaneous/network_settings/interfaces: -------------------------------------------------------------------------------- 1 | # interfaces(5) file used by ifup(8) and ifdown(8) 2 | auto lo 3 | iface lo inet loopback 4 | 5 | auto eth0 6 | iface eth0 inet static 7 | address 10.10.20.202 8 | netmask 255.255.255.0 9 | dns-nameservers 8.8.8.8 10 | gateway 10.10.20.1 11 | 12 | auto wlan0 13 | iface wlan0 inet static 14 | address 192.168.0.102 15 | netmask 255.255.255.0 16 | broadcast 192.168.0.255 17 | wpa-ssid mbzirc_ctu 18 | wpa-psk mikrokopter 19 | # gateway 192.168.0.1 20 | -------------------------------------------------------------------------------- /miscellaneous/pixhawk_sdcard_config/pixhawk_4/etc/extras.txt: -------------------------------------------------------------------------------- 1 | mavlink start -d /dev/ttyS2 -b 921600 2 | mavlink stream -d /dev/ttyS2 -s ATTITUDE -r 100 3 | mavlink stream -d /dev/ttyS2 -s ATTITUDE_TARGET -r 100 4 | mavlink stream -d /dev/ttyS2 -s HIGHRES_IMU -r 100 5 | mavlink stream -d /dev/ttyS2 -s RC_CHANNELS -r 10 6 | mavlink stream -d /dev/ttyS2 -s LOCAL_POSITION_NED -r 100 7 | mavlink stream -d /dev/ttyS2 -s GLOBAL_POSITION_INT -r 100 8 | mavlink stream -d /dev/ttyS2 -s SYS_STATUS -r 10 9 | mavlink stream -d /dev/ttyS2 -s DISTANCE_SENSOR -r 100 10 | mavlink stream -d /dev/ttyS2 -s HEARTBEAT -r 100 11 | mavlink stream -d /dev/ttyS2 -s UTM_GLOBAL_POSITION -r 1 12 | usleep 100000 13 | -------------------------------------------------------------------------------- /miscellaneous/pixhawk_sdcard_config/pixhawk_6x_6c/etc/extras.txt: -------------------------------------------------------------------------------- 1 | mavlink start -d /dev/ttyS1 -b 2000000 2 | mavlink stream -d /dev/ttyS1 -s ATTITUDE -r 100 3 | mavlink stream -d /dev/ttyS1 -s ATTITUDE_TARGET -r 100 4 | mavlink stream -d /dev/ttyS1 -s HIGHRES_IMU -r 100 5 | mavlink stream -d /dev/ttyS1 -s RC_CHANNELS -r 10 6 | mavlink stream -d /dev/ttyS1 -s LOCAL_POSITION_NED -r 100 7 | mavlink stream -d /dev/ttyS1 -s ODOMETRY -r 100 8 | mavlink stream -d /dev/ttyS1 -s GLOBAL_POSITION_INT -r 100 9 | mavlink stream -d /dev/ttyS1 -s SYS_STATUS -r 10 10 | mavlink stream -d /dev/ttyS1 -s DISTANCE_SENSOR -r 100 11 | mavlink stream -d /dev/ttyS1 -s HEARTBEAT -r 100 12 | mavlink stream -d /dev/ttyS1 -s UTM_GLOBAL_POSITION -r 1 13 | usleep 100000 14 | -------------------------------------------------------------------------------- /miscellaneous/profiler_viewer/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ctu-mrs/uav_core/539c2c85bbfb261df95bc0ac4430ae391612c23f/miscellaneous/profiler_viewer/utils/__init__.py -------------------------------------------------------------------------------- /miscellaneous/scripts/check_uav.sh: -------------------------------------------------------------------------------- 1 | ./uav_check/check_uav.sh -------------------------------------------------------------------------------- /miscellaneous/scripts/config.sh: -------------------------------------------------------------------------------- 1 | low_space_treshold_GB=10 2 | actual_world_location=~/mrs_workspace/src/uav_core/ros_nodes/mrs_main/config/world_current.yaml 3 | ros_uav_variables_to_show=( ROS_IP UAV_NAME UAV_MASS ) 4 | git_repos_to_check=( uav_core uav_modules ) -------------------------------------------------------------------------------- /miscellaneous/scripts/current_world_info.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | actual_dir=`dirname "$0"` 3 | source $actual_dir/script_functions.sh 4 | source $actual_dir/config.sh 5 | 6 | 7 | current_arena_is=` ls -l $actual_world_location | grep -Po '(?<=->\s)\w+' ` 8 | echo -e "$header_begin""Current world is set to ""$green_color$current_arena_is""$header_end" 9 | -------------------------------------------------------------------------------- /miscellaneous/scripts/detacher.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | TMUX_PATH="$(whereis tmux | awk '{print $2}')" 4 | 5 | SESSION_NAME="D$RANDOM" 6 | 7 | TMUX= $TMUX_PATH new-session -s $SESSION_NAME -d 8 | 9 | if [[ "$1" == "1" ]]; then 10 | 11 | shift 12 | PARAMS="$*" 13 | OUT_FILE="/tmp/$SESSION_NAME.txt" 14 | rm "$OUT_FILE" > /dev/null 2>&1 15 | 16 | $TMUX_PATH send-keys -t $SESSION_NAME:0 " $PARAMS > $OUT_FILE exit " 17 | 18 | while true; do 19 | 20 | EXISTING_SESSION=`$TMUX_PATH ls 2> /dev/null | grep "$SESSION_NAME" | wc -l` 21 | 22 | if [ "$EXISTING_SESSION" -eq "0" ]; then 23 | cat "$OUT_FILE" 24 | rm "$OUT_FILE" 25 | break 26 | fi 27 | sleep 0.2 28 | done 29 | 30 | else 31 | 32 | PARAMS="$*" 33 | 34 | $TMUX_PATH send-keys -t $SESSION_NAME:0 " $PARAMS exit " 35 | 36 | fi 37 | -------------------------------------------------------------------------------- /miscellaneous/scripts/disable_hibernation.sh: -------------------------------------------------------------------------------- 1 | sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target 2 | -------------------------------------------------------------------------------- /miscellaneous/scripts/disable_network_manager.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sudo systemctl stop NetworkManager.service 4 | sudo systemctl disable NetworkManager.service 5 | 6 | sudo systemctl stop NetworkManager-wait-online.service 7 | sudo systemctl disable NetworkManager-wait-online.service 8 | 9 | sudo systemctl stop NetworkManager-dispatcher.service 10 | sudo systemctl disable NetworkManager-dispatcher.service 11 | 12 | sudo systemctl stop network-manager.service 13 | sudo systemctl disable network-manager.service 14 | 15 | sudo netplan apply 16 | -------------------------------------------------------------------------------- /miscellaneous/scripts/dockerhub_clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | UNAME="klaxalk" 6 | UPASS=$( python -c "import keyring; print(keyring.get_password('dockerhub', 'personal'))" ) 7 | ORGANIZATIONNAME="ctumrs" 8 | REPOSITORIES=( 9 | "mrs_uav_system" 10 | "mrs_uav_system_ls" 11 | "mrs_uav_system_modules" 12 | "mrs_uav_system_ls_modules" 13 | ) 14 | DAYS="30" 15 | 16 | # get token to be able to talk to Docker Hub 17 | TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${UNAME}'", "password": "'${UPASS}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token) 18 | 19 | echo 20 | echo "Identifying and deleting images which are older than $DAYS days in ${ORGANIZATIONNAME} docker hub account" 21 | 22 | for ((i=0; i < ${#REPOSITORIES[*]}; i++)); do 23 | 24 | REPOSITORY=${REPOSITORIES[$i]} 25 | 26 | # get tags for repo 27 | echo 28 | echo "Looping Through ${REPOSITORY} repository in ${UNAME} account" 29 | IMAGE_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/${ORGANIZATIONNAME}/${REPOSITORY}/tags/ | jq -r '.results|.[]|.name' | grep _w) 30 | 31 | echo "$REPOSITORY IMAGE TAGS: 32 | $IMAGE_TAGS" 33 | 34 | # build a list of images from tags 35 | for j in ${IMAGE_TAGS} 36 | do 37 | echo 38 | # add last_updated_time 39 | updated_time=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/${ORGANIZATIONNAME}/${REPOSITORY}/tags/${j}/?page_size=10000 | jq -r '.last_updated') 40 | echo $updated_time 41 | datetime=$updated_time 42 | timeago="$DAYS days ago" 43 | 44 | dtSec=$(date --date "$datetime" +'%s') 45 | taSec=$(date --date "$timeago" +'%s') 46 | 47 | echo "INFO: dtSec=$dtSec, taSec=$taSec" 48 | 49 | if [ $dtSec -lt $taSec ]; then 50 | echo "This image ${UNAME}/${REPOSITORY}:${j} is older than $DAYS days, deleting this image" 51 | ## Please uncomment below line to delete docker hub images of docker hub repositories 52 | curl -s -X DELETE -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/${ORGANIZATIONNAME}/${REPOSITORY}/tags/${j}/ 53 | # curl -u $UNAME:$UPASS -X DELETE https://cloud.docker.com/v2/repositories/$ORGANIZATIONNAME/$REPOSITORY/tags/${j}/ 54 | else 55 | echo "This image ${UNAME}/${REPOSITORY}:${j} is within $DAYS days time range, keep this image" 56 | fi 57 | done 58 | 59 | done 60 | -------------------------------------------------------------------------------- /miscellaneous/scripts/fix_dualboot_time_offset.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sudo timedatectl set-local-rtc 1 4 | -------------------------------------------------------------------------------- /miscellaneous/scripts/fix_network_interface_names.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sudo sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"/g' /etc/default/grub 4 | sudo update-grub 5 | 6 | echo " " 7 | echo "Reboot the system to apply changes" 8 | -------------------------------------------------------------------------------- /miscellaneous/scripts/get_ros_workspace_path.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import rospkg 4 | import os 5 | from glob import glob 6 | 7 | import argparse 8 | import sys 9 | 10 | def GetWorkspacePath(package="", filename=""): 11 | 12 | if package == "" and filename == "": 13 | return '' 14 | 15 | # get the content of $ROS_WORKSPACE variable 16 | # and create an array out of it 17 | paths = os.path.expandvars('$ROS_WORKSPACES') 18 | workspaces = paths.split() 19 | 20 | # iterate over all workspaces 21 | for single_workspace in workspaces: 22 | 23 | # get the full path to the workspace 24 | workspace_path = os.path.expanduser(single_workspace) 25 | 26 | # get all ros packages built in workspace's build directory 27 | paths = glob(workspace_path + "/build/*") 28 | 29 | # iterate over all the packages built in the workspace 30 | for package_path in paths: 31 | 32 | # test whether the package, to which "filename" belongs to, is in the workspace 33 | if package_path.endswith(package): 34 | 35 | # if it is, return path to its workspace 36 | return workspace_path 37 | 38 | return '' 39 | 40 | def getOptions(args=sys.argv[1:]): 41 | 42 | parser = argparse.ArgumentParser(description="Parses command.") 43 | parser.add_argument("-p", "--package", help="A package name.") 44 | parser.add_argument("-f", "--file", help="A file name.") 45 | options = parser.parse_args(args) 46 | return options 47 | 48 | options = getOptions(sys.argv[1:]) 49 | 50 | workspace_path = "" 51 | 52 | if options.package: 53 | workspace_path = GetWorkspacePath(package=options.package) 54 | elif options.file: 55 | workspace_path = GetWorkspacePath(filename=options.file) 56 | else: 57 | exit(1) 58 | 59 | print(workspace_path) 60 | 61 | exit(0) 62 | -------------------------------------------------------------------------------- /miscellaneous/scripts/get_set_rc_variable.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG 6 | trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR 7 | 8 | if [ -z $1 ]; then 9 | RCFILE="$HOME/.bashrc" 10 | else 11 | RCFILE="$1" 12 | fi 13 | 14 | num=`cat $RCFILE | grep "^export $2" | wc -l` 15 | 16 | if [ "$num" -lt "1" ]; then 17 | 18 | if [ -z "$4" ]; then 19 | COMMENTARY="" 20 | else 21 | COMMENTARY="# $4" 22 | fi 23 | 24 | echo "export $2=\"$3\" $COMMENTARY" >> $RCFILE 25 | # echo "$3" 26 | else 27 | var_name=`eval echo $2` 28 | var_value=`eval echo -e "\\$${var_name}"` 29 | # echo "$var_value" 30 | fi 31 | -------------------------------------------------------------------------------- /miscellaneous/scripts/hdd_space_info.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | actual_dir=`dirname "$0"` 3 | 4 | source $actual_dir/script_functions.sh 5 | source $actual_dir/config.sh 6 | 7 | space_info=`df -BG --output=size,avail,target | grep "/$"` 8 | total_size=`echo $space_info | awk '{print $1}'` 9 | avaliable_size=`echo $space_info | awk '{print $2}'` 10 | avail_num_only=`echo $avaliable_size | grep -o -E '[0-9]+'` 11 | 12 | if (( $avail_num_only < $low_space_treshold_GB )); then 13 | echo -e "$header_begin""Your disk has only ""$red_color""$avaliable_size""$default_color"" available space out of $total_size.""$header_end" 14 | else 15 | echo -e "$header_begin""Your disk has ""$green_color""$avaliable_size""$default_color"" available space out of $total_size.""$header_end" 16 | fi 17 | 18 | -------------------------------------------------------------------------------- /miscellaneous/scripts/internet_sharing.sh: -------------------------------------------------------------------------------- 1 | sysctl -w net.ipv4.ip_forward=1 2 | sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE 3 | sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT 4 | 5 | # where is internet 6 | # where is no internet, where is internet 7 | -------------------------------------------------------------------------------- /miscellaneous/scripts/login_info.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | actual_dir=`dirname "$0"` 3 | 4 | echo -e "#######################################################################" 5 | echo -e " ,,,,##########,,,,,,,,,,##########,,,,\n"\ 6 | ",,##,,,,,,,,,,##,,,,,,##,,,,,,,,,,##,,\n"\ 7 | ",#,,,,,,,,,,,,,,#,,,##,,,,,,,,,,,,,##,\n"\ 8 | "##,,,,,,,,,,,,,,##,,#,,,,,,,,,,,,,,,##\n"\ 9 | "##,,,,,,,,,,,,,,,#,,#,,,,,,,,,,,,,,,##\n"\ 10 | "##,,,,,,,,,,,,,,##,,##,,,,,,,,,,,,,,#,\n"\ 11 | ",##,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#,,\n"\ 12 | ",,,,,###,,,####,,#######,,,#######,,,,\n"\ 13 | ",,,,,####,,#,##,,###,,##,,,###,,,,,,,,\n"\ 14 | ",,,,,##,####,##,,#######,,,,,#####,,,,\n"\ 15 | ",,,,,##,,##,,##,,###,,###,,#######,,,,\n"\ 16 | ",,#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#,,\n"\ 17 | ",#,,,,,,,,,,,,,,#,,,##,,,,,,,,,,,,,,#,\n"\ 18 | "##,,,,,,,,,,,,,,##,,#,,,,,,,,,,,,,,,##\n"\ 19 | "##,,,,,,,,,,,,,,##,,#,,,,,,,,,,,,,,,##\n"\ 20 | ",#,,,,,,,,,,,,,,#,,,##,,,,,,,,,,,,,,#,\n"\ 21 | ",##,,,,,,,,,,,,##,,,,##,,,,,,,,,,,##,,\n"\ 22 | ",,,###,,,,,,###,,,,,,,,###,,,,,,##,,,,\n"\ 23 | ",,,,,,,###,,,,,,,,,,,,,,,,,###,,,,,,,," 24 | 25 | $actual_dir/hdd_space_info.sh 26 | $actual_dir/network_info.sh 27 | $actual_dir/current_world_info.sh 28 | $actual_dir/uav_ros_params_info.sh 29 | $actual_dir/repo_status.sh 30 | 31 | echo -e "#######################################################################" -------------------------------------------------------------------------------- /miscellaneous/scripts/nato2uav: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import argparse 3 | from enum import Enum 4 | import sys 5 | 6 | ip_wlan_pre = "192.168.0." 7 | ip_eth_pre = "10.10.20." 8 | 9 | uav_list = [ 10 | ("alpha", "60", "T650"), 11 | ("bravo", "61", "T650"), 12 | ("charlie", "62", "T650"), 13 | ("delta", "63", "T650"), 14 | ("echo", "64", "T650"), 15 | ("foxtrot", "65", "T650"), 16 | ("golf", "66", "T650"), 17 | ("hotel", "67", "T650"), 18 | ("india", "68", "T650"), 19 | ("juliett", "69", "T650"), 20 | 21 | ("papa", "45", "F450"), 22 | ("quebec", "47", "F450"), 23 | ("romeo", "49", "F450"), 24 | ("sierra", "46", "F450"), 25 | ] 26 | 27 | def find_uav(value, column): 28 | for row in uav_list: 29 | if row[column] == value: 30 | return row 31 | return ("not found", "-1", "unknown") 32 | 33 | class Mode(Enum): 34 | n2u = 'n2u' 35 | n2t = 'n2t' 36 | n2ip = 'n2ip' 37 | n2ip_eth = 'n2ip_eth' 38 | 39 | u2n = 'u2n' 40 | u2t = 'u2t' 41 | u2ip = 'u2ip' 42 | u2ip_eth = 'u2ip_eth' 43 | 44 | def __str__(self): 45 | return self.value 46 | 47 | def main(): 48 | parser = argparse.ArgumentParser(description="A tool to convert NATO names to UAV numbers, UAV types etc.") 49 | 50 | parser.add_argument("name", help="the NATO name of the UAV if using n2* mode or the number of the UAV if using u2* mode") 51 | parser.add_argument("--mode", nargs=1, type=Mode, choices=list(Mode), default=Mode.n2u, help="which mode to use. Modes starting with 'n' convert from NATO name, modes starting with 'u' convert from UAV number. Mode name after '2' specifies to what to convert. Possible values include 'n' for NATO name, 'u' for UAV number, 't' for UAV type, 'ip' for UAV WLAN IP address and 'ip_eth' for UAV Ethernet IP address. E.g. 'u2ip' will convert UAV number to its WLAN IP address.") 52 | args = parser.parse_args() 53 | 54 | name = args.name 55 | mode = args.mode 56 | src_col = 0 57 | dst_col = 1 58 | prepend = "" 59 | if mode == Mode.n2u: 60 | src_col = 0 61 | dst_col = 1 62 | elif mode == Mode.u2n: 63 | src_col = 1 64 | dst_col = 0 65 | elif mode == Mode.n2t: 66 | src_col = 0 67 | dst_col = 2 68 | elif mode == Mode.u2t: 69 | src_col = 1 70 | dst_col = 2 71 | elif mode == Mode.n2ip: 72 | src_col = 0 73 | dst_col = 1 74 | prepend = ip_wlan_pre 75 | elif mode == Mode.n2ip_eth: 76 | src_col = 0 77 | dst_col = 1 78 | prepend = ip_eth_pre 79 | elif mode == Mode.u2ip: 80 | src_col = 1 81 | dst_col = 1 82 | prepend = ip_wlan_pre 83 | elif mode == Mode.u2ip_eth: 84 | src_col = 1 85 | dst_col = 1 86 | prepend = ip_eth_pre 87 | else: 88 | sys.stderr.write("Unknown mode: {}".format(mode)) 89 | row = find_uav(name, src_col) 90 | output = prepend + row[dst_col] 91 | print(output) 92 | 93 | 94 | 95 | if __name__ == "__main__": 96 | main() 97 | -------------------------------------------------------------------------------- /miscellaneous/scripts/network_info.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | actual_dir=`dirname "$0"` 4 | source $actual_dir/script_functions.sh 5 | source $actual_dir/config.sh 6 | 7 | ip_setting_wifi=`ifconfig wlan0 2> /dev/null | grep "inet addr:" | awk '{print $1 $2}'` 8 | ip_setting_eth=`ifconfig eth0 2> /dev/null | grep "inet addr:" | awk '{print $1 $2}'` 9 | 10 | echo -e "$header_begin""wifi: ""$green_color""$ip_setting_wifi""$header_end" 11 | echo -e "$header_begin""eth: ""$green_color""$ip_setting_eth""$header_end" -------------------------------------------------------------------------------- /miscellaneous/scripts/repo_status.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | actual_dir=`dirname "$0"` 4 | source $actual_dir/script_functions.sh 5 | source $actual_dir/config.sh 6 | 7 | 8 | 9 | echo -e "$header_begin""Your git repo status are:""$header_end" 10 | for gitrepo in "${git_repos_to_check[@]}" 11 | do 12 | #echo $gitrepo 13 | cd ~/git/$gitrepo 14 | current_branch=`git branch | grep \* | cut -d ' ' -f2` 15 | git fetch $current_branch &> /dev/null 16 | state=`git status | head -2 | tail -1` 17 | check_up_to_date="up-to-date" 18 | 19 | echo -e "- $header_begin""repository ""$green_color""$gitrepo""$default_color"" is on ""$green_color""$current_branch""$default_color"" branch""$header_end" 20 | if [[ $state = *"$check_up_to_date"* ]]; then 21 | echo -e "- $header_begin""repository ""$green_color""$gitrepo""$default_color"" status ""$green_color""$state""$default_color""$header_end" 22 | else 23 | echo -e "- $header_begin""repository ""$green_color""$gitrepo""$default_color"" status ""$red_color""$state""$default_color""$header_end" 24 | fi 25 | 26 | done 27 | -------------------------------------------------------------------------------- /miscellaneous/scripts/script_functions.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function parse_yaml { 4 | local prefix=$2 5 | local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034') 6 | sed -ne "s|^\($s\):|\1|" \ 7 | -e "s|^\($s\)\($w\)$s:$s[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p" \ 8 | -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $1 | 9 | awk -F$fs '{ 10 | indent = length($1)/2; 11 | vname[indent] = $2; 12 | for (i in vname) {if (i > indent) {delete vname[i]}} 13 | if (length($3) > 0) { 14 | vn=""; for (i=0; i 90 and hz < 120: 41 | print_dual("Pixhawk hearbeat rate: " + str(round(hz, 1)) + GREEN + " PASS" + END) 42 | else: 43 | print_dual(BOLD + "Pixhawk hearbeat rate: " + str(round(hz, 1)) + RED + " FAIL" + END) 44 | print_dual(RED + BOLD + "Pixhawk state (heartbeat) message should run at 100Hz!" + END) 45 | print_dual(RED + BOLD + "Check that Pixhawk SD card config is correct and up to date!" + END) 46 | state_hz.print_hz 47 | 48 | 49 | param_client_pull = rospy.ServiceProxy('/uav1/mavros/param/pull', ParamPull) 50 | req = ParamPullRequest() 51 | req.force_pull = 1 52 | resp = param_client_pull(req) 53 | if resp.success: 54 | print_dual("Parameters pulled - pixhawk connection " + GREEN + "PASS" + END) 55 | else: 56 | print_dual(BOLD + RED +"Parameter pull FAILED! Check connection to Pixhawk, check that both RX and TX are connected!") 57 | 58 | param_client_get = rospy.ServiceProxy('/uav1/mavros/param/get', ParamGet) 59 | f = open('px4_params.json') 60 | data = json.load(f) 61 | for i in data: 62 | req = ParamGetRequest() 63 | req.param_id = i 64 | resp = param_client_get(req) 65 | if resp.success: 66 | if str(resp.value.integer) in data[i]['valid_values'] or str(resp.value.real) in data[i]['valid_values']: 67 | print_dual("Parameter " + i + GREEN + " PASS" + END) 68 | else: 69 | print_dual("Parameter " + i + RED + " FAIL " + END + BOLD + " " + data[i]['error_message'] + END) 70 | else: 71 | print_dual(RED + BOLD + "Failed to check parameter " + i + END + BOLD + " " + data[i]['error_message'] + END) 72 | 73 | 74 | print_dual("-----------------Check Finished-----------------------") 75 | -------------------------------------------------------------------------------- /miscellaneous/scripts/uav_check/helper_tmux.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ "$(id -u)" == "0" ]; then 3 | exec sudo -u mrs "$0" "$@" 4 | fi 5 | 6 | source $HOME/.bashrc 7 | 8 | # location for storing the bag files 9 | # * do not change unless you know what you are doing 10 | 11 | # the project name 12 | # * is used to define folder name in ~/$MAIN_DIR 13 | PROJECT_NAME=pixhawk_test 14 | 15 | # the name of the TMUX session 16 | # * can be used for attaching as 'tmux a -t ' 17 | SESSION_NAME=pixhawk_test 18 | 19 | # following commands will be executed first in each window 20 | # * do NOT put ; at the end 21 | 22 | pre_input="export UAV_NAME="uav1"" 23 | # define commands 24 | # 'name' 'command' 25 | # * DO NOT PUT SPACES IN THE NAMES 26 | # * "new line" after the command => the command will be called after start 27 | # * NO "new line" after the command => the command will wait for user's 28 | input=( 29 | 'Mavros' 'waitForRos; roslaunch mrs_uav_general mavros_uav.launch 30 | ' 31 | 'Python' 'waitForRos; python3 helper_checker.py; sleep 1; tmux kill-session 32 | ' 33 | 'roscore' 'roscore 34 | ' 35 | ) 36 | 37 | # the name of the window to focus after start 38 | init_window="Python" 39 | 40 | # automatically attach to the new session? 41 | # {true, false}, default true 42 | attach="true" 43 | 44 | ########################### 45 | ### DO NOT MODIFY BELOW ### 46 | ########################### 47 | 48 | # prefere the user-compiled tmux 49 | if [ -f /usr/local/bin/tmux ]; then 50 | export TMUX_BIN=/usr/local/bin/tmux 51 | else 52 | export TMUX_BIN=/usr/bin/tmux 53 | fi 54 | 55 | # find the session 56 | FOUND=$( $TMUX_BIN ls | grep $SESSION_NAME ) 57 | 58 | if [ $? == "0" ]; then 59 | 60 | echo "The session already exists" 61 | exit 62 | fi 63 | 64 | # Absolute path to this script. /home/user/bin/foo.sh 65 | SCRIPT=$(readlink -f $0) 66 | # Absolute path this script is in. /home/user/bin 67 | SCRIPTPATH=`dirname $SCRIPT` 68 | 69 | if [ -z ${TMUX} ]; 70 | then 71 | TMUX= $TMUX_BIN new-session -s "$SESSION_NAME" -d 72 | echo "Starting new session." 73 | else 74 | echo "Already in tmux, leave it first." 75 | exit 76 | fi 77 | 78 | # create arrays of names and commands 79 | for ((i=0; i < ${#input[*]}; i++)); 80 | do 81 | ((i%2==0)) && names[$i/2]="${input[$i]}" 82 | ((i%2==1)) && cmds[$i/2]="${input[$i]}" 83 | done 84 | 85 | # run tmux windows 86 | for ((i=0; i < ${#names[*]}; i++)); 87 | do 88 | $TMUX_BIN new-window -t $SESSION_NAME:$(($i+1)) -n "${names[$i]}" 89 | done 90 | 91 | sleep 1 92 | 93 | # send commands 94 | for ((i=0; i < ${#cmds[*]}; i++)); 95 | do 96 | $TMUX_BIN send-keys -t $SESSION_NAME:$(($i+1)) "cd $SCRIPTPATH; ${pre_input}; ${cmds[$i]}" 97 | done 98 | 99 | # identify the index of the init window 100 | init_index=0 101 | for ((i=0; i < ((${#names[*]})); i++)); 102 | do 103 | if [ ${names[$i]} == "$init_window" ]; then 104 | init_index=$(expr $i + 1) 105 | fi 106 | done 107 | 108 | $TMUX_BIN select-window -t $SESSION_NAME:$init_index 109 | 110 | if [[ "$attach" == "true" ]]; then 111 | $TMUX_BIN -2 attach-session -t $SESSION_NAME 112 | else 113 | echo "The session was started" 114 | echo "You can later attach by calling:" 115 | echo " tmux a -t $SESSION_NAME" 116 | fi 117 | -------------------------------------------------------------------------------- /miscellaneous/scripts/uav_check/px4_params.json: -------------------------------------------------------------------------------- 1 | { 2 | "SENS_EN_LL40LS":{ 3 | "valid_values":[ 4 | "2" 5 | ], 6 | "error_message":"Set this parameter to I2C if you use a Garmin lidar as a rangefinder to measure height!" 7 | }, 8 | "DSHOT_CONFIG":{ 9 | "valid_values":[ 10 | "150", 11 | "300", 12 | "600", 13 | "1200" 14 | ], 15 | "error_message":"Setup DSHOT on the Pixhawk, DSHOT is critical for correct operations of the UAV!" 16 | }, 17 | "SYS_USE_IO":{ 18 | "valid_values":[ 19 | "0" 20 | ], 21 | "error_message":"Set this parameter to IO PWM disabled, otherwise DSHOT will not work." 22 | }, 23 | "SYS_HAS_MAG":{ 24 | "valid_values":[ 25 | "1" 26 | ], 27 | "error_message":"Magnetometer is disabled - set this paramter to Yes and calibrate magnetometer." 28 | }, 29 | "CBRK_IO_SAFETY":{ 30 | "valid_values":[ 31 | "0" 32 | ], 33 | "error_message":"Set this parameter to 0, otherwise safety button will not work." 34 | }, 35 | "RC_MAP_FAILSAFE":{ 36 | "valid_values":[ 37 | "0", 38 | "2" 39 | ], 40 | "error_message":"If you use R81 receiver, set this parameter to 0. For Optima, set it to 2, otherwise RC loss failsafe will not work. Test the failsafe." 41 | }, 42 | "RC_FAILS_THR":{ 43 | "valid_values":[ 44 | "0", 45 | "950" 46 | ], 47 | "error_message":"If you use R81 receiver, set this parameter to 0. For Optima, set it to 950, otherwise RC loss failsafe will not work. Test the failsafe." 48 | }, 49 | "CAL_MAG0_PRIO":{ 50 | "valid_values":[ 51 | "1" 52 | ], 53 | "error_message":"Internal magnetometer priority - set to 'Min' when using Pixhawk 6X/6C, or newer firmware (1.13.2-3). You can ignore this if you run Pixhawk 4 on 1.11.2" 54 | }, 55 | "CAL_MAG1_PRIO":{ 56 | "valid_values":[ 57 | "100" 58 | ], 59 | "error_message":"External magnetometer priority - set to 'Max' when using Pixhawk 6X/6C, or newer firmware (1.13.2-3). You can ignore this if you run Pixhawk 4 on 1.11.2" 60 | }, 61 | "SENS_MAG_MODE":{ 62 | "valid_values":[ 63 | "1" 64 | ], 65 | "error_message":"Set to 'Publish primary magnetometer' when using Pixhawk 6X/6C, or newer firmware (1.13.2-3). You can ignore this if you run Pixhawk 4 on 1.11.2" 66 | } 67 | } 68 | 69 | -------------------------------------------------------------------------------- /miscellaneous/scripts/uav_check/px4_params.json.bak: -------------------------------------------------------------------------------- 1 | { 2 | "SENS_EN_LL40LS":{ 3 | "valid_values":[ 4 | "2" 5 | ], 6 | "error_message":"Set this parameter to I2C if you use a Garmin lidar as a rangefinder to measure height!" 7 | }, 8 | "DSHOT_CONFIG":{ 9 | "valid_values":[ 10 | "150", 11 | "300", 12 | "600", 13 | "1200" 14 | ], 15 | "error_message":"Setup DSHOT on the Pixhawk, DSHOT is critical for correct operations of the UAV!" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /miscellaneous/scripts/uav_ros_params_info.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | actual_dir=`dirname "$0"` 3 | source $actual_dir/script_functions.sh 4 | source $actual_dir/config.sh 5 | 6 | echo -e "$header_begin""Your uav ros params are set to:""$header_end" 7 | for variable in "${ros_uav_variables_to_show[@]}" 8 | do 9 | 10 | var=${variable} 11 | eval var_value=\$$var 12 | echo -e "- $header_begin""${variable} set to $green_color$var_value""$header_end" 13 | done 14 | 15 | #catkin config 16 | extending_type=`catkin config | grep "Extending:" | awk '{print $2}'` 17 | if [ "[env]" == "$extending_type" ];then 18 | actual_workspace=`catkin config | grep "Extending:" | awk '{print $3}' | awk -F/devel '{print $1}'` 19 | else 20 | actual_workspace=`catkin config | grep "Workspace:" | awk '{print $2}'` 21 | fi 22 | 23 | echo -e "- $header_begin""Your actual workspace is: ""$green_color""$actual_workspace""$header_end" -------------------------------------------------------------------------------- /miscellaneous/scripts/ycm_extra_conf_test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | from os.path import expanduser 4 | HOME = expanduser("~") 5 | 6 | exec(open(HOME+"/.ycm_extra_conf.py").read()) 7 | 8 | workspace = GetWorkspacePath(HOME+'/git/uav_core/ros_packages/mrs_uav_managers/src/control_manager.cpp') 9 | print("workspace = " + workspace) 10 | 11 | compile_params_folder = GetCompilationDatabaseFolder(HOME+'/git/uav_core/ros_packages/mrs_uav_managers/src/control_manager.cpp') 12 | print("folder = " + compile_params_folder) 13 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/designing_simulation_params.m: -------------------------------------------------------------------------------- 1 | clear all 2 | 3 | % input = the desired thrust from the MRS pipeline 4 | % output = number [0, 1] which is send to the motors (ESCs) 5 | function output = PixhawkOutput(input) 6 | 7 | % params from component_snippets.xacro 8 | zero_position_armed = 0.15; 9 | input_scaling = 1; 10 | input_offset = 0; 11 | 12 | output = (input + input_offset) * input_scaling + zero_position_armed; 13 | end 14 | 15 | % inverse of the PixhawkOutput 16 | function input = PixhawkOutputInv(output) 17 | 18 | % params from component_snippets.xacro 19 | zero_position_armed = 0.15; 20 | input_scaling = 1; 21 | input_offset = 0; 22 | 23 | input = ((output - zero_position_armed) / input_scaling) - input_offset; 24 | end 25 | 26 | % returns the thrust [N] 27 | function thrust = MotorModel(input, motor_constant) 28 | 29 | thrust = motor_constant * (input^(2.0)); 30 | 31 | end 32 | 33 | % inverse of the MotorModel 34 | % returns the input 35 | function input = MotorModelInv(thrust, motor_constant) 36 | 37 | input = sqrt(thrust / motor_constant); 38 | 39 | end 40 | 41 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 42 | 43 | g = 9.81; 44 | 45 | % how much propellers does your UAV have? 46 | n_propellers = 4; 47 | 48 | % the motor constant for the simulated motor model 49 | % = max thrust in [N] per motor 50 | motor_constant = 8.91; 51 | 52 | % define a list of different UAV masses for computing the thrust points 53 | mass = [ 54 | 1.4; 55 | 1.8; 56 | 2.2; 57 | ]; 58 | 59 | % calculate the thrust outputs of the MRS pipeline for the defined masses 60 | for i=1:length(mass) 61 | 62 | % calculate what thrust ([0, 1]) will the Pixhawk return to achieve the 63 | % desired hover thrust? 64 | pixhawk_output(i) = MotorModelInv((g * mass(i))/n_propellers, motor_constant); 65 | 66 | % calculate what thrust ([0, 1]) will the MRS ControlManager return to 67 | % achieve the desired hover thrust? 68 | mrs_thrust(i, 1) = PixhawkOutputInv(pixhawk_output(i)); 69 | 70 | % feed it back throught the pipeline to get the thrust 71 | out_thrust_N(i, 1) = n_propellers * MotorModel(PixhawkOutput(mrs_thrust(i, 1)), motor_constant); 72 | 73 | end 74 | 75 | mrs_thrust 76 | 77 | % calculate the ka and kb thrust constants based on the masses and the mrs_thrust 78 | A = ones(length(mass), 2); 79 | 80 | for i=1:length(mass) 81 | A(i, 1) = sqrt(((mass(i)*g)/n_propellers)); 82 | end 83 | 84 | X = A\mrs_thrust; 85 | 86 | ka = X(1) 87 | kb = X(2) 88 | 89 | % Use the ka and kb constants to deduce what hover thrust mass-equivalent will be created 90 | % using the mrs_thrust. Those should be equal to the "mass" vector defined previously. 91 | % If not, something is wrong in this script. 92 | for i=1:length(mrs_thrust) 93 | 94 | mass_thrust_equivalent(i, 1) = (n_propellers * (((mrs_thrust(i) - kb) / ka)^(2.0))) / g; 95 | 96 | end 97 | 98 | % Calculate the error of estimating the mass_thrust_equivalent 99 | mass_thrust_error_error = abs(mass_thrust_equivalent - mass) 100 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/motor_thrust_curve_estimation/air2216_880kv_T1045.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 0.435; 6 | 0.527; 7 | 0.608; 8 | 0.702; 9 | 0.888; 10 | 1.076; 11 | 1.293; 12 | ]; 13 | 14 | % thrusts needed to hover 15 | thrust = [ 16 | 0.50; 17 | 0.55; 18 | 0.60; 19 | 0.65; 20 | 0.75; 21 | 0.85; 22 | 1.00; 23 | ]; 24 | 25 | thrust 26 | 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29 | 30 | % the gravitational acceleration 31 | g = 9.81; 32 | 33 | % create the main matrix 34 | A = ones(length(mass), 3); 35 | 36 | for i=1:length(mass) 37 | A(i, 1) = sqrt((mass(i)*g)); 38 | A(i, 2) = 1.0; 39 | A(i, 3) = mass(i)*g*0; 40 | end 41 | 42 | % print A 43 | A; 44 | 45 | % compute the linear coeficients 46 | X = A\thrust; 47 | 48 | % plot the constants 49 | ka = X(1) 50 | kb = X(2) 51 | kc = X(3) 52 | 53 | % plot 54 | fig = figure(1); 55 | y = 0:0.01:mass(end); 56 | x = []; 57 | for i=1:length(y) 58 | x(i) = ka*sqrt(y(i)*g) + kb + kc*y(i)*g*0; 59 | end 60 | 61 | hold off 62 | plot(x, y, 'linewidth', 3) 63 | hold on 64 | scatter(thrust, mass, 'x', 'linewidth', 3) 65 | xlabel('throttle [-]') 66 | ylabel('thrust [kg]') 67 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/motor_thrust_curve_estimation/readytosky_2312_920kv_8045.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 0.323; 6 | 0.429; 7 | 0.542; 8 | 0.663; 9 | 0.781; 10 | 0.891; 11 | ]; 12 | 13 | % thrusts needed to hover 14 | thrust = [ 15 | 0.5; 16 | 0.6; 17 | 0.7; 18 | 0.8; 19 | 0.9; 20 | 1.0; 21 | ]; 22 | 23 | thrust 24 | 25 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27 | 28 | % the gravitational acceleration 29 | g = 9.81; 30 | 31 | % create the main matrix 32 | A = ones(length(mass), 3); 33 | 34 | for i=1:length(mass) 35 | A(i, 1) = sqrt((mass(i)*g)); 36 | A(i, 2) = 1.0; 37 | A(i, 3) = mass(i)*g*0; 38 | end 39 | 40 | % print A 41 | A; 42 | 43 | % compute the linear coeficients 44 | X = A\thrust; 45 | 46 | % plot the constants 47 | ka = X(1) 48 | kb = X(2) 49 | kc = X(3) 50 | 51 | % plot 52 | fig = figure(1); 53 | y = 0:0.01:mass(end); 54 | x = []; 55 | for i=1:length(y) 56 | x(i) = ka*sqrt(y(i)*g) + kb + kc*y(i)*g*0; 57 | end 58 | 59 | hold off 60 | plot(x, y, 'linewidth', 3) 61 | hold on 62 | scatter(thrust, mass, 'x', 'linewidth', 3) 63 | xlabel('throttle [-]') 64 | ylabel('thrust [kg]') 65 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/motor_thrust_curve_estimation/readytosky_2312_920kv_9450.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 0.401; 6 | 0.529; 7 | 0.656; 8 | 0.787; 9 | 0.911; 10 | 1.024; 11 | ]; 12 | 13 | % thrusts needed to hover 14 | thrust = [ 15 | 0.5; 16 | 0.6; 17 | 0.7; 18 | 0.8; 19 | 0.9; 20 | 1.0; 21 | ]; 22 | 23 | thrust 24 | 25 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27 | 28 | % the gravitational acceleration 29 | g = 9.81; 30 | 31 | % create the main matrix 32 | A = ones(length(mass), 3); 33 | 34 | for i=1:length(mass) 35 | A(i, 1) = sqrt((mass(i)*g)); 36 | A(i, 2) = 1.0; 37 | A(i, 3) = mass(i)*g*0; 38 | end 39 | 40 | % print A 41 | A; 42 | 43 | % compute the linear coeficients 44 | X = A\thrust; 45 | 46 | % plot the constants 47 | ka = X(1) 48 | kb = X(2) 49 | kc = X(3) 50 | 51 | % plot 52 | fig = figure(1); 53 | y = 0:0.01:mass(end); 54 | x = []; 55 | for i=1:length(y) 56 | x(i) = ka*sqrt(y(i)*g) + kb + kc*y(i)*g*0; 57 | end 58 | 59 | hold off 60 | plot(x, y, 'linewidth', 3) 61 | hold on 62 | scatter(thrust, mass, 'x', 'linewidth', 3) 63 | xlabel('throttle [-]') 64 | ylabel('thrust [kg]') 65 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/motor_thrust_curve_estimation/tmotor_3110_780kv_1147_CF.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 0.621; 6 | 0.868; 7 | 1.112; 8 | 1.288; 9 | 1.625; 10 | 1.876; 11 | ]; 12 | 13 | % thrusts needed to hover 14 | thrust = [ 15 | 0.5; 16 | 0.6; 17 | 0.7; 18 | 0.8; 19 | 0.9; 20 | 1.0; 21 | ]; 22 | 23 | thrust 24 | 25 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27 | 28 | % the gravitational acceleration 29 | g = 9.81; 30 | 31 | % create the main matrix 32 | A = ones(length(mass), 3); 33 | 34 | for i=1:length(mass) 35 | A(i, 1) = sqrt((mass(i)*g)); 36 | A(i, 2) = 1.0; 37 | A(i, 3) = mass(i)*g*0; 38 | end 39 | 40 | % print A 41 | A; 42 | 43 | % compute the linear coeficients 44 | X = A\thrust; 45 | 46 | % plot the constants 47 | ka = X(1) 48 | kb = X(2) 49 | kc = X(3) 50 | 51 | % plot 52 | fig = figure(1); 53 | y = 0:0.01:mass(end); 54 | x = []; 55 | for i=1:length(y) 56 | x(i) = ka*sqrt(y(i)*g) + kb + kc*y(i)*g*0; 57 | end 58 | 59 | hold off 60 | plot(x, y, 'linewidth', 3) 61 | hold on 62 | scatter(thrust, mass, 'x', 'linewidth', 3) 63 | xlabel('throttle [-]') 64 | ylabel('thrust [kg]') 65 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/motor_thrust_curve_estimation/tmotor_3510_13inch.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 0.011; 6 | 0.041; 7 | 0.089; 8 | 0.154; 9 | 0.238; 10 | 0.337; 11 | 0.453; 12 | 0.577; 13 | 0.711; 14 | 0.85; 15 | 1.004; 16 | 1.154; 17 | 1.304; 18 | 1.414; 19 | 1.622; 20 | 1.806; 21 | 1.967; 22 | ]; 23 | 24 | % thrusts needed to hover 25 | thrust = [ 26 | 0.05; 27 | 0.1; 28 | 0.15; 29 | 0.2; 30 | 0.25; 31 | 0.3; 32 | 0.35; 33 | 0.4; 34 | 0.45; 35 | 0.5; 36 | 0.55; 37 | 0.6; 38 | 0.65; 39 | 0.7; 40 | 0.75; 41 | 0.8; 42 | 0.85; 43 | ]; 44 | 45 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 46 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 47 | 48 | % the gravitational acceleration 49 | g = 9.81; 50 | 51 | % create the main matrix 52 | A = ones(length(mass), 3); 53 | 54 | for i=1:length(mass) 55 | A(i, 1) = sqrt((mass(i)*g)); 56 | A(i, 2) = 1.0; 57 | A(i, 3) = mass(i)*g*0; 58 | end 59 | 60 | % print A 61 | A; 62 | 63 | % compute the linear coeficients 64 | X = A\thrust; 65 | 66 | % plot the constants 67 | ka = X(1) 68 | kb = X(2) 69 | kc = X(3) 70 | 71 | % plot 72 | fig = figure(1); 73 | y = 0:0.01:mass(end); 74 | x = []; 75 | for i=1:length(y) 76 | x(i) = ka*sqrt(y(i)*g) + kb + kc*y(i)*g*0; 77 | end 78 | 79 | hold off 80 | plot(x, y, 'linewidth', 3) 81 | hold on 82 | scatter(thrust, mass, 'x', 'linewidth', 3) 83 | xlabel('throttle [-]') 84 | ylabel('thrust [kg]') 85 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/b250.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | thr_min = 993 4 | thr_max = 1993 5 | 6 | thr1 = 1162 7 | thr2 = 1245 8 | 9 | % masses of UAV 10 | mass = [ 11 | 0.825; 12 | 1.185; 13 | ]; 14 | 15 | % thrusts needed to hover 16 | thrust = [ 17 | 0.169; 18 | 0.252; 19 | ]; 20 | 21 | n_motors = 4; 22 | 23 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 24 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25 | 26 | % the gravitational acceleration 27 | g = 9.81; 28 | 29 | % create the main matrix 30 | A = ones(length(mass), 2); 31 | 32 | for i=1:length(mass) 33 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 34 | end 35 | 36 | % print A 37 | A 38 | 39 | % compute the linear coeficients 40 | X = A\thrust; 41 | 42 | % plot the constants 43 | ka = X(1) 44 | kb = X(2) 45 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/brocare.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % * Weight/pwm (pwm min: 1102, max: 1903) 4 | % * 2 base batteries: 6479g/1402 5 | % * plus battery: 7582g/1445 6 | % * plus battery: 8685g/1522 7 | % * plus battery: 9788g/1558 8 | % * plus battery: 10891g/1602 9 | 10 | pwm_min = 1044; 11 | pwm_max = 1944; 12 | 13 | % masses of UAV 14 | mass = [ 15 | 8.75; 16 | 10.8; 17 | 12.9 18 | ]; 19 | 20 | thrust_pwm = [ 21 | 1650; 22 | 1730; 23 | 1810 24 | ]; 25 | 26 | n_motors = 4; 27 | 28 | % thrusts needed to hover 29 | thrust = (thrust_pwm - pwm_min) ./ (pwm_max - pwm_min); 30 | 31 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33 | 34 | % the gravitational acceleration 35 | g = 9.81; 36 | 37 | % create the main matrix 38 | A = ones(length(mass), 2); 39 | 40 | for i=1:length(mass) 41 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 42 | end 43 | 44 | % print A 45 | A 46 | 47 | % compute the linear coeficients 48 | X = A\thrust; 49 | 50 | % plot the constants 51 | ka = X(1) 52 | kb = X(2) 53 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/brus.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 14.66, 6 | 17.66, 7 | 19.30, 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 13 | ]; 14 | 15 | n_motors = 6; 16 | 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 19 | 20 | % the gravitational acceleration 21 | g = 9.81; 22 | 23 | % create the main matrix 24 | A = ones(length(mass), 2); 25 | 26 | for i=1:length(mass) 27 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 28 | end 29 | 30 | % print A 31 | A 32 | 33 | % compute the linear coeficients 34 | X = A\thrust; 35 | 36 | % plot the constants 37 | ka = X(1) 38 | kb = X(2) 39 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/dit2_initial.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 23.0; 6 | 32.2; 7 | ]; 8 | 9 | % thrusts needed to hover 10 | thrust = [ 11 | 0.50; 12 | 0.70; 13 | ]; 14 | 15 | n_motors = 4; 16 | 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 19 | 20 | % the gravitational acceleration 21 | g = 9.81; 22 | 23 | % create the main matrix 24 | A = ones(length(mass), 2); 25 | 26 | for i=1:length(mass) 27 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 28 | end 29 | 30 | % print A 31 | A 32 | 33 | % compute the linear coeficients 34 | X = A\thrust; 35 | 36 | % plot the constants 37 | ka = X(1) 38 | kb = X(2) 39 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/dofec.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % * Weight/pwm (pwm min: 1102, max: 1903) 4 | % * 2 base batteries: 6479g/1402 5 | % * plus battery: 7582g/1445 6 | % * plus battery: 8685g/1522 7 | % * plus battery: 9788g/1558 8 | % * plus battery: 10891g/1602 9 | 10 | pwm_min = 1102; 11 | pwm_max = 1903; 12 | 13 | % masses of UAV 14 | mass = [ 15 | 6.479; 16 | 7.582; 17 | 8.685; 18 | 9.788; 19 | 10.891 20 | ]; 21 | 22 | thrust_pwm = [ 23 | 1402; 24 | 1445; 25 | 1522; 26 | 1558; 27 | 1602 28 | ]; 29 | 30 | n_motors = 8; 31 | 32 | % thrusts needed to hover 33 | thrust = (thrust_pwm - pwm_min) ./ (pwm_max - pwm_min); 34 | 35 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 36 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 37 | 38 | % the gravitational acceleration 39 | g = 9.81; 40 | 41 | % create the main matrix 42 | A = ones(length(mass), 2); 43 | 44 | for i=1:length(mass) 45 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 46 | end 47 | 48 | % print A 49 | A 50 | 51 | % compute the linear coeficients 52 | X = A\thrust; 53 | 54 | % plot the constants 55 | ka = X(1) 56 | kb = X(2) 57 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/dofec1_2.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | pwm_min = 993; 4 | pwm_max = 1993; 5 | 6 | % masses of UAV 7 | mass = [ 8 | 7.75; 9 | 9.2; 10 | 10.25; 11 | ]; 12 | 13 | thrust_pwm = [ 14 | 1470; 15 | 1562; 16 | 1615; 17 | ]; 18 | 19 | thrust = (thrust_pwm - pwm_min) ./ (pwm_max - pwm_min) 20 | 21 | n_motors = 8; 22 | 23 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 24 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25 | 26 | % the gravitational acceleration 27 | g = 9.81; 28 | 29 | % create the main matrix 30 | A = ones(length(mass), 2); 31 | 32 | for i=1:length(mass) 33 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 34 | end 35 | 36 | % print A 37 | A 38 | 39 | % compute the linear coeficients 40 | X = A\thrust; 41 | 42 | % plot the constants 43 | ka = X(1) 44 | kb = X(2) 45 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/eagle.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 6.664; 6 | 8.784; 7 | 10.904 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.385; 13 | 0.446; 14 | 0.5 15 | ]; 16 | 17 | n_motors = 8; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/eaglemk2.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 11.6; 6 | 14.75; 7 | 17.4; 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.34; 13 | 0.42; 14 | 0.50; 15 | ]; 16 | 17 | n_motors = 8; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f330_9_inch.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 1.466; 6 | 1.833; 7 | 2.190; 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.57; 13 | 0.68; 14 | 0.80; 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f450.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 1.985; 6 | 2.16; 7 | 2.567 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.60; 13 | 0.64; 14 | 0.78 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f450_fake_ESCs_and_motors.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 1.84; 6 | 2.43; 7 | 3.0 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.49; 13 | 0.595; 14 | 0.695 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f450_new_escs.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 1.935; 6 | 2.503; 7 | ]; 8 | 9 | % thrusts needed to hover 10 | thrust = [ 11 | 0.383; 12 | 0.533; 13 | ]; 14 | 15 | n_motors = 4; 16 | 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 19 | 20 | % the gravitational acceleration 21 | g = 9.81; 22 | 23 | % create the main matrix 24 | A = ones(length(mass), 2); 25 | 26 | for i=1:length(mass) 27 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 28 | end 29 | 30 | % print A 31 | A 32 | 33 | % compute the linear coeficients 34 | X = A\thrust; 35 | 36 | % plot the constants 37 | ka = X(1) 38 | kb = X(2) 39 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f450_readytosky.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 2.08; 6 | 2.63; 7 | ]; 8 | 9 | % thrusts needed to hover 10 | thrust = [ 11 | 0.59; 12 | 0.72; 13 | ]; 14 | 15 | n_motors = 4; 16 | 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 19 | 20 | % the gravitational acceleration 21 | g = 9.81; 22 | 23 | % create the main matrix 24 | A = ones(length(mass), 2); 25 | 26 | for i=1:length(mass) 27 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 28 | end 29 | 30 | % print A 31 | A 32 | 33 | % compute the linear coeficients 34 | X = A\thrust; 35 | 36 | % plot the constants 37 | ka = X(1) 38 | kb = X(2) 39 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f450_swarm.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 2.28; 6 | 2.38; 7 | 2.56 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.585; 13 | 0.659; 14 | 0.70 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f450_tall_green_motors.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 2.441; 6 | 3.008; 7 | 3.565 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust_carbon = [ 12 | 0.5188; 13 | 0.6062; 14 | 0.6750 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust_carbon; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f450_tall_grey_motors.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 2.909; 6 | 3.570; 7 | 4.155 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.577; 13 | 0.65; 14 | 0.725 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f450_tii.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 2.10; 6 | 2.46; 7 | 3.01; 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.48; 13 | 0.58; 14 | 0.68; 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f450_tmotor_small.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 2.558; 6 | 3.108; 7 | 3.671 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.55; 13 | 0.64; 14 | 0.72 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f550.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 2.360; 6 | 2.848; 7 | 3.338 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.50; 13 | 0.572; 14 | 0.64 15 | ]; 16 | 17 | n_motors = 6; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f550_new_ESCs.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 2.17; 6 | 2.73; 7 | 3.19 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.415; 13 | 0.49; 14 | 0.57 15 | ]; 16 | 17 | n_motors = 6; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/f550_velodyne.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 3.485; 6 | 4.080; 7 | 4.630 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.62; 13 | 0.67; 14 | 0.77 15 | ]; 16 | 17 | n_motors = 6; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/m690.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | pwm_min = 1020; 4 | pwm_max = 2020; 5 | 6 | % masses of UAV 7 | mass = [ 8 | 4.65; 9 | 6.85; 10 | 7.95; 11 | 9.05; 12 | ]; 13 | 14 | thrust_pwm = [ 15 | 1360; 16 | 1590; 17 | 1700; 18 | 1830; 19 | ]; 20 | 21 | thrust = (thrust_pwm - pwm_min) ./ (pwm_max - pwm_min) 22 | 23 | n_motors = 4; 24 | 25 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27 | 28 | % the gravitational acceleration 29 | g = 9.81; 30 | 31 | % create the main matrix 32 | A = ones(length(mass), 2); 33 | 34 | for i=1:length(mass) 35 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 36 | end 37 | 38 | % print A 39 | A 40 | 41 | % compute the linear coeficients 42 | X = A\thrust; 43 | 44 | % plot the constants 45 | ka = X(1) 46 | kb = X(2) 47 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/naki.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 5.181 6 | 4.596 7 | 4.028 8 | 3.446 9 | ]; 10 | 11 | % thrusts needed to hover 12 | thrust = [ 13 | 0.545 14 | 0.493 15 | 0.47 16 | 0.38 17 | ]; 18 | 19 | n_motors = 8; 20 | 21 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 22 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 23 | 24 | % the gravitational acceleration 25 | g = 9.81; 26 | 27 | % create the main matrix 28 | A = ones(length(mass), 2); 29 | 30 | for i=1:length(mass) 31 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 32 | end 33 | 34 | % print A 35 | A 36 | 37 | % compute the linear coeficients 38 | X = A\thrust; 39 | 40 | % plot the constants 41 | ka = X(1) 42 | kb = X(2) 43 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/naki_v2.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | % pwm min: 1102 3 | % pwm max: 1905 4 | % 5.45 kg: 1420 5 | % 7.00 kg: 1450 6 | % 7.55 kg: 1520 7 | % 8.95 kg: 1550 8 | 9 | % masses of UAV 10 | mass = [ 11 | 5.45 12 | 7.00 13 | 7.55 14 | 8.95 15 | ]; 16 | 17 | % thrusts needed to hover 18 | thrust = [ 19 | 0.3960149439601494 20 | 0.43337484433374845 21 | 0.5205479452054794 22 | 0.5579078455790785 23 | ]; 24 | 25 | n_motors = 8; 26 | 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29 | 30 | % the gravitational acceleration 31 | g = 9.81; 32 | 33 | % create the main matrix 34 | A = ones(length(mass), 2); 35 | 36 | for i=1:length(mass) 37 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 38 | end 39 | 40 | % print A 41 | A 42 | 43 | % compute the linear coeficients 44 | X = A\thrust; 45 | 46 | % plot the constants 47 | ka = X(1) 48 | kb = X(2) 49 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/simulation_eagle.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 6.47; 6 | 10.035; 7 | 13.52; 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.29536; 13 | 0.40465; 14 | 0.49380; 15 | ]; 16 | 17 | n_motors = 8; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/simulation_f330.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 0.072; 6 | 1.4; 7 | 2.96 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.0; 13 | 0.5; 14 | 0.8 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/simulation_f450.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 0.072; 6 | 1.4; 7 | 2.96 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.0; 13 | 0.5; 14 | 0.8 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/simulation_f550.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 2.0; 6 | 3.0 7 | 4.0; 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.47 13 | 0.62 14 | 0.73 15 | ]; 16 | 17 | n_motors = 6; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/simulation_naki.m: -------------------------------------------------------------------------------- 1 | clear all 2 | 3 | % input = the desired thrust from the MRS pipeline 4 | % output = number [0, 1] which is send to the motors (ESCs) 5 | function output = PixhawkOutput(input) 6 | 7 | % params from component_snippets.xacro 8 | zero_position_armed = 0.15; 9 | input_scaling = 1; 10 | input_offset = 0; 11 | 12 | output = (input + input_offset) * input_scaling + zero_position_armed; 13 | end 14 | 15 | % inverse of the PixhawkOutput 16 | function input = PixhawkOutputInv(output) 17 | 18 | % params from component_snippets.xacro 19 | zero_position_armed = 0.15; 20 | input_scaling = 1; 21 | input_offset = 0; 22 | 23 | input = ((output - zero_position_armed) / input_scaling) - input_offset; 24 | end 25 | 26 | % returns the thrust [N] 27 | function thrust = MotorModel(input, motor_constant) 28 | 29 | thrust = motor_constant * (input^(2.0)); 30 | 31 | end 32 | 33 | % inverse of the MotorModel 34 | % returns the input 35 | function input = MotorModelInv(thrust, motor_constant) 36 | 37 | input = sqrt(thrust / motor_constant); 38 | 39 | end 40 | 41 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 42 | 43 | g = 9.81; 44 | 45 | % how much propellers does your UAV have? 46 | n_propellers = 8; 47 | 48 | % the motor constant for the simulated motor model 49 | % = max thrust in [N] per motor 50 | motor_constant = 23.44; 51 | 52 | % define a list of different UAV masses for computing the thrust points 53 | mass = [ 54 | 5.0; 55 | 6.0; 56 | 7.0; 57 | 8.0; 58 | 9.0; 59 | ]; 60 | 61 | % calculate the thrust outputs of the MRS pipeline for the defined masses 62 | for i=1:length(mass) 63 | 64 | % calculate what thrust ([0, 1]) will the Pixhawk return to achieve the 65 | % desired hover thrust? 66 | pixhawk_output(i) = MotorModelInv((g * mass(i))/n_propellers, motor_constant); 67 | 68 | % calculate what thrust ([0, 1]) will the MRS ControlManager return to 69 | % achieve the desired hover thrust? 70 | mrs_thrust(i, 1) = PixhawkOutputInv(pixhawk_output(i)); 71 | 72 | % feed it back throught the pipeline to get the thrust 73 | out_thrust_N(i, 1) = n_propellers * MotorModel(PixhawkOutput(mrs_thrust(i, 1)), motor_constant); 74 | 75 | end 76 | 77 | mrs_thrust 78 | 79 | % calculate the ka and kb thrust constants based on the masses and the mrs_thrust 80 | A = ones(length(mass), 2); 81 | 82 | for i=1:length(mass) 83 | A(i, 1) = sqrt(((mass(i)*g)/n_propellers)); 84 | end 85 | 86 | X = A\mrs_thrust; 87 | 88 | ka = X(1) 89 | kb = X(2) 90 | 91 | % Use the ka and kb constants to deduce what hover thrust mass-equivalent will be created 92 | % using the mrs_thrust. Those should be equal to the "mass" vector defined previously. 93 | % If not, something is wrong in this script. 94 | for i=1:length(mrs_thrust) 95 | 96 | mass_thrust_equivalent(i, 1) = (n_propellers * (((mrs_thrust(i) - kb) / ka)^(2.0))) / g; 97 | 98 | end 99 | 100 | % Calculate the error of estimating the mass_thrust_equivalent 101 | mass_thrust_error_error = abs(mass_thrust_equivalent - mass) 102 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/simulation_t650.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 0.207; 6 | 3.89; 7 | 8.3; 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.0; 13 | 0.5; 14 | 0.8; 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/simulation_x500.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 2.0; 6 | 3.0; 7 | 4.0; 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.47185; 13 | 0.61161; 14 | 0.72943; 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/t18_mn501.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 7.30; 6 | 10.20; 7 | 13.15; 8 | 16.05; 9 | ]; 10 | 11 | % thrusts needed to hover 12 | thrust = [ 13 | 0.354839; 14 | 0.463343; 15 | 0.57478; 16 | 0.652981; 17 | ]; 18 | 19 | n_motors = 8; 20 | 21 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 22 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 23 | 24 | % the gravitational acceleration 25 | g = 9.81; 26 | 27 | % create the main matrix 28 | A = ones(length(mass), 2); 29 | 30 | for i=1:length(mass) 31 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 32 | end 33 | 34 | % print A 35 | A 36 | 37 | % compute the linear coeficients 38 | X = A\thrust; 39 | 40 | % plot the constants 41 | ka = X(1) 42 | kb = X(2) 43 | 44 | % plot 45 | fig = figure(1); 46 | y = 0:0.01:mass(end); 47 | x = []; 48 | for i=1:length(y) 49 | x(i) = ka*sqrt(y(i)*g/n_motors) + kb; 50 | end 51 | 52 | hold off 53 | plot(x, y, 'linewidth', 3) 54 | hold on 55 | scatter(thrust, mass, 'x', 'linewidth', 3) 56 | xlabel('throttle [-]') 57 | ylabel('thrust [kg]') 58 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/tarot_650_1555_foldable.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 4.3; 6 | 4.9; 7 | ]; 8 | 9 | % thrusts needed to hover 10 | thrust = [ 11 | 0.67; 12 | 0.82; 13 | ]; 14 | 15 | n_motors = 4; 16 | 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 19 | 20 | % the gravitational acceleration 21 | g = 9.81; 22 | 23 | % create the main matrix 24 | A = ones(length(mass), 2); 25 | 26 | for i=1:length(mass) 27 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 28 | end 29 | 30 | % print A 31 | A 32 | 33 | % compute the linear coeficients 34 | X = A\thrust; 35 | 36 | % plot the constants 37 | ka = X(1) 38 | kb = X(2) 39 | -------------------------------------------------------------------------------- /miscellaneous/thrust_constants/uav_thrust_curve_estimation/tarot_650_1555_solid.m: -------------------------------------------------------------------------------- 1 | % computes ka and kb from two-point measured thrust 2 | 3 | % masses of UAV 4 | mass = [ 5 | 3.60; 6 | 4.2; 7 | 4.78; 8 | ]; 9 | 10 | % thrusts needed to hover 11 | thrust = [ 12 | 0.515; 13 | 0.59; 14 | 0.66; 15 | ]; 16 | 17 | n_motors = 4; 18 | 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | 22 | % the gravitational acceleration 23 | g = 9.81; 24 | 25 | % create the main matrix 26 | A = ones(length(mass), 2); 27 | 28 | for i=1:length(mass) 29 | A(i, 1) = sqrt((mass(i)*g)/n_motors); 30 | end 31 | 32 | % print A 33 | A 34 | 35 | % compute the linear coeficients 36 | X = A\thrust; 37 | 38 | % plot the constants 39 | ka = X(1) 40 | kb = X(2) 41 | -------------------------------------------------------------------------------- /miscellaneous/tmux_automatic_start/README.md: -------------------------------------------------------------------------------- 1 | 1. Place the tmux.service in /etc/systemd/system folder with say a name of tmux.service 2 | 2. Make that your script executable with: 3 | `chmod u+x` 4 | 3. Enable it to run at boot: 5 | `sudo systemctl enable tmux` 6 | 4. The tmux script should start with 7 | 8 | ```bash 9 | #!/bin/bash 10 | ### BEGIN INIT INFO 11 | # Provides: miner 12 | # Required-Start: $local_fs $network dbus 13 | # Required-Stop: $local_fs $network 14 | # Default-Start: 2 3 4 5 15 | # Default-Stop: 0 1 6 16 | # Short-Description: start the uav 17 | ### END INIT INFO 18 | if [ "$(id -u)" == "0" ]; then 19 | exec sudo -u mrs "$0" "$@" 20 | fi 21 | ``` 22 | 23 | 1. The script should not be attaching to the session (at the end), so COMMENT the line: 24 | $TMUX_BIN -2 attach-session -t $SESSION_NAME 25 | -------------------------------------------------------------------------------- /miscellaneous/tmux_automatic_start/tmux.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Tmux Autostart 3 | After=network.target suspend.target hibernate.target hybrid-sleep.target 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStart=/home/mrs/tmux.sh 8 | RemainAfterExit=true 9 | 10 | [Install] 11 | WantedBy=suspend.target hibernate.target hybrid-sleep.target multi-user.target 12 | -------------------------------------------------------------------------------- /miscellaneous/udev_rules/99-usb-serial_F330_PCB.rules: -------------------------------------------------------------------------------- 1 | # RULES FOR F330 POWER DISTRIBUTION BOARD 2 | # Pixhawk 3 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", ENV{ID_USB_INTERFACE_NUM}=="00", SYMLINK+="pixhawk",OWNER="mrs",MODE="0666" 4 | # MRS Module 1 5 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", ENV{ID_USB_INTERFACE_NUM}=="01", SYMLINK+="MRS_MODULE1",OWNER="mrs",MODE="0666" 6 | -------------------------------------------------------------------------------- /miscellaneous/udev_rules/99-usb-serial_F450_PCB.rules: -------------------------------------------------------------------------------- 1 | #SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="pixhawk", OWNER="mrs", MODE="0666" 2 | 3 | # RULES for F450 Distribution Board 4 | # Pixhawk 5 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="00", SYMLINK+="pixhawk",OWNER="mrs",MODE="0666" 6 | # MRS Module 1 7 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="01", SYMLINK+="MRS_MODULE1",OWNER="mrs",MODE="0666" 8 | # MRS Module 2 9 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="02", SYMLINK+="MRS_MODULE2",OWNER="mrs",MODE="0666" 10 | # MRS Module 3 11 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="03", SYMLINK+="MRS_MODULE3",OWNER="mrs",MODE="0666" 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /miscellaneous/udev_rules/99-usb-serial_T650_PCB.rules: -------------------------------------------------------------------------------- 1 | #SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="pixhawk", OWNER="mrs", MODE="0666" 2 | 3 | # RULES for F450 Distribution Board 4 | # Pixhawk 5 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="00", SYMLINK+="pixhawk",OWNER="mrs",MODE="0666" 6 | # MRS Module 1 7 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="01", SYMLINK+="MRS_MODULE1",OWNER="mrs",MODE="0666" 8 | # MRS Module 2 9 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="02", SYMLINK+="MRS_MODULE2",OWNER="mrs",MODE="0666" 10 | # STM32 11 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="03", SYMLINK+="MRS_MCU",OWNER="mrs",MODE="0666" 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /miscellaneous/udev_rules/99-usb-serial_X500_PCB.rules: -------------------------------------------------------------------------------- 1 | #SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="pixhawk", OWNER="mrs", MODE="0666" 2 | 3 | # RULES for F450 Distribution Board 4 | # Pixhawk 5 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="03", SYMLINK+="pixhawk",OWNER="mrs",MODE="0666" 6 | # MRS Module 1 7 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="00", SYMLINK+="MRS_MODULE1",OWNER="mrs",MODE="0666" 8 | # MRS Module 2 9 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="01", SYMLINK+="MRS_MODULE2",OWNER="mrs",MODE="0666" 10 | # MRS Module 3 11 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="02", SYMLINK+="MRS_MODULE3",OWNER="mrs",MODE="0666" 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /miscellaneous/udev_rules/README.md: -------------------------------------------------------------------------------- 1 | # copy file and modify it according to UAV's ftdi 2 | # their list is in /dev/serial/by-id/ 3 | # 4 | sudo cp 99-usb-serial.rules /etc/udev/rules.d/. 5 | 6 | # Parsing ID's for udev rules 7 | For this use the following command 8 | ``` 9 | dmesg 10 | ``` 11 | unplug the device, then plug it in and run the command -------------------------------------------------------------------------------- /miscellaneous/udev_rules/datapodavac/99-usb-serial.rules: -------------------------------------------------------------------------------- 1 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_PATH}=="pci-0000:00:14.0-usb-0:3.2:1.0",SYMLINK+="pixhawk",OWNER="mrs",MODE="0666" 2 | SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="rplidar",OWNER="mrs",MODE="0666" 3 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_PATH}=="pci-0000:00:14.0-usb-0:3.2:1.1", SYMLINK+="thermal_top",OWNER="mrs",MODE="0666" 4 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_PATH}=="pci-0000:00:14.0-usb-0:3.2:1.2", SYMLINK+="thermal_middle",OWNER="mrs",MODE="0666" 5 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", ENV{ID_PATH}=="pci-0000:00:14.0-usb-0:3.2:1.3", SYMLINK+="thermal_bottom",OWNER="mrs",MODE="0666" 6 | 7 | SUBSYSTEM=="tty", ATTRS{idVendor}=="fe10", ATTRS{idProduct}=="f702", SYMLINK+="datapodavac",OWNER="mrs",MODE="0666" 8 | -------------------------------------------------------------------------------- /miscellaneous/what_to_change_after_image_restore/tutorial.txt: -------------------------------------------------------------------------------- 1 | 1) fill UAV_NAME (e.g. uav34) in /etc/hostname 2 | 2) fill UAV_NAME (e.g. uav34) in /etc/hosts 3 | 3) change IP Adress for eth0 and wlan0 in /etc/netplan/01.netcfg.yaml 4 | 4) edit ~/.bashrc, find variable UAV_NAME and set it, the find NATO_NAME and set it according to ~/git/uav_core/miscelaneous/dotssh/generatesshconfig.sh 5 | 5) fill out the SENSORS variable in ~/.bashrc with the equipped sensors 6 | 6) run the ~/git/uav_core/miscelaneous/scripts/check_uav.sh script, and make sure that everything is valid 7 | -------------------------------------------------------------------------------- /ros_packages/mavros: -------------------------------------------------------------------------------- 1 | ../.gitman/mavros/. -------------------------------------------------------------------------------- /ros_packages/mrs_bumper: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_bumper/. -------------------------------------------------------------------------------- /ros_packages/mrs_lib: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_lib/. -------------------------------------------------------------------------------- /ros_packages/mrs_mavros_interface: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_mavros_interface/. -------------------------------------------------------------------------------- /ros_packages/mrs_msgs: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_msgs/. -------------------------------------------------------------------------------- /ros_packages/mrs_rviz_plugins: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_rviz_plugins/. -------------------------------------------------------------------------------- /ros_packages/mrs_uav_controllers: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_uav_controllers/. -------------------------------------------------------------------------------- /ros_packages/mrs_uav_general: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_uav_general/. -------------------------------------------------------------------------------- /ros_packages/mrs_uav_managers: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_uav_managers/. -------------------------------------------------------------------------------- /ros_packages/mrs_uav_odometry: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_uav_odometry/. -------------------------------------------------------------------------------- /ros_packages/mrs_uav_status: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_uav_status/. -------------------------------------------------------------------------------- /ros_packages/mrs_uav_testing: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_uav_testing/. -------------------------------------------------------------------------------- /ros_packages/mrs_uav_trackers: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_uav_trackers/. -------------------------------------------------------------------------------- /ros_packages/mrs_uav_trajectory_generation: -------------------------------------------------------------------------------- 1 | ../.gitman/mrs_uav_trajectory_generation/. -------------------------------------------------------------------------------- /ros_packages/pull_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # get the path to this script 4 | MY_PATH=`dirname "$0"` 5 | MY_PATH=`( cd "$MY_PATH" && pwd )` 6 | 7 | cd $MY_PATH 8 | 9 | input=( 10 | "mrs_bumper" "master" 11 | "mrs_lib" "master" 12 | "mrs_mavros_interface" "master" 13 | "mrs_msgs" "master" 14 | "mrs_rviz_plugins" "master" 15 | "mrs_uav_controllers" "master" 16 | "mrs_uav_general" "master" 17 | "mrs_uav_managers" "master" 18 | "mrs_uav_odometry" "master" 19 | "mrs_uav_status" "master" 20 | "mrs_uav_testing" "master" 21 | "mrs_uav_trackers" "master" 22 | "mrs_uav_trajectory_generation" "master" 23 | ) 24 | 25 | # create arrays of names and commands 26 | for ((i=0; i < ${#input[*]}; i++)); 27 | do 28 | ((i%2==0)) && repos[$i/2]="${input[$i]}" 29 | ((i%2==1)) && branches[$i/2]="${input[$i]}" 30 | done 31 | 32 | # copy the files 33 | for ((i=0; i < ((${#repos[*]})); i++)); 34 | do 35 | 36 | echo Pulling "${repos[$i]}", branch ${branches[$i]} 37 | 38 | cd ${repos[$i]} 39 | 40 | git checkout ${branches[$i]} 41 | git pull 42 | 43 | cd .. 44 | 45 | echo "" 46 | 47 | done 48 | -------------------------------------------------------------------------------- /ros_packages/push_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # get the path to this script 4 | MY_PATH=`dirname "$0"` 5 | MY_PATH=`( cd "$MY_PATH" && pwd )` 6 | 7 | cd $MY_PATH 8 | 9 | input=( 10 | "mrs_bumper" "master" 11 | "mrs_lib" "master" 12 | "mrs_mavros_interface" "master" 13 | "mrs_msgs" "master" 14 | "mrs_rviz_plugins" "master" 15 | "mrs_uav_controllers" "master" 16 | "mrs_uav_general" "master" 17 | "mrs_uav_managers" "master" 18 | "mrs_uav_odometry" "master" 19 | "mrs_uav_status" "master" 20 | "mrs_uav_testing" "master" 21 | "mrs_uav_trackers" "master" 22 | "mrs_uav_trajectory_generation" "master" 23 | ) 24 | 25 | # create arrays of names and commands 26 | for ((i=0; i < ${#input[*]}; i++)); 27 | do 28 | ((i%2==0)) && repos[$i/2]="${input[$i]}" 29 | ((i%2==1)) && branches[$i/2]="${input[$i]}" 30 | done 31 | 32 | # copy the files 33 | for ((i=0; i < ((${#repos[*]})); i++)); 34 | do 35 | 36 | echo Pulling "${repos[$i]}", branch ${branches[$i]} 37 | 38 | cd ${repos[$i]} 39 | 40 | git checkout ${branches[$i]} 41 | 42 | old_remote=$(git remote get-url origin) 43 | new_remote=$(echo $old_remote | sed -r 's|https://([^/]+)/(.+)|git@\1:\2|' | head -n 1) 44 | 45 | if [ -n "$new_remote" ]; then 46 | git remote set-url origin "$new_remote" 47 | fi 48 | 49 | git push 50 | 51 | cd .. 52 | 53 | echo "" 54 | 55 | done 56 | -------------------------------------------------------------------------------- /ros_packages/thirdparty/nlopt_ros: -------------------------------------------------------------------------------- 1 | ../../.gitman/nlopt_ros/. -------------------------------------------------------------------------------- /ros_packages/thirdparty/tf2: -------------------------------------------------------------------------------- 1 | ../../.gitman/tf2/. -------------------------------------------------------------------------------- /tmux_scripts/README.md: -------------------------------------------------------------------------------- 1 | # UAV tmux scripts 2 | 3 | Example of tmux scritps that are used to run the system on a real UAV. 4 | Do NOT use for simulation, the simulation scripts are located in the [simulation](http://github.com/ctu-mrs/simulation) repository. 5 | -------------------------------------------------------------------------------- /tmux_scripts/swarming_template/custom_configs/automatic_start.yaml: -------------------------------------------------------------------------------- 1 | safety_timeout: 10.0 # [s] 2 | 3 | topic_check: 4 | 5 | enabled: true 6 | timeout: 5.0 # [s], a window for the last accepted message 7 | 8 | # if "/" is provided at the beginning of topic_name, the topic name is considered as written, 9 | # if there is no "/" at the beginning, UAV_NAME is automatically added in from of the topic name (/uav1/topic_name) 10 | topics: [ 11 | "odometry/uav_state", 12 | "control_manager/diagnostics", 13 | ] 14 | -------------------------------------------------------------------------------- /tmux_scripts/swarming_template/custom_configs/constraint_manager.yaml: -------------------------------------------------------------------------------- 1 | constraints: [ 2 | "slow", 3 | "medium", 4 | ] 5 | 6 | constraint_management: 7 | 8 | # list of allowed gains per odometry mode 9 | allowed_constraints: 10 | RTK: ["slow", "medium"] 11 | GPS: ["slow", "medium"] 12 | 13 | # those gains will be used automatically when a localization mode switches 14 | # and the current gains are not in the allowed list (next paragraphs) 15 | fallback_constraints: 16 | RTK: "slow" 17 | GPS: "slow" 18 | 19 | slow: 20 | 21 | horizontal: 22 | speed: 2.0 23 | acceleration: 1.0 24 | jerk: 20.0 25 | snap: 20.0 26 | 27 | vertical: 28 | 29 | ascending: 30 | speed: 1.0 31 | acceleration: 1.0 32 | jerk: 2.0 33 | snap: 2.0 34 | 35 | descending: 36 | speed: 1.0 37 | acceleration: 1.0 38 | jerk: 2.0 39 | snap: 2.0 40 | 41 | heading: 42 | speed: 0.5 43 | acceleration: 0.5 44 | jerk: 10.0 45 | snap: 10.0 46 | 47 | angular_speed: 48 | roll: 10.0 49 | pitch: 10.0 50 | yaw: 1.0 51 | 52 | tilt: deg(60) 53 | 54 | medium: 55 | 56 | horizontal: 57 | speed: 4.0 58 | acceleration: 2.0 59 | jerk: 20.0 60 | snap: 20.0 61 | 62 | vertical: 63 | 64 | ascending: 65 | speed: 2.0 66 | acceleration: 1.0 67 | jerk: 3.0 68 | snap: 5.0 69 | 70 | descending: 71 | speed: 2.0 72 | acceleration: 1.0 73 | jerk: 3.0 74 | snap: 5.0 75 | 76 | heading: 77 | speed: 1.0 78 | acceleration: 1.0 79 | jerk: 10.0 80 | snap: 10.0 81 | 82 | angular_speed: 83 | roll: 60.0 84 | pitch: 60.0 85 | yaw: 10.0 86 | 87 | tilt: deg(60) 88 | -------------------------------------------------------------------------------- /tmux_scripts/swarming_template/custom_configs/control_manager.yaml: -------------------------------------------------------------------------------- 1 | safety: 2 | 3 | escalating_failsafe: 4 | 5 | # how often does it allow to escalate 6 | timeout: 2.0 # [s] 7 | 8 | ehover: true 9 | eland: true 10 | failsafe: true 11 | 12 | Se3Controller: 13 | address: "mrs_uav_controllers/Se3Controller" 14 | namespace: "se3_controller" 15 | eland_threshold: 2.0 # [m], position error triggering eland 16 | failsafe_threshold: 3.0 # [m], position error triggering failsafe land 17 | odometry_innovation_threshold: 2.0 # [m], position odometry innovation threshold 18 | -------------------------------------------------------------------------------- /tmux_scripts/swarming_template/custom_configs/landoff_tracker.yaml: -------------------------------------------------------------------------------- 1 | vertical_tracker: 2 | 3 | takeoff_speed: 1.0 4 | takeoff_acceleration: 1.0 5 | -------------------------------------------------------------------------------- /tmux_scripts/swarming_template/custom_configs/mpc_tracker.yaml: -------------------------------------------------------------------------------- 1 | # mrs collision avoidance 2 | collision_avoidance: 3 | 4 | enabled: true 5 | radius: 3.0 # [m] 6 | trajectory_timeout: 2.0 # [s] 7 | -------------------------------------------------------------------------------- /tmux_scripts/swarming_template/custom_configs/nimbro.yaml: -------------------------------------------------------------------------------- 1 | topics: # topics published out of this machine to receivers specified above 2 | - name: "control_manager/mpc_tracker/diagnostics" 3 | compress: true # enable bz2 compression 4 | rate: 1.0 5 | - name: "control_manager/diagnostics" 6 | compress: true # enable bz2 compression 7 | rate: 1.0 8 | - name: "uav_manager/diagnostics" 9 | compress: true # enable bz2 compression 10 | rate: 1.0 11 | - name: "odometry/slow_odom" 12 | compress: true # enable bz2 compression 13 | rate: 1.0 14 | - name: "control_manager/mpc_tracker/predicted_trajectory" 15 | compress: true # enable bz2 compression 16 | rate: 2.0 17 | - name: "mrs_uav_status/uav_status" 18 | compress: true # enable bz2 compression 19 | rate: 1.0 20 | - name: "mrs_uav_status/uav_status_short" 21 | compress: true # enable bz2 compression 22 | rate: 10.0 23 | 24 | services: 25 | - name: "trajectory_generation/path" 26 | type: mrs_msgs/PathSrv 27 | - name: "control_manager/goto_trajectory_start" 28 | type: std_srvs/Trigger 29 | - name: "control_manager/start_trajectory_tracking" 30 | type: std_srvs/Trigger 31 | - name: "control_manager/trajectory_reference" 32 | type: mrs_msgs/TrajectoryReferenceSrv 33 | - name: "uav_manager/land_home" 34 | type: std_srvs/Trigger 35 | - name: "control_manager/switch_controller" 36 | type: mrs_msgs/String 37 | - name: "control_manager/switch_tracker" 38 | type: mrs_msgs/String 39 | - name: "constraint_manager/set_constraints" 40 | type: mrs_msgs/String 41 | - name: "control_manager/enable_callbacks" 42 | type: std_srvs/SetBool 43 | - name: "odometry/change_alt_estimator_type_string" 44 | type: mrs_msgs/String 45 | -------------------------------------------------------------------------------- /tmux_scripts/swarming_template/custom_configs/odometry.yaml: -------------------------------------------------------------------------------- 1 | # Altitude state estimator: 2 | # HEIGHT - rangefinder 3 | # BARO - baro 4 | altitude_estimator: "HEIGHT" 5 | 6 | altitude: 7 | 8 | # Process covariance 9 | Q: [100.0, 0, 0, 10 | 0, 100000.0, 0, 11 | 0, 0, 100000.0] 12 | 13 | # Covariances of measurements 14 | R: 15 | height_range: [1000.0] 16 | height_baro: [100.0] 17 | vel_baro: [100.0] 18 | -------------------------------------------------------------------------------- /tmux_scripts/swarming_template/custom_configs/uav_manager.yaml: -------------------------------------------------------------------------------- 1 | takeoff: 2 | 3 | during_takeoff: 4 | controller: "Se3Controller" 5 | tracker: "LandoffTracker" 6 | 7 | after_takeoff: 8 | controller: "Se3Controller" 9 | tracker: "MpcTracker" 10 | 11 | takeoff_height: 2.5 12 | 13 | # periodically checks if min height was exceeded 14 | # if so, retakes control and descends below it 15 | min_height_checking: 16 | 17 | enabled: true 18 | min_height: 1.5 # [m] 19 | safety_height_offset: 0.25 # how much higher to ascend above the min height 20 | 21 | landing: 22 | 23 | # if the UAV height is available and 24 | # if the UAV higher than this: 25 | # it will first descend to this height 26 | # and then land slowly and safely 27 | descend_height: 2.5 # [m] 28 | -------------------------------------------------------------------------------- /tmux_scripts/swarming_template/custom_configs/uav_names.yaml: -------------------------------------------------------------------------------- 1 | # 1. This list is used by NimbroNetwork for mutual communication of the UAVs 2 | # The names of the robots have to match hostnames described in /etc/hosts. 3 | # Update the /etc/hosts by running: 4 | # 5 | # uav_core/miscellaneous/dotssh/generate_ssh_config.sh 6 | # 7 | # 2. This list is used by MpcTracker for mutual collision avoidance of the UAVs. 8 | # The names should match the true "UAV_NAMES" (the topic prefixes). 9 | # 10 | # 3. This list is a GENERAL LIST containing all possible UAVs we have. 11 | # However, this is suboptimal but at least it provides some form of functionality. 12 | # THUS everyone should have a custom config at its tmux script, containing just 13 | # the UAVs that are going to be flying in the same area. You can add the custom config 14 | # by adding: 15 | # 16 | # config_uav_names:=~/custom_configs/uav_names.yaml 17 | # 18 | # to the core.launch and nimbro.launch. 19 | 20 | network: 21 | 22 | robot_names: [ 23 | 24 | uav1, uav2, uav3, uav4, uav5, 25 | 26 | ] 27 | -------------------------------------------------------------------------------- /tmux_scripts/swarming_template/record.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | path="/home/\$(optenv USER mrs)/bag_files/latest/" 4 | 5 | # By default, we record everything. 6 | # Except for this list of EXCLUDED topics: 7 | exclude=( 8 | 9 | # IN GENERAL, DON'T RECORD CAMERAS 10 | # 11 | # If you want to record cameras, create a copy of this script 12 | # and place it at your tmux session. 13 | # 14 | # Please, seek an advice of a senior researcher of MRS about 15 | # what can be recorded. Recording too much data can lead to 16 | # ROS communication hiccups, which can lead to eland, failsafe 17 | # or just a CRASH. 18 | 19 | # Every topic containing "compressed" 20 | '(.*)compressed(.*)' 21 | # Every topic containing "image_raw" 22 | '(.*)image_raw(.*)' 23 | # Every topic containing "theora" 24 | '(.*)theora(.*)' 25 | # Every topic containing "h264" 26 | '(.*)h264(.*)' 27 | 28 | ) 29 | 30 | # file's header 31 | filename=`mktemp` 32 | echo "" > "$filename" 33 | echo "" >> "$filename" 34 | echo "" >> "$filename" 35 | 36 | echo -n "> "$filename" 37 | 38 | # if there is anything to exclude 39 | if [ "${#exclude[*]}" -gt 0 ]; then 40 | 41 | echo -n " -x " >> "$filename" 42 | 43 | # list all the string and separate the with | 44 | for ((i=0; i < ${#exclude[*]}; i++)); 45 | do 46 | echo -n "${exclude[$i]}" >> "$filename" 47 | if [ "$i" -lt "$( expr ${#exclude[*]} - 1)" ]; then 48 | echo -n "|" >> "$filename" 49 | fi 50 | done 51 | 52 | fi 53 | 54 | echo "\">" >> "$filename" 55 | 56 | echo "" >> "$filename" 57 | echo "" >> "$filename" 58 | 59 | # file's footer 60 | echo "" >> "$filename" 61 | echo "" >> "$filename" 62 | echo "" >> "$filename" 63 | 64 | cat $filename 65 | roslaunch $filename 66 | -------------------------------------------------------------------------------- /tmux_scripts/swarming_template/world.yaml: -------------------------------------------------------------------------------- 1 | # 2 | ## DEFINITION OF THE ARENA 3 | # 4 | 5 | # definition of the points 6 | # A = 49.449998, 18.233608 7 | # B = 49.449802, 18.233672 8 | # C = 49.449668, 18.233598 9 | # D = 49.449428, 18.233674 10 | # E = 49.449132, 18.233273 11 | # F = 49.499246, 18.233074 12 | # G = 49.449350, 18.233186 13 | # H = 49.449435, 18.232611 14 | # I = 49.449609, 18.232708 15 | # J = 49.449821, 18.232943 16 | # Fň = 49.449858, 18.233153 17 | # K = 49.449955, 18.233322 18 | # ORIGIN = 49.449616, 18.233141 19 | 20 | utm_origin_units: 1 # 0 - UTM, 1 - Latitude Longitude 21 | # !!! BEWARE !!!: the lat&lon and UTM coordinates below might be wrong 22 | # !!! do NOT just switch utm_origin_units from 0<->1, the other form 23 | # !!! might not be updated or even set correctly in the first place. 24 | utm_origin_x: 0.0 25 | utm_origin_y: 0.0 26 | utm_origin_lat: 49.449616 27 | utm_origin_lon: 18.233141 28 | 29 | init_gps_origin_local: false # origin of gps_origin will be in the position of UAV at odometry launch 30 | init_gps_offset_x: 0.0 # initial position of UAV relative to gps_origin when init_gps_origin_local is enabled 31 | init_gps_offset_y: 0.0 # initial position of UAV relative to gps_origin when init_gps_origin_local is enabled 32 | 33 | safety_area: 34 | 35 | use_safety_area: true 36 | 37 | frame_name: "latlon_origin" 38 | 39 | # convex polygon CCW 40 | # big area 41 | safety_area: [ 42 | 43 | # default, large without the football field 44 | 49.449998, 18.233608, # A 45 | 49.449802, 18.233672, # B 46 | 49.449668, 18.233598, # C 47 | 49.449428, 18.233674, # D 48 | 49.449132, 18.233273, # E 49 | 49.449246, 18.233074, # F, football 50 | # 49.449350, 18.233186, # G 51 | 49.449435, 18.232611, # H , football 52 | # 49.449609, 18.232708, # I 53 | 49.449821, 18.232943, # J 54 | 49.449858, 18.233153, # Fň 55 | 49.449955, 18.233322, # K 56 | 57 | ] 58 | 59 | polygon_obstacles: 60 | # loaded as a vector of matrices 61 | # each matrix has polygon vertices in columns 62 | # [[M1], [M2]] 63 | enabled: true 64 | data: [49.449227, 49.449211, 49.449338, 49.449357, 49.449430, 49.449483, 49.449500, 49.449453, 65 | 18.232965, 18.233002, 18.233148, 18.233110, 18.232651, 18.232695, 18.232639, 18.232600,] 66 | rows: 2 # each matrix has two rows 67 | cols: [4, 4] # nums of cols of each matrix 68 | 69 | point_obstacles: 70 | # loaded as a vector of matrices 71 | # x, y, radius 72 | enabled: false 73 | # [x1, y1, radisu1, height1, 74 | # x2, y2, radius2, height2] 75 | data: [49.449294, 18.233058, 3, 2.5, 76 | 49.449470, 18.232655, 3, 2.5] 77 | rows: 1 # each matrix has a single row 78 | cols: [4, 4] # nums of cols of each matrix 79 | 80 | max_height: 50.0 81 | min_height: -50.0 82 | -------------------------------------------------------------------------------- /tmux_scripts/synchronized_tmuxinator/session.yml: -------------------------------------------------------------------------------- 1 | name: experiment 2 | root: ./ 3 | startup_window: gazebo 4 | tmux_options: -f ./tmux.conf 5 | windows: 6 | - gazebo: 7 | layout: tiled 8 | synchronize: after 9 | panes: 10 | - ssh uav3 11 | - ssh uav4 12 | - ssh uav5 13 | - ssh uav7 14 | - ssh uav9 15 | -------------------------------------------------------------------------------- /tmux_scripts/synchronized_tmuxinator/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Absolute path to this script. /home/user/bin/foo.sh 4 | SCRIPT=$(readlink -f $0) 5 | # Absolute path this script is in. /home/user/bin 6 | SCRIPTPATH=`dirname $SCRIPT` 7 | cd "$SCRIPTPATH" 8 | 9 | # start tmuxinator 10 | tmuxinator start -p ./session.yml 11 | -------------------------------------------------------------------------------- /utils/termviz: -------------------------------------------------------------------------------- 1 | ../.gitman/termviz/. -------------------------------------------------------------------------------- /utils/tmux: -------------------------------------------------------------------------------- 1 | ../.gitman/tmux/. -------------------------------------------------------------------------------- /utils/tmuxinator: -------------------------------------------------------------------------------- 1 | ../.gitman/tmuxinator/. --------------------------------------------------------------------------------