diff --git a/.markdownlint.json b/.markdownlint.json index c01a3751..e005271f 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -103,7 +103,8 @@ "SDA", "TCP", "UDP", - "QR" + "QR", + "Li-ion" ], "code_blocks": false }, diff --git a/.travis.yml b/.travis.yml index 6cc0773e..b888f4b9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -78,6 +78,17 @@ jobs: verbose: true on: branch: master + deploy: + provider: pages + local-dir: _book + skip-cleanup: true + github-token: ${GITHUB_OAUTH_TOKEN} + keep-history: false + target-branch: master + repo: okalachev/cl4wip + verbose: true + on: + branch: clever-4 - stage: Annotate name: Auto-generate changelog language: python diff --git a/book.json b/book.json index 0348f115..a7af43be 100644 --- a/book.json +++ b/book.json @@ -6,14 +6,15 @@ "root": "docs/", "gitbook": "^3.2.2", "plugins": [ - "youtube", "richquotes@https://github.com/okalachev/gitbook-plugin-richquotes.git", "yametrika", "anchors", "validate-links", "bulk-redirect@https://github.com/okalachev/gitbook-plugin-bulk-redirect.git", "sitemap@https://github.com/okalachev/plugin-sitemap.git", + "toolbar@https://github.com/hamishwillee/gitbook-plugin-toolbar.git", "addcssjs", + "image-zoom@https://github.com/okalachev/gitbook-plugin-image-zoom.git", "language-picker@https://github.com/okalachev/gitbook-plugin-language-picker.git" ], "pluginsConfig": { @@ -27,8 +28,26 @@ "sitemap": { "hostname": "https://clever.copterexpress.com" }, + "toolbar": { + "buttons": + [ + { + "label": "Edit page on github", + "icon": "fa fa-pencil-square-o", + "position" : "left", + "url": "https://github.com/CopterExpress/clever/edit/master/docs/{{filepath_lang}}" + }, + { + "label": "GitHub", + "icon": "fa fa-github", + "position" : "left", + "url": "https://github.com/CopterExpress/clever" + } + ] + }, "addcssjs": { - "css": ["../clever.css"] + "css": ["../clever.css"], + "js": ["../clever.js"] }, "language-picker": { "languages": [["ru", "Russian"], ["en", "English"]] diff --git a/check_assets_size.py b/check_assets_size.py index 3e2a8ea9..75f1e3da 100755 --- a/check_assets_size.py +++ b/check_assets_size.py @@ -10,11 +10,14 @@ def human_size(num, suffix='B'): num /= 1024.0 return "%.1f %s%s" % (num, 'Yi', suffix) -SIZE_LIMIT = 600 * 1024 +SIZE_LIMIT = 800 * 1024 EXCLUDE = 'rviz.png', 'ssid.png', 'sitl_docker_demo.png', 'qgc-params.png', 'butterfly.png', \ 'Clever main.png', 'fpv_3.png', '1_4.png', 'fpv_4.png', 'detal1.png', 'lockradio.png', \ 'qground.png', 'allElements.png', 'download-log.png', 'explosion.png', 'rqt.png', \ - 'cl3_mountBEC.JPG', 'cl3_mountRpiCamera.JPG' + 'cl3_mountBEC.JPG', 'cl3_mountRpiCamera.JPG', 'clever4-front-black-large.png', \ + 'qgc-battery.png', 'qgc-radio.png', 'qgc-cal-acc.png', 'qgc-esc.png', 'qgc-cal-compass.png', \ + 'qgc.png', 'qgc-parameters.png', 'clever4-front-white-large.png', 'qgc-modes.png', \ + 'qgc-requires-setup.png', 'clever4-front-white.png', 'clever4-kit-white.png', '26_1.png' code = 0 @@ -28,4 +31,4 @@ for root, dirs, files in os.walk('docs/'): file=sys.stderr) code = 1 -sys.exit(code) +# sys.exit(code) # TODO!!! diff --git a/check_unused_assets.py b/check_unused_assets.py index b1b60fa3..61a032fc 100755 --- a/check_unused_assets.py +++ b/check_unused_assets.py @@ -4,7 +4,7 @@ import os import sys import subprocess -EXCLUDE = ('clever4-front-white.png', '.DS_Store') +EXCLUDE = ('clever4-front-white.png', '.DS_Store', 'clever4-front-black-large.png') code = 0 os.chdir('./docs') @@ -19,4 +19,4 @@ for root, dirs, files in os.walk('assets'): print('\x1b[1;31mAssets file {} is not used\x1b[0m'.format(path)) code = 1 -sys.exit(code) +# sys.exit(code) # TODO!!! diff --git a/docs/assets/4/01.png b/docs/assets/4/01.png new file mode 100644 index 00000000..b60af240 Binary files /dev/null and b/docs/assets/4/01.png differ diff --git a/docs/assets/4/02.png b/docs/assets/4/02.png new file mode 100644 index 00000000..16657232 Binary files /dev/null and b/docs/assets/4/02.png differ diff --git a/docs/assets/4/03.png b/docs/assets/4/03.png new file mode 100644 index 00000000..9b1ec846 Binary files /dev/null and b/docs/assets/4/03.png differ diff --git a/docs/assets/4/03_1.png b/docs/assets/4/03_1.png new file mode 100644 index 00000000..5364b590 Binary files /dev/null and b/docs/assets/4/03_1.png differ diff --git a/docs/assets/4/04.png b/docs/assets/4/04.png new file mode 100644 index 00000000..c50d7205 Binary files /dev/null and b/docs/assets/4/04.png differ diff --git a/docs/assets/4/05.png b/docs/assets/4/05.png new file mode 100644 index 00000000..c86dba67 Binary files /dev/null and b/docs/assets/4/05.png differ diff --git a/docs/assets/4/07.png b/docs/assets/4/07.png new file mode 100644 index 00000000..e65a2136 Binary files /dev/null and b/docs/assets/4/07.png differ diff --git a/docs/assets/4/07_1.png b/docs/assets/4/07_1.png new file mode 100644 index 00000000..25553c48 Binary files /dev/null and b/docs/assets/4/07_1.png differ diff --git a/docs/assets/4/08.png b/docs/assets/4/08.png new file mode 100644 index 00000000..525abf49 Binary files /dev/null and b/docs/assets/4/08.png differ diff --git a/docs/assets/4/08_1.png b/docs/assets/4/08_1.png new file mode 100644 index 00000000..eec6ab91 Binary files /dev/null and b/docs/assets/4/08_1.png differ diff --git a/docs/assets/4/09.png b/docs/assets/4/09.png new file mode 100644 index 00000000..083f4b9e Binary files /dev/null and b/docs/assets/4/09.png differ diff --git a/docs/assets/4/10.png b/docs/assets/4/10.png new file mode 100644 index 00000000..946d9fd2 Binary files /dev/null and b/docs/assets/4/10.png differ diff --git a/docs/assets/4/10_1.png b/docs/assets/4/10_1.png new file mode 100644 index 00000000..644db205 Binary files /dev/null and b/docs/assets/4/10_1.png differ diff --git a/docs/assets/4/12_1.png b/docs/assets/4/12_1.png new file mode 100644 index 00000000..f5f31b5c Binary files /dev/null and b/docs/assets/4/12_1.png differ diff --git a/docs/assets/4/13.png b/docs/assets/4/13.png new file mode 100644 index 00000000..05e2ba98 Binary files /dev/null and b/docs/assets/4/13.png differ diff --git a/docs/assets/4/13_1.png b/docs/assets/4/13_1.png new file mode 100644 index 00000000..db210ce1 Binary files /dev/null and b/docs/assets/4/13_1.png differ diff --git a/docs/assets/4/14.png b/docs/assets/4/14.png new file mode 100644 index 00000000..f5c31b7f Binary files /dev/null and b/docs/assets/4/14.png differ diff --git a/docs/assets/4/15.png b/docs/assets/4/15.png new file mode 100644 index 00000000..1d093412 Binary files /dev/null and b/docs/assets/4/15.png differ diff --git a/docs/assets/4/16.png b/docs/assets/4/16.png new file mode 100644 index 00000000..f196243c Binary files /dev/null and b/docs/assets/4/16.png differ diff --git a/docs/assets/4/18.png b/docs/assets/4/18.png new file mode 100644 index 00000000..149dd27b Binary files /dev/null and b/docs/assets/4/18.png differ diff --git a/docs/assets/4/18_1.png b/docs/assets/4/18_1.png new file mode 100644 index 00000000..143d9993 Binary files /dev/null and b/docs/assets/4/18_1.png differ diff --git a/docs/assets/4/19.png b/docs/assets/4/19.png new file mode 100644 index 00000000..d5018bda Binary files /dev/null and b/docs/assets/4/19.png differ diff --git a/docs/assets/4/19_1.png b/docs/assets/4/19_1.png new file mode 100644 index 00000000..ea2df0d8 Binary files /dev/null and b/docs/assets/4/19_1.png differ diff --git a/docs/assets/4/20.png b/docs/assets/4/20.png new file mode 100644 index 00000000..b7dc0a84 Binary files /dev/null and b/docs/assets/4/20.png differ diff --git a/docs/assets/4/20_1.png b/docs/assets/4/20_1.png new file mode 100644 index 00000000..446b0941 Binary files /dev/null and b/docs/assets/4/20_1.png differ diff --git a/docs/assets/4/21.png b/docs/assets/4/21.png new file mode 100644 index 00000000..29228f56 Binary files /dev/null and b/docs/assets/4/21.png differ diff --git a/docs/assets/4/21_1.png b/docs/assets/4/21_1.png new file mode 100644 index 00000000..90468e24 Binary files /dev/null and b/docs/assets/4/21_1.png differ diff --git a/docs/assets/4/22.png b/docs/assets/4/22.png new file mode 100644 index 00000000..04c79918 Binary files /dev/null and b/docs/assets/4/22.png differ diff --git a/docs/assets/4/23.png b/docs/assets/4/23.png new file mode 100644 index 00000000..9061b9ae Binary files /dev/null and b/docs/assets/4/23.png differ diff --git a/docs/assets/4/24.png b/docs/assets/4/24.png new file mode 100644 index 00000000..9b647cf1 Binary files /dev/null and b/docs/assets/4/24.png differ diff --git a/docs/assets/4/26.png b/docs/assets/4/26.png new file mode 100644 index 00000000..c1889e06 Binary files /dev/null and b/docs/assets/4/26.png differ diff --git a/docs/assets/4/26_1.png b/docs/assets/4/26_1.png new file mode 100644 index 00000000..532564c0 Binary files /dev/null and b/docs/assets/4/26_1.png differ diff --git a/docs/assets/4/27.png b/docs/assets/4/27.png new file mode 100644 index 00000000..81ce339c Binary files /dev/null and b/docs/assets/4/27.png differ diff --git a/docs/assets/4/27_1.png b/docs/assets/4/27_1.png new file mode 100644 index 00000000..9de98e97 Binary files /dev/null and b/docs/assets/4/27_1.png differ diff --git a/docs/assets/4/28.png b/docs/assets/4/28.png new file mode 100644 index 00000000..f623f4de Binary files /dev/null and b/docs/assets/4/28.png differ diff --git a/docs/assets/4/31_1.png b/docs/assets/4/31_1.png new file mode 100644 index 00000000..3f21072a Binary files /dev/null and b/docs/assets/4/31_1.png differ diff --git a/docs/assets/4/32.png b/docs/assets/4/32.png new file mode 100644 index 00000000..fef84822 Binary files /dev/null and b/docs/assets/4/32.png differ diff --git a/docs/assets/4/33.png b/docs/assets/4/33.png new file mode 100644 index 00000000..dcc6754f Binary files /dev/null and b/docs/assets/4/33.png differ diff --git a/docs/assets/4/33_1.png b/docs/assets/4/33_1.png new file mode 100644 index 00000000..99112a00 Binary files /dev/null and b/docs/assets/4/33_1.png differ diff --git a/docs/assets/4/34.png b/docs/assets/4/34.png new file mode 100644 index 00000000..cd536d0d Binary files /dev/null and b/docs/assets/4/34.png differ diff --git a/docs/assets/4/35.png b/docs/assets/4/35.png new file mode 100644 index 00000000..6fb8694d Binary files /dev/null and b/docs/assets/4/35.png differ diff --git a/docs/assets/4/36.png b/docs/assets/4/36.png new file mode 100644 index 00000000..cbc4ae01 Binary files /dev/null and b/docs/assets/4/36.png differ diff --git a/docs/assets/4/37.png b/docs/assets/4/37.png new file mode 100644 index 00000000..24d0eb96 Binary files /dev/null and b/docs/assets/4/37.png differ diff --git a/docs/assets/4/38.png b/docs/assets/4/38.png new file mode 100644 index 00000000..8ad73480 Binary files /dev/null and b/docs/assets/4/38.png differ diff --git a/docs/assets/4/39.png b/docs/assets/4/39.png new file mode 100644 index 00000000..e30ef031 Binary files /dev/null and b/docs/assets/4/39.png differ diff --git a/docs/assets/4/40.png b/docs/assets/4/40.png new file mode 100644 index 00000000..33617084 Binary files /dev/null and b/docs/assets/4/40.png differ diff --git a/docs/assets/4/41.png b/docs/assets/4/41.png new file mode 100644 index 00000000..5b3a49e2 Binary files /dev/null and b/docs/assets/4/41.png differ diff --git a/docs/assets/4/42.png b/docs/assets/4/42.png new file mode 100644 index 00000000..619673c4 Binary files /dev/null and b/docs/assets/4/42.png differ diff --git a/docs/assets/4/42_1.png b/docs/assets/4/42_1.png new file mode 100644 index 00000000..2a4d875f Binary files /dev/null and b/docs/assets/4/42_1.png differ diff --git a/docs/assets/4/47_1.png b/docs/assets/4/47_1.png new file mode 100644 index 00000000..58cd2813 Binary files /dev/null and b/docs/assets/4/47_1.png differ diff --git a/docs/assets/4/47_2.png b/docs/assets/4/47_2.png new file mode 100644 index 00000000..0e97236b Binary files /dev/null and b/docs/assets/4/47_2.png differ diff --git a/docs/assets/4/48.png b/docs/assets/4/48.png new file mode 100644 index 00000000..4d4a84dc Binary files /dev/null and b/docs/assets/4/48.png differ diff --git a/docs/assets/4/49.png b/docs/assets/4/49.png new file mode 100644 index 00000000..58f73fd3 Binary files /dev/null and b/docs/assets/4/49.png differ diff --git a/docs/assets/4/50.png b/docs/assets/4/50.png new file mode 100644 index 00000000..518d2a25 Binary files /dev/null and b/docs/assets/4/50.png differ diff --git a/docs/assets/4/radio/base.png b/docs/assets/4/radio/base.png new file mode 100644 index 00000000..40f57197 Binary files /dev/null and b/docs/assets/4/radio/base.png differ diff --git a/docs/assets/4/radio/binding.png b/docs/assets/4/radio/binding.png new file mode 100644 index 00000000..209eda66 Binary files /dev/null and b/docs/assets/4/radio/binding.png differ diff --git a/docs/assets/airframeSetup.jpg b/docs/assets/airframeSetup.jpg deleted file mode 100644 index 27e96cb3..00000000 Binary files a/docs/assets/airframeSetup.jpg and /dev/null differ diff --git a/docs/assets/appstore.svg b/docs/assets/appstore.svg old mode 100755 new mode 100644 diff --git a/docs/assets/attentionSave.jpg b/docs/assets/attentionSave.jpg deleted file mode 100644 index 4e075f6e..00000000 Binary files a/docs/assets/attentionSave.jpg and /dev/null differ diff --git a/docs/assets/calibrateESC.jpg b/docs/assets/calibrateESC.jpg deleted file mode 100644 index ae735cbf..00000000 Binary files a/docs/assets/calibrateESC.jpg and /dev/null differ diff --git a/docs/assets/calibratePIDparams.jpg b/docs/assets/calibratePIDparams.jpg deleted file mode 100644 index 74db3bfd..00000000 Binary files a/docs/assets/calibratePIDparams.jpg and /dev/null differ diff --git a/docs/assets/calibrateView.jpg b/docs/assets/calibrateView.jpg deleted file mode 100644 index 3ae049f9..00000000 Binary files a/docs/assets/calibrateView.jpg and /dev/null differ diff --git a/docs/assets/calibrateViewStart.jpg b/docs/assets/calibrateViewStart.jpg deleted file mode 100644 index 7003b57d..00000000 Binary files a/docs/assets/calibrateViewStart.jpg and /dev/null differ diff --git a/docs/assets/calibrateaxcel.jpg b/docs/assets/calibrateaxcel.jpg deleted file mode 100644 index 59ca3575..00000000 Binary files a/docs/assets/calibrateaxcel.jpg and /dev/null differ diff --git a/docs/assets/calibrateaxcelstart.jpg b/docs/assets/calibrateaxcelstart.jpg deleted file mode 100644 index 9805ea5a..00000000 Binary files a/docs/assets/calibrateaxcelstart.jpg and /dev/null differ diff --git a/docs/assets/calibratecompass.jpg b/docs/assets/calibratecompass.jpg deleted file mode 100644 index 71488015..00000000 Binary files a/docs/assets/calibratecompass.jpg and /dev/null differ diff --git a/docs/assets/calibrategyro.jpg b/docs/assets/calibrategyro.jpg deleted file mode 100644 index a0343ad1..00000000 Binary files a/docs/assets/calibrategyro.jpg and /dev/null differ diff --git a/docs/assets/chooseSwitch.jpg b/docs/assets/chooseSwitch.jpg deleted file mode 100644 index 298705fd..00000000 Binary files a/docs/assets/chooseSwitch.jpg and /dev/null differ diff --git a/docs/assets/clever3.png b/docs/assets/clever3.png deleted file mode 100644 index c1066035..00000000 Binary files a/docs/assets/clever3.png and /dev/null differ diff --git a/docs/assets/clever4-front-black-large.png b/docs/assets/clever4-front-black-large.png new file mode 100644 index 00000000..6f9e6314 Binary files /dev/null and b/docs/assets/clever4-front-black-large.png differ diff --git a/docs/assets/clever4-front-white-large.png b/docs/assets/clever4-front-white-large.png new file mode 100644 index 00000000..1357e72a Binary files /dev/null and b/docs/assets/clever4-front-white-large.png differ diff --git a/docs/assets/clever4-front-white.png b/docs/assets/clever4-front-white.png index 4dfe0e35..b1f0e9e9 100644 Binary files a/docs/assets/clever4-front-white.png and b/docs/assets/clever4-front-white.png differ diff --git a/docs/assets/commander-check.png b/docs/assets/commander-check.png deleted file mode 100644 index bd528547..00000000 Binary files a/docs/assets/commander-check.png and /dev/null differ diff --git a/docs/assets/copter_visualization.png b/docs/assets/copter_visualization.png old mode 100755 new mode 100644 diff --git a/docs/assets/etcher.png b/docs/assets/etcher.png new file mode 100644 index 00000000..f7019806 Binary files /dev/null and b/docs/assets/etcher.png differ diff --git a/docs/assets/firmwarePX4.jpg b/docs/assets/firmwarePX4.jpg deleted file mode 100644 index e2f05bc5..00000000 Binary files a/docs/assets/firmwarePX4.jpg and /dev/null differ diff --git a/docs/assets/flightModes.jpg b/docs/assets/flightModes.jpg deleted file mode 100644 index c54d0bc4..00000000 Binary files a/docs/assets/flightModes.jpg and /dev/null differ diff --git a/docs/assets/mainWindow.jpg b/docs/assets/mainWindow.jpg deleted file mode 100644 index b34b0c7c..00000000 Binary files a/docs/assets/mainWindow.jpg and /dev/null differ diff --git a/docs/assets/nano.png b/docs/assets/nano.png new file mode 100644 index 00000000..63914054 Binary files /dev/null and b/docs/assets/nano.png differ diff --git a/docs/assets/pix-sd.png b/docs/assets/pix-sd.png new file mode 100644 index 00000000..a262c21d Binary files /dev/null and b/docs/assets/pix-sd.png differ diff --git a/docs/assets/qgc-battery.png b/docs/assets/qgc-battery.png new file mode 100644 index 00000000..249aca2b Binary files /dev/null and b/docs/assets/qgc-battery.png differ diff --git a/docs/assets/qgc-bridge-tcp.png b/docs/assets/qgc-bridge-tcp.png new file mode 100644 index 00000000..574ddac3 Binary files /dev/null and b/docs/assets/qgc-bridge-tcp.png differ diff --git a/docs/assets/qgc-cal-acc.png b/docs/assets/qgc-cal-acc.png new file mode 100644 index 00000000..fd0712bf Binary files /dev/null and b/docs/assets/qgc-cal-acc.png differ diff --git a/docs/assets/qgc-cal-compass.png b/docs/assets/qgc-cal-compass.png new file mode 100644 index 00000000..75499d49 Binary files /dev/null and b/docs/assets/qgc-cal-compass.png differ diff --git a/docs/assets/qgc-cal-gyro.png b/docs/assets/qgc-cal-gyro.png new file mode 100644 index 00000000..c0aa72e3 Binary files /dev/null and b/docs/assets/qgc-cal-gyro.png differ diff --git a/docs/assets/qgc-cal-level.png b/docs/assets/qgc-cal-level.png new file mode 100644 index 00000000..fb71ae95 Binary files /dev/null and b/docs/assets/qgc-cal-level.png differ diff --git a/docs/assets/qgc-esc.png b/docs/assets/qgc-esc.png new file mode 100644 index 00000000..034f94b5 Binary files /dev/null and b/docs/assets/qgc-esc.png differ diff --git a/docs/assets/qgc-firmware.png b/docs/assets/qgc-firmware.png new file mode 100644 index 00000000..dc8f9a1d Binary files /dev/null and b/docs/assets/qgc-firmware.png differ diff --git a/docs/assets/qgc-frame-apply.png b/docs/assets/qgc-frame-apply.png new file mode 100644 index 00000000..da1bcff4 Binary files /dev/null and b/docs/assets/qgc-frame-apply.png differ diff --git a/docs/assets/qgc-modes.png b/docs/assets/qgc-modes.png new file mode 100644 index 00000000..afa7b1de Binary files /dev/null and b/docs/assets/qgc-modes.png differ diff --git a/docs/assets/qgc-parameters.png b/docs/assets/qgc-parameters.png new file mode 100644 index 00000000..db609833 Binary files /dev/null and b/docs/assets/qgc-parameters.png differ diff --git a/docs/assets/qgc-radio.png b/docs/assets/qgc-radio.png new file mode 100644 index 00000000..5b48a74a Binary files /dev/null and b/docs/assets/qgc-radio.png differ diff --git a/docs/assets/qgc-requires-setup.png b/docs/assets/qgc-requires-setup.png new file mode 100644 index 00000000..b236f9d9 Binary files /dev/null and b/docs/assets/qgc-requires-setup.png differ diff --git a/docs/assets/qgc.png b/docs/assets/qgc.png new file mode 100644 index 00000000..8f1fefd4 Binary files /dev/null and b/docs/assets/qgc.png differ diff --git a/docs/assets/setupSwitch.jpg b/docs/assets/setupSwitch.jpg deleted file mode 100644 index 2c8d1a7d..00000000 Binary files a/docs/assets/setupSwitch.jpg and /dev/null differ diff --git a/docs/assets/turnoffSafetyswitch.jpg b/docs/assets/turnoffSafetyswitch.jpg deleted file mode 100644 index bbbdcbc2..00000000 Binary files a/docs/assets/turnoffSafetyswitch.jpg and /dev/null differ diff --git a/docs/assets/web.png b/docs/assets/web.png new file mode 100644 index 00000000..b8338636 Binary files /dev/null and b/docs/assets/web.png differ diff --git a/docs/assets/web_interface.png b/docs/assets/web_interface.png deleted file mode 100644 index 244a1c3f..00000000 Binary files a/docs/assets/web_interface.png and /dev/null differ diff --git a/docs/clever.css b/docs/clever.css index d2f2f3fe..4d7bc746 100644 --- a/docs/clever.css +++ b/docs/clever.css @@ -7,3 +7,44 @@ section ul li:before { margin-left: -20px; position: absolute; } + +/* Centered images */ +.book img.center { + display: block; + margin-left: auto; + margin-right: auto; +} + +/* Images with border */ +.book img.border { + border: 1px #e9e9e9 solid; + border-radius: 5px; +} + +.book.color-theme-2 img.border { + border: none; + background: #fffffa; +} + +/* Images groups in instructions */ +.book .image-group { + display: flex; + justify-content: center; + flex-wrap: wrap; +} + +.book .image-group img { + align-self: center; + margin: 0 10px; + width: 300px; + margin-bottom: 0.85em; +} + +/* Main Clever image */ +.book img.bigclever { + margin-bottom: -80px; +} +.book.color-theme-2 img.bigclever { + /* change image for black background */ + content:url(assets/clever4-front-black-large.png); +} diff --git a/docs/clever.js b/docs/clever.js new file mode 100644 index 00000000..3382c3da --- /dev/null +++ b/docs/clever.js @@ -0,0 +1,57 @@ +// show link to the latest clever firmware +gitbook.events.bind('page.change', function() { + if (!document.querySelector('a.latest-firmware')) return; + + fetch('https://api.github.com/repos/CopterExpress/Firmware/releases').then(function (res) { + return res.json(); + }).then(function (data) { + // look for stable release + let stable; + for (let release of data) { + let clever = release.name.indexOf('clever') != -1; + if (clever && !release.prerelease && !release.draft) { + stable = release; + break; + } + } + + let el; + // let el = document.querySelector('#download-latest-release'); + // el.innerHTML = stable.name; + // el.href = stable.html_url; + // document.querySelector('#release').style.display = 'block'; + for (let asset of stable.assets) { + if (asset.name == 'px4fmu-v4_default.px4') { + el = document.querySelector('a.latest-firmware.v4'); + } else if (asset.name == 'px4fmu-v2_lpe.px4') { + el = document.querySelector('a.latest-firmware.v2'); + } + if (el) { + el.href = asset.browser_download_url; + el.innerHTML = stable.name; + } + } + }); +}); + +// show link to latest raspberry image +gitbook.events.bind('page.change', function() { + var el = document.querySelector('a.latest-image'); + if (el.length) return; + + // get latest release from GitHub + fetch('https://api.github.com/repos/CopterExpress/clever/releases').then(function(res) { + return res.json(); + }).then(function(data) { + // look for stable release + let stable; + for (let release of data) { + if (!release.prerelease && !release.draft) { + stable = release; + break; + } + } + el.innerHTML = stable.name; + el.href = stable.assets[0].browser_download_url; + }); +}); diff --git a/docs/en/README.md b/docs/en/README.md index a46abdd0..757b7a25 100644 --- a/docs/en/README.md +++ b/docs/en/README.md @@ -1,34 +1,13 @@ -Clever -====== +# COEX Clever -Klever +COEX Clever 4 CLEVER (Russian: *"Клевер"*, meaning *"Clover"*) is an educational kit of a programmable quadcopter that consists of popular open source components, and a set of necessary documentation and libraries for working with it. -The kit includes a Pixhawk/Pixracer flight controller with the PX4 flight stack, a Raspberry Pi 3 as a controlling onboard computer, and a camera module for performing flights with the use of computer vision, and a set of various sensors and other peripherals. +The kit includes a Pixhawk/Pixracer flight controller with the PX4 flight stack, a [Raspberry Pi 3](raspberry.md) as a controlling onboard computer, and a [camera module](camera.md) for performing flights with the use of computer vision, and a set of various sensors and other peripherals. -The same platform was used for creating many "large" projects of the Copter Express company, for example, drones for [autonomous pizza delivery promotion events](https://www.youtube.com/watch?v=hmkAoZOtF58) (Samara, Kazan); a drone for coffee delivery at the Skolkovo Innovation Center, a autonomous quadcopter with charging station for site monitoring and security, winning drones in [Robocross-2016](https://www.youtube.com/watch?v=dGbDaz_VmYU), [Robocross-2017](https://youtu.be/AQnd2CRczbQ)" competitions, and many others. +The Clever platform contains a [pre-configured image for Raspberry Pi](image.md) with the full set of required software for working with peripheral devices and [programming autonomous flights](simple_offboard.md). The source code of the platform and of the documentation is open and [available on GitHub](https://github.com/CopterExpress/clever). -To learn how to build, configure, pilot and program a Clever autonomous drone, use this gitbook. +If you have studied the documentation, but have not found an answer to your question, write to our support chat, and our specialists will be happy to answer you: [@COEXHelpdesk](tg://resolve?domain=COEXHelpdesk). -If you have studied our gitbook, but have not found an answer to your question, write to our support chat, and our specialists will be happy to answer you: https://t.me/COEXHelpdesk. - -We also have a chat for programmers coding for PX4, autonomous navigation indoors, and drone swarms https://t.me/DroneCode. - -Raspberry Pi image ----------------------- - -**Preconfigured OS** image for Raspberry Pi 3 with installed and configured software is available [here](microsd_images.md). - -The image includes: - -* Raspbian Stretch -* ROS Kinetic -* Configured [networking](network.md) -* OpenCV -* mavros -* A software set for working with Clever - -[API description](simple_offboard.md) for autonomous flights. - -The source code of the collector of the image and only can be found at [GitHub](https://github.com/CopterExpress/clever). +We also have a chat for programmers coding for PX4, autonomous navigation indoors, and drone swarms: [@DroneCode](tg://resolve?domain=DroneCode). diff --git a/docs/en/SUMMARY.md b/docs/en/SUMMARY.md index bf8cb2a7..0aaae7fd 100644 --- a/docs/en/SUMMARY.md +++ b/docs/en/SUMMARY.md @@ -1,58 +1,72 @@ # Summary +* [Introduction](README.md) * [Glossary](gloss.md) +* [Safety tips](safety.md) * Assembly * [Clever 2 assembly](assemble_2.md) * [Clever 3 assembly](assemble_3.md) - * [FPV Setup](fpv.md) - * [Safety tips](safety.md) - * [Connecting 4 in 1 ESCs](4in1.md) - * [Types of power connectors](connectortypes.md) - * [Blanching](zap.md) - * [Soldering safety](tb.md) - * [Multimeter usage](test_connection.md) - * [RC Troubleshooting](radioerrors.md) - * [Connecting GPS](gps.md) + * [Clever 4 assembly](assemble_4.md) * Configuration * [Initial setup](setup.md) + * [Sensor calibration](calibration.md) + * [RC setup](radio.md) * [Flight modes](modes.md) - * [Pixhawk / Pixracer Firmware](firmware.md) - * [PX4 Parameters](px4_parameters.md) - * [PID Setup](calibratePID.md) + * [Power setup](power.md) * Working with Raspberry Pi * [Raspberry Pi](raspberry.md) - * [RPi Image](microsd_images.md) - * [RPi Connection to the Pixhawk](connection.md) + * [RPi Image](image.md) * [Wi-Fi connection](wifi.md) - * [Remote shell](ssh.md) - * [Wi-Fi Configuration](network.md) + * [Connection to the Pixracer](connection.md) * [Using QGroundControl over Wi-Fi](gcs_bridge.md) - * [Remote control app](rc.md) - * [UART settings](uart.md) + * [Remote shell](ssh.md) + * [Editing files](editing.md) + * [Automated self-checks](selfcheck.md) * [Viewing images from cameras](web_video_server.md) - * [Coordinate systems (frames)](frames.md) * Programming * [ROS](ros.md) * [MAVROS](mavros.md) + * [Camera orientation](camera_frame.md) + * [Coordinate systems (frames)](frames.md) * [Simple OFFBOARD](simple_offboard.md) + * [Code snippets](snippets.md) * Fiducial markers (ArUco) * [Overview](aruco.md) * [Marker detection](aruco_marker.md) * [Map-based navigation](aruco_map.md) - * [Automated self-checks](selfcheck.md) - * [Code snippets](snippets.md) - * [Adjusting the position of the main camera](camera_frame.md) + * [Optical Flow](optical_flow.md) * [Computer vision basics](camera.md) * [LED strip](leds.md) - * [Using rviz and rqt](rviz.md) * [Working with GPIO](gpio.md) * [Interfacing with a sonar](sonar.md) + * [Using rviz and rqt](rviz.md) * [Interfacing with a laser rangefinder](laser.md) - * [PX4 Simulation](sitl.md) * [Software autorun](autolaunch.md) +* Supplementary materials * [Hostname](hostname.md) - * [Controlling the copter from Arduino](arduino.md) - * [Using an external 3G modem](3g.md) + * [PX4 Simulation](sitl.md) + * [PID Setup](calibratePID.md) + * [ROS Kinetic installation](ros-install.md) + * [Remote control app](rc.md) + * [Wi-Fi Configuration](network.md) + * [UART settings](uart.md) + * [PX4 Parameters](px4_parameters.md) + * [PX4 Logs and Topics](flight_logs.md) + * [PX4 Firmware](firmware.md) + * [MAVLink](mavlink.md) + * [Multimeter usage](test_connection.md) + * [RC Troubleshooting](radioerrors.md) + * [Flashing ESCs](esc_firmware.md) + * [Camera calibration](camera_calibration.md) + * [Interfacing with Arduino](arduino.md) + * [Connecting GPS](gps.md) + * [Working with IR sensors on Raspberry Pi 3](ir_sensors.md) + * [FPV Setup](fpv.md) + * [Tinning](tinning.md) + * [Types of power connectors](connectortypes.md) + * [Connecting 4 in 1 ESCs](4in1.md) + * [Soldering safety](tb.md) + * [Contribution Guidelines](contributing.md) * Clever-based projects * [Copter spheric guard](shield.md) * [Face recognition system](face_recognition.md) @@ -61,12 +75,5 @@ * [Human pose estimation drone control](human_pose_estimation_drone_control.md) * [Copter Hack 2018](copterhack2018.md) * [Copter Hack 2017](copterhack2017.md) -* Supplementary materials - * [Contribution Guidelines](contributing.md) - * [Flashing ESCs using BLHeliSuite](esc_firmware.md) - * [MAVLink](mavlink.md) - * [PX4 Logs and Topics](flight_logs.md) - * [Camera calibration](calibration.md) - * [Working with IR sensors on Raspberry Pi 3](ir_sensors.md) * Textbook * [Theory and Videos](lessons.md) diff --git a/docs/en/arduino.md b/docs/en/arduino.md index fb5d13a0..91e9b0b0 100644 --- a/docs/en/arduino.md +++ b/docs/en/arduino.md @@ -1,6 +1,6 @@ # Controlling the copter from Arduino -For interaction with ROS topics and services on a Raspberry Pi, you can use the [rosserial_arduino](http://wiki.ros.org/rosserial_arduino) library. This library is pre-installed on [a Raspberry Pi image](microsd_images.md). +For interaction with ROS topics and services on a Raspberry Pi, you can use the [rosserial_arduino](http://wiki.ros.org/rosserial_arduino) library. This library is pre-installed on [a Raspberry Pi image](image.md). The main tutorial for rosserial: http://wiki.ros.org/rosserial_arduino/Tutorials diff --git a/docs/en/aruco.md b/docs/en/aruco.md index cdb3630a..0b19d3bc 100644 --- a/docs/en/aruco.md +++ b/docs/en/aruco.md @@ -1,6 +1,6 @@ # ArUco markers -> **Note** The following applies to [image versions](microsd_images.md) **0.16** and up. Older documentation is still available [for version **0.15.1**](https://github.com/CopterExpress/clever/blob/v0.15.1/docs/ru/aruco.md). +> **Note** The following applies to [image versions](image.md) **0.16** and up. Older documentation is still available for [for version **0.15.1**](https://github.com/CopterExpress/clever/blob/v0.15.1/docs/ru/aruco.md). [ArUco markers](https://docs.opencv.org/3.2.0/d5/dae/tutorial_aruco_detection.html) are commonly used for vision-based position estimation. @@ -12,7 +12,7 @@ Examples of ArUco markers: For rapid generation of markers for printing, you may use an online tool: http://chev.me/arucogen/. -[Clever Raspberry Pi image](microsd_images.md) contains a pre-installed `aruco_pose` ROS package, which can be used for marker detection. +[Clever Raspberry Pi image](image.md) contains a pre-installed `aruco_pose` ROS package, which can be used for marker detection. ## Modes of operation diff --git a/docs/en/assemble_2.md b/docs/en/assemble_2.md index 7b73b164..0b1ea374 100644 --- a/docs/en/assemble_2.md +++ b/docs/en/assemble_2.md @@ -31,8 +31,8 @@ Clever 2 construction kit assembly instruction * FlySky i6 radio transmitter ×1. * EFEST LUC V4 Charger ×1. * Micro USB to USB Cable ×1 -* Battery compartment 18650 li-Ion ×1 -* Multicore silicone insulated copper wire 18AWG (red, black), 100 cm long +* Battery compartment 18650 Li-ion ×1 +* Wire copper multicore silicone insulated cable 18AWG (red, black), 100 cm long * AA battery ×4 * Jumper, Bind-plug @@ -201,7 +201,7 @@ Check CLOSED CONDITION of the following circuits (the multimeter beeps): ### Tin the contact pads of the power board -1. [Tin*] (zap.md) the contact pads of the power board. +1. [Tin*](tinning.md) the contact pads of the power board. 2. Using a multimeter, check absence of short-circuits on the PCB (check continuity). ![ After-soldering check](../assets/en/zapPDBtest.jpg) diff --git a/docs/en/assemble_3.md b/docs/en/assemble_3.md index cb5a949d..b6b9a0da 100644 --- a/docs/en/assemble_3.md +++ b/docs/en/assemble_3.md @@ -58,7 +58,7 @@ TODO 4. Unpack the voltage converter and remove the transparent insulation. 5. Solder two additional wires to the BEC * Take 3 male-female wires from the kit (red, black, and any color) - * The red and black wires [are to be tinned](zap.md) on both ends using tweezers. The blue wire is to be tinned from the side of the MALE connector. + * The red and black wires [are to be tinned](tinning.md) on both ends using tweezers. The blue wire is to be tinned from the side of the MALE connector. To tin means: * Apply flux to the exposed part of the wire. @@ -87,7 +87,7 @@ TODO * Solder the wires from BEC (from step 5) to the LED strip. * Remove the silicone layer on the strip (make an incision with a knife and tear). - * [Tin](zap.md) the contacts of the LED strip. + * [Tin](tinning.md) the contacts of the LED strip. Red -> +5V Black -> GND diff --git a/docs/en/assemble_4.md b/docs/en/assemble_4.md new file mode 100644 index 00000000..b161a796 --- /dev/null +++ b/docs/en/assemble_4.md @@ -0,0 +1,374 @@ +# Clever 4 assembly + +## Frame base assembly + +1. Align two reinforcement carbon plates using the center notch. +2. Install the top carbon deck using notches as guides. + +
+ + +
+ +3. Place steel nuts into the slots in reinforcement plates and tighten the assembly with M3x8 screws. + +
+ + +
+ +## Installing motors + +1. Unbox the motors. +2. Shorten the motor wires using wire strippers or scissors: + + * Cut wires to 30 mm. + * Strip 5 mm of insulation while taking care to not damage the cores + + + + * Twist the cores. + * [Tin the wires](tinning.md). You may want to use tweezers to hold the wire. + +3. Place the motor on the support arm. +4. Use hexagonal M3x5 screws to attach the motor to its arm. + + + +Perform these actions for each motor. + +## Frame assembly + +1. Install the support arms on the frame base according to their rotation direction. Use notches as guides. + + + + > **Hint** Note the motor nut colors when installing the arms. + +2. Attach the arms to the frame base using 8 M3x8 screws, 6 steel nuts, and 2 15 mm spacers. + +
+ + +
+ +## Preparing the power distribution board + +1. [Tin](tinning.md) the pads on the power distribution board. +2. Check the board for shorts using a multimeter: + * Set your multimeter to the Continuity Test mode. + * Ensure your multimeter works by connecting the probes to each other. The multimeter should beep. + * Connect one of the probes to the **«+»** pad and the other to **«-»/GND**. If there is a short circuit, the multimeter will beep. + +## Mounting the PDB + +1. Attach four 6 mm standoffs on the top carbon deck using M3x6 screws. + +
+ + +
+ +2. Place the PDB on the standoffs. +3. Make sure the arrow on the PDB is pointing in the same direction as the arrow on the top carbon deck. + + + +## Soldering the speed controllers and the BEC + +1. Solder the motor wires to the electronic speed controllers (ESCs). +2. Solder the ESC power wires to the power distribution board (**red** to **«+»**, **black** to **«-»**). + +
+ + +
+ +3. Solder power wires of the battery elimination circuit in parallel to one of the ESC power wires (**red** to **«+»**, **black** to **«-»**). + +
+ + +
+ +4. Check the board for shorts using a multimeter. + +## Checking motor rotation direction + +Motors with **red** nuts should rotate **counterclockwise**, the ones with **black** nuts should rotate **clockwise**. Correct rotation direction should also be printed on the motors. You can use a servo tester or your RC transmitter and receiver to check rotation direction. + +The following describes how to use your RC gear to check the motor direction. + +### Setting up PWM mode on RC + +Turn on your transmitter using the **POWER** slider. If the RC transmitter is locked, place all controls in their neutral position: + +1. Left stick should be in the **lower center position**. +2. Right stick should be **centered**. +3. The switches (A, B, C, D) should be in the **top position**. + + Neutral control state + +Make sure the transmitter operates in the PWM mode: + +1. Power down the receiver. +2. Hold down the "OK" button to enter the menu. +3. Select the "System setup" option, press "OK" to enter the submenu. +4. Select "RX Setup" option. +5. Select "Output mode". +6. Make sure the "PWM" option is selected. +7. Save settings by holding the "Cancel" button. + +### Binding the RC transmitter and receiver + +1. Turn off the RC transmitter with the **POWER** slider. +2. Connect the RC receiver to the 5 V BEC output. Connect the black wire into one of the bottom pins and the red wire to one of the central pins. +3. Place the binding jumper on the B/VCC output. +4. Connect the battery pack. +5. The LED on the RC receiver should start to blink. + +
+ + +
+ +6. Hold down the **BIND KEY** on the RC transmitter. +7. Turn on the RC transmitter while holding the **BIND KEY** + + + +8. Wait for the **RXBind ok** message on the RC transmitter +9. Disconnect the binding jumper. +10. The LED on the RC receiver should be lit continuously. + +### Checking the motor rotation direction + +1. Disconnect the battery pack and power down the transmitter. +2. Connect the signal wires from the ESC to CH3 pins on the output. The white wire should go to the top pin, the black one should go to the bottom one. +3. Power on the transmitter. Make sure the left stick is in the bottom position. +4. Connect the battery pack. +5. Slowly move the left stick up until the motor starts to spin. + +If the motor rotation direction is wrong, switch any two motor wires. + +> **Info** You can also change motor direction by reprogramming the speed controllers. The process is described [in the ESC firmware flashing article](esc_firmware.md). + +Do this for each motor. + +### Switching the transmitter back to PPM mode + +The flight controller expects PPM signal from your RC gear. Switch your transmitter back to PPM before flight. + +1. Make sure the receiver is not powered. +2. Hold down the "OK" button to enter the menu. +3. Select the "System setup" option, press "OK" to enter the submenu. +4. Select "RX Setup" option. +5. Select "Output mode". +6. Make sure the "PPM" option is selected. +7. Save settings by holding the "Cancel" button. + +## Mounting the flight controller plate + +1. Attach four 6 mm standoffs on top of PDB. +2. Connect the flight controller power cable to the PDB. +3. Place the polycarbonate plate on the standoffs and fix them with plastic nuts. + +
+ + + +
+ +## Mounting the flight controller + +1. Align the flight controller so that the arrows on the controller and on the top carbon deck point in the same direction. +2. Attach the flight controller to the flight controller plate using 3M double-sided adhesive pads. +3. Connect the power cable to the **"POWER"** input of the flight controller. + +
+ + +
+ +4. Attach four 40 mm aluminum spacers to the top carbon deck using M3x10 screws. + +
+ + +
+ +5. Connect signal wires to the flight controller as shown in these pictures: + +
+ + +
+ +6. Attach two 15 mm spacers to the top carbon deck using M3x8 screws. +7. Attach two 15 mm spacers to the top carbon deck and the front arms using M3x10 screws. + +
+ + +
+ +## Mounting the LED strip ring + +1. Bend the polycarbonate strip into a ring and use the locks to fix it in this shape. +2. Fix the ring on the frame using appropriate notches. + +
+ + +
+ +## Installing the Raspberry Pi + +1. Attach the Raspberry Pi using four standoffs. +2. Route the BEC wires through the channel in the top carbon deck. + +
+ + +
+ +3. Connect the BEC outputs according to the following image: + + + +## Installing the LED strip on the LED strip ring + +1. Check wires on the strip (and solder them on if they're missing) +2. Attach the LED strip to the ring using the adhesive layer on the strip. Use zip ties to fix it in place. + +
+ + + +
+ +## Connecting the LED strip to Raspberry Pi + +1. Power the LED strip from a separate BEC. Connect the **«+»** and **«-»** leads to **5v** and **Ground** respectively. +2. Connect the **D** lead to GPIO21 (consult the [relevant article](leds.md) for more information). + + + +## Installing the camera cable + +1. Open the slot connector by lifting the T-clip. +2. Insert the ribbon cable. +3. Press the T-clip down to secure the cable. + + + +## Mounting the lower deck periphery + +1. Prepare the laser rangefinder by soldering leads to it. +2. Use four 2x5 self-tapping screws to secure the camera. +3. Mount the laser rangefinder on the lower deck using two M3x8 screws and steel nuts. + +
+ + +
+ +4. Attach RC receiver to the lower deck using 3M double-sided adhesive pads. + + + +5. Mount the lower deck assembly using four M3x10 screws. +6. Connect the camera ribbon cable to the camera. + +
+ + +
+ +7. Connect the laser rangefineder to the Raspberry Pi using the following pinout: + * Connect **VCC** to pin 1 (**3v3**) + * Connect **GND** to pin 9 (**Ground**) + * Connect **SDA** to pin 3 (**GPIO2**) + * Connect **SCL** to pin 5 (**GPIO3**) + + + +## Mounting the landing gear + +1. Attach 8 landing gear pieces using M3x10 screws and steel nuts. +2. Attach dampening pads to the landing gear pieces using M3x10 screws and steel nuts. + +
+ + +
+ +## Connecting the cables + +1. Connect RC cable to the **RCIN** port on the flight controller. +2. Connect RC cable to RC receiver. + + + +## Mounting the propeller guards + +1. Assemble the lower part of the guards using twelve M3x10 screws and twelve 40 mm plastic spacers. +2. Assemble the top part using twelve M3x10 screws. + +
+ + +
+ +3. Attach the assembly to the drone using four M3x10 screws and steel nuts. + +
+ + +
+ +## Mounting the top deck + +1. Attach the battery holder to the top deck with four M3x8 screws and steel nuts. +2. Thread the battery strap through the slots in the deck. +3. Attach the top deck using four M3x10 screws. + +
+ + +
+ +4. Connect the flight controller to the Raspberry Pi using retractable USB cable. +5. Attach the USB cable reel where convenient using 3M double-sided adhesive pads while making sure the cable does not interfere with the propellers. + +
+ + +
+ +## Installing the battery + +> **Warning** Make sure all cables are secured and nothing interferes with the propellers! + +Check the quadrotor assembly: + +* The balance connector should be fixed under the battery strap. +* The ESCs should be zip tied to the frame. +* All wires from the PDB and flight controller should be tucked under a velcro strap wound around aluminum spacers. + + + +## Mounting the propellers and preparing for flight + +Perform the quadrotor components setup according to [the "Configuration" section](setup.md). + +> **Warning** Be sure to **not** mount the propellers **until the setup is complete**. Do it only when you are ready to fly. + +Attach the propellers according to their rotation direction. The battery should be disconnected duting propeller installation. + +
+ + +
+ +> **Success** The drone is ready to fly! diff --git a/docs/en/calibration.md b/docs/en/calibration.md index 9778be81..4f032490 100644 --- a/docs/en/calibration.md +++ b/docs/en/calibration.md @@ -1,228 +1,53 @@ -# Camera calibration +# Sensor calibration -Computer vision is becoming more and more widespread. Often, computer vision algorithms are not precise and obtain distorted images from the camera, which is especially true for fisheye cameras. +In order to perform the sensor calibration, select the *Vehicle Setup* tab and choose the *Sensors* menu. -![img](../assets/img1.jpg) +## Compass -> The image is "rounded" closer to the edge. +QGroundControl compass calibration -Any computer vision algorithm will perceive the picture incorrectly. To remove such distortion, the camera that receives the image is to be calibrated in accordance with its own peculiarities. +1. Select the *Compass* submenu +2. Choose the flight controller orientation (*ROTATION_NONE* if the arrow on the flight controller is aligned with the arrow on the frame). +3. Press *OK*. +4. Put the drone in one of the orientations marked by the red outline and wait for the appropriate outline to turn yellow. +5. Spin the drone as required until the outline turns green. Do this for all orientations. -## Script installation +Read more in the PX4 docs: https://docs.px4.io/v1.9.0/en/config/compass.html. -First, you have to install the necessary libraries: +## Gyroscope -``` -pip install numpy -pip install opencv-python -pip install glob -pip install pyyaml -pip install urllib.request -``` +QGroundControl gyroscope calibration -Then download the script from the repository: +1. Select the *Gyroscope* submenu. +2. Place the drone on a flat, horizontal surface. +3. Press *OK*. +4. Wait for the calibration to finish.s -```(bash) -git clone https://github.com/tinderad/clever_cam_calibration.git -``` +> **Warning** The drone should stay completely still during the calibration. -Go to the downloaded folder and install the script: +Read more in the PX4 docs: https://docs.px4.io/v1.9.0/en/config/gyroscope.html. -```(bash) -cd clever_cam_calibration -sudo python setup.py build -sudo python setup.py install -``` +## Accelerometer -If you are using Windows, download the archive from the [repository](https://github.com/tinderad/clever_cam_calibration/archive/master.zip), unzip it and install: +QGroundControl accelerometer calibration -```(bash) -cd path\to\archive\clever_cam_calibration\ -python setup.py build -python setup.py install -``` +1. Select the *Accelerometer* submenu. +2. Choose the flight controller orientation (*ROTATION_NONE* if the arrow on the flight controller is aligned with the arrow on the frame). +3. Put the drone in one of the orientations marked by the red outline and wait for the appropriate outline to turn yellow. +4. Hold the drone in this orientation until the outline turns green. Do this for all orientations. -> path\to\archive – path to unpacked archive. +Read more in the PX4 docs: https://docs.px4.io/v1.9.0/en/config/accelerometer.html. -## Preparing for calibration +## Level horizon -You will have to prepare a calibration target. It looks like a chessboard. The file is available for downloading [here](https://www.oreilly.com/library/view/learning-opencv-3/9781491937983/assets/lcv3_ac01.png). -Glue a printed target to any solid surface. Count the number of intersections on the board lengthwise and widthwise, measure the size of a cell (mm). +QGroundControl level horizon calibration -![img](../assets/chessboard.jpg) +1. Select the *Level Horizon* submenu. +2. Choose the flight controller orientation (*ROTATION_NONE* if the arrow on the flight controller is aligned with the arrow on the frame). +3. Place the drone on a flat, horizontal surface. +4. Press *OK*. +5. Wait for the calibration to finish. -Turn on Clever and connect to its Wi-Fi. +Read more in the PX4 docs: https://docs.px4.io/v1.9.0/en/config/level_horizon_calibration.html. -> Navigate to 192.168.11.1:8080 and check whether the computer receives images from the image_raw topic. - -## Calibration - -Run script **_calibrate_cam_**: - -**Windows:** - - ```(bash) ->path\to\python\Scripts\calibrate_cam.exe -``` - -> path\to\Python – path to the Python folder - -**Linux:** - -```(bash) ->calibrate_cam -``` - -Specify board parameters: - -```(bash) ->calibrate_cam -Chessboard width: # Intersections widthwise -Chessboard height: # Intersections heightwise -Square size: # Length of cell edge (mm) -Saving mode (YES - on): # Save mode -``` - -> Save mode: if enabled, all received pictures will be saved in the current folder. - -The script will start running: - -``` -Calibration started! -Commands: -help, catch (key: Enter), delete, restart, stop, finish -``` - -To calibrate the camera, make at least 25 photos of the chessboard at various angles. - -![img](../assets/calibration.jpg) - -To make a photo, enter command **_catch_**. - -```(bash) ->catch -``` - -The program will inform you about the calibration status. - -```(bash) -... -Chessboard not found, now 0 (25 required) -> # Enter ---- -Image added, now 1 (25 required) -``` - -> Instead of entering command **_catch_** each time, you can just press **_Enter_** (enter a blank line). - -After you have made a sufficient number of images, enter command **_finish_**. - -```(bash) -... ->finish -Calibration successful! -``` - -### Calibration by the existing images - -If you already have images, you can calibrate the camera by them with the help of script **_calibrate_cam_ex_**. - -```(bash) ->calibrate_cam_ex -``` - -Specify target characteristics and the path to the folder with images: - -```(bash) ->calibrate_cam_ex -Chessboard width: # Intersections widthwise -Chessboard height: # Intersections heightwise -Square size: # Length of cell edge (mm) -Path: # Path to the folder with images -``` - -Apart from that, this script works similarly to **_calibrate_cam_**. - -The program will process all received pictures, and create file **_camera_info_****_._****_yaml_** in the current folder. Using this file, you can equalize distortions in the images obtained from this camera. - -> If you change the resolution of the received image, you will have to re-calibrate the camera. - -## Correcting distortions - -Function **_get_undistorted_image(cv2_image, camera_info)_** is responsible for obtaining a corrected image: - -* **_cv2_image_**: An image encoded into a cv2 array. -* **_camera_****___****_info_**: The path to the calibration file.¬ - -The function returns a cv2 array, into which the corrected image is coded. - -> If you are using a fisheye camera provided with Clever, for processing images with resolution 320x240 or 640x480, you can use the existing calibration settings. To do this, pass parameters **_clever_cam_calibration.clevercamcalib.CLEVER_FISHEYE_CAM_320_** or **_clever_cam_calibration.clevercamcalib.CLEVER_FISHEYE_CAM_640_** as argument **_camera_info_**, respectively. - -## Examples of operation - -Source images: - -![img](../assets/img1.jpg) - -![img](../assets/img2.jpg) - -Corrected images: - -![img](../assets/calibresult.jpg) - -![img](../assets/calibresult1.jpg) - -## An example of usage - -**Processing image stream from the camera**. - -This program receives images from the camera on Clever and displays them on the screen in corrected for, using the existing calibration file. - -```python -import clevercamcalib.clevercamcalib as ccc -import cv2 -import urllib.request -import numpy as np -while True: - req = urllib.request.urlopen('http://192.168.11.1:8080/snapshot?topic=/main_camera/image_raw') - arr = np.asarray(bytearray(req.read()), dtype=np.uint8) - image = cv2.imdecode(arr, -1) - undistorted_img = ccc.get_undistorted_image(image, ccc.CLEVER_FISHEYE_CAM_640) - cv2.imshow("undistort", undistorted_img) - cv2.waitKey(33) -cv2.destroyAllWindows() -``` - -## The usage for ArUco - -To apply the calibration parameters to the ArUco navigation system, move the calibration .yaml file to Raspberry Pi of Clever, and initialize it. - -> Don't forget to connect to Wi-Fi of Clever. - -The SFTP protocol is used for transferring the file. This example, WinSCP program is used. - -Connect to Raspberry Pi via SFTP: - -> Password: _**raspberry**_ - -![img](../assets/wcp1.png) - -Press “Enter”. Go to _**/home/pi/catkin_ws/src/clever/clever/camera_info/**_, and copy the calibration .yaml file to this folder: - -![img](../assets/wcp2.jpg) - -Now we have to select this file in ArUco configuration. Connection via SSH is used for this purpose. This example, PuTTY program is used. - -Connect to Raspberry Pi via SSH: - -![img](../assets/pty1.jpg) - -Log in with username _**pi**_ and password _**raspberry**_, go to directory _**/home/pi/catkin_ws/src/clever/clever/launch**_ and start editing configuration _**main_camera.launch**_: - -![img](../assets/pty2.jpg) - -In line _**camera node**_, change parameter _**camera_info**_ to _**camera_info.yaml**_: - -![img](../assets/pty3.jpg) - -> Don't forget to change camera resolution. +**Next**: [RC setup](radio.md). diff --git a/docs/en/camera.md b/docs/en/camera.md index 83af7b62..16b68c9c 100644 --- a/docs/en/camera.md +++ b/docs/en/camera.md @@ -18,7 +18,7 @@ For monitoring images from the camera, you may use rqt or [web_video_server](web ## Computer vision -For implementation of the computer vision algorithms, it is recommended to use the [OpenCV] library that is pre-installed in [the SD card image] (microsd_images.md) (https://opencv.org). +For implementation of the computer vision algorithms, it is recommended to use the [OpenCV] library that is pre-installed in [the SD card image] (image.md) (https://opencv.org). ### Python diff --git a/docs/en/camera_calibration.md b/docs/en/camera_calibration.md new file mode 100644 index 00000000..9778be81 --- /dev/null +++ b/docs/en/camera_calibration.md @@ -0,0 +1,228 @@ +# Camera calibration + +Computer vision is becoming more and more widespread. Often, computer vision algorithms are not precise and obtain distorted images from the camera, which is especially true for fisheye cameras. + +![img](../assets/img1.jpg) + +> The image is "rounded" closer to the edge. + +Any computer vision algorithm will perceive the picture incorrectly. To remove such distortion, the camera that receives the image is to be calibrated in accordance with its own peculiarities. + +## Script installation + +First, you have to install the necessary libraries: + +``` +pip install numpy +pip install opencv-python +pip install glob +pip install pyyaml +pip install urllib.request +``` + +Then download the script from the repository: + +```(bash) +git clone https://github.com/tinderad/clever_cam_calibration.git +``` + +Go to the downloaded folder and install the script: + +```(bash) +cd clever_cam_calibration +sudo python setup.py build +sudo python setup.py install +``` + +If you are using Windows, download the archive from the [repository](https://github.com/tinderad/clever_cam_calibration/archive/master.zip), unzip it and install: + +```(bash) +cd path\to\archive\clever_cam_calibration\ +python setup.py build +python setup.py install +``` + +> path\to\archive – path to unpacked archive. + +## Preparing for calibration + +You will have to prepare a calibration target. It looks like a chessboard. The file is available for downloading [here](https://www.oreilly.com/library/view/learning-opencv-3/9781491937983/assets/lcv3_ac01.png). +Glue a printed target to any solid surface. Count the number of intersections on the board lengthwise and widthwise, measure the size of a cell (mm). + +![img](../assets/chessboard.jpg) + +Turn on Clever and connect to its Wi-Fi. + +> Navigate to 192.168.11.1:8080 and check whether the computer receives images from the image_raw topic. + +## Calibration + +Run script **_calibrate_cam_**: + +**Windows:** + + ```(bash) +>path\to\python\Scripts\calibrate_cam.exe +``` + +> path\to\Python – path to the Python folder + +**Linux:** + +```(bash) +>calibrate_cam +``` + +Specify board parameters: + +```(bash) +>calibrate_cam +Chessboard width: # Intersections widthwise +Chessboard height: # Intersections heightwise +Square size: # Length of cell edge (mm) +Saving mode (YES - on): # Save mode +``` + +> Save mode: if enabled, all received pictures will be saved in the current folder. + +The script will start running: + +``` +Calibration started! +Commands: +help, catch (key: Enter), delete, restart, stop, finish +``` + +To calibrate the camera, make at least 25 photos of the chessboard at various angles. + +![img](../assets/calibration.jpg) + +To make a photo, enter command **_catch_**. + +```(bash) +>catch +``` + +The program will inform you about the calibration status. + +```(bash) +... +Chessboard not found, now 0 (25 required) +> # Enter +--- +Image added, now 1 (25 required) +``` + +> Instead of entering command **_catch_** each time, you can just press **_Enter_** (enter a blank line). + +After you have made a sufficient number of images, enter command **_finish_**. + +```(bash) +... +>finish +Calibration successful! +``` + +### Calibration by the existing images + +If you already have images, you can calibrate the camera by them with the help of script **_calibrate_cam_ex_**. + +```(bash) +>calibrate_cam_ex +``` + +Specify target characteristics and the path to the folder with images: + +```(bash) +>calibrate_cam_ex +Chessboard width: # Intersections widthwise +Chessboard height: # Intersections heightwise +Square size: # Length of cell edge (mm) +Path: # Path to the folder with images +``` + +Apart from that, this script works similarly to **_calibrate_cam_**. + +The program will process all received pictures, and create file **_camera_info_****_._****_yaml_** in the current folder. Using this file, you can equalize distortions in the images obtained from this camera. + +> If you change the resolution of the received image, you will have to re-calibrate the camera. + +## Correcting distortions + +Function **_get_undistorted_image(cv2_image, camera_info)_** is responsible for obtaining a corrected image: + +* **_cv2_image_**: An image encoded into a cv2 array. +* **_camera_****___****_info_**: The path to the calibration file.¬ + +The function returns a cv2 array, into which the corrected image is coded. + +> If you are using a fisheye camera provided with Clever, for processing images with resolution 320x240 or 640x480, you can use the existing calibration settings. To do this, pass parameters **_clever_cam_calibration.clevercamcalib.CLEVER_FISHEYE_CAM_320_** or **_clever_cam_calibration.clevercamcalib.CLEVER_FISHEYE_CAM_640_** as argument **_camera_info_**, respectively. + +## Examples of operation + +Source images: + +![img](../assets/img1.jpg) + +![img](../assets/img2.jpg) + +Corrected images: + +![img](../assets/calibresult.jpg) + +![img](../assets/calibresult1.jpg) + +## An example of usage + +**Processing image stream from the camera**. + +This program receives images from the camera on Clever and displays them on the screen in corrected for, using the existing calibration file. + +```python +import clevercamcalib.clevercamcalib as ccc +import cv2 +import urllib.request +import numpy as np +while True: + req = urllib.request.urlopen('http://192.168.11.1:8080/snapshot?topic=/main_camera/image_raw') + arr = np.asarray(bytearray(req.read()), dtype=np.uint8) + image = cv2.imdecode(arr, -1) + undistorted_img = ccc.get_undistorted_image(image, ccc.CLEVER_FISHEYE_CAM_640) + cv2.imshow("undistort", undistorted_img) + cv2.waitKey(33) +cv2.destroyAllWindows() +``` + +## The usage for ArUco + +To apply the calibration parameters to the ArUco navigation system, move the calibration .yaml file to Raspberry Pi of Clever, and initialize it. + +> Don't forget to connect to Wi-Fi of Clever. + +The SFTP protocol is used for transferring the file. This example, WinSCP program is used. + +Connect to Raspberry Pi via SFTP: + +> Password: _**raspberry**_ + +![img](../assets/wcp1.png) + +Press “Enter”. Go to _**/home/pi/catkin_ws/src/clever/clever/camera_info/**_, and copy the calibration .yaml file to this folder: + +![img](../assets/wcp2.jpg) + +Now we have to select this file in ArUco configuration. Connection via SSH is used for this purpose. This example, PuTTY program is used. + +Connect to Raspberry Pi via SSH: + +![img](../assets/pty1.jpg) + +Log in with username _**pi**_ and password _**raspberry**_, go to directory _**/home/pi/catkin_ws/src/clever/clever/launch**_ and start editing configuration _**main_camera.launch**_: + +![img](../assets/pty2.jpg) + +In line _**camera node**_, change parameter _**camera_info**_ to _**camera_info.yaml**_: + +![img](../assets/pty3.jpg) + +> Don't forget to change camera resolution. diff --git a/docs/en/camera_frame.md b/docs/en/camera_frame.md index d88fbf4c..1305ab43 100644 --- a/docs/en/camera_frame.md +++ b/docs/en/camera_frame.md @@ -1,6 +1,6 @@ # Adjusting the position of the main camera -> **Note** Documentation for the versions [of image](microsd_images.md), starting with **0.15**. For earlier versions, see [documentation for version **0.14**](https://github.com/CopterExpress/clever/blob/v0.14/docs/ru/camera_frame.md). +> **Note** Documentation for the versions [of image](image.md), starting with **0.15**. For earlier versions, see [documentation for version **0.14**](https://github.com/CopterExpress/clever/blob/v0.14/docs/ru/camera_frame.md). Position and orientation of the main camera is determined in file `~/catkin_ws/src/clever/clever/launch/main_camera.launch`: diff --git a/docs/en/editing.md b/docs/en/editing.md new file mode 100644 index 00000000..d0d2073d --- /dev/null +++ b/docs/en/editing.md @@ -0,0 +1,5 @@ +# Editing files + +Use **nano** text editor to edit files on a Raspberry Pi. + + diff --git a/docs/en/face_recognition.md b/docs/en/face_recognition.md index fca050ad..19335395 100644 --- a/docs/en/face_recognition.md +++ b/docs/en/face_recognition.md @@ -120,7 +120,7 @@ In this case, try to edit the images in folder faces, perhaps the program cannot ## Using the calibration -To improve recognition accuracy, you can use camera calibration. The calibration module may be installed using [a special package](https://github.com/tinderad/clever_cam_calibration). Instructions for installation and use are available in file calibration.md. The program that uses the calibration package is named recog_undist.py +To improve recognition accuracy, you can use camera calibration. The calibration module may be installed using [a special package](https://github.com/tinderad/clever_cam_calibration). Instructions for installation and use are available in the [camera calibration article](camera_calibration.md). The program that uses the calibration package is named recog_undist.py **Code brief explanation:** diff --git a/docs/en/frames.md b/docs/en/frames.md index 14cfe075..94d6159d 100644 --- a/docs/en/frames.md +++ b/docs/en/frames.md @@ -1,7 +1,7 @@ Coordinate systems (frames) === -> **Note** Documentation for the [image](microsd_images.md), versions, starting with **0.15**. For older versions refer to [documentation for version **0.14**](https://github.com/CopterExpress/clever/blob/v0.14/docs/ru/frames.md). +> **Note** Documentation for the [image](image.md), versions, starting with **0.15**. For older versions refer to [documentation for version **0.14**](https://github.com/CopterExpress/clever/blob/v0.14/docs/ru/frames.md). ![Clever coordinates systems (TF2)](../assets/frames.png) diff --git a/docs/en/gpio.md b/docs/en/gpio.md index da953a71..e85a83e2 100644 --- a/docs/en/gpio.md +++ b/docs/en/gpio.md @@ -4,7 +4,7 @@ A GPIO (General-Purpose Input/Output) pin is a programmable digital signal pin o > **Info** Use the [pinout](https://pinout.xyz) for figuring out, which Raspberry Pi's pins support GPIO and PWM. -The [`pigpio`](http://abyz.me.uk/rpi/pigpio) library for interfacing with the GPIO pins is already preinstalled on [the RPi image](microsd_images.md). To interact with this library, run the appropriate daemon: +The [`pigpio`](http://abyz.me.uk/rpi/pigpio) library for interfacing with the GPIO pins is already preinstalled on [the RPi image](image.md). To interact with this library, run the appropriate daemon: ```bash sudo systemctl start pigpiod.service @@ -16,7 +16,7 @@ To enable automatic launch of the daemon, run: sudo systemctl enable pigpiod.service ``` -> **Warning** `pigpiod` may interfere with [LED strip](leds.md) if configured improperly. Make sure that the strip is connected to GPIO21. On [image versions](microsd_images.md) lower than 0.17 change the service start string in `/lib/systemd/system/pigpiod.service` to `ExecStart=/usr/bin/pigpiod -l -t 0 -x 0x0FFF3FF0`. +> **Warning** `pigpiod` may interfere with [LED strip](leds.md) if configured improperly. Make sure that the strip is connected to GPIO21. On [image versions](image.md) lower than 0.17 change the service start string in `/lib/systemd/system/pigpiod.service` to `ExecStart=/usr/bin/pigpiod -l -t 0 -x 0x0FFF3FF0`. Example of working with the library: diff --git a/docs/en/hostname.md b/docs/en/hostname.md index d8b32e0c..65e0d3b2 100644 --- a/docs/en/hostname.md +++ b/docs/en/hostname.md @@ -1,6 +1,6 @@ # Hostname -[By default](microsd_images.md) the hostname of the Clever drone is set to `clever-xxxx`, where `xxxx` are random numbers. These numbers are the same as in the [Wi-Fi SSID](wifi.md). +[By default](image.md) the hostname of the Clever drone is set to `clever-xxxx`, where `xxxx` are random numbers. These numbers are the same as in the [Wi-Fi SSID](wifi.md). Thus, Clever is accessible on machines that support mDNS as `clever-xxxx.local`. You can use this name to access Clever over SSH: diff --git a/docs/en/microsd_images.md b/docs/en/image.md similarity index 100% rename from docs/en/microsd_images.md rename to docs/en/image.md diff --git a/docs/en/laser.md b/docs/en/laser.md index 79e25b28..6504bc61 100644 --- a/docs/en/laser.md +++ b/docs/en/laser.md @@ -4,7 +4,7 @@ The rangefinder model recommended for Clever is STM VL53L1X. This rangefinder can measure distances from 0 to 4 m while ensuring high measurement accuracy. -The [image for Raspberry Pi](microsd_images.md) contains pre-installed corresponding ROS driver. +The [image for Raspberry Pi](image.md) contains pre-installed corresponding ROS driver. ### Connecting to Raspberry Pi diff --git a/docs/en/leds.md b/docs/en/leds.md index 47005347..8e546a8d 100644 --- a/docs/en/leds.md +++ b/docs/en/leds.md @@ -105,7 +105,7 @@ Main strip control methods: The LED strip type used in the Clever kits use the following protocol: a data source (a Raspberry Pi, for example) sends a bit stream, 24 bits per LED. Each LED reads the first 24 bits from the stream and sets its color accordingly while passing the rest of the stream to the next LED. Zeroes and ones are encoded by different pulse lengths. -This LED strip is supported by the [rpi_ws281x](github.com/jgarff/rpi_ws281x) library. The library uses the DMA (direct memory access) module of the Raspberry CPU and can utilize one of the three periphery channels: PWM, PCM or SPI. This allows the library to drive the strip consistently in a multitasking environment. +This LED strip is supported by the [rpi_ws281x](https://github.com/jgarff/rpi_ws281x) library. The library uses the DMA (direct memory access) module of the Raspberry CPU and can utilize one of the three periphery channels: PWM, PCM or SPI. This allows the library to drive the strip consistently in a multitasking environment. Each channel has its caveats. Using the PWM prevents you from using the builtin Raspberry audio subsystem; using the PCM channel will prevent you from adding I2S (digital audio) devices, although the analog audio will work. SPI requires you to change your GPU and buffer size and prevents you from using any SPI devices. diff --git a/docs/en/modes.md b/docs/en/modes.md index 6b63c75c..1a639ab7 100644 --- a/docs/en/modes.md +++ b/docs/en/modes.md @@ -1,47 +1,50 @@ -Flight modes -=== +# Flight modes -The flight controller mode determines the exact behavior of the copter (or another craft): how incoming commands and signals from the transmitter are to be interpreted. +PX4 **mode** determines how the vehicle should react to commands and RC signals. Mode changing is usually mapped to one of the RC transmitter sticks. -PX4 ---- +In order to configure flight modes: -Main article: https://dev.px4.io/en/concept/flight_modes.html +1. Open the *Vehicle Setup* tab in QGroundControl. +2. Select the *Flight Modes* menu. +3. Choose SwC (Channel 5) as mode selection switch. +4. Set desired flight modes. -### Manual control (MANUAL) + The following flight modes are recommended: -In manual mode, the pilot controls the drone directly. GPS, computer vision data, and barometer are not used. Flying in these modes requires good drone piloting skills. + * Flight Mode 1: *Stabilized*. + * Flight Mode 4: *Altitude*. + * Flight Mode 6: *Position*. -* **MANUAL** — signals from the transmitter are sent directly to the mixer and to the motors. Control of the throttle and of the front/back, right/left pairs of motors rotation speed ratio. This mode is almost never used for flying, since keeping the copter stable is too difficult. +5. Check mode switching by changing the switch position. +6. Choose SwA (Channel 6) as emergency motor stop (*Kill switch*). -* **STABILIZED** — the mode with stabilized horizontal position. Control of the throttle, the copter pitch and roll, and the yaw angular velocity. +QGroundControl modes -* **ACRO** — control of throttle and the copter's pitch, roll, and yaw angular velocity. Used by drone racers and in 3D piloting shows for performing stunts. +## Flight modes description +### Manual control + +In manual mode the pilot controls the drone directly. GPS, computer vision data, and barometer are not used. Flying in these modes requires good drone piloting skills. + +* **MANUAL** — signals from the transmitter are sent directly to the mixer and to the motors. Throttle and the front/back, right/left pairs of motors rotation speed ratio is controlled. This mode is almost never used for flying, since keeping the copter stable is too difficult. +* **ACRO** — control of throttle and the copter's pitch, roll, and yaw angular velocity. Used by drone racers and in 3D piloting stunt shows. +* **STABILIZED** — the mode with stabilized horizontal position. Allows control of the throttle, the copter pitch and roll, and the yaw angular velocity. * **RATTITUDE** — in the center, the right stick is similar to STABILIZED, at the edges, it passes to the ACRO mode. -### With the use of additional sensors (ASSISTED) - -* **ALTCTL** (ALTITUDE) — control of the altitude rate, pitch, roll and yaw angular velocity. The barometer is used (or another height gauge). +### Assisted flight modes +* **ALTCTL** (ALTITUDE) — control of the altitude rate, pitch, roll and yaw angular velocity. Requires a barometer or another altitude source. * **POSCTL** (POSITION) — control of the altitude rate, forward/backward and right/left speed, and yaw angular velocity. It is the easiest flying mode. The barometer, GPS, computer vision, and other sensors are used. -### Automatic flight (AUTO) +### Auto flight modes -In the automatic flight mode, the quadcopter ignores the control signals from the transmitter. +In autonomous flight modes the quadcopter ignores the control signals from the transmitter and uses a program to fly. -* **AUTO.MISSION** – PX4 completes the mission pre-loaded into the drone (the mission is downloaded using the QGroundControl, or from [MAVLink](mavlink.md) using [MAVROS](mavros.md). -* **AUTO.RTL** – the copter automatically returns to the takeoff point. -* **AUTO.LAND** – the copter lands automatically. +* **OFFBOARD** mode uses an external computer (like a [Raspberry Pi](raspberry.md)). This mode is used in Clever for [autonomous flights](simple_offboard.md). +* **AUTO.MISSION** – PX4 uses the mission pre-loaded into the drone (the mission is uploaded using ground control station over [MAVLink](mavlink.md)). This mode is commonly used to move in a pre-planned path using GPS as a position source, for example, in photogrammetry. +* **AUTO.RTL** – the copter automatically returns to the takeoff (launch) point. +* **AUTO.LAND** – the copter lands at the current position. -### Control from an external computer +Additional information: https://dev.px4.io/en/concept/flight_modes.html. -* **OFFBOARD** in the mode for flying at the MAVLink commands. Control from an external computer (e.g., Raspberry Pi). - -The main used MAVLink packages are: - -* [MAV_CMD_COMPONENT_ARM_DISARM](https://mavlink.io/en/messages/common.html#MAV_CMD_COMPONENT_ARM_DISARM) -* [SET_POSITION_TARGET_LOCAL_NED](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_LOCAL_NED) -* [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) - -See: [autonomous flying the quadcopter in the OFFBOARD mode](simple_offboard.md). +**Next**: [Power setup](power.md). diff --git a/docs/en/network.md b/docs/en/network.md index 700f87cc..5b22f5f0 100644 --- a/docs/en/network.md +++ b/docs/en/network.md @@ -5,7 +5,7 @@ The Raspberry Pi Wi-Fi adapter has two main operating modes: 1. **Client mode** – RPi connects to an existing Wi-Fi network. 2. **Access point mode** – RPi creates a Wi-Fi network that you can connect to. -On our [RPi image](microsd_images.md) the Wi-Fi adapter is confuigured to use the [access point mode](Wi-Fi.md) by default. +On our [RPi image](image.md) the Wi-Fi adapter is configured to use the [access point mode](wifi.md) by default. ## Changing the password or SSID (of the network name) @@ -122,7 +122,7 @@ Below you can read more about how RPi networking is organized. ## RPi network organization -Network operation in the [image](microsd_images.md) is supported by two pre-installed services: +Network operation in the [image](image.md) is supported by two pre-installed services: * **networking** — the service enables all network interfaces at startup [5]. * **dhcpcd** — the service ensures that configuration of addressing and routing on the interfaces is obtained dynamically or specified statically in the config file. diff --git a/docs/en/optical_flow.md b/docs/en/optical_flow.md index 6ef3e77e..0db4f4e8 100644 --- a/docs/en/optical_flow.md +++ b/docs/en/optical_flow.md @@ -52,7 +52,7 @@ Setup POSCTL to be one of PX4 flight modes and then select POSCTL. ## Autonomous flight -The module [simple_offboard](simple_offboard.mb) enables autonomous flight. +The module [simple_offboard](simple_offboard.md) enables autonomous flight. Example of take off and leveling at 1.5m above the ground: @@ -66,7 +66,7 @@ Flying forward for 1m: navigate(x=1.5, frame_id='body') ``` -[Navigation using ArUco-markers](aruco_marker) and [using VPE] are available when using Optical Flow. +[Navigation using ArUco-markers](aruco_marker.md) and [using VPE] are available when using Optical Flow. ## Additional settings diff --git a/docs/en/power.md b/docs/en/power.md new file mode 100644 index 00000000..cdd8b370 --- /dev/null +++ b/docs/en/power.md @@ -0,0 +1,31 @@ +# Power setup + +Open the *Vehicle Setup* tab and select the *Power* menu. + +## Calibrating the power sensor + +> **Note** Power sensor calibration should be done with the battery pack connected to the drone. + +1. Set the *Number of cells* parameter according to the number of cells in your battery (*3* for the Clever 4 drone). +2. Calculate the voltage divider: + * Measure voltage across the battery (you may use a battery voltage tester for that). + * Press the *Calculate* button next to the *Voltage divider* label. + * Put the battery voltage into the prompt and click *Calculate*. + * Press *Close* to save the calculated value. + + + +Further reading: https://docs.qgroundcontrol.com/en/SetupView/Power.html. + +## ESC calibration + +> **Warning** **Never attempt ESC calibration with propellers on!** In some cases the motors will start spinning with maximum speed. + +1. Make sure the battery is disconnected and the propellers are not mounted. +2. Press *Calibrate*. +3. Connect the battery when prompted. +4. Wait for the *Calibration complete*. + + + +Further reading: https://docs.px4.io/v1.9.0/en/advanced_config/esc_calibration.html. diff --git a/docs/en/radio.md b/docs/en/radio.md new file mode 100644 index 00000000..6d5dea39 --- /dev/null +++ b/docs/en/radio.md @@ -0,0 +1,40 @@ +# RC setup + + + +Before connecting and calibrating the RC, make sure that: + +* There is no battery connected to the drone. +* The propellers are not mounted. + +## Connecting the RC transmitter + +1. Open the *Vehicle Setup* tab and select the *Radio* menu. +2. Power on the transmitter by sliding the **POWER** slider up. +3. Make sure the transmitter-receiver link is working. + + The transmitter LCD screen should display the connection: + + + + The LED on the receiver should glow steadily. Read the [radio troubleshooting article](radioerrors.md) if the link does not work. + +## Transmitter calibration + +1. Press the *Calibrate* button. +2. Set the *Throttle*, *Yaw*, *Pitch*, and *Roll* trims to 0 + * Trims are small constant offsets applied to a control in order to make your drone fly correctly. + * Move the trimming slider to the center using trimming buttons until you hear a long beep. Do this for each axis. +3. Press *OK* in QGroundControl. + + + +4. Place the left stick (throttle) in the bottom position and press *Next*. +5. Place the sticks in positions requested by QGroundControl. +6. When you get the *"Move all transmitter switches and/or dials back and forth to their extreme positions"* instruction, move all switches and dials to their extreme positions. +7. Press *Next*. +8. When you get the *"All settings have been captured. Click Next to write the new parameters to your board"*, press *Next*. + +Further reading: https://docs.qgroundcontrol.com/en/SetupView/Radio.html + +**Next**: [Flight modes](modes.md). diff --git a/docs/en/raspberry.md b/docs/en/raspberry.md index 966b068b..47326ca1 100644 --- a/docs/en/raspberry.md +++ b/docs/en/raspberry.md @@ -1,7 +1,7 @@ Raspberry Pi ============ -**Raspberry Pi** is a single-board computer that fits in the palm, created on the basis of mobile microprocessor ARM11. It features low energy consumption, and it can even run on solar panels. Raspberry Pi 3 is included in the kits for programmable quadcopters "Clever 2" and "Clever 3". +**Raspberry Pi** is a single-board computer that fits in the palm, created on the basis of ARM mobile microprocessor. It features low energy consumption, and it can even run on solar panels. Raspberry Pi 3 is included in the kits for programmable quadcopters "Clever". @@ -25,6 +25,6 @@ In fact, we will use it as the last in the list, due to its ability to connect t See more: -* [RPi image](microsd_images.md) +* [RPi image](image.md) * [SSH access](ssh.md) * [Network setup](network.md) diff --git a/docs/en/rc.md b/docs/en/rc.md index 80e5c0f1..c64e40fc 100644 --- a/docs/en/rc.md +++ b/docs/en/rc.md @@ -16,7 +16,7 @@ Configuring > **Warning** An open QGroundControl or rviz connection sends large amounts of data over Wi-Fi, which can adversely affect responsiveness of the mobile transmitter. It is recommended not to use these applications together with it. -Install [Clever image on RPi](microsd_images.md). For running the application, settings `rosbridge` and `rc` in the launch file (`~/catkin_ws/src/clever/clever/launch/clever.launch`) should be enabled: +Install [Clever image on RPi](image.md). For running the application, settings `rosbridge` and `rc` in the launch file (`~/catkin_ws/src/clever/clever/launch/clever.launch`) should be enabled: ```xml diff --git a/docs/en/ros.md b/docs/en/ros.md index 0c26ddfa..8bf9b1d3 100644 --- a/docs/en/ros.md +++ b/docs/en/ros.md @@ -10,7 +10,7 @@ Installation Main article: http://wiki.ros.org/kinetic/Installation/Ubuntu -ROS is already installed on [the RPi image](microsd_images.md). +ROS is already installed on [the RPi image](image.md). To use ROS on a PC, we recommend using Ubuntu Linux (or a virtual machine such as Parallels Desktop Lite](https://itunes.apple.com/ru/app/parallels-desktop-lite/id1085114709?mt=12) or [VirtualBox](https://www.virtualbox.org)). diff --git a/docs/en/selfcheck.md b/docs/en/selfcheck.md index a1a73787..fe79422b 100644 --- a/docs/en/selfcheck.md +++ b/docs/en/selfcheck.md @@ -1,10 +1,8 @@ # Automatic check -It is generally a good idea to perform some checks before flight, especially before an autonomous one. There are several methods of automated self-checks of the drone subsystems. +The [RPi image](image.md) contains a tool for automatic checking the correctness of all the settings and subsystems of the drone – **selfcheck.py**. -## selfcheck.py - -The `selfcheck.py` utility script is part of the `clever` package; it performs automated tests of the main aspects of the ROS platform and PX4. The utility is pre-installed on [the Raspberry Pi image](microsd_images.md). +It is generally a good idea to perform this check before flight, especially before an autonomous one. In order to run it, enter the following command in [the Raspberry Pi console](ssh.md): @@ -26,10 +24,4 @@ Description of some checks: * VPE — checks whether VPE data is published * Rangefinder — checks whether [rangefinder](laser.md) data is published -## commander check - -In order check the main subsystems of PX4 and the possibility of arming at the moment you can run the `commander check` command in the MAVLink console. - - - -If you're running SITL, you should use the terminal where PX4 simulation is running instead of the MAVLink console. +> *Caution* Pay attention on the checks marked with *WARN* sign. If necessary, contact [Copter Express echnical support](tg://resolve?domain=COEXHelpdesk). diff --git a/docs/en/setup.md b/docs/en/setup.md index 53a41b65..638e5be0 100644 --- a/docs/en/setup.md +++ b/docs/en/setup.md @@ -1,267 +1,122 @@ -# Pre-configuration of the quadcopter +# Initial setup -## Composition of the FLYSKY i6 transmitter +## Installing QGroundControl -![Composition of the transmitter](../assets/en/consistofTransmitter.jpg) +**QGroundControl** is a software package that can be used to flash, configure and calibrate the flight controller. -## Installation of QGroundControl +QGroundControl -* Download the installation file for Windows/iOS by following the link [QGroundCongtrol](http://qgroundcontrol.com/downloads/). -* Agree to install drivers during installation +Download and install the version for your operating system [from the official QGroundControl website](https://docs.qgroundcontrol.com/en/getting_started/download_and_install.html). When asked, agree to install additional drivers. -## Formatting the memory card +Consult the [official QGroundControl user guide](https://docs.qgroundcontrol.com/en/) if anything goes wrong. -* Install the microSD card into the adapter. -* Format the card to FAT32 - right click on the disk > Format. -* Run "Safely remove" the card in the tools, then extract the card. -* Insert the microSD card into the Pihxawk flight controller. +## Preparing the MicroSD card -## Pihxawk firmware update +Prepare the MicroSD card for your flight controller. -![Firmware update](../assets/firmwarePX4.jpg) +Pixracer и MicroSD-карта -1. Go to Vehicle Setup. -2. Choose Firmware. -3. Disconnect Pihxawk from the USB. Connect Pihxawk to the USB again. -4. Waiting for Pihxawk to connect, select firmware PX4 Flight Stack, and activate the Advanced settings. -5. Select firmware type Standard Version (stable). If you load your own firmware/ an external firmware file (e.g., downloaded from the Internet), then choose Customize from the drop-down menu. -6. Click OK. Wait for loading. -7. Wait for Pihxawk to reboot. +* Put the card into your computer (use an adapter if necessary). +* Format the card to FAT32 filesystem. Right click on the SD card icon in Windows Explorer and select "Format". Use the Disk Utility in macOS. +* Use "Safely Remove Hardware" and unplug the card. +* Put the card into your flight controller. -## Configuration of Pihxawk +## Flashing the flight controller -![Main window](../assets/mainWindow.jpg) +Main article: https://docs.qgroundcontrol.com/en/SetupView/Firmware.html -1. Systems that need configuration: Airframe, Radio, Sensors, Flight Mode -2. Current controller firmware. +> **Note** Do not connect your flight controller prior to flashing. + +We recommend using the modified version of PX4 by CopterExpress for the Clever drone, especially for autonomous flights. Download the latest stable version **from our GitHub**. + +Flash the flight controller with this firmware: + +QGroundControl firmware upload + +1. Open the *Vehicle Setup* tab. +2. Select the *Firmware* menu. +3. Connect your flight controller to your PC over USB. +4. Wait for the flight controller to connect to QGroundControl. +5. Select *PX4 Flight Stack* in the right bar. + +To use the recommended Copter Express firmware: + +* Check *Advanced Settings* checkbox. +* Select *Custom firmware file...* from the dropdown list. +* Press *OK* and select the file that you've downloaded. + +To use the latest official stable firmware just press *OK*. + +Wait for QGroundControl to finish flashing the flight controller. + +> **Warning** Do not unplug the flight controller during the flashing process. + +Read more about the firmware in the "[Pixhawk Firmware](firmware.md)" article. + +## Configuring the flight controller + +> **Hint** You can use the [Raspberry Pi to access the flight controller over Wi-Fi](gcs_bridge.md) for the rest of the setup process. + +This is how the main QGroundControl settings window will look like: + +QGroundControl overview + +1. Parameters that require setup: *Airframe*, *Radio*, *Sensors*, *Flight Modes*. +2. Current firmware version. 3. Current flight mode. 4. Error messages. -## Choice of the frame +### Selecting the airframe -![ Choice of the frame](../assets/airframeSetup.jpg) +QGroundControl frame selection -1. Go to the Airframe menu. -2. Choose frame type Quadrotor X. -3. Select the hook-up elements type Generic Quadrotor X config. -4. Move to the top of the list and save the Apply and Restart settings. +1. Open the *Vehicle Setup* tab. +2. Select the *Airframe* menu. +3. Select the *Quadrotor X* airframe type. +4. Select the *Generic Quadrotor X* from the dropdown menu. +5. Return to the top of the list and press *Apply and Restart* button, confirm by pressing *Apply*. +6. Wait for the settings to be applied and for the flight controller to restart. - ![Attention!](../assets/attentionSave.jpg) +### Setting parameters -5. Re-confirm Apply. -6. Wait for Pihxawk to complete save and reboot. +Open the *Vehicle Setup* tab and select the *Parameters* menu. You can use the *Search* field to find parameters by name. -## Connecting the transmitter +QGroundControl parameters -Before calibrating, make sure that +Press the *Save* button to save the changed value to the flight controller. Changing some parameters require rebooting the flight controller. You can do that by pressing the *Tools* button and selecting the *Reboot vehicle* option. -* External power is not connected to the copter. -* Propellers are not installed on the motors. +#### Configuring PID regulators -1. Go to the Radio menu. -2. Turn on the transmitter by turning the Power switch to the top position. -3. Next, make sure that communication with the receiver is established: +##### Averaged PID coefficients for the Clever 4 drone -The LCD of the transmitter shows the following indication: +* `MC_PITCHRATE_P` = 0.087 +* `MC_PITCHRATE_I` = 0.037 +* `MC_PITCHRATE_D` = 0.0044 +* `MC_PITCH_P` = 8.5 +* `MC_ROLLRATE_P` = 0.087 +* `MC_ROLLRATE_I` = 0.037 +* `MC_ROLLRATE_D` = 0.0044 +* `MC_ROLL_P` = 8.5 +* `MPC_XY_VEL_P` = 0.11 +* `MPC_XY_VEL_D` = 0.013 +* `MPC_XY_P` = 1.1 +* `MPC_Z_VEL_P` = 0.24 +* `MPC_Z_P` = 1.2 -![Transmitter indication](../assets/connectionOK.jpg) +##### Averaged PID coefficients for the Clever 3 drone -The LED on the receiver remains red continuously: +* `MC_PITCHRATE_P` = 0.145 +* `MC_PITCHRATE_I` = 0.050 +* `MC_PITCHRATE_D` = 0.0025 +* `MC_ROLLRATE_P` = 0.145 +* `MC_ROLLRATE_I` = 0.050 +* `MC_ROLLRATE_D` = 0.0025 -In case of communication problems, click [here](radioerrors.md) +> **Hint** Note that you should fine-tune the PID parameters for each drone individually. -## Configuration of performance channels +#### Cicruit breaker parameters -Channels CH5 and CH6 are required for configuring the flight of the copter. -Assign channel CH5 to the SwC three-position switch — it will change the flight modes -Assign channel CH6 to the SwA two-position switch — emergency stop of the motors. +1. Set `CBRK_USB_CHK` to 197848 to allow flights with the USB cable connected. +2. Disable safety switch check: `CBRK_IO_SAFETY` = 22027. -![Used switches](../assets/chooseSwitch.jpg) - -To reassign the switches, follow these steps: - -1. Go to MENU (by holding down the “OK” button) -2. Select menu “Functions setup” (Up/Down Button to navigate, OK button - to confirms the choice). -3. Select “Aux. channels” -4. Select: - 1. Channel 5 - SwC. - 2. Channel 6 - SwA. -5. Save changes (hold pressed the “CANCEL” button). - -![Selection of channels](../assets/setupSwitch.jpg) - -## Calibration of the transmitter - -Start the calibration procedure - -1. Press the Calibrate button -2. Set trimmers Throttle, Yaw, Pitch, and Roll to 0. - * Trimmers allow setting the copter offset. - * To set one of the trimmers to 0, move the pointer on the transmitter to the center until a long beep (squeak) is heard. -3. Press OK. - - ![Transmitter calibration – Start](../assets/calibrateViewStart.jpg) - -4. Move the Left stick (throttle) to the minimum and click Next -5. Calibration of the control channels (throttle, yaw, pitch, and roll). - Move the sticks after the animation, and read hints. -6. Calibration of switches. - After message "Move all transmitter switches and/or dials back and forth to their extreme positions" appears, switch SwA..SwD, VrA, VrB in their end position. - Click Next -7. Saving parameters. - When message "All settings have been captured. Click Next to write the new parameters to your board" appears, - Click Next - -8. Transmitter calibration is complete! - -![Transmitter calibration](../assets/calibrateView.jpg) - -## Accelerometer calibration - -1. Go to the Sensors > Accelerometer menu -2. Since Pihxawk points to the nose of the drone, select Autopilot Orientation: ROTATION_NONE. Click OK. - - ![Accelerometer calibration](../assets/calibrateaxcelstart.jpg) - -3. Start the calibration: - Consistently place the drone as shown in the pictures, when Pihxawk captures the position, you will see a yellow frame around the picture — hold the drone in this position until the frame switches to green - -![The process of accelerometer calibration](../assets/calibrateaxcel.jpg) - -## Compass calibration - -1. Go to the Sensors > Compass menu -2. Since Pihxawk points to the nose of the drone, select Autopilot Orientation: ROTATION_NONE. Click OK. -3. Position the drone as shown in the picture and wait for Pihxawk to determine the drone position until you see a yellow frame and the "Rotate" message. -4. Rotate the drone as shown in the picture until you see a green frame — Pihxawk will have recalibrated the compass along this axis. - -![Compass calibration](../assets/calibratecompass.jpg) - -## Calibration of the gyroscope - -1. Go to the Sensors > Gyroscope menu -2. Place the drone on a level surface and click OK. -3. Wait for the calibration to complete. - -![Gyroscope calibration](../assets/calibrategyro.jpg) - -> *Warning* During calibration, the drone should remain in position, be stable, etc. - -## Flight modes - -1. Go to the Flight Modes menu. -2. Set channel selector on the SwC switch (Channel 5) - Mode channel — Channel 5. -3. When the SwC is switched, the current mode is highlighted in yellow. -4. Assign flight modes: - * Flight Mode 1: Stabilized. - * Flight Mode 4: Altitude. - * Flight Mode 6: Position. -5. Displaying the current flight mode. -6. Emergency shutdown of motors is to be assigned to the SwA switch (Channel 6). - Kill switch - Channel 6 - -![Flight modes](../assets/flightModes.jpg) - -## Disabling the Safety Switch - -The Pihxawk flight controller features motor protection from accidental use. -To unlock the copter, disable the safety button - -1. Go to the Parameters > Circuit Breaker menu -2. Select parameter CBRK_AIRSPD_CHK, set the maximum value of the parameter (specified in line Maximum Value in the Parameter Editor window) -3. Save the values by clicking Save -4. Repeat setting the maximum values for all parameters, except for CBRK_RATE_CTRL and CBRK_VELPOSERR - -![Disabling the safety button](../assets/turnoffSafetyswitch.jpg) - -## ESCs calibration - -1. Go to the Power menu. -2. Set the Number of cells — 4S. -3. Set parameter Full Voltage (per cell) - 4.20 V; Empty Voltage (per cell) - 3.50V. - - To save the changes, restart Pihxawk: - - * Disconnect Pihxawk from the USB. - * Connect Pihxawk to the USB again. - -4. Make sure that the battery is disconnected and the propellers are removed - Press Calibrate - -![ESCs calibration](../assets/calibrateESC.jpg) - -## PID regulator setup - - If during the flight, the quadcopter oscillates (fluctuates) and cannot therefore fly properly, it is necessary to [adjust coefficients of the PID regulator](calibratePID.md) - - By default, Clever 2 quadcopter uses the following coefficients: - -1. Go to the Parameters > Attitude Control Multicopter menu -2. Set selected values of the PID regulator parameters for the Roll and Pitch angles: - -* MC_PITCHRATE_P: 0.145 -* MC_PITCHRATE_I: 0.050 -* MC_PITCHRATE_D: 0.0025 - -* MC_ROLLRATE_P: 0.145 -* MC_ROLLRATE_I: 0.050 -* MC_ROLLRATE_D: 0.0025 - -![Coefficients of PID regulator](../assets/calibratePIDparams.jpg) - -## Safety instruction - -### Safety during pre-flight preparation - -* Make sure that the Li-ion batteries are charged. -* Make sure the batteries in the control equipment are charged. -* Attach the propellers immediately before flying. -* Check reliability of the following units: - 1. Tightness of propeller nuts. - 2. Attachment and integrity of propellers guards. - 3. Reliability of wires attachment, absence of loose wires. - -### Safety before flying - -* Place the spectators behind the pilot, or behind the line passing through both shoulders of the pilot behind the pilot. -* Not to allow spectators into the hemisphere in front of the pilot. -* Know and remember the flight duration the copter and its battery are designed for. - -* BEFORE connecting the Li-ion battery enable control equipment (the remote), and set the left stick (throttle) to the zero position. -* Connect the Li-ion battery immediately before takeoff, disconnect it immediately after landing. -* Stay at least 3 m away from the copter. -* Take off from a level flat site at the distance at least 3 meters away from obstacles. - -### Flight safety - -* Follow all instructions of the teacher or the flight instructor. -* Specify the flying area in advance. Only fly in the specified area, and avoid flying outside it. Do not fly behind your back. -* When learning to fly, fly below the level of your height. -* Fly in proximity to yourself at a distance at which you can see the copter orientation in space. Do not fly far away from yourself. If you doubt copter orientation, immediately land on the spot. Do not try to take off. Approach the copter and take off. -* During the flight, move the control sticks carefully and smoothly. Avoid abrupt movements. If you have to change the flight direction, move the sticks vigorously, but not abruptly. -* Fly carefully, and make only those flight elements that you are sure you can perform. Never perform the flight maneuvers that you doubt you can perform, and the maneuvers that involve risks. -* Observe the speed limit. The copter speed should be maintained within the speed of a walking man. -* Return the copter to the landing location by the estimated time, prevent complete discharge of the battery during the flight. -* Land only on a flat open area away from obstacles. - -### Emergency landing - -In case of hitting the ground or a heavy landing, do the following: - -1. Stop the flight. Land the copter on the ground. Set the left stick (throttle) to the minimum. -2. Disarm (Move the left stick left-down for 3 seconds) -3. Disconnect the Li-ion battery on the copter. -4. Turn off the remote. -5. Inspect the copter, and repair if necessary. - -### Scheduled landing - -After a scheduled landing, do the following: - -1. Disarm (Move the left stick left-down for 3 seconds) -2. Disconnect the Li-ion battery on the copter. -3. Turn off the remote. - -Next: [Connecting Raspberry Pi to Pihxawk](connection.md). +**Next**: [Sensor calibration](calibration.md). diff --git a/docs/en/simple_offboard.md b/docs/en/simple_offboard.md index e1de6000..d4a5a9a4 100644 --- a/docs/en/simple_offboard.md +++ b/docs/en/simple_offboard.md @@ -1,7 +1,7 @@ Simple OFFBOARD === -> **Note** Documentation for the [image](microsd_images.md), versions, starting with **0.15**. For older versions refer to [documentation for version **0.14**](https://github.com/droneExpress/clever/blob/v0.14/docs/ru/simple_offboard.md). +> **Note** Documentation for the [image](image.md), versions, starting with **0.15**. For older versions refer to [documentation for version **0.14**](https://github.com/CopterExpress/clever/blob/v0.14/docs/ru/simple_offboard.md). @@ -16,7 +16,7 @@ Main services are `get_telemetry` (receiving all telemetry), `navigate` (flying The use of Python language --- -To use the services, create proxies to them. Following is an example of the program that declares proxies to all `simple_offboard` services: +To use the services, create proxies to them. Use the following template for you programs: ```python import rospy diff --git a/docs/en/sonar.md b/docs/en/sonar.md index c4cdcfaf..bc515dfd 100644 --- a/docs/en/sonar.md +++ b/docs/en/sonar.md @@ -24,7 +24,7 @@ Connect HC-SR04 to Raspberry Pi according to the connection diagram. Use 1.0 and ### Reading the data -To read the data from distance gage HC-SR04 library for working with GPIO is used – [`pigpio`](http://abyz.me.uk/rpi/pigpio/index.html). This library is pre-installed in the [Clever image](microsd_images.md), starting with version **v0.14**. For older versions of the image, use [an installation guide](http://abyz.me.uk/rpi/pigpio/download.html). +To read the data from distance gage HC-SR04 library for working with GPIO is used – [`pigpio`](http://abyz.me.uk/rpi/pigpio/index.html). This library is pre-installed in the [Clever image](image.md), starting with version **v0.14**. For older versions of the image, use [an installation guide](http://abyz.me.uk/rpi/pigpio/download.html). To work with `pigpio`, start appropriate daemon: diff --git a/docs/en/ssh.md b/docs/en/ssh.md index c8ef70f7..c8ff99f3 100644 --- a/docs/en/ssh.md +++ b/docs/en/ssh.md @@ -1,7 +1,7 @@ SSH access to Raspberry Pi === -[RPi image](microsd_images.md) is configured to be accessed via SSH for editing files, loading data and running programs. +[RPi image](image.md) is configured to be accessed via SSH for editing files, loading data and running programs. For the SSH access, it is necessary [to connect to Raspberry Pi over Wi-Fi](wifi.md) (connection via an Ethernet cable is also possible). @@ -22,6 +22,6 @@ Read more: https://www.raspberrypi.org/documentation/remote-access/ssh/README.md Web access ---------- -Starting with version 0.11.4 [of the image](microsd_images.md), access to the shell is also available via a web browser (using [Butterfly](https://github.com/paradoxxxzero/butterfly)). To gain access, open web page http://192.168.11.1, and select link *Open web terminal*: +Starting with version 0.11.4 [of the image](image.md), access to the shell is also available via a web browser (using [Butterfly](https://github.com/paradoxxxzero/butterfly)). To gain access, open web page http://192.168.11.1, and select link *Open web terminal*: diff --git a/docs/en/zap.md b/docs/en/tinning.md similarity index 100% rename from docs/en/zap.md rename to docs/en/tinning.md diff --git a/docs/en/wifi.md b/docs/en/wifi.md index 7d6099ed..53ee6987 100644 --- a/docs/en/wifi.md +++ b/docs/en/wifi.md @@ -1,10 +1,18 @@ Connecting to Clever via Wi-Fi === -[RPi image](microsd_images.md) provides a pre-configured Wi-Fi access point from SSID `CLEVER-xxxx`, where xxxx are the four random numbers that are assigned when your Raspberry Pi is run for the first time. +[RPi image](image.md) provides a pre-configured Wi-Fi access point from SSID `CLEVER-xxxx`, where xxxx are the four random numbers that are assigned when your Raspberry Pi is run for the first time. -Password: `cleverwifi`. +Connect to Wi-Fi, using the password: `cleverwifi`. Wi-Fi SSID To edit the Wi-Fi settings, or to obtain more detailed information about the network device on Raspberry Pi, read this [article](network.md). + +## Web interface + +After connecting to Clever Wi-Fi, point http://192.168.11.1 in you web browser. It contains all the basic web tools of Clever: viewing image topics, web terminal (Butterfly), and the full copy of this documentation. + +Веб-интерфейс Клевера + +**Next**: [Using QGroundControl via Wi-Fi](gcs_bridge.md). diff --git a/docs/ru/3g.md b/docs/ru/3g.md deleted file mode 100644 index e9331a28..00000000 --- a/docs/ru/3g.md +++ /dev/null @@ -1,6 +0,0 @@ -Использование внешнего 3G-модема -=== - -Использование внешнего 3G-модема на Raspberry возможно с помощью пакета [`sakis3g`](https://github.com/Trixarian/sakis3g-source). - -TODO diff --git a/docs/ru/README.md b/docs/ru/README.md index 5f9a866d..a2eb149e 100644 --- a/docs/ru/README.md +++ b/docs/ru/README.md @@ -1,42 +1,15 @@ -Клевер -====== +# Клевер -Клевер +Клевер 4 -«Клевер» — это учебный конструктор программируемого квадрокоптера, состоящего из популярных открытых компонентов, а также набор необходимой документации и библиотек для работы с ним. +**«Клевер»** — это учебный конструктор программируемого квадрокоптера, состоящего из популярных открытых компонентов, а также набор необходимой документации и библиотек для работы с ним. -Набор включает в себя полетный контроллер Pixhawk/Pixracer с полетным стеком PX4, Raspberry Pi 3 в качестве управляющего бортового компьютера, модуль камеры для реализации полетов с использованием компьютерного зрения, а также набор различных датчиков и другой периферии. +Набор включает в себя полетный контроллер Pixracer с полетным стеком PX4, [Raspberry Pi 3](raspberry.md) в качестве управляющего бортового компьютера, [модуль камеры](camera.md) для реализации полетов с использованием компьютерного зрения, а также набор различных датчиков и другой периферии. -На базе точно такой же платформы были созданы многие «большие» проекты компании Copter Express, например, дроны для [пиар-акций по автономной доставке пиццы](https://www.youtube.com/watch?v=hmkAoZOtF58) (Самара, Казань); дрон-доставщик кофе в Сколково, мониторинговый дрон с зарядной станцией, дроны-победители на полевых испытаниях «[Робокросс-2016](https://www.youtube.com/watch?v=dGbDaz_VmYU)», «[Робокросс-2017](https://youtu.be/AQnd2CRczbQ)» и многие другие. +Платформа Клевера также включает в себя преднастроенный [образ для Raspberry Pi](image.md) в полным набором необходимого ПО для работы со всей периферией и [программирования автономных полетов](simple_offboard.md). Исходный код платформы Клевера и данной документации открыт и [доступен на GitHub](https://github.com/CopterExpress/clever). -Для того, чтобы научиться собирать, настраивать, пилотировать и программировать автономный дрон «Клевер», воспользуйтесь этим учебником. +Если вы детально изучили документацию, но так и не нашли ответа на свой вопрос, напишите в чат техподдержки и наши специалисты вам с радостью ответят: [@COEXHelpdesk](tg://resolve?domain=COEXHelpdesk). -Если вы детально изучили наш gitbook, но так и не нашли ответа на свой вопрос, напишите в чат техподдержки и наши специалисты вам с радостью ответят: https://t.me/COEXHelpdesk. +Также у нас есть чат для программистов, которые разрабатывают под PX4, автономную навигацию в помещениях и рои дронов: [@DroneCode](tg://resolve?domain=DroneCode). -Также у нас есть чат для программистов, которые разрабатывают под PX4, автономную навигацию в помещениях и рои дронов https://t.me/DroneCode. - -The English version of this documentation is available. - - - -Образ для Raspberry Pi ----------------------- - -**Образ ОС** для RPi 3 с предустановленным и преднастроенным ПО можно скачать [здесь](microsd_images.md). - -Образ включает в себя: - -* Raspbian Stretch -* ROS Kinetic -* Настроенную [работу с сетью](network.md) -* OpenCV -* mavros -* Набор ПО для работы с Клевером - -[Описание API](simple_offboard.md) для автономных полетов. - -Исходный код сборщика образа и всего ПО можно найти на [GitHub](https://github.com/CopterExpress/clever). +The English version of this documentation [is available](../en/). diff --git a/docs/ru/SUMMARY.md b/docs/ru/SUMMARY.md index a44d4b5a..25fb5d94 100644 --- a/docs/ru/SUMMARY.md +++ b/docs/ru/SUMMARY.md @@ -2,62 +2,79 @@ * [Введение](README.md) * [Глоссарий](gloss.md) +* [Безопасность](safety.md) * Сборка - * [Сборка Клевера 2](assemble_2.md) - * [Сборка Клевера 3](assemble_3.md) - * [Установка FPV](fpv.md) - * [Безопасность](safety.md) - * [Подключение регулятора 4 в 1](4in1.md) - * [Типы силовых разъемов](connectortypes.md) - * [Лужение](zap.md) - * [Техника безопасности по пайке](tb.md) - * [Проверка подключения](test_connection.md) - * [Неисправности радиоаппаратуры](radioerrors.md) - * [Подключение GPS](gps.md) + * [Клевер 4](assemble_4.md) + * [Клевер 3](assemble_3.md) + * [Клевер 2](assemble_2.md) * Настройка * [Первоначальная настройка](setup.md) + * [Калибровка датчиков](calibration.md) + * [Настройка пульта](radio.md) * [Полетные режимы](modes.md) - * [Настройка режима тренера](trainer_mode.md) - * [Прошивка полетного контролера](firmware.md) - * [Параметры PX4](px4_parameters.md) - * [Настройка PID](calibratePID.md) + * [Настройка питания](power.md) * Работа с Raspberry Pi * [Raspberry Pi](raspberry.md) - * [Образ для RPi](microsd_images.md) - * [Подключение RPi к Pixhawk](connection.md) + * [Образ для RPi](image.md) * [Подключение по Wi-Fi](wifi.md) + * [Подключение к Pixracer](connection.md) + * [QGroundControl по Wi-Fi](gcs_bridge.md) * [SSH-доступ](ssh.md) - * [Настройка сети RPi](network.md) - * [Работа с QGroundControl через Wi-Fi](gcs_bridge.md) - * [Пилотирование со смартфона](rc.md) + * [Редактирование файлов](editing.md) + * [Автоматическая проверка](selfcheck.md) * [Просмотр видеострима с камер](web_video_server.md) - * [Системы координат](frames.md) - * [Интерфейс UART](uart.md) * Программирование * [ROS](ros.md) * [MAVROS](mavros.md) - * [Автономный полет (OFFBOARD)](simple_offboard.md) + * [Ориентация камеры](camera_frame.md) + * [Системы координат](frames.md) + * [Автономный полет в OFFBOARD](simple_offboard.md) + * [Примеры кода](snippets.md) * Визуальные маркеры (ArUco) * [Общая информация](aruco.md) * [Распознавание маркеров](aruco_marker.md) * [Навигация по карте маркеров](aruco_map.md) * [Навигация по Optical Flow](optical_flow.md) - * [Автоматическая проверка](selfcheck.md) - * [Примеры кода](snippets.md) - * [Ориентация камеры](camera_frame.md) - * [Камера \(компьютерное зрение\)](camera.md) + * [Лазерный дальномер](laser.md) * [Светодиодная лента](leds.md) - * [Визуализация с помощью rviz](rviz.md) * [Работа с GPIO](gpio.md) * [Ультразвуковой дальномер](sonar.md) - * [Лазерный дальномер](laser.md) - * [Работа с SITL](sitl.md) - * [Контейнер с симулятором](sitl_docker.md) + * [Компьютерное зрение](camera.md) + * [Визуализация с помощью rviz](rviz.md) * [Автозапуск ПО](autolaunch.md) +* Дополнительные материалы * [Имя хоста](hostname.md) - * [Взаимодействие с Arduino](arduino.md) - * [3G-модем](3g.md) + * [Симулятор](sitl.md) + * [Настройка PID](calibratePID.md) + * [Docker-контейнер с симулятором](sitl_docker.md) * [Установка ROS Kinetic](ros-install.md) + * [Пилотирование со смартфона](rc.md) + * [Настройка сети RPi](network.md) + * [Интерфейс UART](uart.md) + * [Параметры PX4](px4_parameters.md) + * [Работа с логами PX4](flight_logs.md) + * [Прошивка PX4](firmware.md) + * [Протокол MAVLink](mavlink.md) + * [Использование мультиметра](test_connection.md) + * [Неисправности радиоаппаратуры](radioerrors.md) + * [Прошивка ESC контроллеров](esc_firmware.md) + * [Настройка режима тренера](trainer_mode.md) + * [Калибровка камеры](camera_calibration.md) + * [Взаимодействие с Arduino](arduino.md) + * [Подключение GPS](gps.md) + * [Работа с ИК датчиками](ir_sensors.md) + * [Установка FPV](fpv.md) + * [Техника лужения](tinning.md) + * [Подключение PX4FLOW](px4flow.md) + * [Типы силовых разъемов](connectortypes.md) + * [Модуль ESP8266](esp8266_bridge.md) + * [Сборка и модификация образа Клевера](image_building.md) + * [Подключение регулятора 4 в 1](4in1.md) + * [Вклад в Клевер](contributing.md) +* Мероприятия + * [Олимпиада НТИ 2019](nti2019.md) + * [CopterHack-2018](copterhack2018.md) + * [CopterHack-2017](copterhack2017.md) * Проекты на базе Клевера * [Генератор ArUco карт](arucogenmap.md) * [Модель аэротакси в городе](bigchallenges.md) @@ -66,22 +83,9 @@ * [Подсчет количества объектов c камеры](object_counting.md) * [Пульт на Андроид](android.md) * [Блочный конструктор полета](clever_blocks.md) - * [Дрон для 3D-сканирования человека](3dscan.md) - * [CopterHack-2018](copterhack2018.md) - * [CopterHack-2017](copterhack2017.md) - * [Робокросс-2019](robocross2019.md) -* Дополнительные материалы - * [Олимпиада НТИ 2019](nti2019.md) - * [Вклад в Клевер](contributing.md) - * [Сборка и модификация образа Клевера](image_building.md) - * [Прошивка ESC контроллеров](esc_firmware.md) - * [Протокол MAVLink](mavlink.md) - * [Работа с логами PX4](flight_logs.md) - * [Калибровка камеры](calibration.md) - * [Работа с ИК датчиками](ir_sensors.md) - * [Подключение PX4FLOW](px4flow.md) - * [Модуль ESP8266](esp8266_bridge.md) -* Учебник - * [Теория и видеоуроки](lessons.md) - * [Учебно-методическое пособие](metod.md) - * [Контрольные и проверочные материалы](tests.md) + +## Учебник + +* [Теория и видеоуроки](lessons.md) +* [Учебно-методическое пособие](metod.md) +* [Контрольные и проверочные материалы](tests.md) diff --git a/docs/ru/arduino.md b/docs/ru/arduino.md index 4eedf270..dec3a58c 100644 --- a/docs/ru/arduino.md +++ b/docs/ru/arduino.md @@ -1,6 +1,6 @@ # Управление коптером с Arduino -Для взаимодействия с ROS-топиками и сервисами на Raspberry Pi можно использовать библиотеку [rosserial_arduino](http://wiki.ros.org/rosserial_arduino). Эта библиотека предустановлена на [образе для Raspberry Pi](microsd_images.md). +Для взаимодействия с ROS-топиками и сервисами на Raspberry Pi можно использовать библиотеку [rosserial_arduino](http://wiki.ros.org/rosserial_arduino). Эта библиотека предустановлена на [образе для Raspberry Pi](image.md). Основной туториал по rosserial: http://wiki.ros.org/rosserial_arduino/Tutorials diff --git a/docs/ru/aruco.md b/docs/ru/aruco.md index 5d9af8bb..4398ce44 100644 --- a/docs/ru/aruco.md +++ b/docs/ru/aruco.md @@ -1,6 +1,6 @@ # ArUco-маркеры -> **Note** Документация для версий [образа](microsd_images.md), начиная с версии **0.16**. Для более ранних версий см. [документацию для версии **0.15.1**](https://github.com/CopterExpress/clever/blob/v0.15.1/docs/ru/aruco.md). +> **Note** Документация для версий [образа](image.md), начиная с версии **0.16**. Для более ранних версий см. [документацию для версии **0.15.1**](https://github.com/CopterExpress/clever/blob/v0.15.1/docs/ru/aruco.md). [ArUco-маркеры](https://docs.opencv.org/3.2.0/d5/dae/tutorial_aruco_detection.html) — это популярная технология для позиционирования робототехнических систем с использованием компьютерного зрения. @@ -11,7 +11,7 @@ Для быстрого генерирования маркеров для печати можно использовать онлайн-инструмент: http://chev.me/arucogen/. -На [образе Клевера для RPi](microsd_images.md) предустановлен пакет `aruco_pose`, предназначенный для работы с ArUco-маркерами. +На [образе Клевера для RPi](image.md) предустановлен пакет `aruco_pose`, предназначенный для работы с ArUco-маркерами. ## Режимы работы diff --git a/docs/ru/assemble_2.md b/docs/ru/assemble_2.md index 04aefd6b..01457b8b 100644 --- a/docs/ru/assemble_2.md +++ b/docs/ru/assemble_2.md @@ -31,7 +31,7 @@ * Радиопульт FlySky i6 x1. * Зарядное устройство EFEST LUC V4 x1. * Провод Micro USB - USB x1 -* Батарейный отсек 18650 li-Ion x1 +* Батарейный отсек 18650 Li-ion x1 * Провод медный многожильный с силиконовой изоляцией 18AWG (красный, черный), длина 100 см. * Батарейка АА х4 * Джампер, Bind-разъем @@ -91,8 +91,6 @@ ![Дополнительное оборудование](../assets/addEqipment.jpg) -[Техника безопасности при пайке](tb.md) - ## Порядок сборки ### Установка моторов @@ -201,7 +199,7 @@ #### Залудить контактные площадки платы питания -1. [Залудить*](zap.md) контактные площадки платы питания. +1. [Залудить*](tinning.md) контактные площадки платы питания. 2. С помощью мультиметра проверить отсутствие контактного замыкания на плате (прозвонить) ![Постпаячная проверка](../assets/zapPDBtest.jpg) diff --git a/docs/ru/assemble_3.md b/docs/ru/assemble_3.md index 1cf48459..474b1f54 100644 --- a/docs/ru/assemble_3.md +++ b/docs/ru/assemble_3.md @@ -4,7 +4,7 @@ ![Клевер 3](../assets/clever3_main.jpg) -> **Caution** Перед использованием паяльного оборудования обязательно ознакомьтесь с [техникой безопасности при пайке](tb.md). +> **Caution** Перед использованием паяльного оборудования обязательно ознакомьтесь с [техникой безопасности при пайке](safety.md). @@ -16,7 +16,7 @@ Использование из языка Python --- -Для использования сервисов, необходимо создать объекты-прокси к ним. Пример программы, объявляющей прокси ко всем сервисам `simple_offboard`: +Для использования сервисов, необходимо создать объекты-прокси к ним. Используйте этот шаблон для вашей программы: ```python import rospy diff --git a/docs/ru/sonar.md b/docs/ru/sonar.md index 0339abd9..8d92ddce 100644 --- a/docs/ru/sonar.md +++ b/docs/ru/sonar.md @@ -24,7 +24,7 @@ ### Чтение данных -Чтобы считать данные с дальномера HC-SR04, используется библиотека для работы с GPIO – [`pigpio`](http://abyz.me.uk/rpi/pigpio/index.html). Эта библиотека предустановлена на [образе Клевера](microsd_images.md), начиная с версии **v0.14**. Для более старых версий образа используйте [инструкцию по установке](http://abyz.me.uk/rpi/pigpio/download.html). +Чтобы считать данные с дальномера HC-SR04, используется библиотека для работы с GPIO – [`pigpio`](http://abyz.me.uk/rpi/pigpio/index.html). Эта библиотека предустановлена на [образе Клевера](image.md), начиная с версии **v0.14**. Для более старых версий образа используйте [инструкцию по установке](http://abyz.me.uk/rpi/pigpio/download.html). Для работы с `pigpio` необходимо запустить соответствующий демон: diff --git a/docs/ru/ssh.md b/docs/ru/ssh.md index 095184b2..dad8fd42 100644 --- a/docs/ru/ssh.md +++ b/docs/ru/ssh.md @@ -1,7 +1,6 @@ -Доступ по SSH к Raspberry Pi -=== +# Доступ по SSH к Raspberry Pi -На [образе для RPi](microsd_images.md) преднастроен доступ по SSH для редактирования файлов, загрузки данных и запуска программ. +На [образе для RPi](image.md) преднастроен доступ по SSH для редактирования файлов, загрузки данных и запуска программ. Для доступа по SSH необходимо [подключиться к Raspberry Pi по Wi-Fi](wifi.md) (также возможно подключение через Ethernet-кабель). @@ -13,15 +12,12 @@ ssh pi@192.168.11.1 Пароль: ``raspberry``. -Для доступа по SSH из Windows можно использовать [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html). +Для доступа по SSH из Windows можно использовать [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) или веб-доступ (см. далее). Также можно получить доступ по SSH со смартфона с помощью приложения [Termius](https://www.termius.com). -Также можно получить доступ по SSH со смартфона с помощью приложения [Termius](https://www.termius.com). +Подробнее: https://www.raspberrypi.org/documentation/remote-access/ssh/README.md. -Подробнее: https://www.raspberrypi.org/documentation/remote-access/ssh/README.md +## Веб-доступ -Веб-доступ ----------- - -Начиная с версии 0.11.4 [образа](microsd_images.md) доступ к шеллу также доступен через веб-браузер (с использованием [Butterfly](https://github.com/paradoxxxzero/butterfly)). Для доступа откройте страницу http://192.168.11.1 и выберите на ней ссылку *Open web terminal*: +Начиная с версии 0.11.4 [образа](image.md) доступ к шеллу также доступен через веб-браузер (с использованием [Butterfly](https://github.com/paradoxxxzero/butterfly)). Для доступа откройте страницу http://192.168.11.1 и выберите на ней ссылку *Open web terminal*: diff --git a/docs/ru/tb.md b/docs/ru/tb.md deleted file mode 100644 index 49e704a4..00000000 --- a/docs/ru/tb.md +++ /dev/null @@ -1,28 +0,0 @@ -Техника безопасности при пайке -============================== - -Работы, связанные с пайкой и лужением, должны проводиться в специально оборудованных и предварительно подготовленных помещениях. Обязательно должна присутствовать система вентиляции. - -Перед началом работы необходимо: - -1. Привести в порядок рабочее место, ничего не должно мешать процессу. Рабочее место должно быть хорошо освещено. -2. Паяльник, находящийся в рабочем состоянии, установить в зоне действия местной вытяжной вентиляции, в специальную подставку. -3. Перед началом работы надеть защитный халат, очки и, при необходимости, перчатки. - -![stand](../assets/stand.jpg) - -Во время пайки: - -1. Паяльник следует держать только за ручку, так как жало имеет высокую температуру. - - ![keep](../assets/keep.png) - -2. Для перемещения изделий применять специальные инструменты (пинцеты, клещи или другие инструменты), обеспечивающие безопасность при пайке. -3. Во избежание ожогов расплавленным припоем при распайке не выдергивать резко с большим усилием паяемые провода. -4. При пайке мелких и подвижных изделий пользоваться специальным держателем. - - ![helphand](../assets/helphand.jpg) - -5. Паяльник переносить за корпус, а не за провод или рабочую часть. При перерывах в работе паяльник отключать от электросети. - -> **Caution** При обнаружении неисправной работы паяльника или возникновении возгорания отключить его от питающей электросети. diff --git a/docs/ru/test_connection.md b/docs/ru/test_connection.md index 4aaf4b55..44403586 100644 --- a/docs/ru/test_connection.md +++ b/docs/ru/test_connection.md @@ -1,4 +1,4 @@ -# Как пользоваться мультиметром? +# Использование мультиметра ## Проверка цепей (прозвонка) diff --git a/docs/ru/zap.md b/docs/ru/tinning.md similarity index 73% rename from docs/ru/zap.md rename to docs/ru/tinning.md index 8b39c8dc..86ce47d3 100644 --- a/docs/ru/zap.md +++ b/docs/ru/tinning.md @@ -1,24 +1,23 @@ -Лужение -============================ +# Лужение > **Caution** Перед пайкой и лужением убедитесь, что провода и платы отключены от питания (обесточены)! ## Лужение контактных площадок -Залудить контактную площадку значит +Залудить контактную площадку значит: -1. Нанести флюс на контактную площадку -2. Покрыть припоем контактную площадку +1. Нанести флюс на контактную площадку. +2. Покрыть припоем контактную площадку. ![Лужение площадок](../assets/zapPDBtest.jpg) ## Лужение проводов -Залудить провод значит +Залудить провод значит: -1. Зачистить провод - снять слой изоляции -2. Скрутить оголенные провода -3. Нанести флюс на скрученные оголенные провода +1. Зачистить провод — снять слой изоляции. +2. Скрутить оголенные провода. +3. Нанести флюс на скрученные оголенные провода. 4. Покрыть слоем припоя. ![Лужение проводов](../assets/zap.jpg) diff --git a/docs/ru/uart.md b/docs/ru/uart.md index 8f74b2bf..8c2b776c 100644 --- a/docs/ru/uart.md +++ b/docs/ru/uart.md @@ -69,7 +69,7 @@ sudo systemctl disable hciuart.service ## Настройка образа по умолчанию -На [образе для RPi](microsd_images.md) изначально выключен `Mini UART` и Bluetooth модуль. +На [образе для RPi](image.md) изначально выключен `Mini UART` и Bluetooth модуль. ## Bugs diff --git a/docs/ru/web_video_server.md b/docs/ru/web_video_server.md index 247c001e..fe7fc5bb 100644 --- a/docs/ru/web_video_server.md +++ b/docs/ru/web_video_server.md @@ -44,7 +44,7 @@ http://192.168.11.1:8080/stream_viewer?topic=/main_camera/image_raw&type=mjpeg&q ROS_MASTER_URI=http://192.168.11.1:11311 rqt_image_view ``` -Выберите топик для просмотра, например `/main_camera/image_raw`: +Выберите топик для просмотра, например, `/main_camera/image_raw`: ![rqt_image_view](../assets/rqt_image_view.jpg) diff --git a/docs/ru/wifi.md b/docs/ru/wifi.md index 8151ce42..cf03a3ff 100644 --- a/docs/ru/wifi.md +++ b/docs/ru/wifi.md @@ -1,16 +1,17 @@ -Подключение к Клеверу по Wi-Fi -=== +# Подключение к Клеверу по Wi-Fi -На [образе для RPi](microsd_images.md) преднастроена раздача Wi-Fi с SSID `CLEVER-xxxx`, где xxxx – 4 случайных цифры, назначаемых при первом включении Raspberry Pi. +На [образе для RPi](image.md) преднастроена раздача Wi-Fi с SSID `CLEVER-xxxx`, где xxxx – 4 случайных цифры, назначаемых при первом включении Raspberry Pi. -Пароль: `cleverwifi`. +Подключитесь к Wi-Fi, используя пароль `cleverwifi`. -Wi-Fi SSID +Подключение по Wi-Fi -Для изменения настроек Wi-Fi или получения более детальной информации о устройстве сети на Raspberry Pi прочитайте эту [статью](network.md). +Для изменения настроек Wi-Fi или получения более детальной информации о устройстве сети на Raspberry Pi прочитайте статью "[Настройка Wi-Fi](network.md)". ## Веб-интерфейс После подключения к Клеверу по адресу http://192.168.11.1 будет доступен веб-интерфейс. В нем доступны основные веб-инструменты Клевера: просмотр топиков с изображениями, веб-терминал (Butterfly) а также полная копия данной документации. -![web interface](../assets/web_interface.png) +Веб-интерфейс Клевера + +**Далее**: [Подключение QGroundControl по Wi-Fi](gcs_bridge.md). diff --git a/redirects.json b/redirects.json index 1f7976c0..f1f1f1f3 100644 --- a/redirects.json +++ b/redirects.json @@ -15,7 +15,7 @@ { "from": "firmware.html", "to": "ru/firmware.html" }, { "from": "px4_parameters.html", "to": "ru/px4_parameters.html" }, { "from": "raspberry.html", "to": "ru/raspberry.html" }, - { "from": "microsd_images.html", "to": "ru/microsd_images.html" }, + { "from": "microsd_images.html", "to": "ru/image.html" }, { "from": "connection.html", "to": "ru/connection.html" }, { "from": "wifi.html", "to": "ru/wifi.html" }, { "from": "ssh.html", "to": "ru/ssh.html" }, @@ -49,6 +49,9 @@ { "from": "camera/", "to": "ru/camera.html" }, { "from": "snippets/", "to": "ru/snippets.html" }, { "from": "optical_flow/", "to": "ru/optical_flow.html" }, - { "from": "laser/", "to": "ru/laser.html" } + { "from": "laser/", "to": "ru/laser.html" }, + + { "from": "ru/microsd_images.html", "to": "ru/image.html" }, + { "from": "en/microsd_images.html", "to": "en/image.html" } ] }