Compare commits

..

28 Commits

Author SHA1 Message Date
Oleg Kalachev
594733385f Add a TODO 2021-05-18 14:58:20 +03:00
Oleg Kalachev
b0ea2f9a96 Merge branch 'master' into clover-mini 2021-05-12 10:52:18 +03:00
Oleg Kalachev
bbb481522e Add calibration file for OV7251 2021-05-12 08:59:56 +03:00
Oleg Kalachev
52f4ac4bbd image: enable OV7251 camera on CAM0 on Compute Module 2021-05-12 08:55:09 +03:00
Oleg Kalachev
96eae2d50c image: build overlay for OV7251 camera on CAM0 2021-05-12 08:54:44 +03:00
Oleg Kalachev
d58d238ace builder: add image-hardware setup for building hardware drivers 2021-05-12 08:54:11 +03:00
deadln
cdd6000c58 Fix packages installation (#326)
* Catkin install testing

* Update standalone-install.sh

* Fix aruco_pose DetectorParams generating

* Update builder/standalone-install.sh

* Fix

* Fix

Co-authored-by: Oleg Kalachev <okalachev@gmail.com>
2021-05-07 10:23:54 +03:00
Oleg Kalachev
480a9b1f0a clover.launch: remove shell node autolaunch as it’s not needed 2021-05-01 08:52:42 +03:00
Oleg Kalachev
4943cb94b0 www: simplify showing image version on the main page
Using a clover_version symlink instead of shell node
2021-05-01 08:49:27 +03:00
Oleg Kalachev
f735d9276b builder: add a TODO 2021-04-27 23:07:10 +03:00
Oleg Kalachev
e0ca1272bb clover.launch: wait for px4fmu device until starting mavros 2021-04-23 22:46:48 +03:00
Oleg Kalachev
cb88537ddc docs: add snippet for using aruco_detect/enabled dynamic parameter 2021-04-20 16:55:31 +03:00
Oleg Kalachev
659380c575 docs: clover_vm redirect 2021-04-16 10:34:07 +03:00
SeliverstovaE
b4a8119bd7 docs: minor change to copterhack2021.md (ru) (#324)
* Update copterhack2021.md

* Update docs/ru/copterhack2021.md

Co-authored-by: Oleg Kalachev <okalachev@gmail.com>
2021-04-14 22:23:43 +03:00
SeliverstovaE
c72eb1b440 docs: minor change to copterhack2021.md (#325)
* Update copterhack2021.md

* Update docs/en/copterhack2021.md

Co-authored-by: Oleg Kalachev <okalachev@gmail.com>
2021-04-14 22:22:36 +03:00
Oleg Kalachev
f825901a19 docs: add link to selfcheck utility to programming article 2021-04-13 10:58:20 +03:00
Oleg Kalachev
200c5dea57 image: fix documentation building in image 2021-04-13 09:43:47 +03:00
Oleg Kalachev
0504569b0c Fix building documentation 2021-04-13 09:41:54 +03:00
Oleg Kalachev
9829ee2e72 docs: minor change 2021-04-13 09:32:26 +03:00
Oleg Kalachev
dfdaf3aa4f image: add get_telemetry example 2021-04-13 08:50:10 +03:00
Oleg Kalachev
63f979c2ff docs: minor redirects update 2021-04-13 08:33:30 +03:00
Oleg Kalachev
b8dafce816 readme: add downloads count badge 2021-04-08 10:39:39 +03:00
Oleg Kalachev
9a7928511a image: get kernel version from the fs for building rtl8812au 2021-04-08 04:07:51 +03:00
Oleg Kalachev
8ce700380c image: update Raspberry Pi OS to 2021-03-04 2021-04-08 02:12:16 +03:00
Oleg Kalachev
720b7d4274 image: add some todo 2021-04-02 18:58:36 +03:00
Oleg Kalachev
19e0b94fda docs: publish grip spacer dxf 2021-04-01 20:37:29 +03:00
Oleg Kalachev
957e57692c docs: fix coex pix image 2021-04-01 19:41:59 +03:00
Oleg Kalachev
0d49c426eb docs: fix coexpix 1.2 bottom pinout 2021-03-31 21:40:02 +03:00
32 changed files with 4479 additions and 42 deletions

View File

@@ -77,6 +77,7 @@ jobs:
- 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
- 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 svgexport -g
- gitbook -V

View File

@@ -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).
[![Build Status](https://travis-ci.org/CopterExpress/clover.svg?branch=master)](https://travis-ci.org/CopterExpress/clover)
![GitHub all releases](https://img.shields.io/github/downloads/CopterExpress/clover/total)
Image features:

View File

@@ -111,7 +111,7 @@ generate_messages(
## Generate dynamic reconfigure parameters in the 'cfg' folder
generate_dynamic_reconfigure_options(
cfg/DetectorParams.cfg
cfg/Detector.cfg
)
###################################

View 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())

View File

@@ -83,6 +83,10 @@ 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"

View 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";
};
};
};

View File

@@ -15,7 +15,8 @@
set -e # Exit immidiately on non-zero result
SOURCE_IMAGE="https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-01-12/2021-01-11-raspios-buster-armhf-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 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.socket' '/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
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-software.sh'
# examples

9
builder/image-hardware.sh Executable file
View 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

View File

@@ -61,8 +61,6 @@ quiet-dhcp6
EOF
echo_stamp "#4 Build the RTL8814AU Wi-Fi adapter driver"
wget http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-kernel-headers_1.20210108-1_armhf.deb
dpkg -i raspberrypi-kernel-headers_1.20210108-1_armhf.deb
cd /home/pi
git clone https://github.com/aircrack-ng/rtl8812au.git --depth=1
cd rtl8812au
@@ -73,12 +71,13 @@ sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile #
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=1.20210108 dkms
apt-get install -y dkms
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=5.4.83-v7l+ KVER=5.4.83-v7l+
make KERNEL_VER=$KERNEL_VERSION KVER=$KERNEL_VERSION
echo make install
make install KERNEL_VER=5.4.83-v7l+ KVER=5.4.83-v7l+
make install KERNEL_VER=$KERNEL_VERSION KVER=$KERNEL_VERSION
# TODO: rm -rf /home/pi/rtl8812au
echo_stamp "#5 End of network installation"

View File

@@ -101,6 +101,7 @@ rm -rf build # remove build artifacts
echo_stamp "Build Clover documentation"
cd /home/pi/catkin_ws/src/clover
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
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

View File

@@ -149,6 +149,7 @@ my_travis_retry pip install --prefer-binary rpi_ws281x
echo_stamp "Setup Monkey"
mv /etc/monkey/sites/default /etc/monkey/sites/default.orig
mv /root/monkey /etc/monkey/sites/default
sed -i 's/SymLink Off/SymLink On/' /etc/monkey/monkey.conf
systemctl enable monkey.service
echo_stamp "Install Node.js"

View File

@@ -41,3 +41,6 @@ pip install --upgrade pytest
cd /root/catkin_ws
source devel/setup.bash
catkin_make run_tests && catkin_test_results
# Step 5: Install packages
catkin_make install

View 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, ]

View File

@@ -12,7 +12,6 @@
<arg name="led" default="true"/>
<arg name="blocks" default="false"/>
<arg name="rc" default="true"/>
<arg name="shell" default="true"/>
<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"/>
</node>
<!-- Shell access through ROS service -->
<node name="shell" pkg="clover" type="shell" output="screen" if="$(arg shell)"/>
<!-- Update static directory -->
<node pkg="roswww_static" name="roswww_static" type="main.py" clear_params="true">
<param name="default_package" value="clover"/>

View File

@@ -6,13 +6,15 @@
<arg name="viz" default="true"/>
<arg name="respawn" default="true"/>
<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 -->
<param name="fcu_url" value="/dev/ttyAMA0:921600" if="$(eval fcu_conn is None or fcu_conn == 'uart')"/>
<!-- 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 -->
<param name="fcu_url" value="udp://@$(arg fcu_ip):14557" if="$(eval fcu_conn == 'udp')"/>

View File

@@ -28,19 +28,3 @@ def test_simple_offboard_services_available():
def test_web_video_server(node):
import urllib2
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
View File

@@ -0,0 +1 @@
/etc/clover_version

View File

@@ -13,15 +13,15 @@
<div class="version"></div>
<script src="js/roslib.js"></script>
<script type="text/javascript">
document.querySelector("#wvs").href = location.protocol + '//' + location.hostname + ':8080';
document.querySelector("#butterfly").href = location.protocol + '//' + location.hostname + ':57575';
// Determine image version
var ros = new ROSLIB.Ros({ url: 'ws://' + location.hostname + ':9090' });
var exec = new ROSLIB.Service({ ros: ros, name : '/exec', serviceType : 'clover/Execute' });
exec.callService(new ROSLIB.ServiceRequest({ cmd: 'cat /etc/clover_version' }), function(result) {
document.querySelector('.version').innerHTML = 'Version: ' + result.output;
fetch('clover_version').then(function(response) {
if (response.status !== 200) return;
response.text().then(function(text) {
document.querySelector('.version').innerHTML = 'Version: ' + text;
});
});
</script>

View File

@@ -52,7 +52,7 @@ target_compile_options(throttling_camera PRIVATE -std=c++11)
add_dependencies(throttling_camera ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
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})
catkin_install_python(PROGRAMS scripts/aruco_gen

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 KiB

After

Width:  |  Height:  |  Size: 46 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -1,6 +1,6 @@
# CopterHack 2021
CopterHack 2021 is a team competition for the development of open source projects for the Clover quadcopter platform.
CopterHack 2021 is a team competition for the development of open source projects for the Clover quadcopter platform. Fifty-four teams from 12 countries took part in the competition.
All information about the event can be found on the official website: https://coex.tech/copterhack.

View File

@@ -96,6 +96,16 @@ This page contains models and drawings of some of the drone parts. They can be u
</td>
<td><a href="https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/4.2/big_leg.dxf"><code>big_leg.dxf</code></a></td>
</tr>
<tr>
<td><img src="../assets/dxf/4.2/grip_spacer.png"></td>
<td>
<b>Grip spacer</b>.<br>
Function: spacer for the gripper plates.<br>
Material: monolithic polycarbonate 2mm.<br>
Quantity: 1 pcs.
</td>
<td><a href="https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/4.2/grip_spacer.dxf"><code>grip_spacer.dxf</code></a></td>
</tr>
</table>
## Clover 4

View File

@@ -34,7 +34,15 @@ Read more in the [GPS connection](gps.md) article.
> **Info** For studying Python programming language, see [tutorial](https://www.learnpython.org/en/Welcome).
After you've configured your positioning system, you can start writing programs for autonomous flights. Use the [SSH connection to the Raspberry Pi](ssh.md) to run your scripts. In order to run a Python script use the `python` command:
After you've configured your positioning system, you can start writing programs for autonomous flights. Use the [SSH connection to the Raspberry Pi](ssh.md) to run your scripts.
Before the first flight it's recommended to check the Clover's configuration with [selfcheck.py utility](selfcheck.md):
```bash
rosrun clover selfcheck.py
```
In order to run a Python script use the `python` command:
```bash
python flight.py

View File

@@ -359,3 +359,28 @@ calibrate_gyro()
```
> **Note** In process of calibration the drone should not be moved.
<!-- markdownlint-disable MD044 -->
### # {#aruco-detect-enabled}
<!-- markdownlint-enable MD044 -->
Enable and disable [ArUco markers recognition](aruco_marker.md) dynamically (for example, for saving CPU resources):
```python
import rospy
import dynamic_reconfigure.client
# ...
client = dynamic_reconfigure.client.Client('aruco_detect')
# Turn markers recognition off
client.update_configuration({'enabled': False})
rospy.sleep(5)
# Turn markers recognition on
client.update_configuration({'enabled': True})
```

View File

@@ -1,6 +1,6 @@
# CopterHack 2021
CopterHack 2021 это командный конкурс по разработке проектов с открытым исходным кодом для платформы квадрокоптера "Клевер".
CopterHack 2021 это командный конкурс по разработке проектов с открытым исходным кодом для платформы квадрокоптера "Клевер". В конкурсе приняло участие 54 команды из 12 стран.
Все информацию о мероприятии смотрите на официальном сайте: https://ru.coex.tech/copterhack.

View File

@@ -96,6 +96,16 @@
</td>
<td><a href="https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/4.2/big_leg.dxf"><code>big_leg.dxf</code></a></td>
</tr>
<tr>
<td><img src="../assets/dxf/4.2/grip_spacer.png"></td>
<td>
<b>Проставка для захвата</b>.<br>
Функция: Опорный элемент для механического захвата.<br>
Материал: Монолитный поликарбонат 2мм.<br>
Количество: 1 шт.
</td>
<td><a href="https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/4.2/grip_spacer.dxf"><code>grip_spacer.dxf</code></a></td>
</tr>
</table>
## Клевер 4

View File

@@ -32,9 +32,17 @@
## Автономный полет {#flight}
> **Info** Для изучения языка программирования Python обращайтесь к [самоучителю](https://pythonworld.ru/samouchitel-python).
> **Info** Для изучения языка программирования Python вы можете обратиться к [самоучителю](https://pythonworld.ru/samouchitel-python).
После настройки системы позиционирования становится возможным написание скриптов для автономных полетов. Для выполнения скриптов [подключитесь в Raspberry Pi по SSH](ssh.md). Для того, чтобы запустить Python-скрипт, используйте команду `python`:
После настройки системы позиционирования становится возможным написание скриптов для автономных полетов. Для выполнения скриптов [подключитесь в Raspberry Pi по SSH](ssh.md).
Перед первым полетом рекомендуется проверить конфигурацию Клевера при помощи [утилиты selfcheck.py](selfcheck.md):
```bash
rosrun clover selfcheck.py
```
Для того, чтобы запустить Python-скрипт, используйте команду `python`:
```bash
python flight.py

View File

@@ -377,3 +377,28 @@ calibrate_gyro()
```
> **Note** В процессе калибровки гироскопов дрон нельзя двигать.
<!-- markdownlint-disable MD044 -->
### # {#aruco-detect-enabled}
<!-- markdownlint-enable MD044 -->
Динамически включать и отключать [распознавание ArUco-маркеров](aruco_marker.md) (например, для экономии ресурсов процессора):
```python
import rospy
import dynamic_reconfigure.client
# ...
client = dynamic_reconfigure.client.Client('aruco_detect')
# Turn markers recognition off
client.update_configuration({'enabled': False})
rospy.sleep(5)
# Turn markers recognition on
client.update_configuration({'enabled': True})
```

View File

@@ -49,7 +49,8 @@
{ "from": "modes/", "to": "ru/modes.html" },
{ "from": "firmware/", "to": "en/firmware.html" },
{ "from": "simple_offboard/", "to": "ru/simple_offboard.html" },
{ "from": "simple_offboard/", "to": "en/simple_offboard.html" },
{ "from": "offboard/", "to": "en/simple_offboard.html" },
{ "from": "camera/", "to": "ru/camera.html" },
{ "from": "snippets/", "to": "ru/snippets.html" },
{ "from": "optical_flow/", "to": "ru/optical_flow.html" },
@@ -61,6 +62,7 @@
{ "from": "camera_setup/", "to": "en/camera_setup.html" },
{ "from": "power/", "to": "en/power.html" },
{ "from": "connection/", "to": "en/connection.html" },
{ "from": "clover_vm/", "to": "en/simulation_vm.html" },
{ "from": "ru/microsd_images.html", "to": "image.html" },
{ "from": "en/microsd_images.html", "to": "image.html" }