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