diff --git a/aruco_pose/CMakeLists.txt b/aruco_pose/CMakeLists.txt
index b73f9b54..25386ec2 100644
--- a/aruco_pose/CMakeLists.txt
+++ b/aruco_pose/CMakeLists.txt
@@ -119,7 +119,7 @@ generate_messages(
## Generate dynamic reconfigure parameters in the 'cfg' folder
generate_dynamic_reconfigure_options(
- cfg/DetectorParams.cfg
+ cfg/Detector.cfg
)
###################################
diff --git a/aruco_pose/cfg/DetectorParams.cfg b/aruco_pose/cfg/Detector.cfg
similarity index 100%
rename from aruco_pose/cfg/DetectorParams.cfg
rename to aruco_pose/cfg/Detector.cfg
diff --git a/builder/assets/examples/get_telemetry.py b/builder/assets/examples/get_telemetry.py
new file mode 100644
index 00000000..fbbfb24f
--- /dev/null
+++ b/builder/assets/examples/get_telemetry.py
@@ -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())
diff --git a/builder/image-software.sh b/builder/image-software.sh
index 079294b9..b2c92bda 100755
--- a/builder/image-software.sh
+++ b/builder/image-software.sh
@@ -148,6 +148,7 @@ my_travis_retry pip3 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"
diff --git a/builder/standalone-install.sh b/builder/standalone-install.sh
index 5b33a357..93b5799d 100755
--- a/builder/standalone-install.sh
+++ b/builder/standalone-install.sh
@@ -54,3 +54,6 @@ python3 -m pip install --upgrade pytest # TODO: https://github.com/CopterExpress
cd /root/catkin_ws
source devel/setup.bash
catkin_make run_tests && catkin_test_results
+
+# Step 5: Install packages
+catkin_make install
diff --git a/clover/launch/clover.launch b/clover/launch/clover.launch
index f3ba21cd..86b65f80 100644
--- a/clover/launch/clover.launch
+++ b/clover/launch/clover.launch
@@ -12,7 +12,6 @@
-
@@ -91,9 +90,6 @@
-
-
-
diff --git a/clover/launch/mavros.launch b/clover/launch/mavros.launch
index 1eea4558..cb958447 100644
--- a/clover/launch/mavros.launch
+++ b/clover/launch/mavros.launch
@@ -6,13 +6,16 @@
+
+
+
-
+
-
+
diff --git a/clover/test/basic.py b/clover/test/basic.py
index bc3646b5..283180ed 100755
--- a/clover/test/basic.py
+++ b/clover/test/basic.py
@@ -33,19 +33,3 @@ def test_web_video_server(node):
# Python 3
import urllib.request as urllib
urllib.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 == ''
diff --git a/clover/www/clover_version b/clover/www/clover_version
new file mode 120000
index 00000000..ac5ca460
--- /dev/null
+++ b/clover/www/clover_version
@@ -0,0 +1 @@
+/etc/clover_version
\ No newline at end of file
diff --git a/clover/www/index.html b/clover/www/index.html
index 676b48e5..fbae51c8 100644
--- a/clover/www/index.html
+++ b/clover/www/index.html
@@ -13,15 +13,15 @@
-
diff --git a/clover_blocks/src/clover_blocks b/clover_blocks/src/clover_blocks
index fdd49601..4000df8e 100755
--- a/clover_blocks/src/clover_blocks
+++ b/clover_blocks/src/clover_blocks
@@ -11,7 +11,8 @@
from __future__ import print_function
import rospy
-import os
+import os, sys
+import traceback
import threading
import re
import uuid
@@ -116,7 +117,12 @@ def run(req):
rospy.loginfo('Program forced to stop')
except Exception as e:
rospy.logerr(str(e))
- error_pub.publish(str(e))
+ traceback.print_exc()
+ etype, value, tb = sys.exc_info()
+ fmt = traceback.format_exception(etype, value, tb)
+ fmt.pop(1) # remove 'clover_blocks' file frame
+ exc_info = ''.join(fmt)
+ error_pub.publish(str(e) + '\n\n' + exc_info)
rospy.loginfo('Program terminated')
running_lock.release()
diff --git a/clover_simulation/CMakeLists.txt b/clover_simulation/CMakeLists.txt
index 7ee6b14e..a4a6a2b0 100644
--- a/clover_simulation/CMakeLists.txt
+++ b/clover_simulation/CMakeLists.txt
@@ -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
diff --git a/docs/en/copterhack2021.md b/docs/en/copterhack2021.md
index 136d455b..cd8d9670 100644
--- a/docs/en/copterhack2021.md
+++ b/docs/en/copterhack2021.md
@@ -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.
diff --git a/docs/en/programming.md b/docs/en/programming.md
index a55e802c..fd72298b 100644
--- a/docs/en/programming.md
+++ b/docs/en/programming.md
@@ -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 `python3` 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 `python3` command:
```bash
python3 flight.py
diff --git a/docs/en/snippets.md b/docs/en/snippets.md
index ce52b430..6c8d2127 100644
--- a/docs/en/snippets.md
+++ b/docs/en/snippets.md
@@ -359,3 +359,28 @@ calibrate_gyro()
```
> **Note** In process of calibration the drone should not be moved.
+
+
+
+### # {#aruco-detect-enabled}
+
+
+
+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})
+```
diff --git a/docs/ru/copterhack2021.md b/docs/ru/copterhack2021.md
index ee0446bf..0b93a3b3 100644
--- a/docs/ru/copterhack2021.md
+++ b/docs/ru/copterhack2021.md
@@ -1,6 +1,6 @@
# CopterHack 2021
-CopterHack 2021 – это командный конкурс по разработке проектов с открытым исходным кодом для платформы квадрокоптера "Клевер".
+CopterHack 2021 – это командный конкурс по разработке проектов с открытым исходным кодом для платформы квадрокоптера "Клевер". В конкурсе приняло участие 54 команды из 12 стран.
Все информацию о мероприятии смотрите на официальном сайте: https://ru.coex.tech/copterhack.
diff --git a/docs/ru/programming.md b/docs/ru/programming.md
index 3acb253c..ef8fe8e8 100644
--- a/docs/ru/programming.md
+++ b/docs/ru/programming.md
@@ -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-скрипт, используйте команду `python3`:
+После настройки системы позиционирования становится возможным написание скриптов для автономных полетов. Для выполнения скриптов [подключитесь в Raspberry Pi по SSH](ssh.md).
+
+Перед первым полетом рекомендуется проверить конфигурацию Клевера при помощи [утилиты selfcheck.py](selfcheck.md):
+
+```bash
+rosrun clover selfcheck.py
+```
+
+Для того, чтобы запустить Python-скрипт, используйте команду `python3`:
```bash
python3 flight.py
diff --git a/docs/ru/snippets.md b/docs/ru/snippets.md
index ec70652a..e7219bf7 100644
--- a/docs/ru/snippets.md
+++ b/docs/ru/snippets.md
@@ -377,3 +377,28 @@ calibrate_gyro()
```
> **Note** В процессе калибровки гироскопов дрон нельзя двигать.
+
+
+
+### # {#aruco-detect-enabled}
+
+
+
+Динамически включать и отключать [распознавание 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})
+```
diff --git a/redirects.json b/redirects.json
index 134dae7c..8d4a04ff 100644
--- a/redirects.json
+++ b/redirects.json
@@ -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" }