Compare commits

...

163 Commits
v0.4 ... v0.8

Author SHA1 Message Date
Smirnov Artem
fec4859cfe image_builder: enable the lirc-rpi module for uart 2018-07-06 22:10:58 +03:00
Oleg Kalachev
63ecc3b713 image: fix libpoco-dev version 2018-07-06 22:02:53 +03:00
Oleg Kalachev
d3a08c60d7 Merge pull request #54 from Yuliya1404/master
docs: changed metod materials
2018-07-06 17:25:51 +03:00
Oleg Kalachev
322eb1e255 image: add tcpdump and libpoco-dev 2018-07-06 04:37:00 +03:00
Oleg Kalachev
22d4f3c3e7 docs: small fixes 2018-07-05 03:07:52 +03:00
Oleg Kalachev
008750b1d9 docs: add systemd/roslaunch documentation 2018-07-05 03:03:16 +03:00
Oleg Kalachev
506767f32f docs: add some info to gps article 2018-07-05 02:50:45 +03:00
Oleg Kalachev
aaa673de92 simple_offboard: add global alt to get_telemetry service 2018-07-05 02:50:35 +03:00
Oleg Kalachev
43237d8ff4 GCS bridges config and documentation improvements 2018-07-05 02:10:53 +03:00
Oleg Kalachev
9681fc9a87 Merge branch 'master' of github.com:CopterExpress/clever 2018-07-04 20:29:45 +03:00
Oleg Kalachev
76c3e96f76 Enable mavros respawn by default 2018-07-04 20:26:47 +03:00
shish1404
1e66afa6a4 docs: changed test 2018-06-29 22:14:46 +03:00
shish1404
41c59e8e49 docs: added videos 2018-06-29 18:49:22 +03:00
shish1404
225e3d7936 docs: changed label 2018-06-29 18:48:53 +03:00
Smirnov Artem
8cdb131a19 Merge pull request #53 from urpylka/master
image_builder: fix pack
2018-06-25 14:53:51 +03:00
Artem Smirnov
c9042588f0 image_builder: enable shrinker by default 2018-06-25 13:28:44 +03:00
Oleg Kalachev
342eaec49a gitbook: fix ya-metrika 2018-06-25 03:13:17 +03:00
Oleg Kalachev
77b3d28e3b gitbook: add ya-metrika 2018-06-25 03:00:04 +03:00
Smirnov Artem
357b38b5e7 image_builder: add text for /etc/fstab 2018-06-23 21:12:06 +03:00
Artem Smirnov
a99a1c7540 image_builder: change PARTUUID to /dev/mmcblk0p2 2018-06-23 20:44:30 +03:00
Artem Smirnov
6742ba332a image_builder: add fixed version for deb-packages 2018-06-22 15:31:26 +03:00
Smirnov Artem
c5916fea7c Merge pull request #52 from urpylka/master
image_builder fix-pack
2018-06-21 23:44:08 +03:00
Smirnov Artem
7a4958f8e9 Merge branch 'master' into master 2018-06-21 23:43:35 +03:00
Artem Smirnov
b71a96faee image_builder: add param for discover packages 2018-06-21 21:54:47 +03:00
Artem Smirnov
24e79f0169 image_builder: add autosizer.sh to build.Jenkinsfile 2018-06-21 18:24:02 +03:00
Artem Smirnov
76e887407a image_builder: add argument for set FREE SPACE 2018-06-21 18:24:02 +03:00
Artem Smirnov
0d0c8e54f4 image_builder: add image-shrinker 2018-06-21 18:24:02 +03:00
Artem Smirnov
06a01f7e32 image_builder: return devel dir to catkin_ws
needed for roscd
2018-06-21 18:24:02 +03:00
Artem Smirnov
f564d20c5b image_builder: add fixed rosinstall file 2018-06-21 18:24:02 +03:00
Artem Smirnov
85afded6b4 image_builder: move install mjpg-streamer to soft-install 2018-06-19 15:51:26 +03:00
Artem Smirnov
7e84853c37 image_builder: small echo fix 2018-06-19 13:39:37 +03:00
Artem Smirnov
c3c324158f image_builder: fix for add environment 2018-06-18 20:51:29 +03:00
Artem Smirnov
1e2fd40c05 image_builder: remove build & devel dirs 2018-06-18 20:42:47 +03:00
Artem Smirnov
6a7f78a218 image_builder: add "yes" flag 2018-06-18 20:42:47 +03:00
Smirnov Artem
0b637e56d7 image_builder: change param to const 2018-06-18 20:42:47 +03:00
Artem Smirnov
63f44a5a3f image_builder: remove unused code from image_config.sh 2018-06-18 20:42:47 +03:00
Artem Smirnov
83ce14e31b image_builder: merge arguments in resize_fs 2018-06-18 20:42:47 +03:00
Artem Smirnov
8162357ce6 image_builder: catkin_init_workspace not needed 2018-06-18 20:42:47 +03:00
Oleg Kalachev
ba0e9cf9c5 Change udp connection timeout to 10 2018-06-18 19:40:34 +03:00
Oleg Kalachev
8d1072d97d docs: add info about virtual joustick in qgroundcontrol 2018-06-14 02:04:22 +03:00
Oleg Kalachev
ffd4fdf2dc docs: add illustration to listener command usage 2018-06-14 01:01:17 +03:00
Oleg Kalachev
d279f04a1f docs: more 2018-06-13 16:39:48 +03:00
Oleg Kalachev
77e8c858a0 docs: another fixes 2018-06-13 16:34:57 +03:00
Oleg Kalachev
f6edf15011 docs: little fixes 2018-06-13 16:33:52 +03:00
Oleg Kalachev
b50c34b19c docs: add flight logs article 2018-06-13 16:29:55 +03:00
Oleg Kalachev
874f206e2a Somes fixes to iOS app 2018-06-09 20:33:40 +03:00
Oleg Kalachev
fd262fdb6a Add .editorconfig 2018-06-09 20:26:18 +03:00
Oleg Kalachev
2cb17985d4 Merge branch 'master' of github.com:CopterExpress/clever 2018-06-09 19:21:11 +03:00
Oleg Kalachev
2daa6f108a Update to iOS app 2018-06-09 16:12:57 +03:00
Oleg Kalachev
2e0d92c0d5 image: restore .vimrc 2018-06-09 03:41:41 +03:00
Oleg Kalachev
1a0d61af7c docs: small fixes 2018-06-09 02:28:45 +03:00
Oleg Kalachev
eb9fc6140b Merge branch 'master' of github.com:CopterExpress/clever 2018-06-08 20:14:43 +03:00
Oleg Kalachev
b0d72030fa docs: working on rc docs 2018-06-08 20:13:42 +03:00
Oleg Kalachev
db27d422ae docs: working on rc docs 2018-06-08 20:06:44 +03:00
Oleg Kalachev
d6ec597fe2 docs: working on rc docs 2018-06-08 00:52:12 +03:00
Oleg Kalachev
0fe319f430 Set udp bridge connection timeout to 20 2018-06-06 18:17:24 +03:00
Oleg Kalachev
2616b49e82 Merge branch 'master' of github.com:CopterExpress/clever 2018-06-06 18:09:47 +03:00
Oleg Kalachev
c2fd26db56 Support mavros udp-pb bridge 2018-06-06 18:09:38 +03:00
Artem Smirnov
71bd59fe3d image_builder: change "catkin init" to "catkin_init_workspace" 2018-06-05 17:41:38 +03:00
Oleg Kalachev
5b84fe63dd docs: remove disquss 2018-06-03 15:11:24 +03:00
Smirnov Artem
40782063c4 image_builder: Added GWBT_URL parameter
Added GWBT_URL parameter for automatic insert that to field on manual run of build
2018-06-02 14:55:53 +03:00
Smirnov Artem
580eb2400c docs: update wifi.md 2018-05-31 17:12:15 +03:00
Smirnov Artem
4666e443cb Update microsd_images.md 2018-05-31 16:54:41 +03:00
Smirnov Artem
d52c1701e4 Merge pull request #49 from urpylka/wifi_doc
docs: add network & wifi conf
2018-05-31 16:24:50 +03:00
Smirnov Artem
4a543c75f7 image_builder: use dnsmasq as default dhcp-server (#48) 2018-05-31 16:22:45 +03:00
Smirnov Artem
0b15f4ffd5 Update network.md 2018-05-31 16:16:06 +03:00
Oleg Kalachev
0f6e24d07f Changes to network.md 2018-05-31 16:15:51 +03:00
Artem Smirnov
7110ef1420 docs: add network & wifi conf 2018-05-31 16:04:35 +03:00
Oleg Kalachev
a56cef65d5 docs: modes changes 2018-05-30 16:35:09 +03:00
Oleg Kalachev
f58be1ff6f docs: small change 2018-05-30 16:11:07 +03:00
Oleg Kalachev
b1a788864c docs: some styling 2018-05-30 16:09:06 +03:00
Oleg Kalachev
fe468d911b docs: small change 2018-05-30 16:05:45 +03:00
Oleg Kalachev
ef8e1c0478 docs: some styling 2018-05-30 16:04:14 +03:00
Oleg Kalachev
710c4fb33e docs: add some units 2018-05-30 15:56:18 +03:00
Oleg Kalachev
3ef8656bcd docs: add link to px4 releases page 2018-05-30 15:50:53 +03:00
Oleg Kalachev
251e15f503 docs: add some units 2018-05-30 15:44:03 +03:00
Smirnov Artem
eb2f9d9c2b docs: add UDP support to GCS-bridge (#47) 2018-05-18 18:12:54 +03:00
Oleg Kalachev
dfcd3ea693 Merge branch 'master' of github.com:CopterExpress/clever 2018-05-13 23:01:14 +03:00
Oleg Kalachev
7260128dfd docs: note about yaw=NaN 2018-05-13 23:01:06 +03:00
Oleg Kalachev
d4e783c96f snippets: get_distance_global 2018-05-13 20:10:41 +03:00
Oleg Kalachev
c57a342053 Fix to readme 2018-05-12 17:03:25 +03:00
Oleg Kalachev
9ed9af2d04 Some fixes to readme 2018-05-12 17:02:48 +03:00
Oleg Kalachev
295b9c98d1 docs: rework images article 2018-05-12 16:58:54 +03:00
Oleg Kalachev
8f4de0e08f Merge branch 'master' of github.com:CopterExpress/clever 2018-05-10 22:33:16 +03:00
Oleg Kalachev
8f53301b79 simple_offboard: correct axes for calculating yaw for setpoints 2018-05-10 22:32:45 +03:00
Oleg Kalachev
6372ef8c22 simple_offboard: Tait-Bryan z-y-x angles for pitch, roll and yaw 2018-05-10 22:31:56 +03:00
Oleg Kalachev
a91f9e5a6b Change image size to from 8G to 7G 2018-05-10 16:40:05 +03:00
Oleg Kalachev
6b74f75616 Merge branch 'master' of github.com:CopterExpress/clever 2018-05-09 19:50:46 +03:00
Oleg Kalachev
9cd9babb83 simple_offboard: yaw_rate, pitch_rate, roll_rate in get_telemetry 2018-05-09 19:50:18 +03:00
Smirnov Artem
380c14da56 image_buider: enable hardware uart with raspi-config (#43)
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-05-05 20:36:22 +03:00
urpylka
32c1c18af2 image_builder: fix syntax
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-05-05 16:50:36 +03:00
urpylka
b7077339a1 image_builder: add sha256sum to release message
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-05-03 22:33:57 +03:00
urpylka
52fd505ffc image_builder: change spaces
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-05-03 22:33:57 +03:00
urpylka
b911b7a3dd image_builder: fix syntax
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-05-03 22:01:29 +03:00
Smirnov Artem
9b38d5135e image_builder: fix small mistake 2018-04-27 20:14:33 +03:00
Smirnov Artem
0346c48546 Merge pull request #39 from CopterExpress/image_builder_refactor_23042018
Image builder refactor 23042018
2018-04-27 13:49:16 +03:00
urpylka
212c6ca5ac image_config: fix output debug 2018-04-27 13:42:12 +03:00
urpylka
361c89d016 image_config: little fix & add more debug output 2018-04-27 13:35:32 +03:00
urpylka
b0cbc67799 image_config: add debug output 2018-04-27 13:26:28 +03:00
urpylka
18cfb08054 image_builder: fix comment 2018-04-26 23:43:55 +03:00
Smirnov Artem
66121e6d5d Rename jenkinsfile to Jenkinsfile 2018-04-26 23:41:30 +03:00
urpylka
a4841de17e image_builder: try fix with send big string as argument
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-26 23:37:37 +03:00
Oleg Kalachev
84aef97e37 docs: fixes 2018-04-26 00:11:20 +03:00
Oleg Kalachev
f14e1976e7 docs: fix 2018-04-26 00:10:20 +03:00
Oleg Kalachev
8c9acc98fb docs: qr example 2018-04-26 00:09:12 +03:00
Oleg Kalachev
bd36428bd4 docs: typo 2018-04-25 23:24:44 +03:00
urpylka
7f7276e34a image_builder: fix bug with GH credentials after parsing json
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 22:24:02 +03:00
urpylka
460761ef68 image_builder: fix small bug
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 21:27:12 +03:00
urpylka
9fefc6428e image_builder: fix small bugs
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 21:09:42 +03:00
urpylka
ffe4423c10 docs: remove duplicates after merge
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 20:46:16 +03:00
Smirnov Artem
3f02919cd9 Merge pull request #36 from Yuliya1404/master
Updated assemble and lessons
2018-04-24 20:19:48 +03:00
Yuliya1404
3075badf33 docs: update lessons & assemble article
* Update tb.md

* Update testConnection.md

* Update safety.md

* Delete brrc2205ondeck.png

* Add files via upload

* Create connectortypes.md

* Add files via upload

* Update connectortypes.md

* Update assemble.md

* Add files via upload

* Create metod.md

* Update metodmaterials.md

* Create tests.md

* Update SUMMARY.md

* Create lessons.md

* Update lessons.md
2018-04-24 20:06:20 +03:00
urpylka
29d66ee264 image_builder: add readme-file about builder
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
846ec3a430 image_builder: made absolute path in jenkinsfile
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
a65a50ffd3 image_builder: change ini to json in yadisk.py
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
c945bb9d03 image_builder: made var YA_SCRIPT
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
3dc9575c9e image_builder: refactor comment
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
f901167009 image_builder: replace ini to json, requests to curl
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
8519a6c6a4 image_builder: refactor path to execute-files
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
d8fc2c088f image_builder: fix bag with switch-case order in bash
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
679cd37ec6 image_builder: fix bag with IMAGE_VERSION
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
40be77f9c3 image_builder: refactor publish_image functions
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
1a0d762c4e image_builder: hardware configure by raspi-config
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
a7e0032225 image_builder: fix syntax
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
0b9df02faa image_builder: translate couple comments
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:03 +03:00
urpylka
0dcf7d1520 image_builder: remove not used code
Signed-off-by: Artem Smirnov <urpylka@gmail.com>
2018-04-24 19:02:02 +03:00
Smirnov Artem
b146057ca7 Merge pull request #35 from Svetk0/Svetk0-setup
docs: update
2018-04-24 19:01:01 +03:00
Svetk0
68a32e036e Rename calibratePID to calibratePID.md 2018-04-12 17:09:10 +03:00
Svetk0
dba5b63230 Update setup.md 2018-04-12 17:08:16 +03:00
Svetk0
26efccb110 Add files via upload 2018-04-12 17:06:10 +03:00
Svetk0
e0516663aa Create calibratePID 2018-04-12 17:05:45 +03:00
Svetk0
d737d91bc2 Update setup.md 2018-04-12 16:57:43 +03:00
Svetk0
1b10d59188 Add files via upload 2018-04-12 16:57:01 +03:00
Svetk0
a9ca13c55d Update setup.md 2018-04-12 16:34:45 +03:00
Svetk0
57fbe9cc09 Update setup.md 2018-04-12 14:57:35 +03:00
Svetk0
061b225690 Update setup.md 2018-04-12 14:55:20 +03:00
Svetk0
27189d559a Update setup.md 2018-04-12 12:52:56 +03:00
Svetk0
60b22d0df8 Create safety_assem.md 2018-03-28 12:45:55 +03:00
Svetk0
0072bf8330 Update SUMMARY.md 2018-03-28 12:45:49 +03:00
Svetk0
f36b4546a9 Create mount_antenna.md 2018-03-28 12:43:50 +03:00
Svetk0
c0a97fd263 Update SUMMARY.md 2018-03-28 12:42:22 +03:00
Svetk0
46932e4adf Rename mount_battcase.md to mount_batterycase.md 2018-03-28 12:41:55 +03:00
Svetk0
0c2675ec28 Update and rename mount_batterycase.md to prepare_batterycase.md 2018-03-28 12:40:22 +03:00
Svetk0
f4e5d7978a Update SUMMARY.md 2018-03-28 12:39:43 +03:00
Svetk0
cc7ba566c5 Create mount_battcase.md 2018-03-28 12:39:37 +03:00
Svetk0
d47e3f6bbf Create mount_frame.md 2018-03-28 12:37:56 +03:00
Svetk0
2335c74b55 Create mount_esc.md 2018-03-28 12:34:01 +03:00
Svetk0
ca4bab7bf8 Create mount_pixhawk.md 2018-03-28 12:32:56 +03:00
Svetk0
d4d84ea422 Update SUMMARY.md 2018-03-28 12:31:26 +03:00
Svetk0
f985e07be4 Create mount_receiver.md 2018-03-28 12:28:52 +03:00
Svetk0
bab62cf374 Update SUMMARY.md 2018-03-28 12:24:42 +03:00
Svetk0
4eb988c34d Create test_motors.md 2018-03-28 12:24:37 +03:00
Svetk0
3006d7e32e Create binding.md 2018-03-28 12:23:06 +03:00
Svetk0
3e9b7426bf Create soldering_power.md 2018-03-28 12:21:03 +03:00
Svetk0
e8f93782e0 Create mount_elements.md 2018-03-28 12:19:32 +03:00
Svetk0
910b24c460 Update SUMMARY.md 2018-03-27 17:55:22 +03:00
Svetk0
5dc580c76b Create mount_batterycase.md 2018-03-27 17:55:12 +03:00
Svetk0
c0705222f5 Create mount_connector.md 2018-03-27 17:54:06 +03:00
Svetk0
b51e8add55 Create mount_pdb.md 2018-03-27 17:53:24 +03:00
Svetk0
86211df4b3 Create kit.md 2018-03-27 17:18:19 +03:00
Svetk0
5ef5c6b641 Create mount_motors.md 2018-03-27 17:16:53 +03:00
Svetk0
5b96253146 Update SUMMARY.md 2018-03-27 17:14:30 +03:00
Svetk0
54111504ac Update SUMMARY.md 2018-03-27 17:05:53 +03:00
121 changed files with 3629 additions and 765 deletions

13
.editorconfig Normal file
View File

@@ -0,0 +1,13 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
[*.{py,cpp,h,swift,launch}]
indent_style = space
indent_size = 4
[*.{js,html}]
indent_style = tab

View File

@@ -4,16 +4,15 @@
CLEVER is an educational programmable drone kit consisting of an unassembled quadcopter, open source software and documentation. The kit includes Pixhawk/Pixracer autopilot running PX4 firmware, Raspberry Pi 3 as companion computer, a camera for computer vision navigation as well as additional sensors and peripheral devices. CLEVER is an educational programmable drone kit consisting of an unassembled quadcopter, open source software and documentation. The kit includes Pixhawk/Pixracer autopilot running PX4 firmware, Raspberry Pi 3 as companion computer, a camera for computer vision navigation as well as additional sensors and peripheral devices.
Copter Express has implemented a large number of different autonomous drone projects using exactly the same platform: [automated pizza delivery](https://www.youtube.com/watch?v=hmkAoZOtF58) in Samara and Kazan, coffee delivery in Skolkovo Innovation Center, [autonomous quadcopter with charging station](https://www.youtube.com/watch?v=RjX6nUqw1mI) for site monitoring and security, winning drones on [Robokross-2016](https://www.youtube.com/watch?v=dGbDaz_VmYU) and [Robokross-2017](https://youtu.be/AQnd2CRczbQ) competitions and many others. Copter Express has implemented a large number of different autonomous drone projects using exactly the same platform: [automated pizza delivery](https://www.youtube.com/watch?v=hmkAoZOtF58) in Samara and Kazan, coffee delivery in Skolkovo Innovation Center, [autonomous quadcopter with charging station](https://www.youtube.com/watch?v=RjX6nUqw1mI) for site monitoring and security, winning drones on [Robocross-2016](https://www.youtube.com/watch?v=dGbDaz_VmYU) and [Robocross-2017](https://youtu.be/AQnd2CRczbQ) competitions and many others.
**The main documentation in Russian is available on our Gitbook:** **The main documentation in Russian is available [on our Gitbook](https://clever.copterexpress.com/).**
**https://copterexpress.gitbooks.io/clever/content/**
Use it to learn how to assemble, configure, pilot and program autonomous CLEVER drone. Use it to learn how to assemble, configure, pilot and program autonomous CLEVER drone.
## Preconfigured RPi 3 image ## Preconfigured RPi 3 image
Preconfigured image for Raspberry Pi 3 with installed and configured software, ready to fly, is available [here](https://copterexpress.gitbooks.io/clever/content/docs/microsd_images.html). **Preconfigured image for Raspberry Pi 3 with installed and configured software, ready to fly, is available [in the Releases section](https://github.com/CopterExpress/clever/releases).**
Image includes: Image includes:
@@ -24,7 +23,7 @@ Image includes:
* mavros * mavros
* CLEVER software bundle for autonomous drone control * CLEVER software bundle for autonomous drone control
API description in Russian for autonomous flights is available [here](https://copterexpress.gitbooks.io/clever/simple_offboard.html). API description (in Russian) for autonomous flights is available [on GitBook](https://copterexpress.gitbooks.io/clever/simple_offboard.html).
## Manual installation ## Manual installation

View File

@@ -139,7 +139,7 @@
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastSwiftUpdateCheck = 0920; LastSwiftUpdateCheck = 0920;
LastUpgradeCheck = 0920; LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Copter Express"; ORGANIZATIONNAME = "Copter Express";
TargetAttributes = { TargetAttributes = {
7C51653C20139237004D1F4D = { 7C51653C20139237004D1F4D = {
@@ -294,6 +294,7 @@
CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES; CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_EMPTY_BODY = YES;
@@ -301,6 +302,7 @@
CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@@ -351,6 +353,7 @@
CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES; CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_EMPTY_BODY = YES;
@@ -358,6 +361,7 @@
CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@@ -1,95 +1,111 @@
{ {
"images" : [ "images" : [
{ {
"idiom" : "iphone",
"size" : "20x20", "size" : "20x20",
"idiom" : "iphone",
"filename" : "cleverrc40.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"idiom" : "iphone",
"size" : "20x20", "size" : "20x20",
"idiom" : "iphone",
"filename" : "clever60.png",
"scale" : "3x" "scale" : "3x"
}, },
{ {
"idiom" : "iphone",
"size" : "29x29", "size" : "29x29",
"idiom" : "iphone",
"filename" : "clever58.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"idiom" : "iphone",
"size" : "29x29", "size" : "29x29",
"idiom" : "iphone",
"filename" : "clever87.png",
"scale" : "3x" "scale" : "3x"
}, },
{ {
"idiom" : "iphone",
"size" : "40x40", "size" : "40x40",
"idiom" : "iphone",
"filename" : "clever80.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"idiom" : "iphone",
"size" : "40x40", "size" : "40x40",
"idiom" : "iphone",
"filename" : "clever120.png",
"scale" : "3x" "scale" : "3x"
}, },
{ {
"size" : "60x60", "size" : "60x60",
"idiom" : "iphone", "idiom" : "iphone",
"filename" : "cleverios180.png", "filename" : "clever120-1.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"size" : "60x60", "size" : "60x60",
"idiom" : "iphone", "idiom" : "iphone",
"filename" : "cleverios180-1.png", "filename" : "clever180-1.png",
"scale" : "3x" "scale" : "3x"
}, },
{ {
"idiom" : "ipad",
"size" : "20x20", "size" : "20x20",
"idiom" : "ipad",
"filename" : "clever20.png",
"scale" : "1x" "scale" : "1x"
}, },
{ {
"idiom" : "ipad",
"size" : "20x20", "size" : "20x20",
"idiom" : "ipad",
"filename" : "clever40.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"idiom" : "ipad",
"size" : "29x29", "size" : "29x29",
"idiom" : "ipad",
"filename" : "clever29.png",
"scale" : "1x" "scale" : "1x"
}, },
{ {
"idiom" : "ipad",
"size" : "29x29", "size" : "29x29",
"idiom" : "ipad",
"filename" : "clever58-1.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"idiom" : "ipad",
"size" : "40x40", "size" : "40x40",
"idiom" : "ipad",
"filename" : "clever40-1.png",
"scale" : "1x" "scale" : "1x"
}, },
{ {
"idiom" : "ipad",
"size" : "40x40", "size" : "40x40",
"idiom" : "ipad",
"filename" : "clever80-1.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"idiom" : "ipad",
"size" : "76x76", "size" : "76x76",
"idiom" : "ipad",
"filename" : "clever76.png",
"scale" : "1x" "scale" : "1x"
}, },
{ {
"idiom" : "ipad",
"size" : "76x76", "size" : "76x76",
"idiom" : "ipad",
"filename" : "clever152.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"idiom" : "ipad",
"size" : "83.5x83.5", "size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "clever167.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"idiom" : "ios-marketing",
"size" : "1024x1024", "size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "clever1024.png",
"scale" : "1x" "scale" : "1x"
} }
], ],

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

View File

@@ -5,7 +5,7 @@
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key> <key>CFBundleDisplayName</key>
<string>Clever RC</string> <string>CLEVER RC</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
@@ -19,7 +19,7 @@
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.0</string> <string>1.0</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1</string> <string>3</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>UILaunchStoryboardName</key> <key>UILaunchStoryboardName</key>

View File

@@ -10,12 +10,13 @@ import UIKit
import WebKit import WebKit
import SwiftSocket import SwiftSocket
import NotificationBannerSwift import NotificationBannerSwift
import AudioToolbox.AudioServices
class ViewController: UIViewController, WKScriptMessageHandler { class ViewController: UIViewController, WKScriptMessageHandler {
@IBOutlet weak var webView: WKWebView! @IBOutlet weak var webView: WKWebView!
let impactGenerator = UIImpactFeedbackGenerator(style: .medium) let impactGenerator = UIImpactFeedbackGenerator(style: .medium)
let notificationGenerator = UINotificationFeedbackGenerator() let notificationGenerator = UINotificationFeedbackGenerator()
let udpSocket = UDPClient(address:"255.255.255.255", port: 35602) let udpSocket = UDPClient(address: "255.255.255.255", port: 35602)
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
@@ -24,6 +25,7 @@ class ViewController: UIViewController, WKScriptMessageHandler {
UIApplication.shared.isIdleTimerDisabled = true UIApplication.shared.isIdleTimerDisabled = true
// Setup webview event handlers // Setup webview event handlers
webView.scrollView.bounces = false;
webView.configuration.userContentController.add(self, name: "control") webView.configuration.userContentController.add(self, name: "control")
webView.configuration.userContentController.add(self, name: "controlStart") webView.configuration.userContentController.add(self, name: "controlStart")
webView.configuration.userContentController.add(self, name: "lowBattery") webView.configuration.userContentController.add(self, name: "lowBattery")
@@ -56,7 +58,7 @@ class ViewController: UIViewController, WKScriptMessageHandler {
} else if (message.name == "lowBattery") { } else if (message.name == "lowBattery") {
// Got low battery notification // Got low battery notification
print("Low battery notification") print("Low battery notification")
notificationGenerator.notificationOccurred(.warning) tapticNotify()
} else if (message.name == "notification") { } else if (message.name == "notification") {
// Got notification message // Got notification message
print(message) print(message)
@@ -71,4 +73,22 @@ class ViewController: UIViewController, WKScriptMessageHandler {
} }
} }
} }
func tapticNotify() {
if let feedbackSupportLevel = UIDevice.current.value(forKey: "_feedbackSupportLevel") as? Int {
switch feedbackSupportLevel {
case 2:
// 2nd Generation Taptic Engine w/ Haptic Feedback (iPhone 7/7+)
notificationGenerator.notificationOccurred(.warning)
case 1:
// 1st Generation Taptic Engine (iPhone 6S/6S+)
let peek = SystemSoundID(1519)
AudioServicesPlaySystemSound(peek)
case 0:
// No Taptic Engine
break
default: break
}
}
}
} }

View File

@@ -7,6 +7,10 @@ html, body {
color: rgba(255, 255, 255, 0.9); color: rgba(255, 255, 255, 0.9);
} }
* {
user-select: none;
}
.stick { .stick {
border-radius: 50%; border-radius: 50%;
width: 5cm; width: 5cm;

View File

@@ -65,8 +65,8 @@ new ROSLIB.Topic({
name: '/rosout_agg', name: '/rosout_agg',
messageType: 'rosgraph_msgs/Log' messageType: 'rosgraph_msgs/Log'
}).subscribe(function(message) { }).subscribe(function(message) {
var BLACKLIST = ['CMD: ', 'PR: ', 'DROPPED']; var BLACKLIST = ['CMD: ', 'PR: ', 'DROPPED', 'Clock skew detected', 'MANUAL CONTROL LOST'];
if(message.level >= 4) { if (message.level >= 4) {
if (BLACKLIST.some(function(e) { if (BLACKLIST.some(function(e) {
return message.msg.indexOf(e) != -1; return message.msg.indexOf(e) != -1;
})) { })) {

View File

@@ -4,13 +4,16 @@
"author": "Copter Express", "author": "Copter Express",
"language": "ru", "language": "ru",
"root": "docs/", "root": "docs/",
"plugins": ["youtube", "richquotes", "disqus", "versions"], "plugins": ["youtube", "richquotes", "versions", "yametrika"],
"pluginsConfig": { "pluginsConfig": {
"disqus": { "disqus": {
"shortName": "coex-clever" "shortName": "coex-clever"
}, },
"versions": { "versions": {
"type": "tags" "type": "tags"
},
"yametrika": {
"id": 49359238
} }
} }
} }

View File

@@ -3,9 +3,9 @@
<arg name="fcu_ip" default="127.0.0.1"/> <arg name="fcu_ip" default="127.0.0.1"/>
<arg name="gcs_bridge" default="tcp"/> <arg name="gcs_bridge" default="tcp"/>
<arg name="viz" default="true"/> <arg name="viz" default="true"/>
<arg name="respawn" default="false"/> <arg name="respawn" default="true"/>
<node pkg="mavros" type="mavros_node" name="mavros" required="false" clear_params="true" respawn="$(arg respawn)" respawn_delay="3" output="screen"> <node pkg="mavros" type="mavros_node" name="mavros" required="false" clear_params="true" respawn="$(arg respawn)" respawn_delay="5" output="screen">
<!-- UART connection --> <!-- UART connection -->
<param name="fcu_url" value="/dev/ttyAMA0:921600" if="$(eval fcu_conn is None or fcu_conn == 'uart')"/> <param name="fcu_url" value="/dev/ttyAMA0:921600" if="$(eval fcu_conn is None or fcu_conn == 'uart')"/>
@@ -17,9 +17,12 @@
<!-- gcs bridge --> <!-- gcs bridge -->
<param name="gcs_url" value="tcp-l://0.0.0.0:5760" if="$(eval gcs_bridge == 'tcp')"/> <param name="gcs_url" value="tcp-l://0.0.0.0:5760" if="$(eval gcs_bridge == 'tcp')"/>
<param name="gcs_url" value="udp://@192.168.11.14:14550" if="$(eval gcs_bridge == 'udp')"/> <!-- TODO: fix --> <param name="gcs_url" value="udp://0.0.0.0:14550@14550" if="$(eval gcs_bridge == 'udp')"/>
<param name="gcs_url" value="udp-b://192.168.11.1:14550@" if="$(eval gcs_bridge == 'udp-b')"/> <param name="gcs_url" value="udp-b://0.0.0.0:14550@14550" if="$(eval gcs_bridge == 'udp-b')"/>
<param name="gcs_url" value="udp-pb://0.0.0.0:14550@14550" if="$(eval gcs_bridge == 'udp-pb')"/>
<param name="gcs_url" value="" if="$(eval not gcs_bridge)"/> <param name="gcs_url" value="" if="$(eval not gcs_bridge)"/>
<param name="gcs_quiet_mode" value="true"/>
<param name="conn/timeout" value="10"/>
<!-- default px4 params --> <!-- default px4 params -->
<rosparam command="load" file="$(find mavros)/launch/px4_config.yaml"/> <rosparam command="load" file="$(find mavros)/launch/px4_config.yaml"/>

View File

@@ -188,7 +188,7 @@ def get_publisher_and_message(req, stamp, continued=True, update_frame=True):
PT.IGNORE_AFX + PT.IGNORE_AFY + PT.IGNORE_AFZ + PT.IGNORE_AFX + PT.IGNORE_AFY + PT.IGNORE_AFZ +
(PT.IGNORE_YAW if yaw_rate_flag else PT.IGNORE_YAW_RATE), (PT.IGNORE_YAW if yaw_rate_flag else PT.IGNORE_YAW_RATE),
position=setpoint, position=setpoint,
yaw=euler_from_orientation(current_nav_finish.pose.orientation)[2] - math.pi / 2, yaw=euler_from_orientation(current_nav_finish.pose.orientation, 'szyx')[2] - math.pi / 2,
yaw_rate=req.yaw_rate) yaw_rate=req.yaw_rate)
return position_pub, msg return position_pub, msg
@@ -207,7 +207,7 @@ def get_publisher_and_message(req, stamp, continued=True, update_frame=True):
PT.IGNORE_AFX + PT.IGNORE_AFY + PT.IGNORE_AFZ + PT.IGNORE_AFX + PT.IGNORE_AFY + PT.IGNORE_AFZ +
(PT.IGNORE_YAW if yaw_rate_flag else PT.IGNORE_YAW_RATE), (PT.IGNORE_YAW if yaw_rate_flag else PT.IGNORE_YAW_RATE),
position=pose_local.pose.position, position=pose_local.pose.position,
yaw=euler_from_orientation(pose_local.pose.orientation)[2] - math.pi / 2, yaw=euler_from_orientation(pose_local.pose.orientation, 'szyx')[2] - math.pi / 2,
yaw_rate=req.yaw_rate) yaw_rate=req.yaw_rate)
return position_pub, msg return position_pub, msg
@@ -225,7 +225,7 @@ def get_publisher_and_message(req, stamp, continued=True, update_frame=True):
PT.IGNORE_AFX + PT.IGNORE_AFY + PT.IGNORE_AFZ + PT.IGNORE_AFX + PT.IGNORE_AFY + PT.IGNORE_AFZ +
(PT.IGNORE_YAW if yaw_rate_flag else PT.IGNORE_YAW_RATE), (PT.IGNORE_YAW if yaw_rate_flag else PT.IGNORE_YAW_RATE),
velocity=vector_local.vector, velocity=vector_local.vector,
yaw=euler_from_orientation(pose_local.pose.orientation)[2] - math.pi / 2, yaw=euler_from_orientation(pose_local.pose.orientation, 'szyx')[2] - math.pi / 2,
yaw_rate=req.yaw_rate) yaw_rate=req.yaw_rate)
return position_pub, msg return position_pub, msg
@@ -348,6 +348,7 @@ def get_telemetry(req):
'z': float('nan'), 'z': float('nan'),
'lat': float('nan'), 'lat': float('nan'),
'lon': float('nan'), 'lon': float('nan'),
'alt': float('nan'),
'vx': float('nan'), 'vx': float('nan'),
'vy': float('nan'), 'vy': float('nan'),
'vz': float('nan'), 'vz': float('nan'),
@@ -368,11 +369,9 @@ def get_telemetry(req):
res['x'] = p.pose.position.x res['x'] = p.pose.position.x
res['y'] = p.pose.position.y res['y'] = p.pose.position.y
res['z'] = p.pose.position.z res['z'] = p.pose.position.z
# Get yaw in the request's frame_in
_, _, res['yaw'] = euler_from_orientation(p.pose.orientation) # Calculate roll pitch and yaw as Tait-Bryan angles, order z-y-x
# Calculate pitch and roll as angles between the pose and fcu_horiz res['yaw'], res['pitch'], res['roll'] = euler_from_orientation(p.pose.orientation, axes='rzyx')
attitude_pose = tf_buffer.transform(pose, 'fcu_horiz', TRANSFORM_TIMEOUT)
res['roll'], res['pitch'], _ = euler_from_orientation(attitude_pose.pose.orientation)
if velocity: if velocity:
v = Vector3Stamped() v = Vector3Stamped()
@@ -383,11 +382,15 @@ def get_telemetry(req):
res['vx'] = linear.vector.x res['vx'] = linear.vector.x
res['vy'] = linear.vector.y res['vy'] = linear.vector.y
res['vz'] = linear.vector.z res['vz'] = linear.vector.z
# TODO pitch_rate, roll_rate, yaw_rate
res['yaw_rate'] = velocity.twist.angular.z
res['pitch_rate'] = velocity.twist.angular.y
res['roll_rate'] = velocity.twist.angular.x
if global_position and stamp - global_position.header.stamp < rospy.Duration(5): if global_position and stamp - global_position.header.stamp < rospy.Duration(5):
res['lat'] = global_position.latitude res['lat'] = global_position.latitude
res['lon'] = global_position.longitude res['lon'] = global_position.longitude
res['alt'] = global_position.altitude
if state: if state:
res['connected'] = state.connected res['connected'] = state.connected

View File

@@ -6,8 +6,8 @@ def orientation_from_quaternion(q):
return Quaternion(*q) return Quaternion(*q)
def orientation_from_euler(roll, pitch, yaw): def orientation_from_euler(roll, pitch, yaw, axes='rzyx'):
q = t.quaternion_from_euler(roll, pitch, yaw) q = t.quaternion_from_euler(roll, pitch, yaw, axes)
return orientation_from_quaternion(q) return orientation_from_quaternion(q)
@@ -15,9 +15,9 @@ def quaternion_from_orientation(o):
return o.x, o.y, o.z, o.w return o.x, o.y, o.z, o.w
def euler_from_orientation(o): def euler_from_orientation(o, axes='rzyx'):
q = quaternion_from_orientation(o) q = quaternion_from_orientation(o)
return t.euler_from_quaternion(q) return t.euler_from_quaternion(q, axes)
def vector3_from_point(p): def vector3_from_point(p):

View File

@@ -7,8 +7,9 @@ string mode
float32 x float32 x
float32 y float32 y
float32 z float32 z
float32 lat float64 lat
float32 lon float64 lon
float32 alt
float32 vx float32 vx
float32 vy float32 vy
float32 vz float32 vz

View File

@@ -26,18 +26,14 @@
* [Визуализация с помощью rviz](rviz.md) * [Визуализация с помощью rviz](rviz.md)
* [Работа с SITL](sitl.md) * [Работа с SITL](sitl.md)
* [Подключение GPS](gps.md) * [Подключение GPS](gps.md)
* [Автозапуск ПО](autolaunch.md)
* [Использование 3G-модема](3g.md) * [Использование 3G-модема](3g.md)
* [Устройство сети RPi](network.md)
* [Работа с логами PX4](flight_logs.md)
* Учебник * Учебник
* [Урок 1](lesson1.md) * [Теория и видеоуроки](lessons.md)
* [Урок 2](lesson2.md) * [Учебно-методическое пособие](metod.md)
* [Урок 3](lesson3.md) * [Контрольные и проверочные материалы](tests.md)
* [Урок 4](lesson4.md)
* [Урок 5](lesson5.md)
* [Урок 6](lesson6.md)
* [Урок 7](lesson7.md)
* [Урок 8](lesson8.md)
* [Урок 9](lesson9.md)
* [Урок 10](lesson10.md)
* [Другое](drugoe.md) * [Другое](drugoe.md)
* [CopterHack-2017](copterhack2017.md) * [CopterHack-2017](copterhack2017.md)
* [Прошивка ESC контроллеров с помощью Arduino](esc_firmware.md) * [Прошивка ESC контроллеров с помощью Arduino](esc_firmware.md)

View File

@@ -110,7 +110,7 @@ _Примечание_: указанное выше определение пр
Для правильной работы Vision Position Estimation необходимо \(через [QGroundControl](gcs_bridge.md)\) убедиться, что: Для правильной работы Vision Position Estimation необходимо \(через [QGroundControl](gcs_bridge.md)\) убедиться, что:
* Для PixHawk: Установлена прошивка с LPE \(local position estimator\). Для PixRacer: параметр `SYS_MC_EST_GROUP` установлен в `local_position_estimator, attitude_estimator_q`. * Для PixHawk: Установлена прошивка с LPE \(local position estimator\). Для PixHawk необходимо [скачать прошивку `px4fmu-v2_lpe.px4`](https://github.com/PX4/Firmware/releases). Для PixRacer параметр `SYS_MC_EST_GROUP` должен быть установлен в `local_position_estimator, attitude_estimator_q`.
* В параметре `LPE_FUSION` включены **только** флажки `vision position`, `vision yaw`, `land detector`. Итоговое значение _28_. * В параметре `LPE_FUSION` включены **только** флажки `vision position`, `vision yaw`, `land detector`. Итоговое значение _28_.
* Выключен компас: `ATT_W_MAG` = 0 * Выключен компас: `ATT_W_MAG` = 0
* Вес угла по рысканью по зрению: `ATT_W_EXT_HDG` = 0.5 * Вес угла по рысканью по зрению: `ATT_W_EXT_HDG` = 0.5

View File

@@ -95,7 +95,7 @@
![Дополнительное оборудование](assets/addEqipment.jpg) ![Дополнительное оборудование](assets/addEqipment.jpg)
![Техника безопасности при пайке](tb.md) [Техника безопасности при пайке](tb.md)
Порядок сборки Порядок сборки
-------------- --------------
@@ -127,7 +127,7 @@
* Лучи с моторами необходимо расположить согласно схеме. Стрелками указано направление вращения моторов. * Лучи с моторами необходимо расположить согласно схеме. Стрелками указано направление вращения моторов.
![Вращение моторов](assets/brrc2205ondeck.png) ![Вращение моторов](assets/brrc2205ondeck.png)
//указать стрелками направление вращения на моторах
#### Залудить три контактные площадки регулятора #### Залудить три контактные площадки регулятора
* Нанести флюс * Нанести флюс
@@ -146,7 +146,7 @@
* Повторить данную операцию для оставшихся трех регуляторов * Повторить данную операцию для оставшихся трех регуляторов
### Монтаж разъемов питания ### Монтаж разъемов питания
![Статья про силовые и управляющие цепи](power.md) [Статья про силовые и управляющие цепи](powerConnection.md)
#### Подготовка проводов для силовых разъемов XT60 #### Подготовка проводов для силовых разъемов XT60
@@ -159,7 +159,7 @@
#### Подготовка силовых разъемов питания XT60 pin и XT60 socket #### Подготовка силовых разъемов питания XT60 pin и XT60 socket
![Статья про силовые разъемы и их обозначения](../notes/powerConnection.md) [Статья про силовые разъемы и их обозначения](connectortypes.md)
![Силовой разъем XT60](assets/xt60pinsocket.jpg) ![Силовой разъем XT60](assets/xt60pinsocket.jpg)
@@ -176,7 +176,6 @@
8. Повторить процедуру для разъема XT60 socket. 8. Повторить процедуру для разъема XT60 socket.
#### Подготовка разъема питания управляющей цепи 5В #### Подготовка разъема питания управляющей цепи 5В
![Статья про трехпроводной шлейф мама-мама](../notes/servoWire.md) // *почему используется именно 3х контактный разъем, почему шина питания посередине
1. Обрезать/вытащить все пины из одного из разъемов. Отсоединить его. 1. Обрезать/вытащить все пины из одного из разъемов. Отсоединить его.
2. Поддеть канцелярским ножом фиксатор на оставшемся разъеме, чтобы освободить 3-й провод. 2. Поддеть канцелярским ножом фиксатор на оставшемся разъеме, чтобы освободить 3-й провод.
@@ -187,11 +186,9 @@
### Монтаж платы распределения питания ### Монтаж платы распределения питания
![Статья про PDB](/pdb.md)
#### Предпаячная проверка #### Предпаячная проверка
![Статья про прозвонку](testConnection.md) [Статья про прозвонку](testConnection.md)
![Предпаячная проверка](assets/startPDBtest.jpg) ![Предпаячная проверка](assets/startPDBtest.jpg)
@@ -205,7 +202,7 @@
* “BAT+”, с каждым контактом, обозначенным “+” * “BAT+”, с каждым контактом, обозначенным “+”
#### Залудить контактные площадки платы питания #### Залудить контактные площадки платы питания
1. ![Залудить*](zap.md) контактные площадки платы питания. 1. [Залудить*](zap.md) контактные площадки платы питания.
2. С помощью мультиметра проверить отсутствие контактного замыкания на плате (прозвонить) 2. С помощью мультиметра проверить отсутствие контактного замыкания на плате (прозвонить)
![Постпаячная проверка](assets/zapPDBtest.jpg) ![Постпаячная проверка](assets/zapPDBtest.jpg)
@@ -294,15 +291,17 @@
![БЕЗОПАСНОСТЬ при работе с АКБ](assets/safetyPower.png) ![БЕЗОПАСНОСТЬ при работе с АКБ](assets/safetyPower.png)
#### Включение радиопульта #### Включение радиопульта
1. На пульте зажать кнопку BIND KEY. 1. Вставить джампер в B/VCC радиоприемника (замкнуть "землю" и "сигнал")
2. Включить пульт (перещелкнуть POWER, BIND KEY не отпускаем). 2. На пульте зажать кнопку BIND KEY.
3. Ждем синхронизацию. 3. Включить пульт (перещелкнуть POWER, BIND KEY не отпускаем).
4. Отсоединить джампер. 4. Подключить аккумулятор к коптеру.
5. Светодиод горит непрерывно. 5. Ждем синхронизацию.
6. Отсоединить джампер.
7. Светодиод горит непрерывно.
![Подключение питания приемника](assets/connectingRadio.png) ![Подключение питания приемника](assets/connectingRadio.png)
![Мануал по неисправностям](radioerrors1.md) [Мануал по неисправностям радиоаппаратуры](radioerrors1.md)
### Проверка направления вращения моторов ### Проверка направления вращения моторов
1. Наклеить наклейки на АКБ 18650. 1. Наклеить наклейки на АКБ 18650.
2. Установить 18650 в отсек АКБ, соблюдая полярность. 2. Установить 18650 в отсек АКБ, соблюдая полярность.
@@ -329,7 +328,7 @@
2. Разъем питания 5В продеть в прорезь. 2. Разъем питания 5В продеть в прорезь.
![Установка стоек и прорезь](assets/mountReceiverStud.png) ![Установка стоек и прорезь](assets/mountReceiverStud.png)
3. Приемник прикрепить к ![нижней дополнительной раме*](../notes/deck.md), используя двухсторонний скотч и ориентируясь на гравировку. Антенны направлены вперед. 3. Приемник прикрепить к нижней дополнительной раме, используя двухсторонний скотч и ориентируясь на гравировку. Антенны направлены вперед.
![Установка радиоприемника на деку](assets/mountReceiverDeck.png) ![Установка радиоприемника на деку](assets/mountReceiverDeck.png)
@@ -341,8 +340,7 @@
![Установка нижней деки](assets/mountBottomDeck.png) ![Установка нижней деки](assets/mountBottomDeck.png)
##### ВАЖНО ##### ВАЖНО
Направление стрелок на плате питания и на раме дополнительной совпадают Направление стрелок на плате питания и на дополнительной раме совпадают
### Монтаж полетного контроллера ### Монтаж полетного контроллера
#### Переворачиваем сборку #### Переворачиваем сборку
@@ -438,7 +436,4 @@
2. При подключении (отключении) аккумуляторов держаться только за разъёмы, тянуть или дергать за провода запрещается. 2. При подключении (отключении) аккумуляторов держаться только за разъёмы, тянуть или дергать за провода запрещается.
3. В случае обрыва разъемов, обнаружения нарушений целостности изоляции или корпуса аккумулятора, не трогая его, немедленно сообщить преподавателю. 3. В случае обрыва разъемов, обнаружения нарушений целостности изоляции или корпуса аккумулятора, не трогая его, немедленно сообщить преподавателю.
## [ТЕХНИКА БЕЗОПАСНОСТИ ПРИ ПАЙКЕ И ЛЁТНОЙ ЭКСПЛУАТАЦИИ КОПТЕРОВ](safety.md)
## ![БЕЗОПАСНОСТЬ ПРИ ЛЁТНОЙ ЭКСПЛУАТАЦИИ КОПТЕРОВ](safetyDoc.md#ПОЛЁТЫ)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/assets/balance.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
docs/assets/banana.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
docs/assets/bridge_udp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 751 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 MiB

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

After

Width:  |  Height:  |  Size: 901 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 KiB

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 467 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 475 KiB

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

After

Width:  |  Height:  |  Size: 848 KiB

BIN
docs/assets/flightplot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 518 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 70 KiB

BIN
docs/assets/listener.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 444 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 414 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 552 KiB

After

Width:  |  Height:  |  Size: 126 KiB

BIN
docs/assets/oscillRoll.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 203 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 KiB

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 KiB

After

Width:  |  Height:  |  Size: 71 KiB

BIN
docs/assets/setupSwitch.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 848 KiB

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 335 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 772 KiB

After

Width:  |  Height:  |  Size: 243 KiB

BIN
docs/assets/t-plug.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 KiB

After

Width:  |  Height:  |  Size: 103 KiB

BIN
docs/assets/xt60.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

59
docs/autolaunch.md Normal file
View File

@@ -0,0 +1,59 @@
Автозапускаемое ПО
===
systemd
---
Основная документация: [https://wiki.archlinux.org/index.php/Systemd_(Русский)](https://wiki.archlinux.org/index.php/Systemd_(Русский)).
Все автоматически стартуемое ПО Клевера запускается в виде systemd-сервиса `clever.service`.
Сервис может быть перезапущен командой `systemctl`:
```bash
sudo systemctl restart clever
```
Текстовый вывод ПО можно просмотреть с помощью команды `journalctl`:
```bash
journalctl -u clever
```
Для того, запустить ПО Клевера непосредственно в текущей консольной сессии, вы можете использовать `roslaunch`:
```bash
sudo systemctl stop clever
roslaunch clever clever.launch
```
Вы можете выключить автозапуск ПО Клевера с помощью команды `disable`:
```bash
sudo systemctl disable clever
```
roslaunch
---
Основная документация: http://wiki.ros.org/roslaunch.
Список объявленных для запуска нод / программ указывается в файле `/home/pi/catkin_ws/src/clever/clever/launch/clever.launch`.
Вы можете добавить собственную ноду в список автозапускаемых. Для этого разместите ваш запускаемый файл (например, `my_program.py`) в каталог `/home/pi/catkin_ws/src/clever/clever/src`. Затем добавьте запуск вашей ноды в `clever.launch`, например:
```xml
<node name="my_program" pkg="clever" type="my_program.py" output="screen"/>
```
Запускаемый файл должен иметь *permission* на запуск:
```bash
chmod +x my_program.py
```
При использовании скриптовых языков вначале файла должен стоять [shebang](https://ru.wikipedia.org/wiki/Шебанг_(Unix)), например:
```bash
#!/usr/bin/env python
```

17
docs/calibratePID.md Normal file
View File

@@ -0,0 +1,17 @@
### Как настраивать PID
На практике самая распространенная проблема это быстрые осцилляции, возникающие из-за слишком большого значения параметра P.
В данной ситуации следует уменьшить его значение (все параметры выставляются экспериментальным путем, исходя из поведения аппарата).
Также стоит проверить чтобы осцилляций не было при резком спуске (в противном случае уменьшить P)
Медленные раскачивания коптера из стороны в сторону при попытке удержания заданной точки связаны с перебором значения I.
В случае если при движении коптер раскачивается следует поднять это значение
В случае если коптер плохо держит заданное положение следует увеличить параметр D при переборе или недостатке параметра D возникают осцилляции
#### ВАЖНО настройку D следует начинать с минимальных значений , в 3-4 раза меньше значений по умолчанию, если таковые присутствуют
Параметры для Rate Pitch and Rate Roll должны быть одинаковыми
По YAW параметры следует менять отдельно, согласно вышеуказанной инструкции (как правило рысканье не требует серьезной настройки, можно оставить по умолчанию)
![Осцилляции по ROLL](assets/oscillRoll.jpg)

View File

@@ -57,3 +57,54 @@ image_pub.publish(bridge.cv2_to_imgmsg(cv_image, 'bgr8'))
``` ```
Получаемые изображения можно просматривать используя [web_video_server](web_video_server.md). Получаемые изображения можно просматривать используя [web_video_server](web_video_server.md).
### Примеры
#### Работа с QR-кодами
> **Hint** Для высокоскоростного распознавания и позиционирования лучше использовать [ArUco-маркеры](aruco.md).
Для программирования различных действий коптера при детектировании нужных [QR-кодов](https://ru.wikipedia.org/wiki/QR-код) можно использовать бибилиотеку [ZBar](http://zbar.sourceforge.net). Ее нужно установить в помощью pip:
```bash
sudo pip install zbar
```
Распознавание QR-кодов на Python:
```python
import cv2
import zbar
from cv_bridge import CvBridge
from sensor_msgs.msg import Image
bridge = CvBridge()
scanner = zbar.ImageScanner()
scanner.parse_config('enable')
# Image subscriber callback function
def image_callback(data):
cv_image = bridge.imgmsg_to_cv2(data, 'bgr8') # OpenCV image
gray = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY, dstCn=0)
pil = ImageZ.fromarray(gray)
raw = pil.tobytes()
image = zbar.Image(320, 240, 'Y800', raw) # Image params
scanner.scan(image)
for symbol in image:
# print detected QR code
print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data
image_sub = rospy.Subscriber('main_camera/image_raw', Image, image_callback, queue_size=1)
```
Скрипт будет занимать 100% процессора. Для искусственного замедления работы скрипта можно запустить [throttling](http://wiki.ros.org/topic_tools/throttle) кадров с камеры, например, в 5 Гц (`main_camera.launch`):
```xml
<node pkg="topic_tools" name="cam_throttle" type="throttle"
args="messages main_camera/image_raw 5.0 main_camera/image_raw/throttled"/>
```
Топик для подписчика в этом случае необходимо поменять на `main_camera/image_raw/throttled`.

27
docs/connectortypes.md Normal file
View File

@@ -0,0 +1,27 @@
Типы силовых разъемов
=====================
XT-60
-----
Один из самых надёжных силовых разъёмов, которые стараются применять на силовых аккумуляторах. Именно такие аккумуляторы используются на Li-Po аккумуляторах для коптеров.
![XT-60](assets/xt60.jpg)
T-plug
------
Аналог XT-60. Имеет различные вариации для упрозщения разъединения.
![T-plug](assets/t-plug.jpg)
JST-XH или балансировочный разъем
-----------------------------
Разъёмы данного типа часто применяются для балансировки отдельных элементов в составе сборки из нескольких литий-полимерных (Li-Pol), литий-ионных (Li-ion) или литий-фосфатных (LiFePO4) аккумуляторов.
Подобные разъёмы с разным количеством штырьков устанавливаются в большинство современных зарядных устройств для балансировки литиевых элементов при заряде.
Может использоваться в сочетании с Buzzer (пищалкой) для контроля заряда аккумулятора.
![JST-XH](assets/balance.jpg)
Gold bullet Conector или "Бананы"
-----------------------------
Существует великое множество штырьковых разъёмов типа Gold bullet Conector. Разъёмы данного типа отличаются друг от друга диаметром и размером. Наиболее распространены разъёмы с диаметром коннектора 2 мм, 3 мм и 4 мм.
Часто используется для создания беспаечных соединений на PDB и моторах.
![Banana](assets/banana.jpg)

55
docs/flight_logs.md Normal file
View File

@@ -0,0 +1,55 @@
Логи и топики PX4
===
Для детального анализа поведения прошивки PX4 можно просмотреть полетные логи. Полетные логи представляют собой сообщения в [uORB-топиках](https://dev.px4.io/en/middleware/uorb.html), записанные в файл с раширением `.ulg`. Лог-файл можно скачать с помощью QGroundControl по Wi-Fi или USB во вкладке *Log Download*:
![](assets/download-log.png)
Также необходимые `.ulg`-файлы можно скопировать непосредственно с MicroSD-карты, находившейся в полетном контроллере.
Анализ
---
Лог-файл можно анализировать с помомщью программы FlightPlot. Актуальную версию программы можно [скачать](https://github.com/PX4/FlightPlot/releases) на GitHub.
В программе можно просмотреть полный список записанных топиков (*Fields List*). В нем нужно выбрать необходимые топики, после чего они появятся на графике:
![](assets/flightplot.png)
Основные топики в PX4
---
[uORB](https://dev.px4.io/en/middleware/uorb.html) представляет собой pubsub механизм, аналогичный ROS-топикам, однако сильно упрощенный и подходящий для embedded-среды.
Полный список топиков можно узнать в исходном коде проекта [в каталоге `msg`](https://github.com/PX4/Firmware/tree/master/msg).
Список некоторых топиков:
* **vehicle_status** состояние коптера (режим и т. д.);
* **vehicle_local_position** локальная позиция коптера;
* **vehicle_attitude** – ориентация коптера;
* **vehicle_local_position_setpoint**  целевая точка (setpoint) коптера по позиции;
* **vehicle_global_position** – глобальная позиция коптера;
* **vehicle_vision_position** – полученная визуальная позиция коптера, аналог MAVLink пакета `VISION_POSITION_ESTIMATE` или MAVROS-топика `/mavros/vision_position_estimate/pose`;
* **att_pos_mocap** – полученная MOCAP-позиция коптера, аналог MAVLink пакета `ATT_POS_MOCAP` или MAVROS-топика `/mavros/mocap/pose`;
* **actuator_controls** сигналы на моторы;
* **vehicle_land_detected** – статус Land-detector'а;
Мониторинг топиков в режиме реального времени
---
Для более новых версий платы PixHawk (`px4fmu-v3`), а также для плат PixRacer, в прошивку включен модуль `topic_listener`, который позволяет просматривать значения топиков в режиме реального времени (в том числе в полете).
Для ее использования нужно выбрать вкладку Mavlink Console в QGroundControl:
![](assets/listener.png)
Команда `list_topics` выводит список топиков, доступных для просмотра (включена только в [SITL](sitl.md)).
Команда `listener <название топика>` выводит текущее значение в топике. Существует третий опциональный параметр, который определяет количество сообщений, которые необходимо вывести.
Примеры команд:
`listener vehicle_local_position`
`listener vehicle_attitude 5`

View File

@@ -1,51 +1,70 @@
Использование QGroundControl через Wi-Fi Использование QGroundControl через Wi-Fi
=== ===
Возможен контроль, управление и настройка полетного контроллера квадрокоптера с помощью программы QGroundControl по Wi-Fi. Для этого необходимо подключиться к Wi-Fi сети `CLEVER-xxxx`. ![](assets/qground.png)
Возможны контроль, управление, калибровка и настройка полетного контроллера квадрокоптера с помощью программы QGroundControl по Wi-Fi.
Для этого необходимо подключиться к Wi-Fi сети `CLEVER-xxxx`.
После чего в launch-файле Клевера `/home/pi/catkin_ws/src/clever/clever/launch/clever.launch` выбрать один из преднастроенных режимов бриджа.
После изменения launch-файла необходимо перезагрузить сервис clever:
```(bash)
sudo systemctl restart clever
```
TCP-бридж TCP-бридж
--- ---
Необходимо убедиться с в launch-файле Клевера (`~/catkin_ws/src/clever/clever/launch/clever.launch`) включен TCP GCS Bridge: Изменить параметр `gcs_bridge` в launch-файле:
```xml ```xml
<arg name="gcs_bridge" default="tcp"/> <arg name="gcs_bridge" default="tcp"/>
``` ```
При изменени launch-файла необходимо перезагрузить сервис `clever`: Затем в программе QGroundControl нужно выбрать Application Settings > Comm Links > Add. Создать подключение со следующими настройками:
```bash
sudo systemctl restart clever
```
Затем в программе QGroundControl нужно выбрать Application Settings -> Comm Links -> Add. Создать подключение со следующими настройками:
![](assets/bridge_tcp.png) ![](assets/bridge_tcp.png)
Затем необходимо выбрать в списке подключений "Clever" и нажать "Connect". После этого можно будет настраивать, калибровать и просматривать состояние квадкоптера без проводов: Затем необходимо выбрать в списке подключений "Clever" и нажать "Connect".
![](assets/qground.png) UDP бридж (с автоматическим подключением)
UDP broadcast-бридж
--- ---
Для использования UDP broadcast-бриджа необходимо установить параметр `gcs_bridge` в значение `udp-b`: Изменить параметр gcs_bridge в launch-файле:
```xml ```xml
<arg name="gcs_bridge" default="udp-b"/> <arg name="gcs_bridge" default="udp-b"/>
``` ```
При изменени launch-файла необходимо перезагрузить сервис `clever`: При открытии программы QGroundControl соединение должно установиться автоматически.
```bash
sudo systemctl restart clever
```
При использовании UDB broadcast-бриджа достаточно подключиться к Wi-Fi сети Клевера. QGroundControl должен подключиться к коптеру автоматически. UDP-бридж (без автоматического подключения)
> **Note** UDP broadcast-бридж работает быстрее, чем TCP-бридж, но связь в нем менее стабильная: иногда могут возникать проблемы при загрузке миссии на коптер, а также при калибровке сенсоров.
UDP-бридж
--- ---
TODO Изменить параметр `gcs_bridge` в launch-файле:
```xml
<arg name="gcs_bridge" default="udp"/>
```
Затем в программе QGroundControl нужно выбрать Application Settings > Comm Links > Add. Создать подключение со следующими настройками:
![](assets/bridge_udp.png)
Затем необходимо выбрать в списке подключений "CLEVER" и нажать "Connect".
UDP broadcast-бридж
---
> **Hint** Особенностью UDP broadcast-бриджа является возможность просмотра телеметрии дрона одновременно с нескольких устройств (например с телефона и компьютера). Также он хорошо подходит для организации сети из устройств при помощи роутера.
Изменить параметр `gcs_bridge` в launch-файле:
```xml
<arg name="gcs_bridge" default="udp-pb"/>
```
При открытии программы QGroundControl соединение должно установиться автоматически.

View File

@@ -2,8 +2,21 @@
=== ===
При подключении GPS появляются следующие возможности: При подключении GPS появляются следующие возможности:
* Удерживание коптером позиции при полете на улице * Удерживание коптером позиции при полете на улице
* Программирование автономных миссий в программе QGroundControl * Программирование автономных миссий в программе QGroundControl
* Полеты на глобальные точки в автономном режиме при помощи модуля [simple offboard](simple_offboard.md). * Полеты на глобальные точки в автономном режиме при помощи модуля [simple offboard](simple_offboard.md).
TODO Полезные ссылки:
* https://docs.px4.io/en/assembly/quick_start_pixhawk.html
* http://ardupilot.org/copter/docs/common-pixhawk-wiring-and-quick-start.html
* http://ardupilot.org/copter/docs/common-installing-3dr-ublox-gps-compass-module.html
Подключение
---
GPS-модуль подключается к разъемам "GPS" и "I2C" (компас) полетного контроллера.
При подключении GPS, необходимо заново откалибровать магнитометры в программе QGroundControl, подключившись по [Wi-Fi](wifi.md) или USB.
Далее, необходимо включить GPS в параметре `EKF2_AID_MASK` (при использовании EKF2) или `LPE_FUSION` (при использовании LPE).

51
docs/lessons.md Normal file
View File

@@ -0,0 +1,51 @@
# Теория
[**Урок №1** «Знакомство. Принципы проектирования и строение мультикоптеров»](https://github.com/CopterExpress/clever/blob/master/docs/lesson1.md)
[**Урок №2** «Основы электричества»](https://github.com/CopterExpress/clever/blob/master/docs/lesson2.md)
[**Урок №3** «Теория пайки»](https://github.com/CopterExpress/clever/blob/master/docs/lesson3.md)
[**Урок №4** «Аэродинамика полета. Пропеллер»](https://github.com/CopterExpress/clever/blob/master/docs/lesson4.md)
[**Урок №5** «Бесколлекторные двигатели и регуляторы их хода»](https://github.com/CopterExpress/clever/blob/master/docs/lesson5.md)
[**Урок №6** «Основы электромагнетизма. Типы двигателей»](https://github.com/CopterExpress/clever/blob/master/docs/lesson6.md)
[**Урок №7** «Принцип работы, типы и устройство аккумуляторов»](https://github.com/CopterExpress/clever/blob/master/docs/lesson7.md)
[**Урок №8** «Управление полётом мультикоптера. Принцип функционирования полётного контроллера. ПИД регуляторы»](https://github.com/CopterExpress/clever/blob/master/docs/lesson8.md)
[**Урок №9** «Основы радиосвязи. Принцип работы радиоаппаратуры управления»](https://github.com/CopterExpress/clever/blob/master/docs/lesson9.md)
[**Урок №10** «Аналоговая и цифровая видеотрансляция. Применяемые камеры, радиопередатчики иприёмники»](https://github.com/CopterExpress/clever/blob/master/docs/lesson10.md)
## Видеоуроки
Немного о видах коптеров
<iframe width="560" height="315" src="https://www.youtube.com/embed/LFOmZZwg-PE" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
Часть 1
<iframe width="560" height="315" src="https://www.youtube.com/embed/e9Z1pjW0vQU" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
Часть 2
<iframe width="560" height="315" src="https://www.youtube.com/embed/jWMGSgiLD_E" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
Часть 3
<iframe width="560" height="315" src="https://www.youtube.com/embed/WhxxXD4b1MY" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
Часть 4
<iframe width="560" height="315" src="https://www.youtube.com/embed/jkA9F9lSWDM" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
Часть 5
<iframe width="560" height="315" src="https://www.youtube.com/embed/Cz7EbJ1-xMw" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
Часть 6
<iframe width="560" height="315" src="https://www.youtube.com/embed/v00oNVzwICg" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

53
docs/metod.md Normal file
View File

@@ -0,0 +1,53 @@
Методические материалы
======================
Здесь представлены методические материалы для ознакомления с основами БПЛА,
которые помогут грамотно организовать процесс как самостоятельного изучения, так и в группах.
Учебно-методическое пособие
---------------------------
[Урок 1. «Знакомство. Принципы проектирования и строение мультикоптеров»](https://github.com/CopterExpress/clever/blob/master/docs/ https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 2. «Основы электричества»](https://github.com/CopterExpress/clever/blob/master/docs/ https://github.com/CopterExpress/clever/blob/master/docs/ https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 3. «Теория пайки»]( https://github.com/CopterExpress/clever/blob/master/docs/ https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 4. «Аэродинамика полета. Пропеллер»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 5. «Основы электромагнетизма. Типы двигателей»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 6. «Бесколлекторные двигатели и регуляторы их хода»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 7. «Принцип работы, типы и устройство аккумуляторов»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 8. «Управление полётом мультикоптера. Принцип функционирования полетного контроллера. ПИД регуляторы»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 9. «Основы радиосвязи. Принцип работы радиоаппаратуры управления»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 10. «Аналоговая и цифровая видеотрансляция. Применяемые камеры, радиопередатчики и приёмники»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 11. «Техника безопасности при сборке и настройке коптеров, при подготовке к вылету. Техника безопасности при работе с аккумуляторами»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 12. «Теория ручного визуального пилотирования»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 13. «Техника безопасности при летной эксплуатации коптера»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 14. «Обучение лётному мастерству»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 15. «Основы радиоэлектроники, схемотехники и макетирования электрических схем»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 16. «Основы работы с аналоговым и цифровым сигналом»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 17. «Основы работы с лабораторным оборудованием»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 18. «Теория FPV полетов»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 19. «История автономных полетов. Развитие автопилотов в авиации»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 20. «Основы программирование на языке Python»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 21. «Знакомство с компьютером Raspberry Pi»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
[Урок 22. «Управление автономным дроном: теория»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)

400
docs/metodmaterials.md Normal file
View File

@@ -0,0 +1,400 @@
Введение
========
Данное методическое пособие призвано помочь преподавателю в обучении людей, желающих освоить сферу применения беспилотных летательных аппаратов и получить практические навыки в конструировании, пилотировании, настройке и программировании беспилотных летательных аппаратов.
Предполагаемый возраст обучающихся - не менее 12 лет (ожидается, что учащийся в этом возрасте уже имеет минимальный опыт работы с инструментом, компьютером и осознанно подходит к процессу обучения, с соблюдением всех правил техники безопасности).
**Целью** обучения является формирование компетенций в области беспилотных авиационных систем, развитие творческого и научно-технического потенциала учащихся, путем организации проектной деятельности, в рамках создания собственного беспилотного летательного аппарата.
Предметными результатами изучения данного курса является формирование следующих знаний и умений:
**Знать:**
* об истории и тенденциях развития беспилотных летательных аппаратов; о том как можно улучшить их характеристики;
* правила техники безопасности при эксплуатации БПЛА;
* основные компоненты коптеров;
* конструктивные особенности различных моделей, сооружений и механизмов;
* компьютерные среды для настройки полетных контроллеров;
* основы аэродинамики полета;
* основы электричества, радиоэлектроники;
* основы программирования на языке Python;
* основы программирования автономных полетов коптеров;
* теорию FPV полетов;
* применение компьютерного зрения;
* конструктивные особенности различных БПЛА и их применение;
* способы настройки и подготовки коптера к полету;
**Уметь:**
* настраивать и калибровать полетные контроллеры разных производителей с применением специализированного ПО;
* осуществлять визуальное пилотирование беспилотного летательного аппарата и посредством FPV аппаратуры;
* создавать недостающие для реализации проектов элементы в средах 3D моделирования и осуществлять их печать на 3D принтере;
* взаимодействовать с микрокомпьютером Raspberry, обладать основами администрирования Linux;
* планировать и прописывать полетные задания и миссии;
* программировать и осуществлять автономные полеты. Проводить предполетную подготовку.
**Перечень используемого оборудования и материалов:**
1. Компьютеры с установленным необходимым ПО.
2. Наборы конструкторов для сборки программируемого квадрокоптера “Клевер”.
3. Лаборатория, оснащенная паяльными станциями, вытяжками и необходимыми инструментами.
4. Полетная зона или разрешение на полеты в открытом воздушном пространстве.
Данное методическое пособие опирается на следующие материалы:
- [Учебное пособие.](lesson1.md)
- [Инструкция по сборке.](assemble.md)
- [Инструкция по настройке.](setup.md)
- [Проверочные задания.](tests.md)
- Информационные материалы на сайте https://copterexpress.gitbooks.io/clever/content/.
**Промежуточный контроль**
Промежуточный контроль знаний проводится путем проверки теоретических знаний с использованием контрольных вопросов и тестирования по каждой теме. Тестирования проводятся наравне с опросами по пройденным темам в начале занятия. Контрольные вопросы направлены на оценку степени освоения учащимися материала, пройденного на текущем занятии и задаются в конце занятия по каждой теме. Все контрольные вопросы и тесты собраны в отдельном модуле “«Клевер». Проверочные задания. Доп. материалы ”
**Подведение итогов**
Ниже предложен один из вариантов подведения итогов курса.
Финальное мероприятие включает 3 раздела:
1. Итоговый тест (см. [проверочные задания](tests.md)).
2. Финальная гонка.
3. Программирование танца коптера.
Финальная гонка коптеров: проводится среди всех учащихся, освоивших курс. Победителем становится участник, набравший наибольшее количество баллов.
**Задача:** необходимо пролететь 2 круга по трассе с флагами и воротами за наименьшее время, не задев элементы трассы.
| № | Начисление баллов | Штрафные очки |
| -- |:----------------------------------:| :----------------------------------:|
| 1 | Наименьшее время прохождения трассы 1 место (7 баллов) | Касание флага ( - 1 балл) |
| 2 | Наименьшее время прохождения трассы 2 место (5 баллов) | Касание ворот ( - 1 балл) |
| 3 | Наименьшее время прохождения трассы 3 место (3 балла) | Касание пола ( - 1 балл) |
| 4 | Облет флага с нужной стороны (2 балла, количество флагов не менее 3) | Поломка защиты коптера (- 5 баллов) |
| 5 | Пролет сквозь ворота (2 балла, количество ворот не менее 3) | Поломка электронных компонентов коптера (- 10 баллов) |
Программируемый танец коптера:
Учащемуся необходимо запрограммировать автономный полет коптера над полем меток под музыку.
Оценивается попадание движений коптера в такт и зрелищность представления (участники могут использовать светодиодную ленту и любые украшения коптера).
Методика проведения занятий
---------------------------
## Урок №1. Тема: «Знакомство. Принципы проектирования и строение мультикоптеров»
**Цель урока:** познакомить учеников с предстоящим курсом, сформировать учебную мотивацию, познакомить учеников с историей создания и развития коптеров, сформировать представления о функциях и возможностях современных коптеров, наглядно продемонстрировать виды и конфигурации коптеров, дать теоретические знания об управлении коптером и его составных частей, обучить основным терминам для качественного усвоения новых знаний.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Знакомство | В начале занятия необходимо представиться классу, для удобства общения с новым коллективом будет правильно на первые занятия приходить с бейджиком. |
| 2 | Представление курса | Опрос учеников с какими ожиданиями они пришли на первое занятие, чего они хотят узнать и чему научиться в ближайшее время. Это поможет лучше познакомиться с классом, понять мотивацию детей. Необходимо прокомментировать их ответы, поддержать если ожидание ученика совпадает с программой курса. Дополнить ответы, перечислив интересные темы и практические занятия, которые ждут учеников в данном курсе. |
| 3 | Демонстрация современных коптеров | Чтобы ещё больше заинтересовать учеников, необходимо продемонстрировать им видео с современными коптерами, кадры с гонок, научных выставок, демонстраций. |
| 4 | История коптеров | Опрос учеников, как давно, по их мнению, появились первые беспилотные летающие аппараты. Отметить учеников, которые были ближе всего в своих догадках, добавив что первые беспилотники появились ещё в 1890-х годах, например радиоуправляемая лодка Теслы(В 1899 году на выставке в Мэдисон-Сквер-Гарден инженер и изобретатель Никола Тесла продемонстрировал миниатюрное радиоуправляемое судно.), так же в качестве прообраза беспилотников могли выступать птиц. Продемонстрировать ученикам развитие беспилотных технологий: * Kettering Bug («Жук» Каттеринга») (Экспериментальная беспилотная «воздушная торпеда», один из первых проектов предшественников современных крылатых ракет) * Вертолет Ботезата (Один из первых квадрокоптеров (англ. quadcopter, четырехроторный вертолет), который реально оторвался от земли и мог держаться в воздухе, был создан Георгием Ботезатом и испытан в 1922 году). Спросить учеников, какие недостатки, по их мнению, были у этих моделей и с какими трудностями сталкивались люди используя их. Показать ученикам современный беспилотник и современный коптер на фото или видео. Можно показать коптер, который учащиеся будут собирать во время обучения, чтобы у них сформировалось представление о результате, к которому они должны прийти после освоения курса. |
| 5 | Применение БПЛА самолетного типа | Спросить у учеников, какие примеры использования БПЛА самолетного типа в современном мире они знают. Рассказать про преимущества применения БПЛА самолетного типа, особенно, про съемку с воздуха и мониторинг лесов и полей. Рассказать о сферах использования: * Аэрофотосъемка местности (при необходимости отснять рельеф поверхности земли на протяженном расстоянии); * Военная сфера (тяжёлые БПЛА большой продолжительности полёта взлётная масса более 1500 кг, дальность действия около 1500 км); * Сельское хозяйство (распространение удобрений, мониторинг полей); * Охрана и мониторинг местности Продемонстрировать свои примеры на фото и видео. Предложить ученикам привести ещё варианты, где могут применяться БПЛА самолетного типа. |
| 6 | Применение коптеров | Спросить у учеников, какие примеры использования коптеров в современном мире они знают. Постараться прокомментировать и дополнить каждый ответ. После чего задать ученикам вопросы, как, по их мнению, коптеры могут быть полезны в следующих областях: * Телекоммуникационная сфера (использование двусторонней видео/аудио связи); * Транспортная сфера (транспортировка грузов); * Спасательные работы (исследование труднодоступных зон при стихийных бедствиях, терактах, поиск находящихся под завалами людей, транспортировка медикаментов, оказание первой помощи при несчастных случаях); * Рекламные кампании (применение робота для привлечения внимания на крупных выставках и т.п.); * Сфера СМИ (аэросъемка различных событий); * Видео/фото-съёмка (съёмка фильмов или рекламных роликов с высоты птичьего полёта); * Продовольственная сфера (доставка продуктов питания); Продемонстрировать свои примеры на фото и видео. Предложить ученикам привести ещё варианты, где могут применяться коптеры. Поделиться своим собственным опытом использования коптеров, если есть такая возможность. Для эффектного завершения занятия можно показать ученикам фото и видео с гоночных соревнований дронов. |
| 7 | Виды и конфигурация коптеров | Рассказать ученикам о видах коптеров и зарисовать направление вращения моторов на каждом из них. * трикоптер, * гексакоптер, * октокоптер, * квадрокоптер. Спросить ребят, что, по их мнению, даёт разное количество винтов, в конце сделав акцент на то, что квадрокоптеры самые простые из них в сборке и управлении. Показать ученикам два вида конфигурации квадрокоптеров + и X и их отличие. |
| 8 | Управление | Показать классу пульт управления, перечислить название его управляющих элементов. Пусть ученики попробуют сами догадаться какое назначение у стиков и переключателей. Представить ученикам схему управления пультом. Познакомить их с необходимыми терминами и их значением: * Throttle (газ). Газ мультикоптера среднее арифметическое между скоростями вращения всех моторов. Чем больше газ, тем больше суммарная тяга моторов, и тем сильнее они тащат коптер вверх (проще говоря «Тапок в пол» здесь означает наискорейший подъем). Обычно измеряется в процентах: 0% моторы остановлены, 100% вращаются с максимальной скоростью. Газ висения минимальный уровень газа, который необходим, чтобы коптер не терял высоту. * Оси коптера - углы тангажа, крена и рыскания (pitch, roll, yaw) углы, которыми принято определять и задавать ориентацию мультикоптера в пространстве. * Yaw (рыскание). «рыскание». Поворот носа мультикоптера. условно - вращение вправо влево. * Pitch (тангаж). В коптерах манипуляции с этим моментом силы позволяет коптеру двигаться вперед или назад за счет наклона носа в соответствующем направлении. * Roll (крен). Наклон мультикоптера влево вправо. Коптер за счет крена может двигаться боком в соответствующую сторону. Рассказать классу принцип вращения винтов, особенности направления их вращения. Продемонстрировать ученикам тестовую картинку, попросить их определить в каком направлении будет двигаться коптер. Позволить им самим свериться с правильными ответами и задать вопросы. |
| 9 | Элементы коптера | Рассказать ученикам о составных элементах коптера: * Полетный контроллер. Задача полетного контроллера переводить команды от пульта управления в сигналы задающие обороты двигателя. Также в нем установлены инерциальные измерительные датчики, позволяющие следить за текущим положением платформы и выполнять автоматические регулировки. * ESC. В мультикоптерах используют специальные бесколлекторные электродвигатели, которые способны работать на очень больших оборотах. Для управления этими двигателями необходимо формировать трехфазное напряжение и относительно большие токи, чем и занимаются регуляторы оборотов. * Силовая рама * Электродвигатель * Пропеллеры * Радиоприемник * Радиопередатчик. Большинство передатчиков имеют частоту 2,4ГГц, так же на рынке представлен ряд других частот. * Аккумулятор. Самыми распространенными в применении на коптерах являются литий-ионные и литий-полимерные аккумуляторы. Основные характеристики аккумулятора (Емкость (мА*ч), Максимальный токоразряд (20С), Количество банок (2S,3S, 4S), Вес) Зарисовать схему квадрокоптера и объяснить, как взаимодействуют между собой элементы. Спросить учеников, что, по их мнению, произойдет в случае отказа того или иного элемента. |
| 10 | Резервное время | Подведение итогов темы. Спросить у учеников, есть ли у них вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
## Урок №2. Тема: «Основы электричества»
**Цель урока:** дать представления о природе и физических характеристиках
электродвижущей силы. Формировать у учащихся представления о тепловом действии электрического тока и его причинах. Дать теоретическое представление ученикам о принципе строения электрических цепей.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Повторение пройденного материала | Поприветствовать учеников. Спросить класс, кто хочет рассказать о том, что изучалось на прошлом уроке. Задать классу вопросы, по темам, которые не были озвучены учениками. |
| 2 | Введение | Спросить класс, кто может рассказать, что такое электрический ток. Выслушать ответы класса, чтобы узнать кто из учеников уже разбирается в этой теме. Отметить правильные ответы и, резюмировав их, перейти к объяснению нового материала. Рассказав классу о природе электродвижущей силы дать ученикам представление о значении терминов: ● Разность потенциалов ● Проводник ● Диэлектрик ● Электрический ток ● Сопротивление ● Величина тока. Для мотивации и актуализации внимания класса предложить ученикам, которые разбираются в этой теме, самим дать определение этих понятий, скорректировав их ответы при необходимости. |
| 3 | Закон Ома | Дать определение Закона Ома и вывести формулу. Объяснить значение её переменных. Для простоты применения формулы на практике продемонстрировать ученикам треугольник с формулой. Разобрать задачу с применением закона Ома. Спросить у класса есть ли у кого-то вопросы. |
| 4 | I закон Кирхгофа | Познакомить класс с понятиями узлов и ветвей электрической схемы. Сформулировать I закон Кирхгофа (сумма токов, подходящих к узловой точке электрической цепи, равна сумме токов, уходящих от этого узла), привести примеры его применения. |
| 5 | II закон Кирхгофа | Сформулировать II закон Кирхгофа (в замкнутом контуре электрической цепи сумма всех эдс равна сумме падения напряжения в сопротивлениях того же контура), приведя пример его формулы. Пояснить классу его значение и сферу применения этого закона. Убедиться, что у класса нет вопросов. |
| 6 | Закон Джоуля-Ленца | Перед началом можно показать классу видео с экспериментом, демонстрирующим закон Джоуля-Ленца. Рассказать классу, почему в законе присутствуют имена двух ученых. Рассказать, как формулируется закон. Для более качественного понимания провести сравнения сопротивления тока с сопротивлением трения и выделяющегося при этом тепла. Разобрать задачу с применением закона Джоуля-Ленца. |
| 7 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Задать контрольные вопросы по пройденному материалу. Предупредить класс, что на следующем занятии пройдёт практическое занятие. |
| 8 | Резервное время | Показать видео и рассказать классу интересные факты по пройденной теме, не вошедшие в программу. |
## Урок №3. Тема: «Теория пайки»
**Цель урока:** Обучить теории пайки, дать представление об инструментах и методике
пайки.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Сформулировать тему и цель урока. Постараться замотивировать учеников, акцентируя важность темы. Объяснить, что знания, которые они получат на этом уроке обязательно пригодятся им в дальнейшем на практических занятиях. |
| 2 | Теория пайки | Перечислить основные технологические операции, которые происходят во время пайки. Пайка сводится к следующим технологическим операциям: ● Паяемые поверхности очищают от загрязнений, коррозионных корок и т.п. Зачищают до блеска, т.е. до отсутствия видимых следов окислов; ● Покрывают флюсом веществом, удаляющим остатки окисла и не допускающим окисления поверхностей в дальнейшем процессе. Для флюсовки под лужение предпочтительно использовать не жидкие или твердые флюсы, а флюс-пасты; ● Затем поверхности лудят наносят на них расплавленный припой (специально предназначенный для пайки сплав), он при этом растекается тонкой пленкой и химически соединяется с основным металлом; ● Детали предварительно соединяют механически: скруткой, сжатием пинцетом, пассатижами, в тисках, струбциной и пр. Наносят еще флюс, чтобы не допустить окисления припоя под нагревом;● Наносят с прогревом еще припой (возможно, уже другой) до получения спая заданного качества; ● Если пайка велась паяльником с луженым жалом, по ее окончании его очищают и покрывают неактивным флюсом. Чтобы пайки были качественными, обычный паяльник должен храниться с зафлюсованным жалом! Подробно описать процесс зачистки, лужения и пайки. Дать ученикам рассмотреть и подержать в руках паяльник,во время объяснения из чего он состоит. Рассказать об особенности подготовки и пайки проводов. Научить зачистке и скрутке проводов. Каждый ученик должен провести эту операцию самостоятельно. Спросить, есть ли у класса вопросы. |
| 3 | Припои и флюсы | Рассказать о припоях и флюсах. Припои от ПОС-90 до Авиа-2 мягкие для низкотемпературной пайки. Гарантированно обеспечивают только электрический контакт. ПОС-30 и ПОС-40 паяют медь, латунь, бронзу с неактивными флюсами, а их же со сталью и сталь со сталью сактивными. ПОССр-15 можно паять оцинковку с неактивными флюсами; другие припои при этом разъедают цинк до стали и пайка скоро отваливается. 34А, МФ-1 и ПСр-25 припои твердые, для высокотемпературной пайки. Припоем 34А можно паять алюминий в пламени (см. далее, о пайке алюминия) со специальными флюсами, см. там же. Припоем МФ1 припаивают медь к стали с активированным флюсом. «Невысокие требования к прочности» в данном случае значит, что прочность спая ближе к прочности меди, чем стали. ПСр-25 при пайке сухим паяльником пригоден для пайки ювелирных изделий, витражей тиффани и т.п. Паяльные флюсы делятся на нейтральные (неактивные, бескислотные), химически с основным металлом не взаимодействующие или взаимодействующие в ничтожной степени, активированные, химически действующие на основной металл при нагреве, и активные (кислотные), действующие на него и холодными. В отношении флюсов наш век принес больше всего нововведений; большей частью все же хороших, но начнем с неприятных. Первое технически чистого ацетона для промывки паек в широкой продаже больше нет вследствие того, что он используется в подпольном производстве наркотиков и сам обладает наркотическим действием. Заменители технического ацетона растворители 646 и 647. Второе хлористый цинк в активированных флюс-пастах часто заменяют тераборнокислым натрием бурой. Соляная кислота высокотоксичное химически агрессивное летучее вещество; хлорид цинка также токсичен, а при нагреве сублимирует, т.е. улетучивается не плавясь. Бура безопасна, но при нагреве выделяет большое количество кристаллизационной воды, что немного ухудшает качество пайки. Лучше, чтобы у в наличии были образцы припоев и флюсов, чтобы ученики смогли взять их в руки и рассмотреть.|
| 4 | Виды пайки | Рассказать об основных видах пайки: ● Мелкая пайка ● Пайка радиоэлектронных компонент на печатную плату ● Микросхемы. Для более наглядного понимания технического процесса показать ученикам пайку микросхем, или продемонстрировать обучающее видео. |
| 5 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Задать контрольные вопросы по пройденному материалу. Если останется время рассказать классу о подставках для паяльников и основную технику безопасности. |
| 6 | Резервное время | Показать видео и рассказать классу интересные факты по пройденной теме, не вошедшие в программу. |
## Урок №4. Тема: «Аэродинамика полета. Пропеллер»
**Цель урока:** Сформировать знания основных принципов аэродинамики винтов. Дать
представление о главных характеристиках винта, и их влияние на полетные качества
коптера. Научить ориентироваться в технических таблицах по подбору винтов и
моторов.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести тестирование по пройденным темам. Сформулировать тему и цель урока. |
| 2 | Аэродинамика пропеллера | Объяснить учащимся за счет чего образуется подъемная сила, которая позволяет коптеру совершать полет. Привести пример с воздушной подушкой.Раздать каждому ученику или на команду пропеллер и объяснить его строение. Показать видео со вращением пропеллера и его воздействием на воздушные потоки. Изучить схему вращения моторов квадрокоптера и позволить ученикам правильно разместить воздушные винты. |
| 3 | Параметры пропеллеров | Показать пример пропеллеров разного диаметра и с различным количеством лопастей. Более крупные пропеллеры требуют большей мощности от мотора на свою раскрутку. Нужно убедиться, что мотор может развивать нужную мощность. Также, большие и тяжелые пропеллеры обладают большей инерцией, поэтому они не смогут мгновенно ускоряться, что отразится на маневренности коптера. Разобрать основные характеристики пропеллеров и предложить ученикам рассчитать, какие лучше использовать пропеллеры для 3 коптеров разных габаритов. Расчет и подбор воздушного винта к двигателю, а также к конкретному коптеру сложная и тонкая задача. Исходными данными для подбора винтов для самодеятельных конструкторов обычно являются мощность двигателя Nдв (Вт), частота вращения воздушного винта ТВ (об/мин), максимальная скорость движения (полета) Vмакс (м/с). |
| 4 | Тестирование воздушных винтов | Провести исследование влияния выбора пропеллеров. Провести летные испытания с использованием 3 типов пропеллеров: ● 2 лопастной большого диаметра ● 3 лопастной большого диаметра ● 3 лопастной малого диметра. Засечь время полета, скорость и подъемную силу (путем подъема дополнительного груза). |
| 5 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 6 | Резервное время | Показать видео и рассказать классу интересные факты по пройденной теме, не вошедшие в программу. |
## Урок №5. Тема: «Основы электромагнетизма. Типы двигателей
**Цель урока:** сформировать теоретические знания по основным законам
электромагнетизма. Дать представление о строении и функционале популярных
моделей электромоторов. Актуализировать использование бесколлекторных
двигателей при создании коптеров.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос по пройденным темам. Сформулировать тему и цель урока. Спросить, как, по их мнению, работают моторы и что заставляет их вращаться. |
| 2 | Основные законы электро-магнетизма | Описать основные законы электромагнетизма и их формулировки: ● Закон Ампера (закон взаимодействия электрических токов. Впервые был установлен Андре ● Мари Ампером в 1820 для постоянного тока. Из закона Ампера следует, что параллельные проводники с электрическими токами, текущими в одном направлении, притягиваются, а в противоположных отталкиваются) ● Закон Ома (физический закон, определяющий связь электродвижущей силы источника (или электрического напряжения) с силой тока, протекающего в проводнике, и сопротивлением проводника. Установлен Георгом Омом в 1826 году и назван в его честь) ● Закон Кулона (это закон, описывающий силы взаимодействия между неподвижными точечными электрическими зарядами). Привести примеры использования этих законов в повседневной жизни. Спросить, есть ли у класса вопросы. |
| 3 | Типы двигателей | Показать классу (на фото и видео, если нет в наличии)популярные виды электродвигателей: ● Двигатель постоянного тока ● Универсальный коллекторный двигатель ● Асинхронный электродвигатель ● Синхронный электродвигатель. Коллекторные развивают меньшую скорость. Бесколлекторные двигатели способны развить большую скорость, а также более износостойкие. Попросить класс привести примеры, где они встречали данные типы двигателей. |
| 4 | Сравнение двигателей | Дать наглядное сравнение коллекторных и бесколлекторных двигателей. Спросить учеников, какой двигатель будет правильно использовать на коптерах и почему. Спросить, есть ли у класса вопросы по пройденной теме. |
| 5 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 6 | Резервное время | Показать видео и рассказать классу интересные факты по пройденной теме, не вошедшие в программу. |
## Урок №6. Тема: «Бесколлекторные двигатели и регуляторы их хода»
**Цель урока:** закрепить теоретические знания о строении и работе бесколлекторных
электродвигателей. Сформировать знания о работе и настройке регуляторов хода,
технике безопасности. Обучить решению проблем, возникающих в случае некорректной работы регуляторов.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос по пройденным темам. Сформулировать тему и цель урока. Сделать упор на то, какие типы двигателей и почему применяются в коптерах. |
| 2 | Принцип работы бесколлекторного электродвигателя | Описать принцип работы бесколлекторного электродвигателя. Показать видео работы. Разобрать такие понятия как: ● Обмотка ● Ротор ● Статор ● Фаза (Трехфазные бесколлекторные двигатели приобрели наибольшее распространение. Но они могут быть и одно, двух, трех и более фазными. Чем больше фаз, тем более плавное вращение магнитного поля, но и сложнее система управления двигателем. 3-х фазная система наиболее оптимальна по соотношению эффективность/сложность, поэтому и получила столь широкое распространение). Попросить учеников объяснить, почему в бесколлекторных электродвигателях три фазных провода. При необходимости скорректировать ответы. |
| 3 | Основные характеристики | Спросить у класса, какими характеристиками, по их мнению, должен обладать бесколлекторный электродвигатель. Рассказать о датчиках и контроллерах (регуляторах оборотов или ESC). Рассказать о функциях и характеристиках ESC: ● Максимальный постоянный ток (указывает, какой ток контроллер способен держать продолжительное время. Как правило, этот параметр входит в обозначение контроллера (например Jes -18, Phoenix -10). Иногда указывают величину "кратковременного" тока, допустимого в течении нескольких секунд) ● Максимальное рабочее напряжение (указывается, с каким количеством NiCd или литий-полимерных банок можно использовать контроллер. Для контроллеров с ВЕС-м, эта величина может быть разная, в зависимости от количества сервомашинок) ● Максимальные обороты (программное ограничение максимальных оборотов. Всегда указывается для двухполюсного двигателя. Для многополюсных моторов это число надо разделить на количество пар полюсов) ● Внутреннее сопротивление (полное сопротивление силовых ключей контроллера, без учета проводов. Чем мощнее контроллер, тем меньше его внутреннее сопротивление. Как правило, сопротивление проводов сравнимо с внутренним сопротивлением контроллера и вносит до 30% потерь) ● Частота импульсов контроллера (как правило, составляет 7- 8 Кгц. У "продвинутых" контроллеров частоту регулирования можно программировать на другие значения- 16 и 32 Кгц. Эти значения применяется в основном для высокооборотных 3-4-х витковых моторов с малой индуктивностью, при этом улучшается линейность регулирования частоты вращения). Спросить у учащихся, что осталось непонятным разобрать то, что оказалось сложным для восприятия еще раз. |
| 4 | Применение | Дать каждому ученику или команде мотор и регулятор оборотов. Указать на основные ошибки при установке моторов на луч (использование слишком длинных винтов при установке, что приводит к повреждению обмотки). Разобрать каким образом мотор присоединяется к регулятору оборотов, а регулятор к полетному контроллеру и плате распределения питания.Рассказать про настройки, которыми обладает контроллер: ● Напряжение выключения мотора ● Тип выключения мотора ● Тормоз ● Опережение ● Режим старта ● Время акселерации или задержка акселерации ● Ограничение тока ● Режим газа ● Реверс Объяснить основные проблемы при использовании регуляторов оборотов и какие действия помогают их разрешить. |
| 5 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 6 | Резервное время | Показать видео и рассказать классу интересные факты по пройденной теме, не вошедшие в программу. |
## Урок №7. Тема: «Принцип работы, типы и устройство аккумуляторов»
**Цель урока:** сформировать знания о принципе работы аккумуляторов. Сформировать и актуализировать знания о видах и специфике литий-полимерных аккумуляторах, техники безопасности.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Сформулировать тему и цель урока. Сформировать учебную мотивацию на занятии, отметив, что на уроке будет рассказан принцип работы с элементом питания, который в дальнейшем будет использоваться при сборке коптеров. |
| 2 | Устройство аккумуляторов | Дать определение аккумулятора. Рассказать о сферах их применения. Продемонстрировать схему его устройства, процесс зарядки и разрядки аккумулятора. (Принцип работы аккумулятора: когда к электродам подключена нагрузка, например, лампочка, то создается замкнутая электрическая цепь, через которую протекает ток разряда. Он формируется движением электронов в металлических частях и анионов с катионами в электролите) |
| 3 | Способы соединения аккумуляторов | Рассказать о правилах и особенностях при параллельном и последовательном соединении аккумуляторов. |
| 4 | Аккумуляторы для коптеров | Рассказать о моделях аккумуляторов, которые применяются при сборке коптеров. Описать основные характеристики аккумуляторов: ● Ёмкость (Записывается в ампер-часах. Это такой ток который до полного разряда может выдавать аккумулятор в течении часа. Например, если емкость аккумулятора 3А/ч, то значит он может в течении одного часа выдавать ток 3А. При токе 1А его хватит на 3 часа, а при токе 30А он разрядится за 6 минут) ● Максимальный разрядный ток Указывается во сколько максимальный разрядный ток превышает емкость. Например значение «30-40C» для аккумулятора с емкостью 3А/ч означает, что он кратковременно может выдавать ток 90-120А. Естественно, при выборе аккумулятора необходимо руководствоваться меньшим значением. ● Напряжение (Зависит от количества «банок» или ячеек аккумулятора. Напряжение одной ячейки LiPo аккумулятора составляет порядка 3,7В. Соответственно, чем больше ячеек, тем больше напряжение. Соединяя аккумуляторы последовательно можно набрать достаточно большое напряжение, как это делают, например, в электровелосипедах). Раздать всем учащимся или на команду аккумуляторы. Попросить измерить напряжение на одном аккумуляторе, а также на аккумуляторах соединенных последовательно и параллельно. Попросить сделать выводы о величине напряжения при различных способах их соединения. Скорректировать их при необходимости. |
| 5 | Зарядка аккумулятора | Рассказать о правилах зарядки LiPo аккумуляторов, и необходимых для этого устройствах. Показать, как поставить аккумулятор на зарядку. Попросить каждого ученика проделать это. |
| 6 | Применение аккумуляторов | Рассказать о непосредственном применении аккумулятора в сборке коптера. Продемонстрировать классу установленный на коптере аккумулятор. Показать устройство его подключения к плате распределения энергии. (Для подключения аккумуляторов используют специальные коннекторы. Диаметр пистонов в них 4мм и они дополнительно подпружинены для обеспечения большой площади контакта. Еще для подключения используют специальные провода в силиконовой изоляции, которая способна выдерживать высокие температуры). |
| 7 | Техника безопасности | Рассказать о правилах эксплуатации и хранения аккумуляторов, и последствия, к которым может привести нарушение техники безопасности. Показать видео, демонстрирующие последствия механического повреждения аккумулятора . |
| 8 | Заключение | Провести тест по пройденным темам. Подвести итоги занятия. Спросить, есть ли у класса вопросы. Задать контрольные вопросы. |
| 9 | Резервное время | Если останется время, показать классу видео, более подробно демонстрирующее процесс зарядки аккумулятора. |
## Урок №8. Тема: «Управление полетом мультикоптера. Принцип функционирования полетного контроллера. ПИД регуляторы»
**Цель урока:** Закрепить знания о принципе управления коптером. Сформировать
знания о особенностях работы полетного контроллера и ПИД регулятора. Дать
представление о принципах расчётов ПИД-регуляторов.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Сформулировать тему и цель урока. Повторяя пройденный материал, спросить у учеников по какому принципу вращения винтов происходит полет коптера и изменение его движения, какую роль занимает полетный контроллер. |
| 2 | Принцип функционирования полетного контроллера | Напомнить ученикам еще раз назначение и функции полетного контроллера. Перечислить его основные задачи: ● Собирает информацию с датчиков (встроенные, либо внешние: гироскопы, акселерометры, GPS, магнитометр); ● Рассчитывает свое положение в пространстве, по показаниям датчиков; ● Собирает информацию о внешних воздействиях, таких как отклонения стиков пилотом, алгоритм программы; ● Вносит корректировку с помощью коэффициентов ПИД (Пропорционально-Интегрально- Дифференциальные); ● Отправляет управляющие сигналы на регуляторы оборотов (ESC). Рассказать подробнее о связи полетного контроллера с ESC. |
| 3 | ПИД-регуляторы | Расскажите о функциях ПИД регулятора.(При работе с мультикоптерами, вам придется столкнуться с настройкой ПИД-регулятора, этот математический аппарат применяется почти во всех задачах стабилизации: стабилизация углов квадрокоптера в воздухе, полет и удержание позиции по GPS, удержание высоты по барометру). По порядку объясните математические расчёты по которым происходит контроль над полетом коптера. Привести примеры сайтов, на которых можно рассчитать ПИДы для конкретной системы. Научить этим пользоваться. Спросить у класса, есть ли вопросы.|
| 4 | Заключение | Подвести итоги. Задать контрольные вопросы. Наверняка у многих учеников появятся вопросы после этого урока. Показать или предложить ученикам самостоятельно посмотреть видео, объясняющее простым языком функционирование ПИД-регулятора. |
| 5 | Резервное время | Если останется время, показать видео полета коптера с плохо настроенными пидами. Предложить ребятам подумать, каким образом это можно исправить. |
## Урок №9. Тема: «Основы радиосвязи. Принцип работы радиоаппаратуры управления»
**Цель урока:** Дать представление об основах радиосвязи, работе передатчика и
приёмника сигнала. Ввести в терминологию модуляции сигналов.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Сформулировать тему и цель урока. Провести тестирование по пройденным темам. |
| 2 | Основы радиосвязи | Дать определение понятию «Радиосвязь».(Радиосвязь - наиболее распространенный способ передачи информации на расстояние. Сотовые телефоны, спутниковая связь, телевидение - все это работает на основе передачи сигналов через электромагнитные колебания определенной частоты). Спросить класс, где в повседневной жизни они могут наблюдать применение радиосвязи. Рассказать по какому принципу происходит передача сигнала от передатчика к приемнику. |
| 3 | Принцип работы радиоаппаратуры управления | Рассказать о принципе работы передатчика и приёмника (Аппаратура радиоуправления состоит из передатчика, который находится у пилота, и размещенных на модели приемника и полетного контроллера, который и управляет квадрокоптером через регуляторы мощности). Продемонстрировать схему взаимодействия передатчика и приемника в устройстве коптера. Спросить учеников, есть ли у них вопросы по этой схеме. |
| 4 | Передатчик | Рассказать о видах пультов управления. (Различают 2 основных вида пультов - джойстиковые и пистолетные. Для квадрокоптеров используют джойстиковый пульт). Продемонстрируйте схему модуляции PPM сигнала. Показать настройки PPM (РРМ сигнал имеет фиксированную длину периода Т=20мс. Это означает, что информация о положениях ручек управления на передатчике попадает на модель 50 раз в секунду, что определяет быстродействие аппаратуры управления. Как правило, этого хватает, поскольку скорость реакции пилота на поведение модели намного меньше. Все каналы пронумерованы и передаются по порядку номеров. Значение сигнала в канале определяется величиною временного промежутка между первым и вторым импульсом - для первого канала, между вторым и третьим - для второго канала и т.д.) и PWM - шим импульс (Для квадрокоптеров минимальное количество каналов - 4: управление газом, угол крена, угол тангажа, угол рысканья. Положение каждого из стиков пульта кодируется при помощи ШИМ импульса) на пульте радиоуправления. |
| 5 | Приёмник | Дать определение приемнику. (Устройство, служащее для осуществления радиоприема, т.е . для выделения сигналов из радиоизлучения. Приёмник устанавливается на квадрокоптере, принимает сигнал с пульта и передаёт его в полетный контроллер) Продемонстрировать схему работы приёмника, рассмотреть конкретный пример. |
| 6 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 7 | Резервное время | Показать видео и рассказать классу интересные факты по пройденной теме, не вошедшие в программу. |
## Урок №10. Тема: «Аналоговая и цифровая видеотрансляция. Применяемые камеры, радиопередатчики и приемники»
**Цель урока:** Дать представление о принципах работы видеосвязи. Раскрыть основы
работы аналоговой и цифровой видеосъемки. Сформировать знания применение
съёмки на беспилотных летательных аппаратах.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос или тестирование по пройденным темам. Сформулировать тему и цель урока. |
| 2 | Видеокамеры аналогового типа | Рассказать об истории аналоговых камер и сфере их применения. |
| 3 | Работа аналоговых видеокамер | Продемонстрировать классу схему устройства аналоговой камеры, описать принцип ее работы.(Световой поток, проходя сквозь линзы объектива, попадает на матрицу ПЗС, где он преобразуется в видеосигнал). Попросить учеников зафиксировать основные элементы схемы и запомнить её. |
| 4 | Видеокамеры цифрового типа | Рассказать о появлении цифровых камер и области их использования. |
| 5 | Работа цифровых видеокамер | Продемонстрировать классу схему устройства цифровой видеокамеры, описать принцип ее работы (световой поток, отраженный от предметов попадает на чувствительную к свету матрицу устройства, которая преобразует его, но уже в сигнал электрический. Далее этот электрический сигнал, посредством процессора IP камеры обрабатывается, и лишь тогда кабелем «витая пара» или «коаксиальным кабелем», а возможно и средствами беспроводной связи (Wi Fi), обработанный видеосигнал поступает на вход цифрового видеорегистратора). Попросить класс зафиксировать и запомнить её. |
| 6 | Дальность полёта | Рассказать классу о дальности полета коптера при использовании камеры. Перечислить особенности, на которые надо обратить внимание: ● Дальность передачи видеосигнала зависит от количества помех в зоне полета ● Разные системы передачи сигнала имеют различную способность огибать препятствия ● Дальность ограничивается лишь емкостью батареи, но для реализации всего потенциала современных технологий необходима наземная станция. ● Моделью довольно сложно управлять по камере. Так или иначе вы будете зависеть от погоды. Спросить у учеников, какие, по их мнению, еще трудности могут возникнуть. |
| 7 | Качество изображения | Рассказать о характеристиках современных камер. Продемонстрировать классу несколько видео с установленной на коптер камеры. |
| 8 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 9 | Резервное время | Показать видео и рассказать классу интересные факты по пройденной теме, не вошедшие в программу. |
## Урок №11. Тема: «Техника безопасности при сборке и настройке коптеров, при подготовке к вылету. Техника безопасности при работе с аккумуляторами»
**Цель урока:** Дать учащимся понимание основных правил техники безопасности при конструировании и эксплуатации коптеров и почему их следует соблюдать.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос или тестирование по пройденным темам. Сформулировать тему и цель урока. |
| 2 | Безопасность при работе с Li-Po аккумуляторами | Рассказать правила техники безопасности при работе с Li-Po аккумуляторами: ● Обращаться с аккумуляторами бережно. Не допускать падений, ударов деформаций. ● При подключении (отключении) аккумуляторов держаться только за разъёмы, тянуть или дергать за провода запрещается. ● В случае обрыва разъемов, обнаружения целостности изоляции или корпуса аккумулятора, не трогая его, немедленно сообщить преподавателю. Объяснить почему происходят возгорания аккумуляторов. Подкрепить рассказ показом видеороликов. |
| 3 | Техника безопасности при работе с паяльником | Вместе с учащимися вывести список правил, которые следует выполнять в лаборатории и во время пайки: ● Следите за тем, чтобы нагретая часть паяльника не прикасалась в ходе пайки к электрическому проводу. Жало обладает очень высокой температурой, поэтому изоляция будет повреждена в считанные мгновения. Дальше последует короткое замыкание. ● Перед началом работы проверьте целостность проводки и штепсельной вилки. Повреждения могут привести к тому, что ток замкнет непосредственно на вас. ● При работе с горячим паяльником необходимо использовать подставку. Ее обычно изготавливают из деревянного бруска и металлических держателей. Так вы сможете безопасно расположить инструмент и не бояться, что он упадет на горючие материалы. ● Как канифоль, так и сам припой при плавлении выделяют большое количество вредных веществ. Работать в респираторе вас никто не принуждает, но проветривать помещение после каждой пайки просто жизненно необходимо. Через каждые 30 минут делайте небольшие перерывы со сквозным проветриванием помещения и не забудьте при этом отключать паяльник. ● Держите паяльник только за ручку. Проследить, чтобы учащиеся записали их в тетрадь и предупредить, что чтобы допуститься до пайки, каждый должен будет отчитаться по этим правилам. |
| 4 | Техника безопасности в аудитории | Рассказать правила техники безопасности и поведения в аудитории: ● Не бегать рядом с рабочими столами ● Вешать сумки на ручку кресла (а лучше вообще убрать в шкаф или оставить в другой части аудитории) ● Не трогать оборудование (резак, 3д принтер) без преподавателя● Не вставлять пальцы и другие части тела и вещи в розетку ● Еда, вода только на перемене (или по разрешению преподавателя) ● Брать в руки демонстрационные дроны, пульты и так далее только с разрешения преподавателя Назначить ответственного за соблюдением ТБ в классе. |
| 5 | Правила техники безопасности при летной эксплуатации коптеров | Рассказать что включает в себя предполетная подготовка. Раздать листы предполетной подготовки каждому учащемуся или на команду и дать возможность учащимся полностью провести предполетную подготовку с занесением отметок о выполнении в лист предполетной подготовки. Правила ТБ при подготовке к полетам: ● Убедиться, что Li-Po аккумуляторы заряжены. ● Убедиться, что аккумуляторы или батарейки в аппаратуре управления заряжены. ● Устанавливать пропеллеры только перед вылетом. ● Проверить надёжность следующих узлов: Затянутость гаек пропеллеров. Крепление и целостность защит винтов. Надежность крепления проводов Отсутствие болтающихся проводов. ● Подключать Li-Po аккумулятор только перед вылетом. ● Располагать зрителей за спиной пилота или за линией, проходящей через оба плеча пилота за спиной пилота. ● Не допускать выхода зрителей в полусферу перед лицом пилота. ● Знать и помнить время полёта, на которое рассчитан данный коптер и его ● аккумулятор. ● ДО подключения Li-Po аккумулятора включить аппаратуру управления ● (пульт), перевести стик газа в нулевое положение. ● Подключать Li-Po аккумулятор только перед взлётом, отключать сразу после взлёта. ● Стоять на расстоянии не менее 3 м от коптера. ● Взлетать с земли с ровной площадки, на расстоянии не менее 3 метров от препятствий. |
| 6 | Безопасность в полете | Вместе с учащимися вывести правила техники безопасности в полете. ● Выполнять все указания преподавателя или лётного инструктора. ● Заранее обозначить зону пилотажа. Летать только в обозначенной зоне и не допускать вылета за её пределы. Не залетать за собственную спину. ● При обучении полётам летать на уровне ниже собственного роста. ● Летать рядом с собой на расстоянии, на котором вам видна ориентация коптера в пространстве. Не улетать далеко от себя. В случае сомнений в ориентации коптера немедленно выполнить посадку на месте. Не пытаться взлететь. Подойти ближе к коптеру и выполнить взлёт. ● При управлении все движения стиками выполнять аккуратно и плавно. Не допускать резких движений. При необходимости изменить направление полёта двигать стиками следует энергично, но не резко. ● Летать следует осторожно и выполнять только те элементы, в которых нет сомнений. Запрещается выполнять фигуры пилотажа, в успехе которых возникают сомнения и фигуры, связанные с риском. ● Соблюдать скоростной режим. Скорость полета коптера держать в пределах скорости идущего человека. ● Вернуть коптер к месту посадки к рассчитанному времени, не допускать полной разрядки аккумулятора в полёте. ● Посадку выполнять только на ровную открытую площадку вдали от препятствий. Проследить, чтобы учащиеся записали правила в тетрадь.Предупредить, что допуск к полетам будет даваться только после сдачи правил техники безопасности. |
| 7 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 8 | Резервное время | Показать видео и рассказать классу интересные факты по пройденной теме, не вошедшие в программу. |
## Урок №12. Тема: «Теория ручного визуального пилотирования»
**Цель урока:** Сформировать представление у учащегося о принципах визуального пилотирования. Разобрать принципы управления коптером с помощью пульта радиоуправления.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос или тестирование по пройденным темам. Сформулировать тему и цель урока. |
| 2 | Предполетная подготовка | Дать задание каждому учащемуся или команде провести предполетную подготовку и поставить отметки в листе предполетной подготовки. |
| 3 | Базовые процедуры | Проверить, чтобы на всех коптерах были сняты пропеллеры. Рассказать о том, как выполнить биндинг пульта, арм, дизарм, kill switch. Проделать это несколько раз вместе с учащимися. Спросить, есть ли у учащихся вопросы. Под запись: ● Arm (англ. - “вооружить”) разблокировать моторы коптера, перевести коптера в “боевое” состояние, после чего коптер начинает реагировать на движения стика газа. На коптере Clever (при настройках “по умолчанию”) арминг выполняется наклоном стика Yaw вправо до края, при минимальном газе, в течение 3 секунд. ● Disarm (англ. - “разоружить”) заблокировать моторы коптера, после чего коптер перестает реагировать на движения стика газа. На коптере Clever (при настройках “по умолчанию”) выполняется наклоном стика Yaw влево до края, при минимальном газе, в течение 3 секунд. ● Процедура включения последовательность действий после установки коптера на взлетную площадку перед взлетом. ● Визуальное пилотирование - тип пилотирования, при котором коптер находится в зоне прямой видимости ● FPV (англ. - “вид от первого лица”) - полет по камере, вид от первого лица - тип пилотирования, при котором управление коптером осуществляется по дополнительному видео-радиоканалу с передачей изображения с камеры, установленной на борту коптера. |
| 4 | Пульт управления | Разобрать основные принципы управления коптером с пульта (газ, рыскание, крен, тангаж). Рассказать о полетных режимах и о том, как их менять на пульте. Пройтись по меню настроек пульта. |
| 5 | Подготовка к пилотированию | Полеты в симуляторе: каждый учащийся летает в симуляторе, привыкая к управлению коптером. Полет производится в режиме Stabilize в режиме визуального пилотирования (не FPV). |
| 6 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 7 | Резервное время | Показать видео, где БПЛА выполняют различные трюки. |
## Урок №13. Тема: «Техника безопасности при летной эксплуатации коптера»
**Цель урока:** Сформировать у учащегося понимание опасности коптеров и заложить основы правильного поведения при летной эксплуатации коптера.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос или тестирование по пройденным темам. Сформулировать тему и цель урока. |
| 2 | Предполетная подготовка | Дать задание каждому учащемуся или команде провести предполетную подготовку и поставить отметки в листе предполетной подготовки. Чеклист включает в себя следующие пункты: 1. Провода аккумулятора уложены так, что, будучи подключенными, не помещают полётам. 2. Вращению пропеллеров ничего не мешает. 3. Защиты пропеллеров целы и закреплены. 4. Проверить дальность видеопередатчика и обозначить как полетную зону 5. Все присутствующие люди находятся за спиной. На расстоянии 10 метров спереди и сбоку нет людей. |
| 3 | Полетная зона | Вместе с учащимися проводится осмотр и подготовка полетной зоны. Провести зачет по технике безопасности при полетах и предполетной подготовке. Показать примеры полетов с объяснениями по способам пилотирования. Показать как действовать в аварийных ситуациях и при поломках. Смоделировать такие ситуации и проверить, как дети поведут себя в таких ситуациях. Скорректировать их действия при необходимости. |
| 4 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 5 | Резервное время | Показать видео и рассказать классу интересные факты по пройденной теме, не вошедшие в программу. |
## Урок №14. Тема: «Обучение лётному мастерству»
**Цель урока:** Развить навыки визуального пилотирования.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Сформулировать тему и цель урока. Провести тестирование по пройденным темам. |
| 2 | Взлет / посадка. | Провести летные испытания коптера. Каждый учащийся выполняет не менее 5 взлетов - посадок, стараясь совершить посадку как можно мягче. |
| 3 | Висение | Учащийся должен научиться зависать над точкой не менее чем на 10 секунд хвостом к себе. (Упражнение 1. Висение хвостом к себе. Выполняется на уровне колен над центральным перекрестием зоны полётов). |
| 4 | Полеты вперед / назад | Выполнение упражнения “полеты вперед - назад по прямой хвостом к себе” не менее 5 раз |
| 5 | Полет по кругу | Выполнение упражнения “полет по кругу хвостом к себе” не менее 5 раз |
| 6 | Висение боком | Учащийся должен научиться зависать над точкой не менее чем на 10 секунд боком к себе. |
| 7 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 8 | Резервное время | Показать видео, где БПЛА выполняют различные трюки. Разобраться, каким образом их можно выполнить. |
## Урок №15. Тема: «Основы радиоэлектроники, схемотехники и макетирования электрических схем»
**Цель урока:** Сформировать у учащегося представление о том, как работают различные платы, схемы и из каких элементов они состоят. Научить составлять принципиальные электрические схемы.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос по пройденным темам. Сформулировать тему и цель урока. Сделать упор на то, что знание основ радиоэлектроники поможет учащимся усовершенствовать свой летательный аппарат, путем подключения датчиков и светодиодов / светодиодных лент. |
| 2 | Электричество | Дать под запись основные определения, касающиеся разделов радиоэлектроника и схемотехника. ● Электричество (природное явление, подтверждающее существование, взаимодействие и движение электрических зарядов. Электричество впервые было обнаружено еще в VII веке до н.э. греческим философом Фалесом) ● Электрон (элементарная частица, имеет отрицательный заряд примерно равный -1,602·10-19 Кл (Кулон). Обозначается “е”) ● Напряжение ● Электрический ток (это физический процесс направленного движения заряженных частиц под действием электромагнитного поля от одного полюса замкнутой электрической цепи к другому. В качестве частиц, переносящих заряд, могут выступать электроны, протоны, ионы и дырки) ● Проводник ● Электрическое сопротивление (физическая величина, определяющая свойство проводника препятствовать (сопротивляться) прохождению тока. Единица измерения сопротивления Ом) ● Сила тока ● Электронная схема (это сочетание отдельных электронных компонентов, таких как резисторы, конденсаторы, индуктивности, диоды, транзисторы и интегральные микросхемы, соединённых между собой) ● Типы плат Каждое понятие подкреплять коротким видеороликом. Спросить у учащихся, что осталось непонятным. |
| 3 | Закон Ома | Прорешать несколько простых задач на закон Ома (от 3 до 5). Раздать каждому учащемуся подобную задачу на самостоятельное решение. Объяснить что такое последовательное и параллельное соединение. |
| 4 | Электронные компоненты | Раздать учащимся электронные компоненты и дать перерисовать обозначения этих компонентов. Учащиеся самостоятельно или в командах собирают схемы: ● Последовательное и параллельное подключение светодиодов на макетной плате ● Светодиод с кнопкой на макетной плате ● Светодиод с переменным резистором на макетной плате. К каждому опыту зарисовать схему подключения. |
| 5 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить учащимся решить простую задачу на закон Ома. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 6 | Резервное время | Показать примеры интересных схем. Предложить учащимся собрать одну из понравившихся схем дома. |
## Урок №16. Тема: «Основы работы с аналоговым и цифровым сигналом»
**Цель урока:** сформировать у учащихся понимание типов хранения передачи видео, их достоинств и недостатков друг перед другом.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос по пройденным темам. Сформулировать тему и цель урока. |
| 2 | Сигналы | Спросить у учащихся как они понимают определение “сигнал”. Скорректировать их ответы и дать под запись правильное определение. Зарисовать графики цифрового и аналогового сигнала. |
| 3 | Аналоговые сигналы | Объяснить что такое аналоговый сигнал, как выглядит и каким образом передается. Дать определение аналогового сигнала под запись. (Носитель информации, используемый для передачи сообщений в системе связи. Сигнал может генерироваться, но его приём не обязателен, в отличие от сообщения, которое рассчитано на принятие принимающей стороной, иначе оно не является сообщением. Сигналом может быть любой физический процесс, параметры которого изменяются (или находятся) в соответствии с передаваемым сообщением). Выделить основные достоинства и недостатки данного вида сигнала. Дать определение АЦП. (Аналого-цифровой преобразователь (АЦП, англ. Analog-to-digital converter, ADC) устройство, преобразующее входной аналоговый сигнал в цифровой сигнал. Аналоговый сигнал является непрерывной функцией времени, в АЦП он преобразуется в последовательность цифровых значений) |
| 4 | Цифровые сигналы | Объяснить что такое цифровой сигнал, как выглядит и каким образом передается. Дать определение цифрового сигнала под запись. (Сигнал, который можно представить в виде последовательности цифровых значений. В наше время наиболее распространены двоичные цифровые сигналы (битовый поток) в связи с простотой кодирования и используемостью в двоичной электронике. Для передачи цифрового сигнала по аналоговым каналам (например, электрическим или радиоканалам) используются различные виды манипуляции (модуляции)). Выделить основные достоинства и недостатки данного вида сигнала.|
| 5 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 6 | Резервное время | Разобрать схемы передачи цифрового и аналогового видео. |
## Урок №17. Тема: «Основы работы с лабораторным оборудованием»
**Цель урока:** выработать понимание и навыки работы с лабораторным оборудованием.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос по пройденным темам. Сформулировать тему и цель урока. |
| 2 | Мультиметр | Под запись дать определение мультиметра. (Универсальный комбинированный измерительный прибор, который сочетает в себе функции нескольких измерительных приборов, то есть может измерять целый диапазон электрических величин). Рассказать об основных режимах работы и правилах установления верхней границы измерений. Попросить учащихся измерить различные характеристики трех типов аккумуляторов или батареек, если есть возможность. Объяснить как обнаружить короткое замыкание или разрыв в цепи при помощи мультиметра. |
| 3 | Осциллограф | Дать определение осциллографа и способов его применение. (Прибор, показывающий форму напряжения во времени. Также он позволяет измерять ряд параметров сигнала, такие как напряжение, ток, частота, угол сдвига фаз. Но главная польза от осциллографа возможность наблюдения формы сигнала. Во многих случаях именно форма сигнала позволяет определить, что именно происходит в цепи ). Показать работу прибора на видео или на практике, если есть такая возможность. |
| 4 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Сообщить ученикам, какую тему они будут проходить на следующем занятии.|
| 5 | Резервное время | Предложить учащимся измерить сопротивление предметов, находящихся под рукой и сделать выводы о сопротивлении различных материалов. |
## Урок №18. Тема: «Теория FPV полетов»
**Цель урока:** Развить навыки FPV пилотирования.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос или тестирование по пройденным темам. Сформулировать тему и цель урока. |
| 2 | Подключение FPV | Провести подключение и настройку оборудования для FPV полета. Провести предполетную подготовку коптера. Повторить правила техники безопасности при полетах. Уточнить особенности управления при FPV полетах. |
| 3 | Полеты в симуляторе | Каждый учащийся не менее 20 мин летает в режиме FPV в симуляторе, после чего допускается до полета на настоящем коптере. |
| 4 | Полеты вперед / назад | Выполнение упражнения “полеты вперед - назад по прямой хвостом к себе” не менее 5 раз |
| 5 | Полет по кругу | Выполнение упражнения “полет по кругу хвостом к себе” не менее 5 раз |
| 6 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 7 | Резервное время | Показать видео, где БПЛА выполняют различные трюки в FPV режиме или транслирует красивые пейзажи с высоты. |
## Урок №19. Тема: «История автономных полетов. Развитие автопилотов в авиации»
**Цель урока:** сформировать понимание у учащихся что такое автономные системы, какими они могут быть и что требуется для их создания.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос или тестирование по пройденным темам. Сформулировать тему и цель урока. |
| 2 | Первые автономные системы | Рассказать учащимся что такое автономные системы и автопилоты. (Автопилот это устройство или программно-аппаратный комплекс, который может вести вверенное ему транспортное средство по заданной траектории). Привести примеры первых автономных систем: ● Тележка Леонардо да Винчи ● Торпеды Александровского и Уайтхеда ● Ракета «Фау-2» Стэнфордская тележка. Объяснить, с помощью чего автопилот может ориентироваться в пространстве. Попросить учащихся привести примеры знакомых им современных автономных устройств и систем. |
| 3 | Деловая игра | Попросить учащихся продумать концепт автономного БПЛА, который будет включать в себя описание: ● Применения этого устройства ● Способа и устройства навигации ● Используемого оборудования ● Технических характеристик ● Социальной значимости ● Себестоимости. Каждый учащийся или команда защищает свой проект перед классом, остальные учащиеся задают вопросы и пытаются скорректировать идею. По завершении анонимным голосованием выбирается лучший проект. |
| 4 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 5 | Резервное время | Рассказать про интересные способы применения автономных БПЛА. Показать видео. |
## Урок №20. Тема: «Основы программирование на языке Python»
**Цель урока:** разобрать основы синтаксиса языка Python. Выработать навыки написания простейших программ.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос или тестирование по пройденным темам. Сформулировать тему и цель урока. Сделать упор на то, что программирование является неотъемлемой частью работы любого современного инженера и создание автономных коптеров является популярной задачей настоящих разработчиков крупных компаний. |
| 2 | Введение в Python | Рассказать про типы языков, а именно расшифровать понятия: ● Объектно-ориентированный язык ● Язык программирования высокого уровня ● Язык программирования низкого уровня ● Компилируемый язык ● Интерпретируемый язык. Рассказать, к каким типам относится язык Python. Привести примеры программ и систем, которые можно написать на языке Python. Объяснить зачем нужны библиотеки. (В составе Python поставляется большое число собранных и переносимых функциональных возможностей, известных как стандартная библиотека. Эта библиотека предоставляет Вам массу возможностей, востребованных в прикладных программах, начиная от поиска текста по шаблону и заканчивая сетевыми функциями. Python допускает расширение как за счет ваших собственных библиотек, так и за счёт библиотек, созданных другими разработчиками). Привести примеры библиотек в языке Python (например, math, позволяющая производить сложные математические операции). Спросить у учащихся, какие появились вопросы, их должно быть достаточно. Объяснить что такое блок-схемы. Научить ребят их строить. |
| 3 | Условная инструкция if-elif-else | Рассказать про важность отступов в питоне. Дать под запись синтаксис конструкции. Привести пример небольшой программы с использованием этой конструкции. Запустить программу на исполнение. Нарисовать блок-схему программы.|
| 4 | Цикл for | Дать под запись синтаксис конструкции. Привести пример небольшой программы с использованием этой конструкции. Запустить программу на исполнение.Нарисовать блок-схему программы. |
| 5 | Цикл while | Дать под запись синтаксис конструкции. Привести пример небольшой программы с использованием этой конструкции. апустить программу на исполнение.Нарисовать блок-схему программы.|
| 6 | Операторы break и continue | Дать под запись синтаксис конструкции. Привести пример небольшой программы с использованием этой котрукции. Запустить программу на исполнение. Нарисовать блок-схему программы. |
| 7 | Программирование | Дать несколько простых задач, требующих использования минимум двух конструкций языка. Попросить учащихся написать программу для их решения. Проверить и скорректировать программу вместе с обучающимся. |
| 8 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 9 | Резервное время | Привести примеры популярных программ и систем, написанных на языке Python. |
## Урок №21. Тема: «Знакомство с компьютером Raspberry Pi»
**Цель урока:** дать понимание о способах применения микрокомпьютеров на примере Raspberry Pi 3. Обучить взаимодействию с unix-подобными системами.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос или тестирование по пройденным темам. Сформулировать тему и цель урока. Рассказать о типах компьютеров, сделав упор на применение микрокомпьютеров. |
| 2 | Знакомство с Raspberry Pi 3 | Дать под запись основные характеристики микрокомпьютера Raspberry Pi 3: Вес 45 грамм, тактовая частота 700 МГц; есть графическое ядро в процессоре Broadcom BCM2835; оперативная память 512 Мб; есть USB -разъемы (один или два в зависимости от модели). Рассказать о сферах применения микрокомпьютеров, показать видео готовых проектов, использующих Raspberry Pi 3. Попросить учащихся придумать системы, в которых было бы актуальным применение Raspberry Pi 3. |
| 3 | Первое подключение Raspberry Pi 3 | Установить микрокомпьютер и камеру на коптер. Провести подключение к полетному контроллеру с помощью USB или по UART. Обучить ребят записывать образ ОС на microSD. Подключиться к Raspberry по Wi-Fi. Рассказать об SSH и существующих SSH клиентах. |
| 4 | Использование ОС Raspbian | Объяснить что такое командная строка и как ей пользоваться. Дать под запись основные команды и примеры их использования: ● ls ● cd ● nano ● mv ● mkdir ● rm. Дать задания, требующие использования этих команд (просмотр файлов в каталоге, переименования файла, переноса файла, создание нового файла и т.п.) |
| 5 | Меняем SSID | Рассказать, что такое SSID. Научить изменять имя wi-fi сети. Объяснить что такое демоны и в какой момент они запускаются. Проработать с конфигурацией одного из них. |
| 6 | Используем права суперпользователя | Рассказать о типах и правах пользователей системы. Показать примеры использования sudo. |
| 7 | Подготовка коптера к автономным полетам | Проверить подключенное оборудование для автономных полетов. Убедиться в работоспособности подключения можно выполнив на Raspberry Pi: rostopic echo /mavros/state |
| 8 | Использование QGroundControl через Wi-Fi | Настроить беспроводное соединение для работы с PixHawk в QGroundControl. Предложить учащимся установить новую прошивку, которая подходит для автономных полетов и откалибровать коптер при беспроводном подключении. |
| 9 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы, их должно быть много, нужно заранее продумать ответы на них. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии.|
| 10 | | |
## Урок №22. Тема: «Управление автономным дроном: теория»
**Цель урока:** дать понимание способов программирования автономного коптера. Сформировать навыки написания кода на языке python и закрепить навыки по использованию unix-подобных систем.
| № | Этап урока | Содержание |
| -- |:---------------------------------| :----------------------------------|
| 1 | Введение | Поприветствовать учеников. Провести опрос или тестирование по пройденным темам. Сформулировать тему и цель урока. Сделать упор на то, что на занятии будет решаться задача написания программы для настоящего автономного полета. |
| 2 | Системы координат | Рассказать про локальную и глобальную систему координат. Объяснить почему ориентации по локальной системе координат недостаточно. Рассказать о дополнительных системах координат, которые появляются благодаря получению дополнительной информации с камеры и внешних датчиков. |
| 3 | Включение и использование камеры | Необходимо попросить учащихся убедиться, что в launch-файле Клевера (~/catkin_ws/src/clever/clever/clever.launch) включен запуск aruco_pose и нижней камеры для компьютерного зрения: <arg name="bottom_camera" default="true"/> <arg name="aruco" default="true"/> При изменении launch-файла необходимо перезапустить пакет clever: sudo systemctl restart clever Проверить видео, полученное с камеры перейдя по адресу http://192.168.11.1:8080/. |
| 4 | Распознавание меток | Рассказать каким образом распознаются метки и как они образуют систему координат. Спросить у учащихся есть ли вопросы на текущий момент. |
| 5 | Программирование и автономный полет | Предложить учащимся написать программу для взлета над меткой и посадки на нее. Рассказать о структуре программы, которая может выполнить эту задачу и привести пример кода с использованием функций: ● navigate, ● set_position ● set_velocity. Проверить и скорректировать программы, написанные учащимися. Рассказать, каким образом осуществляется перехват коптера в ручное управление. Протестировать написанные программы. |
| 6 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы, их должно быть много, нужно заранее продумать ответы на них. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
| 7 | Резервное время | Попросить учащихся написать программы для полета по интересным траекториям и протестировать их. |

View File

@@ -1,21 +1,15 @@
# Образ для Raspberry Pi # Образ для Raspberry Pi
## Установка образа операционной системы на MicroSD карту
Для установки образа воспользуйтесь утилитой [Etcher](https://etcher.io):
[![Etcher](https://etcher.io/static/screenshot.gif)
](https://etcher.io)
## Образы
На образе установлены: На образе установлены:
* Raspbian Stretch * Raspbian Stretch
* ROS Kinetic * ROS Kinetic
* [Пакет ПО для Клевера](https://github.com/CopterExpress/clever_bundle) * [Пакет ПО для Клевера](https://github.com/CopterExpress/clever)
|Версия|Дата|Ссылка|Примечания| **Свежую версию образа можно [скачать на GitHub в разделе Releases](https://github.com/CopterExpress/clever/releases).**
|-|-|-|-|
|0.2|24.01.18|[Скачать](https://yadi.sk/d/n_Krnor03RkntU)|| ## Установка образа ОС на MicroSD карту
|0.1|15.12.17|[Скачать](https://drive.google.com/open?id=1Gtj_0iB7dFuorfUKAUUV8ImjmkZCkvc7)||
Для установки образа воспользуйтесь утилитой [Etcher](https://etcher.io).
[![Etcher](https://etcher.io/static/screenshot.gif)](https://etcher.io)

View File

@@ -22,9 +22,9 @@ PX4
### С использованием дополнительных датчиков (ASSISTED) ### С использованием дополнительных датчиков (ASSISTED)
* **ALTCTL** — управление скоростью изменения высоты полета, углами по тангажу и крену и угловой скоростью по рысканью. Используется барометр (или иной датчик высоты). * **ALTCTL** (ALTITUDE) — управление скоростью изменения высоты полета, углами по тангажу и крену и угловой скоростью по рысканью. Используется барометр (или иной датчик высоты).
* **POSCTL** — управление скоростями набора высоты, скоростью движения вперед/назад и вправо/влево, угловой скоростью по рысканью. Наиболее простой для полетов режим. Используется барометр, GPS, компьютерное зрение, другие датчики. * **POSCTL** (POSITION) — управление скоростями набора высоты, скоростью движения вперед/назад и вправо/влево, угловой скоростью по рысканью. Наиболее простой для полетов режим. Используется барометр, GPS, компьютерное зрение, другие датчики.
### Автоматический полет (AUTO) ### Автоматический полет (AUTO)

282
docs/network.md Normal file
View File

@@ -0,0 +1,282 @@
# Настройка Wi-Fi
Wi-Fi адаптер на Raspberry Pi имеет два основных режима работы:
1. **Режим клиента** RPi подключается к существующей Wi-Fi сети.
2. **Режим точки доступа** RPi создает Wi-Fi сеть, к которой вы можете подключиться.
При использовании [образа для RPi](microsd_images.md) по умолчанию Wi-Fi адаптер работает в режиме точки доступа.
## Инструкция для переключения адаптера в режим клиента
1\. Выключите службу `dnsmasq`.
```bash
sudo systemctl stop dnsmasq
sudo systemctl disable dnsmasq
```
2\. Включите получение IP адреса на беспроводном интерфейсе DHCP клиентом.
Для этого удалите следующие строки
```
interface wlan0
static ip_address=192.168.11.1/24
```
из файла `/etc/dhcpcd.conf` вручную или введите следующие команды.
```bash
sudo sed -i 's/interface wlan0//' /etc/dhcpcd.conf
sudo sed -i 's/static ip_address=192.168.11.1\/24//' /etc/dhcpcd.conf
```
3\. Настройте `wpa_supplicant` для подключения к существующей точке доступа.
```bash
cat << EOF | sudo tee /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=GB
network={
ssid="CLEVER"
psk="cleverwifi"
}
EOF
```
где `CLEVER` название сети, а `cleverwifi` пароль.
4\. Перезапустите службу `dhcpcd`.
```bash
sudo systemctl restart dhcpcd
```
## Инструкция для переключения адаптера в режим точки доступа
1\. Включите статический IP адрес на беспроводном интерфейсе.
Для этого добавьте следующие строки
```
interface wlan0
static ip_address=192.168.11.1/24
```
в файл `/etc/dhcpcd.conf` вручную или введите следующую команду
```bash
cat << EOF | sudo tee -a /etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.11.1/24
EOF
```
2\. Настроите wpa_supplicant на работу в режиме точки доступа.
```bash
cat << EOF | sudo tee /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=GB
network={
ssid="CLEVER-$(head -c 100 /dev/urandom | xxd -ps -c 100 | sed -e 's/[^0-9]//g' | cut -c 1-4)"
psk="cleverwifi"
mode=2
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
auth_alg=OPEN
}
EOF
```
3\. Перезагрузите службу `dhcpcd`.
```bash
sudo systemctl restart dhcpcd
```
4\. Включите службу `dnsmasq`.
```bash
sudo systemctl enable dnsmasq
sudo systemctl start dnsmasq
```
___
Ниже вы можете узнать больше о том, как устроена работа с сетью на RPi.
# Устройство сети RPi
Работа сети на образе **2017-11-29-raspbian-stretch-lite** поддерживается двумя предустановленными службами:
* **networking** — служба включает все сетевые интерфейсы в момент запуска [5].
* **dhcpcd** — служба обеспечивает настройку адресации и маршрутризации на интерфейсах, полученных динамически или указаных в файле настроек статически.
Для работы в режиме роутера (точки доступа) RPi необходим DHCP сервер. Он служит для автоматической выдачи настроек текущей сети подключившимся клиентам. В роли такого сервера может выступать `isc-dhcp-server` или `dnsmasq`.
## dhcpcd
Начиная с Raspbian Jesse настройки сети больше не задаются в файле `/etc/network/interfaces`. Теперь за выдачу адресации и настройку маршрутизации отвечает `dhcpcd` [4].
По умолчанию на всех интерфейсах включен dhcp-клиент. Настройки интерфейсов меняются в файле `/etc/dhcpcd.conf`. Для того, чтобы поднять точку доступа необходимо прописать статический ip-адрес. Для этого в конец файла необходимо добавить следующие строки:
```
interface wlan0
static ip_address=192.168.11.1/24
```
> **Note** Если интерфейс является беспроводным (wlan), то служба `dhcpcd` триггерит `wpa_supplicant` [13], который в свою очередь работает непосредственно с wifi-адаптером и переводит его в заданное состояние.
## wpa_supplicant
**wpa_supplicant** служба конфигурирует Wi-Fi адаптер. Служба `wpa_supplicant` работает не как самостоятельная (хотя как таковая существует), а запускается как дочерний процесс от `dhcpcd`.
Конфигурационный файл по умолчанию должен иметь путь `/etc/wpa_supplicant/wpa_supplicant.conf`.
Пример конфигурационного файла:
```
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=GB
network={
ssid=\"CLEVER-SMIRNOV\"
psk=\"cleverwifi\"
mode=2
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
auth_alg=OPEN
}
```
Внутри конфига указываются общие настройки `wpa_supplicant` и параметры для настройки адаптера. Также конфигурационный файл содержит секции `network` основные настройки Wi-Fi сети такие как SSID сети, пароль, режим работы адаптера. Таких блоков может быть несколько, но используется первый рабочий. Например, если вы указали в первом блоке подключение к некоторой недоступной сети, то адаптер будет настроен следующей удачной секцией, если такая есть. Подробнее о синтаксисе `wpa_supplicant.conf` [TODO WIKI].
### wpa_passphrase
`wpa_passphrase` утилита для создания секции `network`.
```bash
wpa_passphrase SSID PASSWORD
```
После выполнения команды скопируйте полученную секцию в ваш конфигурационный файл. Можно удалить закоментированное поле `psk` и оставить только поле с хешем пароля, либо наоборот.
```bash
network={
ssid="SSID"
#psk="PASSWORD"
psk=c2161655c6ba444d8df94cbbf4e9c5c4c61fc37702b9c66ed37aee1545a5a333
}
```
### Несколько Wi-Fi адаптеров
В системе может быть несколько Wi-Fi адаптеров. Если для них корректно подключены драйвера, то их можно увидеть вызвав `ifconfig` (например wlan0 и wlan1).
Если у вас несколько адаптеров, для всех будет использоваться одна и таже самая рабочая секция `network`. Это связано с тем, что для каждого интерфейса, `dhcpcd` отдельно создает по дочернему процессу `wpa_supplicant`, в котором выполняется один тот же код (т. к. конфиг один и тот же).
Для работы нескольких адаптеров с отдельными настройками для каждого, в стандартном вызываемом скрипте `dhcpcd` реализован механизм запуска разных конфигурационных скриптов. Для его использования необходимо переименовать стандартный файл конфига по следующему образцу: `wpa_supplicant-<имя интерфейса>.conf`, например `wpa_supplicant-wlan0.conf`.
Для применения настроек необходимо перезапустить родительский процесс - службу `dhcpcd`. Сделать это можно следующей командой:
```bash
sudo systemctl restart dhcpcd
```
## DHCP сервер
### dnsmasq-base
`dnsmasq-base` консольная утилита, не являющаяся службой, для использования dnsmasq как службы надо установить пакет `dnsmasq`.
```bash
sudo apt install dnsmasq-base
```
```bash
# Вызов dnsmasq-base
sudo dnsmasq --interface=wlan0 --address=/clever/coex/192.168.11.1 --no-daemon --dhcp-range=192.168.11.100,192.168.11.200,12h --no-hosts --filterwin2k --bogus-priv --domain-needed --quiet-dhcp6 --log-queries
# Подробнее о dnsmasq-base
dnsmasq --help
# или
man dnsmasq
```
### dnsmasq
```bash
sudo apt install dnsmasq
```
```bash
cat << EOF | sudo tee -a /etc/dnsmasq.conf
interface=wlan0
address=/clever/coex/192.168.11.1
dhcp-range=192.168.11.100,192.168.11.200,12h
no-hosts
filterwin2k
bogus-priv
domain-needed
quiet-dhcp6
EOF
```
### isc-dhcp-server
```bash
sudo apt install isc-dhcp-server
```
```bash
# https://www.shellhacks.com/ru/sed-find-replace-string-in-file/
sed -i 's/INTERFACESv4=\"\"/INTERFACESv4=\"wlan0\"/' /etc/default/isc-dhcp-server
```
```bash
cat << EOF | sudo tee /etc/dhcp/dhcpd.conf
subnet 192.168.11.0 netmask 255.255.255.0 {
range 192.168.11.11 192.168.11.254;
#option domain-name-servers 8.8.8.8;
#option domain-name "rpi.local";
option routers 192.168.11.1;
option broadcast-address 192.168.11.255;
default-lease-time 600;
max-lease-time 7200;
}
EOF
```
```bash
cat << EOF | sudo tee /etc/network/if-up.d/isc-dhcp-server && sudo chmod +x /etc/network/if-up.d/isc-dhcp-server
#!/bin/sh
if [ "\$IFACE" = "--all" ];
then sleep 10 && systemctl start isc-dhcp-server.service &
fi
EOF
```
## Ссылки
1. [habr.com: Linux WiFi из командной строки с wpa_supplicant](https://habr.com/post/315960/)
2. [wiki.archlinux.org: WPA supplicant (Русский)](https://wiki.archlinux.org/index.php/WPA_supplicant_(Русский))
3. [blog.hoxnox.com: WiFi access point with wpa_supplicant](http://blog.hoxnox.com/gentoo/wifi-hotspot.html)
4. [dmitrysnotes.ru: Raspberry Pi 3. Присвоение статического IP-адреса](http://dmitrysnotes.ru/raspberry-pi-3-prisvoenie-staticheskogo-ip-adresa)
5. [thegeekdiary.com: Linux OS Service network](https://www.thegeekdiary.com/linux-os-service-network/)
6. [frillip.com: USING YOUR NEW RASPBERRY PI 3 AS A WIFI ACCESS POINT WITH HOSTAPD](https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/) (также здесь есть инструкция по настройке форвардинга для использования RPi в качестве шлюза для выхода в интернет)
7. [habr.com: Настраиваем ddns-сервер на GNU/Linux Debian 6](https://habr.com/sandbox/30433/) (Хорошая статья по настройке ddns-сервера на основе `bind` и `isc-dhcp-server`)
8. [pro-gram.ru: Установка и настройка DHCP сервера на Ubuntu 16.04.](https://pro-gram.ru/dhcp-server-ubuntu.html) (Настройка isc-dhcp-server)
9. [expert-orda.ru: Настройка DHCP-сервера на Ubuntu](http://expert-orda.ru/posts/liuxnewbie/125--dhcp-ubuntu) (Настройка isc-dhcp-server)
10. [academicfox.com: Raspberry Pi беспроводная точка доступа (WiFi access point)](http://academicfox.com/raspberry-pi-besprovodnaya-tochka-dostupa-wifi-access-point/) (Настройка маршрутов, hostapd, isc-dhcp-server)
11. [weworkweplay.com: Automatically connect a Raspberry Pi to a Wifi network](http://weworkweplay.com/play/automatically-connect-a-raspberry-pi-to-a-wifi-network/) (Есть настройки для создания открытой точки доступа)
12. [wiki.archlinux.org: WPA supplicant](https://wiki.archlinux.org/index.php/WPA%20supplicant)
13. [wiki.archlinux.org: dhcpcd](https://wiki.archlinux.org/index.php/Dhcpcd#10-wpa_supplicant) (dhcpcd hook wpa_supplicant)

View File

@@ -1,16 +1,27 @@
Мобильный пульт Управление Клевером со смартфона
=== ===
Возможно управлять квадрокоптером в мобильного пульта через Wi-Fi. Он разработан в виде приложения для iOS и Android (TODO). Также существует упрощенная версия в виде [веб-страницы](#веб-версия). Для управления Клевером со смартфона через Wi-Fi необходимо установить приложение  [iOS](), Android (в разработке).
![](assets/IMG_4397.PNG) ![](assets/IMG_4397.PNG)
> **Warning** Мобильный пульт предназначен в первую очередь для полетов в помещении на дальность не более 10-15 м. Большое количество Wi-Fi сетей также может ухудшить отзывчивость и дальность пульта. > **Warning** Мобильный пульт предназначен в первую очередь для полетов в помещении на дальность не более 10-15 м. Большое количество Wi-Fi сетей также может ухудшить отзывчивость и дальность пульта.
Для включения бэкенда пульта, установите [образ Clever на RPi](microsd_images.md), а также убедитесь, что он включен в launch-файле Клевера (`~/catkin_ws/src/clever/clever/launch/clever.launch`): > **Info** Также управление со смартфона [доступно в мобильной версия приложения](https://docs.qgroundcontrol.com/en/SettingsView/VirtualJoystick.html) QGroundControl.
Настройка
---
> **Note** Мобильный пульт конфликтует с реальной аппаратурой радиоуправления. Во время использования мобильного пульта она должна быть выключена.
Установите [образ Clever на RPi](microsd_images.md), а также включите `rosbridge` и `rc` в launch-файле (`~/catkin_ws/src/clever/clever/launch/clever.launch`):
```xml ```xml
<arg name="rc" value="true"/> <arg name="rosbridge" default="true"/>
```
```xml
<arg name="rc" default="true"/>
``` ```
При изменении launch-файла необходимо перезапустить пакет `clever`: При изменении launch-файла необходимо перезапустить пакет `clever`:
@@ -21,19 +32,23 @@ sudo systemctl restart clever
Также необходимо убедиться, что PX4-параметр `COM_RC_IN_MODE` установлен в значение `0` (RC Transmitter). Также необходимо убедиться, что PX4-параметр `COM_RC_IN_MODE` установлен в значение `0` (RC Transmitter).
> **Note** Мобильный пульт конфликтует с реальной аппаратурой радиоуправления. Во время использования мобильного пульта она должны быть выключена. Дополнительные параметры:
Для управления коптером установите приложение на смартфон, подключитесь с Wi-Fi сети Клевера (`CLEVER-xxxx`), затем запустите приложение. * `COM_RC_LOSS_T` таймаут для определения потери сигнала пульта (мобильного или физического). Рекомендуется увеличение таймаута до нескольких секунд.
* `NAV_RCL_ACT` действие при потере сигнала пульта.
Стики на экране приложения работают также, как и реальные стики. Для арминга коптера подержите левый стик в правом нижнем углу на протяжении нескольких секунд. Для дизарминга – в левом нижнем углу. > **Note** Мобильный пульт конфликтует с реальной аппаратурой радиоуправления. Во время использования мобильного пульта она должна быть выключена.
Пульт отображает текущий [режим PX4](modes.md) а также уровень заряда батареи. При низком значении заряда батареи телефон будет вибрировать. Подключение
> **Note** Если интерфейс пульта отображает явно неправильное напряжение (напр. > 5 V), проверьте, что значение PX4-параметра `BAT_N_CELLS` соответствует реальному количество элементов батареи. Если отображаемое напряжение все равно неверно, откалибруйте батарею (TODO: ссылка).
> **Note** Если вместо режима PX4 отображается текст "DISCONNECTED FROM FCU", проверьте [подключение Raspberry Pi к PixHawk](connection.md).
Веб-версия
--- ---
TODO Подключите смартфон к [Wi-Fi](wifi.md) сети Клевера (`CLEVER-xxxx`). Приложение должно подключиться с коптеру автоматически. При успешном подключении должны отобразиться текущий [режим](modes.ms) и заряд батареи.
Стики на экране приложения работают так же, как и реальные стики. Для арма коптера подержите левый стик в правом нижнем углу на протяжении нескольких секунд. Для дизарма – в левом нижнем углу.
Неисправности
---
* Если интерфейс пульта отображает явно неправильное напряжение (напр. > 5 V), проверьте, что значение PX4-параметра `BAT_N_CELLS` соответствует реальному количество элементов батареи. Если отображаемое напряжение все равно неверно, откалибруйте батарею (TODO: ссылка).
* Если вместо режима PX4 отображается текст "DISCONNECTED FROM FCU", проверьте [подключение Raspberry Pi к PixHawk](connection.md).

View File

@@ -28,11 +28,11 @@
### Как держать паяльник? ### Как держать паяльник?
Паяльник можно держать только за ручку. Паяльник можно держать только за ручку.
Если кто-то утверждает обратное не верьте, вас вводят в заблуждение :) Если кто-то утверждает обратное - не верьте, вас вводят в заблуждение:)
![Паяльник состав](assets/solderConsist.jpg) ![Паяльник состав](assets/solderConsist.gif)
![Подробнее...->](tb.md) [Подробнее о технике безопасности при пайке](tb.md)

Some files were not shown because too many files have changed in this diff Show More