Compare commits
78 Commits
fix-builde
...
clover-min
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
594733385f | ||
|
|
b0ea2f9a96 | ||
|
|
bbb481522e | ||
|
|
52f4ac4bbd | ||
|
|
96eae2d50c | ||
|
|
d58d238ace | ||
|
|
cdd6000c58 | ||
|
|
480a9b1f0a | ||
|
|
4943cb94b0 | ||
|
|
f735d9276b | ||
|
|
e0ca1272bb | ||
|
|
cb88537ddc | ||
|
|
659380c575 | ||
|
|
b4a8119bd7 | ||
|
|
c72eb1b440 | ||
|
|
f825901a19 | ||
|
|
200c5dea57 | ||
|
|
0504569b0c | ||
|
|
9829ee2e72 | ||
|
|
dfdaf3aa4f | ||
|
|
63f979c2ff | ||
|
|
b8dafce816 | ||
|
|
9a7928511a | ||
|
|
8ce700380c | ||
|
|
720b7d4274 | ||
|
|
efaddd34c8 | ||
|
|
5d29453ae0 | ||
|
|
19e0b94fda | ||
|
|
957e57692c | ||
|
|
0d49c426eb | ||
|
|
b1f104ce5e | ||
|
|
80177b3ea4 | ||
|
|
3223d3817e | ||
|
|
4612f7e9f0 | ||
|
|
a026410fdb | ||
|
|
dd1a212cd0 | ||
|
|
20b6824012 | ||
|
|
6f6933234c | ||
|
|
3edafbef97 | ||
|
|
7740a136ce | ||
|
|
380112de6a | ||
|
|
79f5c6d0e7 | ||
|
|
e207b55966 | ||
|
|
043a4ad67c | ||
|
|
dbeb2b354d | ||
|
|
6134965f2a | ||
|
|
976bb7aeea | ||
|
|
faa0e6d8d2 | ||
|
|
d02151aedd | ||
|
|
7f0606397e | ||
|
|
fb2842a0a1 | ||
|
|
9a9621ab4b | ||
|
|
171804149c | ||
|
|
0cb7494023 | ||
|
|
e0a81e0ca8 | ||
|
|
1e5e9cdc43 | ||
|
|
5e315c477e | ||
|
|
f45000f595 | ||
|
|
48a1385a1a | ||
|
|
765c470baa | ||
|
|
fd69beed7b | ||
|
|
1d4179bccf | ||
|
|
0b2095bbb8 | ||
|
|
a0436fbcc5 | ||
|
|
aee867d6bc | ||
|
|
3c078ab92f | ||
|
|
d780aedb88 | ||
|
|
a16d9d80fc | ||
|
|
10d250d96a | ||
|
|
acdcf20392 | ||
|
|
796d614f5e | ||
|
|
f8de7443d7 | ||
|
|
5c3ffdbeb6 | ||
|
|
1c732137c6 | ||
|
|
345aad9e64 | ||
|
|
02c67ea71a | ||
|
|
050e0fedb9 | ||
|
|
0e9b54934c |
@@ -77,6 +77,7 @@ jobs:
|
|||||||
- sudo sh -c "echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections"
|
- sudo sh -c "echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections"
|
||||||
- sudo apt update && sudo apt install -y calibre msttcorefonts
|
- sudo apt update && sudo apt install -y calibre msttcorefonts
|
||||||
- npm install gitbook-cli -g
|
- npm install gitbook-cli -g
|
||||||
|
- gitbook fetch 3.2.3 && npm i npm@3.10.10 --prefix=~/.gitbook/versions/3.2.3/ # fixing https://travis-ci.org/github/CopterExpress/clover/jobs/766541125#L932
|
||||||
- npm install markdownlint-cli -g
|
- npm install markdownlint-cli -g
|
||||||
- npm install svgexport -g
|
- npm install svgexport -g
|
||||||
- gitbook -V
|
- gitbook -V
|
||||||
@@ -87,7 +88,13 @@ jobs:
|
|||||||
- ./check_unused_assets.py
|
- ./check_unused_assets.py
|
||||||
- gitbook install
|
- gitbook install
|
||||||
- gitbook build
|
- gitbook build
|
||||||
- gitbook pdf ./ _book/clover.pdf
|
- for i in 1 2 3 4; do gitbook pdf ./ _book/clover.pdf && break || sleep 1; done
|
||||||
|
- sudo apt-get install ghostscript
|
||||||
|
- gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=_book/clover_ru_compressed.pdf _book/clover_ru.pdf
|
||||||
|
- gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=_book/clover_en_compressed.pdf _book/clover_en.pdf
|
||||||
|
- rm _book/clover_ru.pdf && mv _book/clover_ru_compressed.pdf _book/clover_ru.pdf
|
||||||
|
- rm _book/clover_en.pdf && mv _book/clover_en_compressed.pdf _book/clover_en.pdf
|
||||||
|
- ls -lah _book/clover*.pdf
|
||||||
deploy:
|
deploy:
|
||||||
provider: pages
|
provider: pages
|
||||||
local_dir: _book
|
local_dir: _book
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ Clover drone is used on a wide range of educational events, including [Copter Ha
|
|||||||
Preconfigured image for Raspberry Pi with installed and configured software, ready to fly, is available [in the Releases section](https://github.com/CopterExpress/clover/releases).
|
Preconfigured image for Raspberry Pi with installed and configured software, ready to fly, is available [in the Releases section](https://github.com/CopterExpress/clover/releases).
|
||||||
|
|
||||||
[](https://travis-ci.org/CopterExpress/clover)
|
[](https://travis-ci.org/CopterExpress/clover)
|
||||||
|

|
||||||
|
|
||||||
Image features:
|
Image features:
|
||||||
|
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ generate_messages(
|
|||||||
|
|
||||||
## Generate dynamic reconfigure parameters in the 'cfg' folder
|
## Generate dynamic reconfigure parameters in the 'cfg' folder
|
||||||
generate_dynamic_reconfigure_options(
|
generate_dynamic_reconfigure_options(
|
||||||
cfg/DetectorParams.cfg
|
cfg/Detector.cfg
|
||||||
)
|
)
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
|
|||||||
11
builder/assets/examples/get_telemetry.py
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Information: https://clover.coex.tech/en/simple_offboard.html#gettelemetry
|
||||||
|
|
||||||
|
import rospy
|
||||||
|
from clover import srv
|
||||||
|
|
||||||
|
rospy.init_node('flight')
|
||||||
|
|
||||||
|
get_telemetry = rospy.ServiceProxy('get_telemetry', srv.GetTelemetry)
|
||||||
|
|
||||||
|
# Print drone's state
|
||||||
|
print(get_telemetry())
|
||||||
@@ -65,7 +65,7 @@ echo_stamp "#6 Turn on UART"
|
|||||||
# https://github.com/RPi-Distro/raspi-config/pull/75
|
# https://github.com/RPi-Distro/raspi-config/pull/75
|
||||||
/usr/bin/raspi-config nonint do_serial 1
|
/usr/bin/raspi-config nonint do_serial 1
|
||||||
/usr/bin/raspi-config nonint set_config_var enable_uart 1 /boot/config.txt
|
/usr/bin/raspi-config nonint set_config_var enable_uart 1 /boot/config.txt
|
||||||
/usr/bin/raspi-config nonint set_config_var dtoverlay pi3-disable-bt /boot/config.txt
|
echo dtoverlay=pi3-disable-bt >> /boot/config.txt
|
||||||
systemctl disable hciuart.service
|
systemctl disable hciuart.service
|
||||||
|
|
||||||
# After adding to Raspbian OS
|
# After adding to Raspbian OS
|
||||||
@@ -79,4 +79,14 @@ if ! grep -q "^bcm2835-v4l2" /etc/modules;
|
|||||||
then printf "bcm2835-v4l2\n" >> /etc/modules
|
then printf "bcm2835-v4l2\n" >> /etc/modules
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo_stamp "#8 End of configure hardware interfaces"
|
echo_stamp "#8 Check if Compute Module 4"
|
||||||
|
if grep -q "Compute Module 4" "/proc/device-tree/model"; then
|
||||||
|
echo_stamp "Enable USB on Compute Module 4"
|
||||||
|
echo "dtoverlay=dwc2,dr_mode=host" >> /boot/config.txt
|
||||||
|
|
||||||
|
echo_stamp "Enable OV7251 camera overlay"
|
||||||
|
echo "#dtoverlay=ov7251 # OV7251 camera on CAM1" >> /boot/config.txt
|
||||||
|
echo "dtoverlay=ov7251cam0 # OV7251 camera on CAM0" >> /boot/config.txt
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo_stamp "#9 End of configure hardware interfaces"
|
||||||
|
|||||||
111
builder/assets/ov7251cam0-overlay.dts
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
// Definitions for OV7251 camera module on VC I2C bus
|
||||||
|
/dts-v1/;
|
||||||
|
/plugin/;
|
||||||
|
|
||||||
|
//#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
/{
|
||||||
|
compatible = "brcm,bcm2835";
|
||||||
|
|
||||||
|
fragment@0 {
|
||||||
|
target = <&i2c_vc>;
|
||||||
|
__overlay__ {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
ov7251: ov7251@60 {
|
||||||
|
compatible = "ovti,ov7251";
|
||||||
|
reg = <0x60>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
clocks = <&ov7251_clk>;
|
||||||
|
clock-names = "xclk";
|
||||||
|
clock-frequency = <24000000>;
|
||||||
|
|
||||||
|
vdddo-supply = <&ov7251_dovdd>;
|
||||||
|
vdda-supply = <&ov7251_avdd>;
|
||||||
|
vddd-supply = <&ov7251_dvdd>;
|
||||||
|
|
||||||
|
enable-gpios = <&gpio 41 0>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
ov7251_0: endpoint {
|
||||||
|
remote-endpoint = <&csi0_ep>;
|
||||||
|
clock-lanes = <0>;
|
||||||
|
data-lanes = <1>;
|
||||||
|
clock-noncontinuous;
|
||||||
|
link-frequencies =
|
||||||
|
/bits/ 64 <456000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@1 {
|
||||||
|
target = <&csi0>;
|
||||||
|
__overlay__ {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
port {
|
||||||
|
csi0_ep: endpoint {
|
||||||
|
remote-endpoint = <&ov7251_0>;
|
||||||
|
data-lanes = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@2 {
|
||||||
|
target = <&i2c0if>;
|
||||||
|
__overlay__ {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@3 {
|
||||||
|
target-path="/";
|
||||||
|
__overlay__ {
|
||||||
|
ov7251_avdd: fixedregulator@0 {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "ov7251_avdd";
|
||||||
|
regulator-min-microvolt = <2800000>;
|
||||||
|
regulator-max-microvolt = <2800000>;
|
||||||
|
};
|
||||||
|
ov7251_dovdd: fixedregulator@1 {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "ov7251_dovdd";
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
};
|
||||||
|
ov7251_dvdd: fixedregulator@2 {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "ov7251_dvdd";
|
||||||
|
regulator-min-microvolt = <1200000>;
|
||||||
|
regulator-max-microvolt = <1200000>;
|
||||||
|
};
|
||||||
|
ov7251_clk: ov7251-clk {
|
||||||
|
compatible = "fixed-clock";
|
||||||
|
#clock-cells = <0>;
|
||||||
|
clock-frequency = <24000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@4 {
|
||||||
|
target = <&i2c0mux>;
|
||||||
|
__overlay__ {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@5 {
|
||||||
|
target-path="/__overrides__";
|
||||||
|
__overlay__ {
|
||||||
|
cam0-pwdn-ctrl = <&ov7251>,"enable-gpios:0";
|
||||||
|
cam0-pwdn = <&ov7251>,"enable-gpios:4";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -15,7 +15,8 @@
|
|||||||
|
|
||||||
set -e # Exit immidiately on non-zero result
|
set -e # Exit immidiately on non-zero result
|
||||||
|
|
||||||
SOURCE_IMAGE="https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2020-02-14/2020-02-13-raspbian-buster-lite.zip"
|
# https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit
|
||||||
|
SOURCE_IMAGE="https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-03-25/2021-03-04-raspios-buster-armhf-lite.zip"
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=${DEBIAN_FRONTEND:='noninteractive'}
|
export DEBIAN_FRONTEND=${DEBIAN_FRONTEND:='noninteractive'}
|
||||||
export LANG=${LANG:='C.UTF-8'}
|
export LANG=${LANG:='C.UTF-8'}
|
||||||
@@ -102,6 +103,8 @@ ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/rsysrot
|
|||||||
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/butterfly.service' '/lib/systemd/system/'
|
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/butterfly.service' '/lib/systemd/system/'
|
||||||
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/butterfly.socket' '/lib/systemd/system/'
|
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/butterfly.socket' '/lib/systemd/system/'
|
||||||
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/monkey.service' '/lib/systemd/system/'
|
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/monkey.service' '/lib/systemd/system/'
|
||||||
|
# build hardware drivers
|
||||||
|
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-hardware.sh'
|
||||||
# software install
|
# software install
|
||||||
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-software.sh'
|
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-software.sh'
|
||||||
# examples
|
# examples
|
||||||
|
|||||||
9
builder/image-hardware.sh
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
echo "Build overlay for OV7251 camera on CAM0"
|
||||||
|
|
||||||
|
# TODO: check Raspberry Pi OS version /boot/issue.txt
|
||||||
|
|
||||||
|
dtc -I dts -O dtb -o /boot/overlays/ov7251cam0.dtbo /home/pi/catkin_ws/src/clover/builder/assets/ov7251cam0-overlay.dts
|
||||||
@@ -60,4 +60,24 @@ domain-needed
|
|||||||
quiet-dhcp6
|
quiet-dhcp6
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo_stamp "#4 End of network installation"
|
echo_stamp "#4 Build the RTL8814AU Wi-Fi adapter driver"
|
||||||
|
cd /home/pi
|
||||||
|
git clone https://github.com/aircrack-ng/rtl8812au.git --depth=1
|
||||||
|
cd rtl8812au
|
||||||
|
echo kernel version: $(uname -r)
|
||||||
|
echo kernel version from procfs: $(cat /proc/version)
|
||||||
|
echo version: $(git describe --tags --always)
|
||||||
|
sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile # https://github.com/aircrack-ng/rtl8812au#for-raspberry-rpi
|
||||||
|
sed -i 's/CONFIG_PLATFORM_ARM_RPI = n/CONFIG_PLATFORM_ARM_RPI = y/g' Makefile
|
||||||
|
# sed -i 's/CONFIG_PLATFORM_ARM64_RPI = n/CONFIG_PLATFORM_ARM64_RPI = y/g' Makefile
|
||||||
|
apt-cache policy raspberrypi-kernel-headers
|
||||||
|
apt-get install -y raspberrypi-kernel-headers dkms
|
||||||
|
ls /lib/modules
|
||||||
|
KERNEL_VERSION=$(cd /lib/modules && echo *-v7l+) # can't use `uname` as it gives incorrect value in emulated environment
|
||||||
|
echo make
|
||||||
|
make KERNEL_VER=$KERNEL_VERSION KVER=$KERNEL_VERSION
|
||||||
|
echo make install
|
||||||
|
make install KERNEL_VER=$KERNEL_VERSION KVER=$KERNEL_VERSION
|
||||||
|
# TODO: rm -rf /home/pi/rtl8812au
|
||||||
|
|
||||||
|
echo_stamp "#5 End of network installation"
|
||||||
|
|||||||
@@ -76,9 +76,11 @@ my_travis_retry sudo -u pi rosdep update
|
|||||||
|
|
||||||
export ROS_IP='127.0.0.1' # needed for running tests
|
export ROS_IP='127.0.0.1' # needed for running tests
|
||||||
|
|
||||||
echo_stamp "Reconfiguring Clover repository for simplier unshallowing"
|
# echo_stamp "Reconfiguring Clover repository for simplier unshallowing" # TODO: bring back
|
||||||
cd /home/pi/catkin_ws/src/clover
|
# cd /home/pi/catkin_ws/src/clover
|
||||||
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
|
# git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
|
||||||
|
echo_stamp "Remove .git from Clover to reduce the size"
|
||||||
|
rm -rf /home/pi/catkin_ws/src/clover/.git # TODO: remove
|
||||||
|
|
||||||
echo_stamp "Build and install Clover"
|
echo_stamp "Build and install Clover"
|
||||||
cd /home/pi/catkin_ws
|
cd /home/pi/catkin_ws
|
||||||
@@ -99,6 +101,7 @@ rm -rf build # remove build artifacts
|
|||||||
echo_stamp "Build Clover documentation"
|
echo_stamp "Build Clover documentation"
|
||||||
cd /home/pi/catkin_ws/src/clover
|
cd /home/pi/catkin_ws/src/clover
|
||||||
NPM_CONFIG_UNSAFE_PERM=true npm install gitbook-cli -g
|
NPM_CONFIG_UNSAFE_PERM=true npm install gitbook-cli -g
|
||||||
|
NPM_CONFIG_UNSAFE_PERM=true gitbook fetch 3.2.3 && npm i npm@3.10.10 --prefix=~/.gitbook/versions/3.2.3/ # fixing https://travis-ci.org/github/CopterExpress/clover/jobs/766541125#L932
|
||||||
NPM_CONFIG_UNSAFE_PERM=true gitbook install
|
NPM_CONFIG_UNSAFE_PERM=true gitbook install
|
||||||
gitbook build
|
gitbook build
|
||||||
touch node_modules/CATKIN_IGNORE docs/CATKIN_IGNORE _book/CATKIN_IGNORE clover/www/CATKIN_IGNORE apps/CATKIN_IGNORE # ignore documentation files by catkin
|
touch node_modules/CATKIN_IGNORE docs/CATKIN_IGNORE _book/CATKIN_IGNORE clover/www/CATKIN_IGNORE apps/CATKIN_IGNORE # ignore documentation files by catkin
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ apt-get update
|
|||||||
|
|
||||||
# Let's retry fetching those packages several times, just in case
|
# Let's retry fetching those packages several times, just in case
|
||||||
echo_stamp "Software installing"
|
echo_stamp "Software installing"
|
||||||
|
my_travis_retry apt-get install --no-install-recommends -y cmake-data=3.13.4-1 cmake=3.13.4-1 # FIXME: using older CMake due to https://travis-ci.org/github/CopterExpress/clover/jobs/764367665#L6984
|
||||||
my_travis_retry apt-get install --no-install-recommends -y \
|
my_travis_retry apt-get install --no-install-recommends -y \
|
||||||
unzip \
|
unzip \
|
||||||
zip \
|
zip \
|
||||||
@@ -94,8 +95,8 @@ lsof \
|
|||||||
git \
|
git \
|
||||||
dnsmasq \
|
dnsmasq \
|
||||||
tmux \
|
tmux \
|
||||||
|
tree \
|
||||||
vim \
|
vim \
|
||||||
cmake \
|
|
||||||
libjpeg8 \
|
libjpeg8 \
|
||||||
tcpdump \
|
tcpdump \
|
||||||
ltrace \
|
ltrace \
|
||||||
@@ -136,6 +137,7 @@ pip3 --version
|
|||||||
|
|
||||||
echo_stamp "Install and enable Butterfly (web terminal)"
|
echo_stamp "Install and enable Butterfly (web terminal)"
|
||||||
echo_stamp "Workaround for tornado >= 6.0 breaking butterfly"
|
echo_stamp "Workaround for tornado >= 6.0 breaking butterfly"
|
||||||
|
export CRYPTOGRAPHY_DONT_BUILD_RUST=1
|
||||||
my_travis_retry pip3 install tornado==5.1.1
|
my_travis_retry pip3 install tornado==5.1.1
|
||||||
my_travis_retry pip3 install butterfly
|
my_travis_retry pip3 install butterfly
|
||||||
my_travis_retry pip3 install butterfly[systemd]
|
my_travis_retry pip3 install butterfly[systemd]
|
||||||
@@ -147,6 +149,7 @@ my_travis_retry pip install --prefer-binary rpi_ws281x
|
|||||||
echo_stamp "Setup Monkey"
|
echo_stamp "Setup Monkey"
|
||||||
mv /etc/monkey/sites/default /etc/monkey/sites/default.orig
|
mv /etc/monkey/sites/default /etc/monkey/sites/default.orig
|
||||||
mv /root/monkey /etc/monkey/sites/default
|
mv /root/monkey /etc/monkey/sites/default
|
||||||
|
sed -i 's/SymLink Off/SymLink On/' /etc/monkey/monkey.conf
|
||||||
systemctl enable monkey.service
|
systemctl enable monkey.service
|
||||||
|
|
||||||
echo_stamp "Install Node.js"
|
echo_stamp "Install Node.js"
|
||||||
|
|||||||
@@ -41,3 +41,6 @@ pip install --upgrade pytest
|
|||||||
cd /root/catkin_ws
|
cd /root/catkin_ws
|
||||||
source devel/setup.bash
|
source devel/setup.bash
|
||||||
catkin_make run_tests && catkin_test_results
|
catkin_make run_tests && catkin_test_results
|
||||||
|
|
||||||
|
# Step 5: Install packages
|
||||||
|
catkin_make install
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ rosversion aruco_pose
|
|||||||
rosversion vl53l1x
|
rosversion vl53l1x
|
||||||
rosversion mavros
|
rosversion mavros
|
||||||
rosversion mavros_extras
|
rosversion mavros_extras
|
||||||
|
rosversion ws281x
|
||||||
|
rosversion led_msgs
|
||||||
rosversion dynamic_reconfigure
|
rosversion dynamic_reconfigure
|
||||||
rosversion tf2_web_republisher
|
rosversion tf2_web_republisher
|
||||||
rosversion compressed_image_transport
|
rosversion compressed_image_transport
|
||||||
|
|||||||
20
clover/camera_info/ov7251.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
image_width: 640
|
||||||
|
image_height: 480
|
||||||
|
distortion_model: rational_polynomial
|
||||||
|
camera_name: main_camera_optical
|
||||||
|
camera_matrix:
|
||||||
|
rows: 3
|
||||||
|
cols: 3
|
||||||
|
data: [ 279.33, 0, 304.288, 0, 280.417, 268.697, 0, 0, 1, ]
|
||||||
|
distortion_coefficients:
|
||||||
|
rows: 1
|
||||||
|
cols: 14
|
||||||
|
data: [ 0.155023, -0.0432218, 0.00152622, 6.48563e-05, 0.00390709, 0.495321, -0.0748121, 0.00553976, 0, 0, 0, 0, 0, 0, ]
|
||||||
|
rectification_matrix:
|
||||||
|
rows: 3
|
||||||
|
cols: 3
|
||||||
|
data: [ 1, 0, 0, 0, 1, 0, 0, 0, 1, ]
|
||||||
|
projection_matrix:
|
||||||
|
rows: 3
|
||||||
|
cols: 4
|
||||||
|
data: [ 279.33, 0, 304.288, 0, 0, 280.417, 268.697, 0, 0, 0, 1, 0, ]
|
||||||
@@ -12,7 +12,6 @@
|
|||||||
<arg name="led" default="true"/>
|
<arg name="led" default="true"/>
|
||||||
<arg name="blocks" default="false"/>
|
<arg name="blocks" default="false"/>
|
||||||
<arg name="rc" default="true"/>
|
<arg name="rc" default="true"/>
|
||||||
<arg name="shell" default="true"/>
|
|
||||||
|
|
||||||
<arg name="simulator" default="false"/> <!-- flag that we are operating on a simulated drone -->
|
<arg name="simulator" default="false"/> <!-- flag that we are operating on a simulated drone -->
|
||||||
|
|
||||||
@@ -91,9 +90,6 @@
|
|||||||
<param name="use_fake_gcs" value="false"/>
|
<param name="use_fake_gcs" value="false"/>
|
||||||
</node>
|
</node>
|
||||||
|
|
||||||
<!-- Shell access through ROS service -->
|
|
||||||
<node name="shell" pkg="clover" type="shell" output="screen" if="$(arg shell)"/>
|
|
||||||
|
|
||||||
<!-- Update static directory -->
|
<!-- Update static directory -->
|
||||||
<node pkg="roswww_static" name="roswww_static" type="main.py" clear_params="true">
|
<node pkg="roswww_static" name="roswww_static" type="main.py" clear_params="true">
|
||||||
<param name="default_package" value="clover"/>
|
<param name="default_package" value="clover"/>
|
||||||
|
|||||||
@@ -6,13 +6,15 @@
|
|||||||
<arg name="viz" default="true"/>
|
<arg name="viz" default="true"/>
|
||||||
<arg name="respawn" default="true"/>
|
<arg name="respawn" default="true"/>
|
||||||
<arg name="distance_sensor_remap" default="rangefinder/range"/>
|
<arg name="distance_sensor_remap" default="rangefinder/range"/>
|
||||||
|
<arg name="usb_device" default="/dev/px4fmu"/>
|
||||||
|
<arg name="prefix" default="bash -c 'while [ ! -e $(arg usb_device) ]; do sleep 1; done; $0 $@'" if="$(eval fcu_conn == 'usb')"/>
|
||||||
|
|
||||||
<node pkg="mavros" type="mavros_node" name="mavros" required="false" clear_params="true" respawn="$(arg respawn)" unless="$(eval fcu_conn == 'none')" respawn_delay="1" output="screen">
|
<node pkg="mavros" type="mavros_node" name="mavros" launch-prefix="$(arg prefix)" required="false" clear_params="true" respawn="$(arg respawn)" unless="$(eval fcu_conn == 'none')" respawn_delay="1" output="screen">
|
||||||
<!-- UART connection -->
|
<!-- UART connection -->
|
||||||
<param name="fcu_url" value="/dev/ttyAMA0:921600" if="$(eval fcu_conn is None or fcu_conn == 'uart')"/>
|
<param name="fcu_url" value="/dev/ttyAMA0:921600" if="$(eval fcu_conn is None or fcu_conn == 'uart')"/>
|
||||||
|
|
||||||
<!-- USB connection -->
|
<!-- USB connection -->
|
||||||
<param name="fcu_url" value="/dev/px4fmu" if="$(eval fcu_conn == 'usb')"/>
|
<param name="fcu_url" value="$(arg usb_device)" if="$(eval fcu_conn == 'usb')"/>
|
||||||
|
|
||||||
<!-- sitl before PX4 1.9.0 -->
|
<!-- sitl before PX4 1.9.0 -->
|
||||||
<param name="fcu_url" value="udp://@$(arg fcu_ip):14557" if="$(eval fcu_conn == 'udp')"/>
|
<param name="fcu_url" value="udp://@$(arg fcu_ip):14557" if="$(eval fcu_conn == 'udp')"/>
|
||||||
|
|||||||
@@ -28,19 +28,3 @@ def test_simple_offboard_services_available():
|
|||||||
def test_web_video_server(node):
|
def test_web_video_server(node):
|
||||||
import urllib2
|
import urllib2
|
||||||
urllib2.urlopen("http://localhost:8080").read()
|
urllib2.urlopen("http://localhost:8080").read()
|
||||||
|
|
||||||
def test_shell(node):
|
|
||||||
execute = rospy.ServiceProxy('exec', srv.Execute)
|
|
||||||
execute.wait_for_service(5)
|
|
||||||
|
|
||||||
res = execute(cmd='echo foo')
|
|
||||||
assert res.code == 0
|
|
||||||
assert res.output == 'foo\n'
|
|
||||||
|
|
||||||
res = execute(cmd='foo')
|
|
||||||
assert res.code == 32512
|
|
||||||
assert res.output == ''
|
|
||||||
|
|
||||||
res = execute(cmd='ls foo')
|
|
||||||
assert res.code == 512
|
|
||||||
assert res.output == ''
|
|
||||||
|
|||||||
1
clover/www/clover_version
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
/etc/clover_version
|
||||||
@@ -13,15 +13,15 @@
|
|||||||
|
|
||||||
<div class="version"></div>
|
<div class="version"></div>
|
||||||
|
|
||||||
<script src="js/roslib.js"></script>
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
document.querySelector("#wvs").href = location.protocol + '//' + location.hostname + ':8080';
|
document.querySelector("#wvs").href = location.protocol + '//' + location.hostname + ':8080';
|
||||||
document.querySelector("#butterfly").href = location.protocol + '//' + location.hostname + ':57575';
|
document.querySelector("#butterfly").href = location.protocol + '//' + location.hostname + ':57575';
|
||||||
|
|
||||||
// Determine image version
|
// Determine image version
|
||||||
var ros = new ROSLIB.Ros({ url: 'ws://' + location.hostname + ':9090' });
|
fetch('clover_version').then(function(response) {
|
||||||
var exec = new ROSLIB.Service({ ros: ros, name : '/exec', serviceType : 'clover/Execute' });
|
if (response.status !== 200) return;
|
||||||
exec.callService(new ROSLIB.ServiceRequest({ cmd: 'cat /etc/clover_version' }), function(result) {
|
response.text().then(function(text) {
|
||||||
document.querySelector('.version').innerHTML = 'Version: ' + result.output;
|
document.querySelector('.version').innerHTML = 'Version: ' + text;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ target_compile_options(throttling_camera PRIVATE -std=c++11)
|
|||||||
add_dependencies(throttling_camera ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
|
add_dependencies(throttling_camera ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
|
||||||
|
|
||||||
install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
|
install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
|
||||||
install(DIRECTORY meshes DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
|
install(DIRECTORY models DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
|
||||||
install(DIRECTORY resources DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
|
install(DIRECTORY resources DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
|
||||||
|
|
||||||
catkin_install_python(PROGRAMS scripts/aruco_gen
|
catkin_install_python(PROGRAMS scripts/aruco_gen
|
||||||
|
|||||||
BIN
docs/assets/Hardaton_Quidditch/1.jpg
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
docs/assets/Hardaton_Quidditch/2.jpg
Normal file
|
After Width: | Height: | Size: 143 KiB |
BIN
docs/assets/Hardaton_Quidditch/3.jpg
Normal file
|
After Width: | Height: | Size: 137 KiB |
BIN
docs/assets/Hardaton_Quidditch/4.jpg
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
docs/assets/Hardaton_Quidditch/5.jpg
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
docs/assets/Hardaton_Quidditch/6.jpg
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
docs/assets/Hardaton_Quidditch/7.jpg
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
docs/assets/Hardaton_Quidditch/8.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
docs/assets/Hardaton_Quidditch/Hardaton.jpg
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
docs/assets/Hardaton_Quidditch/team.jpg
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
docs/assets/advancedClover1.png
Normal file
|
After Width: | Height: | Size: 159 KiB |
BIN
docs/assets/advancedClover2.png
Normal file
|
After Width: | Height: | Size: 329 KiB |
BIN
docs/assets/advancedClover3.png
Normal file
|
After Width: | Height: | Size: 248 KiB |
BIN
docs/assets/amls/data_structure.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
docs/assets/amls/drone_meme.jpg
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
docs/assets/amls/follow_the_white_rabbit.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
docs/assets/amls/gimbal_assembly.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
docs/assets/amls/gimbal_camera_mount.png
Normal file
|
After Width: | Height: | Size: 92 KiB |
BIN
docs/assets/amls/gimbal_filter_mount.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
docs/assets/amls/gimbal_plane_mount.png
Normal file
|
After Width: | Height: | Size: 120 KiB |
BIN
docs/assets/amls/grabbing_system_1.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
docs/assets/amls/grabbing_system_2.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
docs/assets/amls/liberty-x_front_cutout_2_small_gps.png
Normal file
|
After Width: | Height: | Size: 190 KiB |
BIN
docs/assets/amls/liberty-x_side_cutout_2_small.png
Normal file
|
After Width: | Height: | Size: 182 KiB |
BIN
docs/assets/amls/light_sensors.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
docs/assets/amls/logo_book.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
docs/assets/amls/mpu6050_gyro.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
docs/assets/amls/ms5611_barometer.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
docs/assets/amls/platform_roof.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
docs/assets/amls/platform_side_transparent.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
docs/assets/anticorona/camera.jpg
Normal file
|
After Width: | Height: | Size: 122 KiB |
BIN
docs/assets/anticorona/charging_drone.jpg
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
docs/assets/anticorona/drone_assembled.jpg
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
docs/assets/anticorona/drone_frame.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
docs/assets/anticorona/drone_with_jetson.jpg
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
docs/assets/anticorona/human_view.jpg
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
docs/assets/anticorona/masks.jpg
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
docs/assets/anticorona/release.jpg
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
docs/assets/anticorona/release_Cad.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
docs/assets/anticorona/robot_view.jpg
Normal file
|
After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 415 KiB After Width: | Height: | Size: 46 KiB |
BIN
docs/assets/copterhack2021/1.jpg
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
docs/assets/copterhack2021/2.jpg
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
docs/assets/ddrone/final.gif
Normal file
|
After Width: | Height: | Size: 669 KiB |
BIN
docs/assets/ddrone/full_holder.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
docs/assets/ddrone/full_holder_in_real.jpg
Normal file
|
After Width: | Height: | Size: 488 KiB |
BIN
docs/assets/ddrone/holder.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
docs/assets/ddrone/instruction.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
docs/assets/ddrone/pressing_mechanism.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
docs/assets/ddrone/pressing_mechanism_in_real.jpg
Normal file
|
After Width: | Height: | Size: 421 KiB |
BIN
docs/assets/ddrone/screen_2.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
docs/assets/dromap/1.2fig.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
docs/assets/dromap/1.3fig.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
docs/assets/dromap/3.jpeg
Normal file
|
After Width: | Height: | Size: 125 KiB |
BIN
docs/assets/dromap/HLA.jpg
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
docs/assets/dromap/Maze1.jpg
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
docs/assets/dromap/Picture1.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
docs/assets/dromap/algorth_logic.png
Normal file
|
After Width: | Height: | Size: 165 KiB |
BIN
docs/assets/dromap/hectortest1.jpg
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
docs/assets/dromap/hectortest2.jpg
Normal file
|
After Width: | Height: | Size: 102 KiB |
4202
docs/assets/dxf/4.2/grip_spacer.dxf
Normal file
BIN
docs/assets/dxf/4.2/grip_spacer.png
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
BIN
docs/assets/easytofly/logo.png
Normal file
|
After Width: | Height: | Size: 214 KiB |
BIN
docs/assets/easytofly/pcb_scan.jpg
Normal file
|
After Width: | Height: | Size: 107 KiB |
BIN
docs/assets/easytofly/sensors.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
docs/assets/generative-design-frame/f.JPG
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
docs/assets/generative-design-frame/obstacle.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
docs/assets/generative-design-frame/p1.JPG
Normal file
|
After Width: | Height: | Size: 296 KiB |
BIN
docs/assets/generative-design-frame/p21.JPG
Normal file
|
After Width: | Height: | Size: 194 KiB |
BIN
docs/assets/generative-design-frame/p22.jpg
Normal file
|
After Width: | Height: | Size: 189 KiB |
BIN
docs/assets/generative-design-frame/p23.jpg
Normal file
|
After Width: | Height: | Size: 208 KiB |
BIN
docs/assets/generative-design-frame/p31.jpg
Normal file
|
After Width: | Height: | Size: 113 KiB |
BIN
docs/assets/generative-design-frame/p32.jpg
Normal file
|
After Width: | Height: | Size: 133 KiB |
BIN
docs/assets/generative-design-frame/preservedgeometry.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
docs/assets/oktapadzog/24-5.jpg
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
docs/assets/oktapadzog/Pixhawk.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
docs/assets/oktapadzog/frame_assembly_4.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
docs/assets/oktapadzog/image.gif
Normal file
|
After Width: | Height: | Size: 671 KiB |
BIN
docs/assets/oktapadzog/octo.png
Normal file
|
After Width: | Height: | Size: 236 KiB |