mirror of
https://github.com/CopterExpress/clover.git
synced 2026-06-01 15:39:32 +00:00
Compare commits
37 Commits
strict-war
...
vuepress
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72b343575f | ||
|
|
0849413fe2 | ||
|
|
2cab14c52f | ||
|
|
c20957cbf1 | ||
|
|
e9f892466f | ||
|
|
91061cc9f1 | ||
|
|
9db0c44177 | ||
|
|
5b3c3f0722 | ||
|
|
84b1318f3d | ||
|
|
955011e812 | ||
|
|
2561e8e6cb | ||
|
|
d1209fd064 | ||
|
|
e68fac8aad | ||
|
|
4f64fdf2e4 | ||
|
|
b77d4ed045 | ||
|
|
e2b8cb4be2 | ||
|
|
8db8075f15 | ||
|
|
578728b3a9 | ||
|
|
7154f5afc2 | ||
|
|
48fd45ea9a | ||
|
|
12ca9c0eb9 | ||
|
|
784ce35080 | ||
|
|
6c42c522ce | ||
|
|
b36d69b54f | ||
|
|
0056bb1810 | ||
|
|
37ec19a19f | ||
|
|
ea5151db51 | ||
|
|
bc032e5afb | ||
|
|
ed619935ce | ||
|
|
3b3b5b6a89 | ||
|
|
4190353569 | ||
|
|
7c2e020a89 | ||
|
|
6321ef8aa0 | ||
|
|
172890ed13 | ||
|
|
ae1e39dd82 | ||
|
|
241b766bad | ||
|
|
84bbe2e565 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -7,3 +7,6 @@ package-lock.json
|
|||||||
clover_blocks/programs/*.*
|
clover_blocks/programs/*.*
|
||||||
!clover_blocks/programs/examples/*
|
!clover_blocks/programs/examples/*
|
||||||
/.vscode/
|
/.vscode/
|
||||||
|
docs/.vuepress/.cache/
|
||||||
|
docs/.vuepress/.temp/
|
||||||
|
docs/.vuepress/dist
|
||||||
|
|||||||
83
docs/.vuepress/config.js
Normal file
83
docs/.vuepress/config.js
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
const sidebar = require('./sidebar');
|
||||||
|
|
||||||
|
const hostname = 'https://clover.coex.tech/';
|
||||||
|
const allowedTags = ['font', 'center', 'nobr']; // allow using some deprecated and non-standard html tags
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
lang: 'en-US',
|
||||||
|
title: 'Clover',
|
||||||
|
description: 'Clover Drone Kit',
|
||||||
|
// theme and its config
|
||||||
|
theme: '@vuepress/theme-default',
|
||||||
|
themeConfig: {
|
||||||
|
logo: 'clover-logo.png',
|
||||||
|
sidebar: {
|
||||||
|
'/ru/': sidebar.readSummary("./ru/SUMMARY.md"),
|
||||||
|
'/en/': sidebar.readSummary("./en/SUMMARY.md"),
|
||||||
|
},
|
||||||
|
sidebarDepth: 0,
|
||||||
|
locales: {
|
||||||
|
'/en/': {
|
||||||
|
selectLanguageName: 'English',
|
||||||
|
navbar: [
|
||||||
|
{ text: 'Official Site', link: 'https://coex.tech' },
|
||||||
|
{ text: 'Support Chat', link: 'https://t.me/COEXHelpdesk' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
'/ru/': {
|
||||||
|
selectLanguageName: 'Русский',
|
||||||
|
tip: 'СОВЕТ',
|
||||||
|
warning: 'ВНИМАНИЕ',
|
||||||
|
danger: 'ОПАСНО',
|
||||||
|
toggleDarkMode: 'Переключить темную тему',
|
||||||
|
navbar: [
|
||||||
|
{ text: 'Сайт', link: 'https://coex.tech' },
|
||||||
|
{ text: 'Чат поддержки', link: 'https://t.me/COEXHelpdesk' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
toggleSidebar: true,
|
||||||
|
repo: 'CopterExpress/clover',
|
||||||
|
docsBranch: 'master',
|
||||||
|
docsDir: 'docs',
|
||||||
|
lastUpdated: false,
|
||||||
|
contributors: false
|
||||||
|
},
|
||||||
|
pagePatterns: ['**/*.md', '!.vuepress', '!node_modules', '!ru/metodmaterials.md'],
|
||||||
|
locales: {
|
||||||
|
'/en/': {
|
||||||
|
lang: 'en',
|
||||||
|
title: 'Clover',
|
||||||
|
description: 'Clover Drone Kit'
|
||||||
|
},
|
||||||
|
'/ru/': {
|
||||||
|
lang: 'ru',
|
||||||
|
title: 'Клевер',
|
||||||
|
description: 'Конструктор квадрокоптера «Клевер»'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
markdown: {
|
||||||
|
code: {
|
||||||
|
lineNumbers: false
|
||||||
|
},
|
||||||
|
linkify: true,
|
||||||
|
},
|
||||||
|
extendsMarkdown(md) {
|
||||||
|
md.use(require('markdown-it-attrs')); // to use custom headers anchors
|
||||||
|
},
|
||||||
|
bundlerConfig: {
|
||||||
|
vuePluginOptions: {
|
||||||
|
template: {
|
||||||
|
compilerOptions: {
|
||||||
|
isCustomElement: tag => allowedTags.includes(tag)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
'@vuepress/plugin-search',
|
||||||
|
'vuepress-plugin-copy-code2',
|
||||||
|
['sitemap2', { hostname, excludeUrls: ['/', '/LANGS.html'] }],
|
||||||
|
require('./rich-quotes')
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
docs/.vuepress/public/clover-logo.png
Normal file
BIN
docs/.vuepress/public/clover-logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 110 KiB |
37
docs/.vuepress/rich-quotes.js
Normal file
37
docs/.vuepress/rich-quotes.js
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
// Plugin to convert GitBook rich quotes to custom containers
|
||||||
|
|
||||||
|
const types = {
|
||||||
|
info: 'tip',
|
||||||
|
note: 'tip',
|
||||||
|
tag: 'tip',
|
||||||
|
comment: 'tip',
|
||||||
|
hint: 'tip',
|
||||||
|
success: 'tip',
|
||||||
|
warning: 'warning',
|
||||||
|
caution: 'warning',
|
||||||
|
danger: 'danger',
|
||||||
|
quote: 'tip'
|
||||||
|
}
|
||||||
|
|
||||||
|
function replace(src) {
|
||||||
|
return src.replace(/^> \*\*(.*?)\*\* (.*\n(>.*\n)*)/gm, function (match, type, text) {
|
||||||
|
text = text.replace(/^>/gm, '');
|
||||||
|
return `::: ${types[type.toLowerCase()]}\n${text}\n:::`;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'vuepress-plugin-rich-quotes',
|
||||||
|
extendsMarkdown: (md) => {
|
||||||
|
var _render = md.render;
|
||||||
|
|
||||||
|
// TODO: a rough hack to replace rich quotes
|
||||||
|
// TODO: use proper plugin api
|
||||||
|
|
||||||
|
md.render = function(src, env) {
|
||||||
|
src = replace(src);
|
||||||
|
return _render.call(md, src, env);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
};
|
||||||
50
docs/.vuepress/sidebar.js
Normal file
50
docs/.vuepress/sidebar.js
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
const fs = require('fs')
|
||||||
|
|
||||||
|
const regex = /(\s*?)\*\s\[(.*?)\]\((.*?)\)/;
|
||||||
|
|
||||||
|
exports.readSummary = function (path) {
|
||||||
|
let sidebar = [];
|
||||||
|
let lines = fs.readFileSync(path).toString().split('\n');
|
||||||
|
let item = {};
|
||||||
|
|
||||||
|
for (let line of lines) {
|
||||||
|
if (line.startsWith('#')) continue;
|
||||||
|
if (!line.trim()) continue;
|
||||||
|
|
||||||
|
let match = regex.exec(line);
|
||||||
|
if (!match) {
|
||||||
|
console.log('cannot parse', line);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
level = match[1].length / 2;
|
||||||
|
text = match[2];
|
||||||
|
path = match[3].trim();
|
||||||
|
|
||||||
|
if (level == 0) {
|
||||||
|
if (item.path) {
|
||||||
|
// push new item
|
||||||
|
if (item.children) {
|
||||||
|
sidebar.push(item);
|
||||||
|
} else {
|
||||||
|
sidebar.push(item.path)
|
||||||
|
}
|
||||||
|
item = {};
|
||||||
|
}
|
||||||
|
item.text = text;
|
||||||
|
item.path = path;
|
||||||
|
item.collapsible = true;
|
||||||
|
|
||||||
|
} else if (level == 1 || level == 2) {
|
||||||
|
if (!item.children) {
|
||||||
|
item.children = [];
|
||||||
|
if (item.path) item.children.push(item.path);
|
||||||
|
}
|
||||||
|
item.children.push(path);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log('skip', text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return sidebar;
|
||||||
|
}
|
||||||
49
docs/.vuepress/styles/index.scss
Normal file
49
docs/.vuepress/styles/index.scss
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
.big-clover {
|
||||||
|
max-width: 80% !important;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* change image for dark theme */
|
||||||
|
html .big-clover.dark { display: none; }
|
||||||
|
html.dark .big-clover { display: none; }
|
||||||
|
html.dark .big-clover.dark { display: block; }
|
||||||
|
|
||||||
|
img.logo {
|
||||||
|
transform: scale(2.5) translateX(-5%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Centered images */
|
||||||
|
img.center {
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Images with border */
|
||||||
|
img.border {
|
||||||
|
border: 1px #e9e9e9 solid;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
html.dark img.border {
|
||||||
|
border: none;
|
||||||
|
background: #fffffa;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.versions td {
|
||||||
|
text-align: center;
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
table.versions .subversion {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.circle {
|
||||||
|
width: 0.8em;
|
||||||
|
height: 0.8em;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 0.5em;
|
||||||
|
}
|
||||||
4
docs/README.md
Normal file
4
docs/README.md
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# Languages
|
||||||
|
|
||||||
|
* [English](en/)
|
||||||
|
* [Русский](ru/)
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
# COEX Clover
|
# COEX Clover
|
||||||
|
|
||||||
<img class="center zoom big-clover" src="../assets/clover42-main.png" width="80%" alt="Clover 4.2">
|
<img class="big-clover light" src="../assets/clover42-main.png" alt="Clover 4.2">
|
||||||
|
<img class="big-clover dark" src="../assets/clover42-black.png" alt="Clover 4.2">
|
||||||
|
|
||||||
**Clover** is an educational kit of a programmable quadcopter that consists of popular open source components, and a set of necessary documentation and libraries for working with it.
|
**Clover** is an educational kit of a programmable quadcopter that consists of popular open source components, and a set of necessary documentation and libraries for working with it.
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
* [Power setup](power.md)
|
* [Power setup](power.md)
|
||||||
* [Failsafe configuration](failsafe.md)
|
* [Failsafe configuration](failsafe.md)
|
||||||
* [Manual flight](flight.md)
|
* [Manual flight](flight.md)
|
||||||
* [Basics](flight.md)
|
|
||||||
* [Exercises](flight_exercises.md)
|
* [Exercises](flight_exercises.md)
|
||||||
* [Working with Raspberry Pi](raspberry.md)
|
* [Working with Raspberry Pi](raspberry.md)
|
||||||
* [RPi Image](image.md)
|
* [RPi Image](image.md)
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ This feature allows getting rid of the system interface elements. Let's go ahead
|
|||||||
|
|
||||||
This is how the transmitter looks at this stage:
|
This is how the transmitter looks at this stage:
|
||||||
|
|
||||||
<img src="../assets/IMG_4397.PNG" width="50%">
|
<img src="../assets/IMG_4397.png" width="50%">
|
||||||
|
|
||||||
If you run your application, you will see that the sticks are not functioning. This is due to the fact that *JavaScript* is disabled in our page. To enable it, write the following code:
|
If you run your application, you will see that the sticks are not functioning. This is due to the fact that *JavaScript* is disabled in our page. To enable it, write the following code:
|
||||||
|
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ If the drone's altitude is not stable, try increasing the `MPC_Z_VEL_P` paramete
|
|||||||
|
|
||||||
## Placing markers on the ceiling
|
## Placing markers on the ceiling
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
In order to navigate using markers on the ceiling, mount the onboard camera so that it points up and [adjust the camera frame accordingly](camera_setup.md).
|
In order to navigate using markers on the ceiling, mount the onboard camera so that it points up and [adjust the camera frame accordingly](camera_setup.md).
|
||||||
|
|
||||||
|
|||||||
@@ -113,7 +113,3 @@ rospy.spin()
|
|||||||
```
|
```
|
||||||
|
|
||||||
Each message contains the marker ID, its corner points on the image and its position relative to the camera.
|
Each message contains the marker ID, its corner points on the image and its position relative to the camera.
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Suggested reading: [map-based navigation](aruco_map.md)
|
|
||||||
|
|||||||
@@ -341,7 +341,7 @@ should be increased up to 4 – 5.
|
|||||||
|
|
||||||
### ESC assembly
|
### ESC assembly
|
||||||
|
|
||||||
1. Stick the double-sided adhesive tape to the base of the ESC protective case 
|
1. Stick the double-sided adhesive tape to the base of the ESC protective case.
|
||||||
2. Put the ESCs into protective cases. Fasten the assembly to the motor mounts of the frame. 
|
2. Put the ESCs into protective cases. Fasten the assembly to the motor mounts of the frame. 
|
||||||
|
|
||||||
### Installation of guard
|
### Installation of guard
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ TODO
|
|||||||
|
|
||||||
Cut the remaining part of the clamp (cable tie) with scissors.
|
Cut the remaining part of the clamp (cable tie) with scissors.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Frame elements installation
|
## Frame elements installation
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ TODO
|
|||||||
3. Attach the assembled unit to the frame with M3x16 screws, complying with the layout.
|
3. Attach the assembled unit to the frame with M3x16 screws, complying with the layout.
|
||||||
4. Install the frame for the LED strip, using the slots in the leg holders.
|
4. Install the frame for the LED strip, using the slots in the leg holders.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## BEC voltage converter installation(to be soldered and tested)
|
## BEC voltage converter installation(to be soldered and tested)
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ TODO
|
|||||||
Black -> GND
|
Black -> GND
|
||||||
Blue -> Din
|
Blue -> Din
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 4 in 1 ESC board and the PDB power-board installation
|
## 4 in 1 ESC board and the PDB power-board installation
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ TODO
|
|||||||
3. Install the PDB power distribution board as shown in the picture (the XT60 connector should point to the tail of the drone).
|
3. Install the PDB power distribution board as shown in the picture (the XT60 connector should point to the tail of the drone).
|
||||||
4. Connect the wires of the PCB power supply board and ESC XT30 board.
|
4. Connect the wires of the PCB power supply board and ESC XT30 board.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Pairing the receiver and transmitter
|
## Pairing the receiver and transmitter
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ TODO
|
|||||||
* Remove the BIND connector from the receiver.
|
* Remove the BIND connector from the receiver.
|
||||||
* Disconnect the battery.
|
* Disconnect the battery.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> **Hint** If the remote cannot be powered on, or is blocked, see
|
> **Hint** If the remote cannot be powered on, or is blocked, see
|
||||||
article [remote faults](radioerrors.md).
|
article [remote faults](radioerrors.md).
|
||||||
@@ -145,7 +145,7 @@ article [remote faults](radioerrors.md).
|
|||||||
4. Check the motor rotation direction according to the scheme. Repeat for each motor. Thus, it will be clear which motor is controlled.
|
4. Check the motor rotation direction according to the scheme. Repeat for each motor. Thus, it will be clear which motor is controlled.
|
||||||
5. If you have to change the rotation direction, swap any two phase wires of the motor (needs re-connection).
|
5. If you have to change the rotation direction, swap any two phase wires of the motor (needs re-connection).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Installation and connection of the Pixracer flight controller
|
## Installation and connection of the Pixracer flight controller
|
||||||
|
|
||||||
@@ -162,7 +162,7 @@ article [remote faults](radioerrors.md).
|
|||||||
|
|
||||||
4. Connect the ribbon cable from the radio receiver to the RCIN connector in Pixracer.
|
4. Connect the ribbon cable from the radio receiver to the RCIN connector in Pixracer.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Raspberry installation
|
## Raspberry installation
|
||||||
|
|
||||||
@@ -186,7 +186,7 @@ article [remote faults](radioerrors.md).
|
|||||||
|
|
||||||
Use an M3x16 screw and an M3 nut
|
Use an M3x16 screw and an M3 nut
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Arduino and FlySky radio receiver installation
|
## Arduino and FlySky radio receiver installation
|
||||||
|
|
||||||
@@ -200,7 +200,7 @@ article [remote faults](radioerrors.md).
|
|||||||
black -> GND
|
black -> GND
|
||||||
orange, green -> currently not used. They are set to the unused pins of the radio receiver.
|
orange, green -> currently not used. They are set to the unused pins of the radio receiver.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## RPi camera installation
|
## RPi camera installation
|
||||||
|
|
||||||
@@ -213,7 +213,7 @@ article [remote faults](radioerrors.md).
|
|||||||
|
|
||||||
5. Install the legs into the mounts (4 pcs).
|
5. Install the legs into the mounts (4 pcs).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Installation of the remaining structural elements
|
## Installation of the remaining structural elements
|
||||||
|
|
||||||
@@ -223,13 +223,13 @@ article [remote faults](radioerrors.md).
|
|||||||
|
|
||||||
Secure the upper deck with M3x8 screws (4 pcs.)
|
Secure the upper deck with M3x8 screws (4 pcs.)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## USB connectors installation
|
## USB connectors installation
|
||||||
|
|
||||||
1. Connect Pixracer to Raspberry using the micro USB - USB cable.
|
1. Connect Pixracer to Raspberry using the micro USB - USB cable.
|
||||||
2. Connect Arduino to Raspberry using the micro USB - USB cable.
|
2. Connect Arduino to Raspberry using the micro USB - USB cable.
|
||||||
|
|
||||||
.
|
.
|
||||||
|
|
||||||
Read more about connection in [article](connection.md).
|
Read more about connection in [article](connection.md).
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ The rest of categories contains standard Blockly's blocks.
|
|||||||
|
|
||||||
### take_off
|
### take_off
|
||||||
|
|
||||||
<img src="../assets/blocks/take-off.png" srcset="../assets/blocks/take-off.png 2x">
|
<img src="../assets/blocks/take-off.png" srcset="@source/assets/blocks/take-off.png 2x">
|
||||||
|
|
||||||
Take off to specified altitude in meters. The altitude may be an arbitrary block, that returns a number.
|
Take off to specified altitude in meters. The altitude may be an arbitrary block, that returns a number.
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ The `wait` flag specifies, if the drone should wait until take off is complete,
|
|||||||
|
|
||||||
### navigate
|
### navigate
|
||||||
|
|
||||||
<img src="../assets/blocks/navigate.png" srcset="../assets/blocks/navigate.png 2x">
|
<img src="../assets/blocks/navigate.png" srcset="@source/assets/blocks/navigate.png 2x">
|
||||||
|
|
||||||
Navigate to specified point. Coordinates are specified in meters.
|
Navigate to specified point. Coordinates are specified in meters.
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ This block allows to specify the [coordinate frame](frames.md) of the target poi
|
|||||||
|
|
||||||
### land
|
### land
|
||||||
|
|
||||||
<img src="../assets/blocks/land.png" srcset="../assets/blocks/land.png 2x">
|
<img src="../assets/blocks/land.png" srcset="@source/assets/blocks/land.png 2x">
|
||||||
|
|
||||||
Land the drone.
|
Land the drone.
|
||||||
|
|
||||||
@@ -85,31 +85,31 @@ The `wait` flag specifies, if the drone should wait until landing is complete, b
|
|||||||
|
|
||||||
### wait
|
### wait
|
||||||
|
|
||||||
<img src="../assets/blocks/wait.png" srcset="../assets/blocks/wait.png 2x">
|
<img src="../assets/blocks/wait.png" srcset="@source/assets/blocks/wait.png 2x">
|
||||||
|
|
||||||
Wait specified time period in seconds. The time period may be an arbitrary block, that returns a number.
|
Wait specified time period in seconds. The time period may be an arbitrary block, that returns a number.
|
||||||
|
|
||||||
### wait_arrival
|
### wait_arrival
|
||||||
|
|
||||||
<img src="../assets/blocks/wait-arrival.png" srcset="../assets/blocks/wait-arrival.png 2x">
|
<img src="../assets/blocks/wait-arrival.png" srcset="@source/assets/blocks/wait-arrival.png 2x">
|
||||||
|
|
||||||
Wait, until the drone reaches [navigate](#navigate)-block's target point.
|
Wait, until the drone reaches [navigate](#navigate)-block's target point.
|
||||||
|
|
||||||
### get_position
|
### get_position
|
||||||
|
|
||||||
<img src="../assets/blocks/get-position.png" srcset="../assets/blocks/get-position.png 2x">
|
<img src="../assets/blocks/get-position.png" srcset="@source/assets/blocks/get-position.png 2x">
|
||||||
|
|
||||||
The block returns current position, velocity or yaw angle of the drone relative to the specified [coordinate frame](#relative_to).
|
The block returns current position, velocity or yaw angle of the drone relative to the specified [coordinate frame](#relative_to).
|
||||||
|
|
||||||
### set_effect
|
### set_effect
|
||||||
|
|
||||||
<img src="../assets/blocks/set-effect.png" srcset="../assets/blocks/set-effect.png 2x">
|
<img src="../assets/blocks/set-effect.png" srcset="@source/assets/blocks/set-effect.png 2x">
|
||||||
|
|
||||||
The block allows to set animations to LED strip, similarly to [`set_effect`](leds.md#set_effect) ROS-service.
|
The block allows to set animations to LED strip, similarly to [`set_effect`](leds.md#set_effect) ROS-service.
|
||||||
|
|
||||||
Example of using the block with a random color (colors-related blocks are located in *Colour* category):
|
Example of using the block with a random color (colors-related blocks are located in *Colour* category):
|
||||||
|
|
||||||
<img src="../assets/blocks/random-color.png" srcset="../assets/blocks/random-color.png 2x">
|
<img src="../assets/blocks/random-color.png" srcset="@source/assets/blocks/random-color.png 2x">
|
||||||
|
|
||||||
### Work with GPIO {#GPIO}
|
### Work with GPIO {#GPIO}
|
||||||
|
|
||||||
|
|||||||
@@ -51,5 +51,3 @@ Read more in the PX4 docs: https://docs.px4.io/master/en/config/accelerometer.ht
|
|||||||
5. Wait for the calibration to finish.
|
5. Wait for the calibration to finish.
|
||||||
|
|
||||||
Read more in the PX4 docs: https://docs.px4.io/master/en/config/level_horizon_calibration.html.
|
Read more in the PX4 docs: https://docs.px4.io/master/en/config/level_horizon_calibration.html.
|
||||||
|
|
||||||
**Next**: [RC setup](radio.md).
|
|
||||||
|
|||||||
@@ -50,5 +50,3 @@ In order to connect to a local or a remote [SITL](sitl.md) instance set the `fcu
|
|||||||
<arg name="fcu_conn" default="udp"/>
|
<arg name="fcu_conn" default="udp"/>
|
||||||
<arg name="fcu_ip" default="127.0.0.1"/>
|
<arg name="fcu_ip" default="127.0.0.1"/>
|
||||||
```
|
```
|
||||||
|
|
||||||
**Next**: [Using QGroundControl over Wi-Fi](gcs_bridge.md)
|
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ People strive to teach artificial intelligence everything they can do themselves
|
|||||||
|
|
||||||
## Models and assembly
|
## Models and assembly
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/full_holder.png" width="300" class="zoom">
|
<img class="center zoom" src="../assets/ddrone/full_holder.png" width="300">
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/full_holder_in_real.jpg" width="300" class="zoom">
|
<img class="center zoom" src="../assets/ddrone/full_holder_in_real.jpg" width="300">
|
||||||
|
|
||||||
To complete the project you need to have in stock:
|
To complete the project you need to have in stock:
|
||||||
|
|
||||||
@@ -43,9 +43,9 @@ If the diameter of the can is less than the diameter of the holder, we use the p
|
|||||||
|
|
||||||
**Pressing mechanism.** To push the valve, we will use a screw drive with a fixed nut. A bar with holes will be attached to the servo, which will include the racks attached to the nut. This helps the servo to move only on one axis, up and down. We also modeled the cap for the spray can button, since the surface of the nozzle is uneven.
|
**Pressing mechanism.** To push the valve, we will use a screw drive with a fixed nut. A bar with holes will be attached to the servo, which will include the racks attached to the nut. This helps the servo to move only on one axis, up and down. We also modeled the cap for the spray can button, since the surface of the nozzle is uneven.
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/pressing_mechanism.png" width="300" class="zoom">
|
<img class="center zoom" src="../assets/ddrone/pressing_mechanism.png" width="300">
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/pressing_mechanism_in_real.jpg" width="300" class="zoom">
|
<img class="center zoom" src="../assets/ddrone/pressing_mechanism_in_real.jpg" width="300">
|
||||||
|
|
||||||
## Before launching
|
## Before launching
|
||||||
|
|
||||||
@@ -81,11 +81,11 @@ Now to open the web interface, click on the link [http://192.168.11.1/clover/dro
|
|||||||
|
|
||||||
Our drone is launched via [website](https://perizatkurmanbaeva.github.io/visual_ddrone). The web interface allows you to draw and encode what you draw in G-code. The coordinate data will be transmitted for further processing and execution by the copter.
|
Our drone is launched via [website](https://perizatkurmanbaeva.github.io/visual_ddrone). The web interface allows you to draw and encode what you draw in G-code. The coordinate data will be transmitted for further processing and execution by the copter.
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/screen_2.png" width="600" class="zoom">
|
<img class="center zoom" src="../assets/ddrone/screen_2.png" width="600">
|
||||||
|
|
||||||
We pick the web interface to control the copter because it is easier for the user.
|
We pick the web interface to control the copter because it is easier for the user.
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/instruction.png" width="300" class="zoom">
|
<img class="center zoom" src="../assets/ddrone/instruction.png" width="300">
|
||||||
|
|
||||||
## Flights
|
## Flights
|
||||||
|
|
||||||
|
|||||||
@@ -106,5 +106,3 @@ When the *Kill Switch* is activated, no control signals are sent to the motors a
|
|||||||
> **Caution** Be careful, *Kill Switch* does not put the copter into *Disarmed* state!
|
> **Caution** Be careful, *Kill Switch* does not put the copter into *Disarmed* state!
|
||||||
|
|
||||||
Before disabling the *Kill Switch*, make sure the throttle stick is its down position and the aircraft is in *Disarmed* state. If the throttle stick is not in the lower position, when the *Kill Switch* is turned off, a signal corresponding to the stick position will be sent to the motors, which will lead your copter to jerk.
|
Before disabling the *Kill Switch*, make sure the throttle stick is its down position and the aircraft is in *Disarmed* state. If the throttle stick is not in the lower position, when the *Kill Switch* is turned off, a signal corresponding to the stick position will be sent to the motors, which will lead your copter to jerk.
|
||||||
|
|
||||||
**Next**: [Drone control exercises](flight_exercises.md).
|
|
||||||
|
|||||||
@@ -67,5 +67,3 @@ Change parameter `gcs_bridge` in the launch file:
|
|||||||
```
|
```
|
||||||
|
|
||||||
After opening the QGroundControl application, the connection should be established automatically.
|
After opening the QGroundControl application, the connection should be established automatically.
|
||||||
|
|
||||||
**Next**: [Remote access using SSH](ssh.md)
|
|
||||||
|
|||||||
@@ -43,14 +43,14 @@ After printing the first version of the frame we discovered the following proble
|
|||||||
|
|
||||||
To conquer those problems we made several changes. We increased the minimal thickness for the generated structures and generated a new model. We changed the settings in the slicer so that the support structure could be removed easier as well as changed the infill structure. Finally we changed the filament and increased the printing temperature. Further we concluded that printing with a water dissolvable support structure would be optimal, however as of right now we don’t have access to a printer capable of that.
|
To conquer those problems we made several changes. We increased the minimal thickness for the generated structures and generated a new model. We changed the settings in the slicer so that the support structure could be removed easier as well as changed the infill structure. Finally we changed the filament and increased the printing temperature. Further we concluded that printing with a water dissolvable support structure would be optimal, however as of right now we don’t have access to a printer capable of that.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
#### Prototype 2
|
#### Prototype 2
|
||||||
|
|
||||||
This prototype took 48 hours of printing and used 277 grams of filament including 100 grams for the support. Installation of the components is very easy as no other tools than a screwdriver are needed. This prototype was the first to take flight in January 2021. Please see [this](https://youtu.be/M4f8_JmJADM) video.
|
This prototype took 48 hours of printing and used 277 grams of filament including 100 grams for the support. Installation of the components is very easy as no other tools than a screwdriver are needed. This prototype was the first to take flight in January 2021. Please see [this](https://youtu.be/M4f8_JmJADM) video.
|
||||||
|
|
||||||
<p float="left">
|
<p float="left">
|
||||||
<img src="../assets/generative-design-frame/p21.JPG" width="32%" class="zoom"/>
|
<img src="../assets/generative-design-frame/p21.jpg" width="32%" class="zoom"/>
|
||||||
<img src="../assets/generative-design-frame/p22.jpg" width="32%" class="zoom"/>
|
<img src="../assets/generative-design-frame/p22.jpg" width="32%" class="zoom"/>
|
||||||
<img src="../assets/generative-design-frame/p23.jpg" width="32%" class="zoom"/>
|
<img src="../assets/generative-design-frame/p23.jpg" width="32%" class="zoom"/>
|
||||||
</p>
|
</p>
|
||||||
@@ -73,7 +73,7 @@ Videos:
|
|||||||
|
|
||||||
In this final prototype we have changed the preserved geometry on the bottom to form a rectangle for added stability. We have also changed some of the forces on the points we observed breakings in our previous tests. We have also updated the prop guard to make it more stable and increased the area around the screws, so it would break harder. The frame without the prop guard weighs only 150g making it significantly lighter than the default frame.
|
In this final prototype we have changed the preserved geometry on the bottom to form a rectangle for added stability. We have also changed some of the forces on the points we observed breakings in our previous tests. We have also updated the prop guard to make it more stable and increased the area around the screws, so it would break harder. The frame without the prop guard weighs only 150g making it significantly lighter than the default frame.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Benefits
|
### Benefits
|
||||||
|
|
||||||
|
|||||||
@@ -15,5 +15,3 @@ The RPi image for Clover contains all the necessary software for working with Cl
|
|||||||
<img src="../assets/etcher.png" class="zoom">
|
<img src="../assets/etcher.png" class="zoom">
|
||||||
|
|
||||||
After flashing the image on the MicroSD-card, you can [connect to the Clover over Wi-Fi](wifi.md), use [wireless connection in QGroundControl](gcs_bridge.md), gain access to the Raspberry [over SSH](ssh.md) and use all the other features.
|
After flashing the image on the MicroSD-card, you can [connect to the Clover over Wi-Fi](wifi.md), use [wireless connection in QGroundControl](gcs_bridge.md), gain access to the Raspberry [over SSH](ssh.md) and use all the other features.
|
||||||
|
|
||||||
**Next:** [Connecting over Wi-Fi](wifi.md).
|
|
||||||
|
|||||||
@@ -56,13 +56,13 @@
|
|||||||
12. Install the assembled grip onto the aircraft from below.
|
12. Install the assembled grip onto the aircraft from below.
|
||||||
|
|
||||||
<div class="image-group">
|
<div class="image-group">
|
||||||
|
<img src="../assets/mechanical_grip/mech_grip_15.png" width=300 class="zoom border">
|
||||||
<img src="../assets/mechanical_grip/mech_grip_16.png" width=300 class="zoom border">
|
<img src="../assets/mechanical_grip/mech_grip_16.png" width=300 class="zoom border">
|
||||||
<img src="../assets/mechanical_grip/mech_grip_17.png" width=300 class="zoom border">
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
13. Insert the servo cable into the *AUX* 1-2 output on the flight controller.
|
13. Insert the servo cable into the *AUX* 1-2 output on the flight controller.
|
||||||
|
|
||||||
<img src="../assets/mechanical_grip/mech_grip_18.png" width=300 class="zoom border center">
|
<img src="../assets/mechanical_grip/mech_grip_17.png" width=300 class="zoom border center">
|
||||||
|
|
||||||
14. Go to the *Radio* tab to control capture with the remote control.
|
14. Go to the *Radio* tab to control capture with the remote control.
|
||||||
15. In the *AUX 1/2 Passthrough RC channel* parameter, select the desired channel.
|
15. In the *AUX 1/2 Passthrough RC channel* parameter, select the desired channel.
|
||||||
|
|||||||
@@ -46,5 +46,3 @@ In autonomous flight modes the quadcopter ignores the control signals from the t
|
|||||||
* **AUTO.LAND** – the copter lands at the current position.
|
* **AUTO.LAND** – the copter lands at the current position.
|
||||||
|
|
||||||
Additional information: https://dev.px4.io/en/concept/flight_modes.html.
|
Additional information: https://dev.px4.io/en/concept/flight_modes.html.
|
||||||
|
|
||||||
**Next**: [Power setup](power.md).
|
|
||||||
|
|||||||
@@ -32,5 +32,3 @@ Further reading: https://docs.qgroundcontrol.com/en/SetupView/Power.html.
|
|||||||
<img src="../assets/qgc-power.png" class="zoom">
|
<img src="../assets/qgc-power.png" class="zoom">
|
||||||
|
|
||||||
Further reading: https://docs.px4.io/master/en/advanced_config/esc_calibration.html.
|
Further reading: https://docs.px4.io/master/en/advanced_config/esc_calibration.html.
|
||||||
|
|
||||||
**Next**: [Failsafe configuration](failsafe.md)
|
|
||||||
|
|||||||
@@ -36,5 +36,3 @@ Before connecting and calibrating the RC, make sure that:
|
|||||||
8. When you get the *"All settings have been captured. Click Next to write the new parameters to your board"*, press *Next*.
|
8. When you get the *"All settings have been captured. Click Next to write the new parameters to your board"*, press *Next*.
|
||||||
|
|
||||||
Further reading: https://docs.qgroundcontrol.com/en/SetupView/Radio.html
|
Further reading: https://docs.qgroundcontrol.com/en/SetupView/Radio.html
|
||||||
|
|
||||||
**Next**: [Flight modes](modes.md).
|
|
||||||
|
|||||||
@@ -15,5 +15,3 @@ Technical specifications:
|
|||||||
* An HDMI port.
|
* An HDMI port.
|
||||||
|
|
||||||
Raspberry Pi is connected to the flight controller in the Clover kit and is used as a companion computer. It can be used to [connect to the drone over Wi-Fi](wifi.md), perform autonomous flights, access peripherals and much more.
|
Raspberry Pi is connected to the flight controller in the Clover kit and is used as a companion computer. It can be used to [connect to the drone over Wi-Fi](wifi.md), perform autonomous flights, access peripherals and much more.
|
||||||
|
|
||||||
**Next**: [Raspberry Pi image](image.md)
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Controlling Clover from a smartphone
|
|||||||
|
|
||||||
To control Clover from a smartphone via Wi-Fi, you have to install the appropriate application – [iOS](https://itunes.apple.com/ru/app/clever-rc/id1396166572?mt=8), Android (https://play.google.com/store/apps/details?id=express.copter.cleverrc).
|
To control Clover from a smartphone via Wi-Fi, you have to install the appropriate application – [iOS](https://itunes.apple.com/ru/app/clever-rc/id1396166572?mt=8), Android (https://play.google.com/store/apps/details?id=express.copter.cleverrc).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> **Warning** The mobile transmitter is mainly intended for indoor flights to the range not exceeding 10-15 m. Many Wi-Fi networks may also impair responsiveness and the range of the transmitter.
|
> **Warning** The mobile transmitter is mainly intended for indoor flights to the range not exceeding 10-15 m. Many Wi-Fi networks may also impair responsiveness and the range of the transmitter.
|
||||||
|
|
||||||
|
|||||||
@@ -66,8 +66,9 @@ Connect your receiver to the RC IN port on your flight controller:
|
|||||||
<img src="../assets/flysky_a8s/14_coexpix_rcin.png" width=300 class="zoom border center" alt="coex pix connection">
|
<img src="../assets/flysky_a8s/14_coexpix_rcin.png" width=300 class="zoom border center" alt="coex pix connection">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
> **Hint** Double check that you're using the RC IN port on the COEX Pix:
|
Double check that you're using the RC IN port on the COEX Pix:
|
||||||
<img src="../assets/coexpix-bottom.jpg" width=300 class="zoom border center" alt="coex pix pinout">
|
|
||||||
|
<img src="../assets/coex_pix/coexpix-bottom.jpg" width=300 class="zoom border center" alt="coex pix pinout">
|
||||||
|
|
||||||
## Binding your transmitter {#rc_bind}
|
## Binding your transmitter {#rc_bind}
|
||||||
|
|
||||||
|
|||||||
@@ -115,23 +115,23 @@ After finishing step 4, at section Installing guard of Clover 4.2 assembly.
|
|||||||
|
|
||||||
1. Install the Lower Tank Holders to top Deck mount and fix with the M3x8 screws.
|
1. Install the Lower Tank Holders to top Deck mount and fix with the M3x8 screws.
|
||||||
|
|
||||||
<img src="../assets/seeding_drone/mechanismpictures/1.PNG" width="400px" class="center"/>
|
<img src="../assets/seeding_drone/mechanismpictures/1.png" width="400px" class="center"/>
|
||||||
|
|
||||||
2. Install Nylon rack(40 mm) to 4 sides of the Deck mount.
|
2. Install Nylon rack(40 mm) to 4 sides of the Deck mount.
|
||||||
|
|
||||||
<img src="../assets/seeding_drone/mechanismpictures/2.PNG" width="400px" class="center"/>
|
<img src="../assets/seeding_drone/mechanismpictures/2.png" width="400px" class="center"/>
|
||||||
|
|
||||||
3. Install the Grab deck and fix with the M3x8 screws.
|
3. Install the Grab deck and fix with the M3x8 screws.
|
||||||
|
|
||||||
<img src="../assets/seeding_drone/mechanismpictures/3.PNG" width="400px" class="center"/>
|
<img src="../assets/seeding_drone/mechanismpictures/3.png" width="400px" class="center"/>
|
||||||
|
|
||||||
4. Install the Upper Tank Holders to top Grab mount and fix with the M3x8 screws.
|
4. Install the Upper Tank Holders to top Grab mount and fix with the M3x8 screws.
|
||||||
|
|
||||||
<img src="../assets/seeding_drone/mechanismpictures/4.PNG" width="400px" class="center"/>
|
<img src="../assets/seeding_drone/mechanismpictures/4.png" width="400px" class="center"/>
|
||||||
|
|
||||||
5. Connect the Tanks carefully to Tank Holders.
|
5. Connect the Tanks carefully to Tank Holders.
|
||||||
|
|
||||||
<img src="../assets/seeding_drone/mechanismpictures/5.PNG" width="400px" class="center"/>
|
<img src="../assets/seeding_drone/mechanismpictures/5.png" width="400px" class="center"/>
|
||||||
|
|
||||||
6. Connect SG90 servo motors to Tank using zip tie.
|
6. Connect SG90 servo motors to Tank using zip tie.
|
||||||
|
|
||||||
|
|||||||
@@ -124,5 +124,3 @@ Press the *Save* button to save the changed value to the flight controller. Chan
|
|||||||
|
|
||||||
1. Set `CBRK_USB_CHK` to 197848 to allow flights with the USB cable connected.
|
1. Set `CBRK_USB_CHK` to 197848 to allow flights with the USB cable connected.
|
||||||
2. Disable safety switch check: `CBRK_IO_SAFETY` = 22027.
|
2. Disable safety switch check: `CBRK_IO_SAFETY` = 22027.
|
||||||
|
|
||||||
**Next**: [Sensor calibration](calibration.md).
|
|
||||||
|
|||||||
@@ -25,5 +25,3 @@ Web access
|
|||||||
Starting with version 0.11.4 [of the image](image.md), access to the shell is also available via a web browser (using [Butterfly](https://github.com/paradoxxxzero/butterfly)). To gain access, open web page http://192.168.11.1, and select link *Open web terminal*:
|
Starting with version 0.11.4 [of the image](image.md), access to the shell is also available via a web browser (using [Butterfly](https://github.com/paradoxxxzero/butterfly)). To gain access, open web page http://192.168.11.1, and select link *Open web terminal*:
|
||||||
|
|
||||||
<img src="../assets/butterfly.png">
|
<img src="../assets/butterfly.png">
|
||||||
|
|
||||||
**Next**: [Command-line interface](cli.md)
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Using a multimeter, check the absence of a short circuit (check the loop):
|
|||||||
* Test the multimeter by shorting the probes. A unit that operated properly makes a distinctive sound.
|
* Test the multimeter by shorting the probes. A unit that operated properly makes a distinctive sound.
|
||||||
* The red probe is connected to the “+ ”pin, the black probe — to the “-” / ”GND” pin. If the circuit is short, a sound is heard.
|
* The red probe is connected to the “+ ”pin, the black probe — to the “-” / ”GND” pin. If the circuit is short, a sound is heard.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
1\. Check OPEN CONDITION of the following circuits (absence of the multimeter sound signal):
|
1\. Check OPEN CONDITION of the following circuits (absence of the multimeter sound signal):
|
||||||
|
|
||||||
|
|||||||
@@ -19,5 +19,3 @@ To edit Wi-Fi settings, or to obtain more detailed information about the network
|
|||||||
After connecting to Clover Wi-Fi, open http://192.168.11.1 in you web browser. It contains all the basic web tools of Clover: viewing image topics, web terminal (Butterfly), and the full copy of this documentation.
|
After connecting to Clover Wi-Fi, open http://192.168.11.1 in you web browser. It contains all the basic web tools of Clover: viewing image topics, web terminal (Butterfly), and the full copy of this documentation.
|
||||||
|
|
||||||
<img src="../assets/web.png" alt="Clover Web Interface" class="zoom">
|
<img src="../assets/web.png" alt="Clover Web Interface" class="zoom">
|
||||||
|
|
||||||
**Next**: [Connecting Raspberry Pi to the flight controller](connection.md).
|
|
||||||
|
|||||||
14
docs/package.json
Normal file
14
docs/package.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"devDependencies": {
|
||||||
|
"@vuepress/plugin-search": "^2.0.0-beta.38",
|
||||||
|
"glob": "^7.2.0",
|
||||||
|
"markdown-it-attrs": "^4.1.3",
|
||||||
|
"vuepress": "^2.0.0-beta.38",
|
||||||
|
"vuepress-plugin-copy-code2": "^2.0.0-beta.36",
|
||||||
|
"vuepress-plugin-sitemap2": "^2.0.0-beta.45"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vuepress dev .",
|
||||||
|
"build": "vuepress build ."
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Клевер
|
# Клевер
|
||||||
|
|
||||||
<img class="center zoom big-clover" src="../assets/clover42-main.png" width="80%" alt="Клевер 4.2">
|
<img class="center zoom big-clover" src="../assets/clover42-main.png" _width="80%" alt="Клевер 4.2">
|
||||||
|
|
||||||
**«Клевер»** — это учебный конструктор программируемого квадрокоптера, состоящего из популярных открытых компонентов, а также набор необходимой документации и библиотек для работы с ним.
|
**«Клевер»** — это учебный конструктор программируемого квадрокоптера, состоящего из популярных открытых компонентов, а также набор необходимой документации и библиотек для работы с ним.
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
* [Установка на компьютеры c M1](simulation_m1.md)
|
* [Установка на компьютеры c M1](simulation_m1.md)
|
||||||
* [ROS](ros.md)
|
* [ROS](ros.md)
|
||||||
* [MAVROS](mavros.md)
|
* [MAVROS](mavros.md)
|
||||||
* [Дополнительные материалы](supplementary.md)
|
* [Дополнительно](supplementary.md)
|
||||||
* [COEX Pix](coex_pix.md)
|
* [COEX Pix](coex_pix.md)
|
||||||
* [COEX PDB](coex_pdb.md)
|
* [COEX PDB](coex_pdb.md)
|
||||||
* [COEX GPS](coex_gps.md)
|
* [COEX GPS](coex_gps.md)
|
||||||
@@ -118,7 +118,7 @@
|
|||||||
* [CopterHack-2017](copterhack2017.md)
|
* [CopterHack-2017](copterhack2017.md)
|
||||||
* [Конкурс видео](video_contest.md)
|
* [Конкурс видео](video_contest.md)
|
||||||
* [Образовательные конкурсы](educational_contests.md)
|
* [Образовательные конкурсы](educational_contests.md)
|
||||||
* [Проекты на базе Клевера](projects.md)
|
* [Проекты](projects.md)
|
||||||
* [Контроль соблюдения ПДД на выделенной полосе с дроном](lane_control.md)
|
* [Контроль соблюдения ПДД на выделенной полосе с дроном](lane_control.md)
|
||||||
* [Система автоматической посадки (AMLS)](amls.md)
|
* [Система автоматической посадки (AMLS)](amls.md)
|
||||||
* [Разработка системы для управления БПЛА с помощью шлема виртуальной реальности](remote-control-with-oculusvr.md)
|
* [Разработка системы для управления БПЛА с помощью шлема виртуальной реальности](remote-control-with-oculusvr.md)
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ private fun fullScreenCall() {
|
|||||||
|
|
||||||
Вот так выглядит пульт на этом этапе:
|
Вот так выглядит пульт на этом этапе:
|
||||||
|
|
||||||
<img src="../assets/IMG_4397.PNG" width="50%">
|
<img src="../assets/IMG_4397.png" width="50%">
|
||||||
|
|
||||||
Если вы запустите приложение, то заметите что стики не работают. Это происходит по тому, что на нашей странице отключен *JavaScript*. чтобы его включить надо прописать следующее:
|
Если вы запустите приложение, то заметите что стики не работают. Это происходит по тому, что на нашей странице отключен *JavaScript*. чтобы его включить надо прописать следующее:
|
||||||
|
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ navigate(frame_id='aruco_5', x=0, y=0, z=1)
|
|||||||
|
|
||||||
## Расположение маркеров на потолке
|
## Расположение маркеров на потолке
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Для навигации по маркерам, расположенным на потолке, необходимо поставить основную камеру так, чтобы она смотрела вверх и [установить соответствующий фрейм камеры](camera_setup.md#frame).
|
Для навигации по маркерам, расположенным на потолке, необходимо поставить основную камеру так, чтобы она смотрела вверх и [установить соответствующий фрейм камеры](camera_setup.md#frame).
|
||||||
|
|
||||||
|
|||||||
@@ -125,7 +125,3 @@ rospy.spin()
|
|||||||
```
|
```
|
||||||
|
|
||||||
Сообщения будут содержать ID маркера, его угловые точки на изображении и его позицию (относительно камеры).
|
Сообщения будут содержать ID маркера, его угловые точки на изображении и его позицию (относительно камеры).
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
См. далее: [навигация по картам маркеров](aruco_map.md).
|
|
||||||
|
|||||||
@@ -4,22 +4,22 @@
|
|||||||
|
|
||||||
Начиная с образа версии *0.16* изменился подход к созданию карт маркеров: маркеры больше не привязаны к сетке и каждый из них теперь можно повернуть на любой угол вокруг всех трёх осей. Вместе с этим изменился и способ задания карт маркеров. Теперь карта загружается из текстового файла (подробнее в статье [**Навигация по картам ArUco-маркеров**](aruco_map.md)). Для упрощения процесса создания текстового файла был создан [*конструктор полей*](https://aruco.tenessinum.ru/).
|
Начиная с образа версии *0.16* изменился подход к созданию карт маркеров: маркеры больше не привязаны к сетке и каждый из них теперь можно повернуть на любой угол вокруг всех трёх осей. Вместе с этим изменился и способ задания карт маркеров. Теперь карта загружается из текстового файла (подробнее в статье [**Навигация по картам ArUco-маркеров**](aruco_map.md)). Для упрощения процесса создания текстового файла был создан [*конструктор полей*](https://aruco.tenessinum.ru/).
|
||||||
|
|
||||||
<img alt="" src="../assets/arucogenmap.PNG"/>
|
<img alt="" src="../assets/arucogenmap.png"/>
|
||||||
|
|
||||||
## Создание поля
|
## Создание поля
|
||||||
|
|
||||||
<div style="display: flex; flex-direction: row"><img src="../assets/fieldsetup.PNG" alt=""><div style="padding-left: 20px">Перед началом работы надо задать размеры поля. Оно нужно только для удобства. Для перемещения по "полотну" используйте тачпад или колёсико мыши для перемещения по карте. При использовании мыши зажмите Shift для перемещения в горизонтальном направлении и Ctrl для увеличения/уменьшения поля.</div></div>
|
<div style="display: flex; flex-direction: row"><img src="../assets/fieldsetup.png" alt=""><div style="padding-left: 20px">Перед началом работы надо задать размеры поля. Оно нужно только для удобства. Для перемещения по "полотну" используйте тачпад или колёсико мыши для перемещения по карте. При использовании мыши зажмите Shift для перемещения в горизонтальном направлении и Ctrl для увеличения/уменьшения поля.</div></div>
|
||||||
|
|
||||||
## Инструмент творения
|
## Инструмент творения
|
||||||
|
|
||||||
<div style="display: flex; flex-direction: row; justify-content: flex-end;"><div style="padding: 20px">Нажав на плюсик в левом углу экрана откроется меню в котором можно создать какой-либо элемент.
|
<div style="display: flex; flex-direction: row; justify-content: flex-end;"><div style="padding: 20px">Нажав на плюсик в левом углу экрана откроется меню в котором можно создать какой-либо элемент.
|
||||||
<ui>
|
<ul>
|
||||||
<li><strong>Одна метка</strong> - просто одинокая метка в поле</li>
|
<li><strong>Одна метка</strong> - просто одинокая метка в поле</li>
|
||||||
<li><strong>Несколько меток</strong> - группа меток выстроенная в сетку</li>
|
<li><strong>Несколько меток</strong> - группа меток выстроенная в сетку</li>
|
||||||
<li><strong>Сетка - инструмент</strong> к которому можно привязывать метки</li>
|
<li><strong>Сетка - инструмент</strong> к которому можно привязывать метки</li>
|
||||||
</ui></div><img src="../assets/tvorec.PNG"></div>
|
</ul></div><img src="../assets/tvorec.png"></div>
|
||||||
|
|
||||||
## Экспорт
|
## Экспорт
|
||||||
|
|
||||||
Карту можно экспортировать в двух форматах: ***txt*** (для Клевера) и ***svg*** (для печати)
|
Карту можно экспортировать в двух форматах: ***txt*** (для Клевера) и ***svg*** (для печати)
|
||||||
<img style="margin: 10px;" src="../assets/expotivka.PNG" alt=""/>
|
<img style="margin: 10px;" src="../assets/expotivka.png" alt=""/>
|
||||||
|
|||||||
@@ -339,7 +339,7 @@
|
|||||||
|
|
||||||
### Сборка регуляторов
|
### Сборка регуляторов
|
||||||
|
|
||||||
1. Клеим 2х сторонний скотч на основание защитного бокса регуляторов. 
|
1. Клеим 2х сторонний скотч на основание защитного бокса регуляторов.
|
||||||
2. Укладываем регуляторы в защитные боксы. Крепим полученную сборку к лучам рамы. 
|
2. Укладываем регуляторы в защитные боксы. Крепим полученную сборку к лучам рамы. 
|
||||||
|
|
||||||
### Установка защиты
|
### Установка защиты
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ TODO
|
|||||||
|
|
||||||
Хвост от хомута (стяжки) отрезать ножницами.
|
Хвост от хомута (стяжки) отрезать ножницами.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Монтаж каркасных элементов
|
## Монтаж каркасных элементов
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ TODO
|
|||||||
3. Установить на раму собранную конструкцию, соблюдая схему, винтами М3х16.
|
3. Установить на раму собранную конструкцию, соблюдая схему, винтами М3х16.
|
||||||
4. Установить каркас для светодиодной ленты, используя прорези в держателях для ножек.
|
4. Установить каркас для светодиодной ленты, используя прорези в держателях для ножек.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Монтаж преобразователя напряжения BEC (припаять и проверить)
|
## Монтаж преобразователя напряжения BEC (припаять и проверить)
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ TODO
|
|||||||
Черный -> GND
|
Черный -> GND
|
||||||
Синий -> Din
|
Синий -> Din
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Монтаж регуляторов
|
## Монтаж регуляторов
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ TODO
|
|||||||
3. Установить плату распределения питания PDB, как показано на картинке (разъем XT60 направлен к хвосту коптера).
|
3. Установить плату распределения питания PDB, как показано на картинке (разъем XT60 направлен к хвосту коптера).
|
||||||
4. Соединить разъемы питания платы питания и платы регуляторов XT30.
|
4. Соединить разъемы питания платы питания и платы регуляторов XT30.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Сопряжение приемника и пульта
|
## Сопряжение приемника и пульта
|
||||||
|
|
||||||
@@ -148,7 +148,7 @@ TODO
|
|||||||
* Убрать BIND разъем из приемника.
|
* Убрать BIND разъем из приемника.
|
||||||
* Отключить АКБ.
|
* Отключить АКБ.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> **Hint** Если пульт не включается или заблокирован, см.
|
> **Hint** Если пульт не включается или заблокирован, см.
|
||||||
статью [неисправности пульта](radioerrors.md).
|
статью [неисправности пульта](radioerrors.md).
|
||||||
@@ -168,7 +168,7 @@ TODO
|
|||||||
4. Проверить направления вращения мотора по схеме.Повторить для каждого мотора. Таким образом, будет понятно каким именно мотором мы управляем.
|
4. Проверить направления вращения мотора по схеме.Повторить для каждого мотора. Таким образом, будет понятно каким именно мотором мы управляем.
|
||||||
5. Если необходимо изменить направление вращения, то меняем любые два фазных провода мотора (нужно переподключить).
|
5. Если необходимо изменить направление вращения, то меняем любые два фазных провода мотора (нужно переподключить).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Монтаж и подключение полетного контроллера Pixracer
|
## Монтаж и подключение полетного контроллера Pixracer
|
||||||
|
|
||||||
@@ -185,7 +185,7 @@ TODO
|
|||||||
|
|
||||||
4. Подключить шлейф радиоприемника в разъем RCIN в Pixracer.
|
4. Подключить шлейф радиоприемника в разъем RCIN в Pixracer.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Монтаж Raspberry
|
## Монтаж Raspberry
|
||||||
|
|
||||||
@@ -209,7 +209,7 @@ TODO
|
|||||||
|
|
||||||
Используйте винт М3х16 и гайку М3
|
Используйте винт М3х16 и гайку М3
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Монтаж Arduino и радиоприемника FlySky
|
## Монтаж Arduino и радиоприемника FlySky
|
||||||
|
|
||||||
@@ -223,7 +223,7 @@ TODO
|
|||||||
черный -> GND
|
черный -> GND
|
||||||
оранжевый, зеленый -> не используются. Выньте эти провода из разъёма или обрежьте их.
|
оранжевый, зеленый -> не используются. Выньте эти провода из разъёма или обрежьте их.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Монтаж камеры RPi
|
## Монтаж камеры RPi
|
||||||
|
|
||||||
@@ -236,7 +236,7 @@ TODO
|
|||||||
|
|
||||||
5. Установить ножки в маунты (4 шт.).
|
5. Установить ножки в маунты (4 шт.).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Монтаж остальных конструктивных элементов
|
## Монтаж остальных конструктивных элементов
|
||||||
|
|
||||||
@@ -246,13 +246,13 @@ TODO
|
|||||||
|
|
||||||
Закрепить верхнюю деку винтами М3х8 (4 шт.)
|
Закрепить верхнюю деку винтами М3х8 (4 шт.)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Монтаж USB соединителей
|
## Монтаж USB соединителей
|
||||||
|
|
||||||
1. Соедините Pixracer и Raspberry, используя micro USB - USB кабель.
|
1. Соедините Pixracer и Raspberry, используя micro USB - USB кабель.
|
||||||
2. Соедините Arduino и Raspberry, используя micro USB - USB кабель.
|
2. Соедините Arduino и Raspberry, используя micro USB - USB кабель.
|
||||||
|
|
||||||
.
|
.
|
||||||
|
|
||||||
Подробнее про подключение см. [статью](connection.md).
|
Подробнее про подключение см. [статью](connection.md).
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
### take_off
|
### take_off
|
||||||
|
|
||||||
<img src="../assets/blocks/take-off.png" srcset="../assets/blocks/take-off.png 2x">
|
<img src="../assets/blocks/take-off.png" srcset="@source/assets/blocks/take-off.png 2x">
|
||||||
|
|
||||||
Взлететь на указанную высоту в метрах. Высота может быть произвольным блоком, возвращающим числовое значение.
|
Взлететь на указанную высоту в метрах. Высота может быть произвольным блоком, возвращающим числовое значение.
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
|
|
||||||
### navigate
|
### navigate
|
||||||
|
|
||||||
<img src="../assets/blocks/navigate.png" srcset="../assets/blocks/navigate.png 2x">
|
<img src="../assets/blocks/navigate.png" srcset="@source/assets/blocks/navigate.png 2x">
|
||||||
|
|
||||||
Прилететь в заданную точку. Координаты точки задаются в метрах.
|
Прилететь в заданную точку. Координаты точки задаются в метрах.
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@
|
|||||||
|
|
||||||
### land
|
### land
|
||||||
|
|
||||||
<img src="../assets/blocks/land.png" srcset="../assets/blocks/land.png 2x">
|
<img src="../assets/blocks/land.png" srcset="@source/assets/blocks/land.png 2x">
|
||||||
|
|
||||||
Произвести посадку.
|
Произвести посадку.
|
||||||
|
|
||||||
@@ -84,31 +84,31 @@
|
|||||||
|
|
||||||
### wait
|
### wait
|
||||||
|
|
||||||
<img src="../assets/blocks/wait.png" srcset="../assets/blocks/wait.png 2x">
|
<img src="../assets/blocks/wait.png" srcset="@source/assets/blocks/wait.png 2x">
|
||||||
|
|
||||||
Ожидать заданное время в секундах. Время ожидания может быть произвольным блоком, возвращающим числовое значение.
|
Ожидать заданное время в секундах. Время ожидания может быть произвольным блоком, возвращающим числовое значение.
|
||||||
|
|
||||||
### wait_arrival
|
### wait_arrival
|
||||||
|
|
||||||
<img src="../assets/blocks/wait-arrival.png" srcset="../assets/blocks/wait-arrival.png 2x">
|
<img src="../assets/blocks/wait-arrival.png" srcset="@source/assets/blocks/wait-arrival.png 2x">
|
||||||
|
|
||||||
Ожидать, пока дрон долетит до целевой точки (заданной в [navigate](#navigate)-блоке).
|
Ожидать, пока дрон долетит до целевой точки (заданной в [navigate](#navigate)-блоке).
|
||||||
|
|
||||||
### get_position
|
### get_position
|
||||||
|
|
||||||
<img src="../assets/blocks/get-position.png" srcset="../assets/blocks/get-position.png 2x">
|
<img src="../assets/blocks/get-position.png" srcset="@source/assets/blocks/get-position.png 2x">
|
||||||
|
|
||||||
Блок позволяет получить позицию, скорость и угол по рысканью дрона в заданной [системе координат](#relative_to).
|
Блок позволяет получить позицию, скорость и угол по рысканью дрона в заданной [системе координат](#relative_to).
|
||||||
|
|
||||||
### set_effect
|
### set_effect
|
||||||
|
|
||||||
<img src="../assets/blocks/set-effect.png" srcset="../assets/blocks/set-effect.png 2x">
|
<img src="../assets/blocks/set-effect.png" srcset="@source/assets/blocks/set-effect.png 2x">
|
||||||
|
|
||||||
Блок позволяет устанавливать различные анимации на LED-ленту аналогично [ROS-сервису `set_effect`](leds.md#set_effect).
|
Блок позволяет устанавливать различные анимации на LED-ленту аналогично [ROS-сервису `set_effect`](leds.md#set_effect).
|
||||||
|
|
||||||
Пример использования блока для установки случайного цвета (блоки, связанные с цветами находятся в категории *Colour*):
|
Пример использования блока для установки случайного цвета (блоки, связанные с цветами находятся в категории *Colour*):
|
||||||
|
|
||||||
<img src="../assets/blocks/random-color.png" srcset="../assets/blocks/random-color.png 2x">
|
<img src="../assets/blocks/random-color.png" srcset="@source/assets/blocks/random-color.png 2x">
|
||||||
|
|
||||||
### Работа с GPIO {#GPIO}
|
### Работа с GPIO {#GPIO}
|
||||||
|
|
||||||
|
|||||||
@@ -53,5 +53,3 @@
|
|||||||
5. Дождитесь окончания калибровки.
|
5. Дождитесь окончания калибровки.
|
||||||
|
|
||||||
Дополнительная информация: https://docs.px4.io/master/en/config/level_horizon_calibration.html.
|
Дополнительная информация: https://docs.px4.io/master/en/config/level_horizon_calibration.html.
|
||||||
|
|
||||||
**Далее**: [Настройка пульта](radio.md).
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# COEX PDB
|
# COEX PDB
|
||||||
|
|
||||||
**COEX PDB** (Power Distribution Board) – плата распределения питания для квадрокоптеров <a href="assemble_4_2.md">Клевер 4</a>.
|
**COEX PDB** (Power Distribution Board) – плата распределения питания для квадрокоптеров [Клевер 4](assemble_4_2.md).
|
||||||
|
|
||||||
Габаритные размеры платы: 35x35 мм.
|
Габаритные размеры платы: 35x35 мм.
|
||||||
|
|
||||||
|
|||||||
@@ -50,5 +50,3 @@
|
|||||||
<arg name="fcu_conn" default="udp"/>
|
<arg name="fcu_conn" default="udp"/>
|
||||||
<arg name="fcu_ip" default="127.0.0.1"/>
|
<arg name="fcu_ip" default="127.0.0.1"/>
|
||||||
```
|
```
|
||||||
|
|
||||||
**Далее**: [Подключение QGroundControl по Wi-Fi](gcs_bridge.md).
|
|
||||||
|
|||||||
@@ -10,9 +10,9 @@
|
|||||||
|
|
||||||
## Модели и сборка
|
## Модели и сборка
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/full_holder.png" width="300" class="zoom">
|
<img class="center" src="../assets/ddrone/full_holder.png" width="300">
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/full_holder_in_real.jpg" width="300" class="zoom">
|
<img class="center" src="../assets/ddrone/full_holder_in_real.jpg" width="300">
|
||||||
|
|
||||||
Для выполнения проекта вам нужно иметь в наличии:
|
Для выполнения проекта вам нужно иметь в наличии:
|
||||||
|
|
||||||
@@ -36,15 +36,15 @@
|
|||||||
|
|
||||||
Вес держателя: 90 г.
|
Вес держателя: 90 г.
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/holder.png" width="300" class="zoom">
|
<img class="center" src="../assets/ddrone/holder.png" width="300">
|
||||||
|
|
||||||
Если диаметр баллончика меньше диаметра держателя, мы используем деталь в виде дуги, размером разницей между ними. Это помогает нам устойчиво закрепить баллончик.
|
Если диаметр баллончика меньше диаметра держателя, мы используем деталь в виде дуги, размером разницей между ними. Это помогает нам устойчиво закрепить баллончик.
|
||||||
|
|
||||||
**Схема нажатия.** Для нажатия клапана будем использовать винтовую передачу с неподвижной гайкой. К сервоприводу будут прикреплена планка с отверстиями, в которых будут входить стойки, закрепленные к гайке. Это помогает сервоприводу двигаться только по одной оси, вверх вниз. Также мы смоделировали крышку для кнопки баллончика, так как поверхность насадки не ровная.
|
**Схема нажатия.** Для нажатия клапана будем использовать винтовую передачу с неподвижной гайкой. К сервоприводу будут прикреплена планка с отверстиями, в которых будут входить стойки, закрепленные к гайке. Это помогает сервоприводу двигаться только по одной оси, вверх вниз. Также мы смоделировали крышку для кнопки баллончика, так как поверхность насадки не ровная.
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/pressing_mechanism.png" width="300" class="zoom">
|
<img class="center" src="../assets/ddrone/pressing_mechanism.png" width="300">
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/pressing_mechanism_in_real.jpg" width="300" class="zoom">
|
<img class="center" src="../assets/ddrone/pressing_mechanism_in_real.jpg" width="300">
|
||||||
|
|
||||||
## Перед запуском
|
## Перед запуском
|
||||||
|
|
||||||
@@ -80,11 +80,11 @@ mv visual_ddrone-master ddrone
|
|||||||
|
|
||||||
Запуск нашего дрона осуществляется с помощью [веб-сайта](https://perizatkurmanbaeva.github.io/visual_ddrone). Веб-интерфейс позволяет рисовать и кодировать нарисованное в G-code. Данные координат будут переданы для дальнейшей обработки и исполнением коптером.
|
Запуск нашего дрона осуществляется с помощью [веб-сайта](https://perizatkurmanbaeva.github.io/visual_ddrone). Веб-интерфейс позволяет рисовать и кодировать нарисованное в G-code. Данные координат будут переданы для дальнейшей обработки и исполнением коптером.
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/screen_2.png" width="600" class="zoom">
|
<img class="center" src="../assets/ddrone/screen_2.png" width="600">
|
||||||
|
|
||||||
Мы выбрали веб-интерфейс для управления коптера, потому что он легче и ближе для пользователя.
|
Мы выбрали веб-интерфейс для управления коптера, потому что он легче и ближе для пользователя.
|
||||||
|
|
||||||
<img class="center" src="../assets/ddrone/instruction.png" width="300" class="zoom">
|
<img class="center" src="../assets/ddrone/instruction.png" width="300">
|
||||||
|
|
||||||
## Полеты
|
## Полеты
|
||||||
|
|
||||||
|
|||||||
@@ -104,5 +104,3 @@
|
|||||||
> **Caution** Будьте внимательны, *Kill Switch* не переводит коптер в состояние *Disarmed*!
|
> **Caution** Будьте внимательны, *Kill Switch* не переводит коптер в состояние *Disarmed*!
|
||||||
|
|
||||||
Перед отключением *Kill Switch* убедитесь, что стик газа находится в нижнем положении и коптер находится в состоянии *Disarmed*. В случае, если стик газа не находится в нижнем положении, при отключении *Kill Switch* на моторы будет подан сигнал соответствующий положению стика в данный момент, что приведет к резкому рывку коптера.
|
Перед отключением *Kill Switch* убедитесь, что стик газа находится в нижнем положении и коптер находится в состоянии *Disarmed*. В случае, если стик газа не находится в нижнем положении, при отключении *Kill Switch* на моторы будет подан сигнал соответствующий положению стика в данный момент, что приведет к резкому рывку коптера.
|
||||||
|
|
||||||
**Далее**: [Упражнения для управления коптером](flight_exercises.md).
|
|
||||||
|
|||||||
@@ -48,5 +48,3 @@ sudo systemctl restart clover
|
|||||||
|
|
||||||
1. Измените параметр `gcs_bridge` на `udp-pb`.
|
1. Измените параметр `gcs_bridge` на `udp-pb`.
|
||||||
2. При открытии программы QGroundControl соединение должно установиться автоматически.
|
2. При открытии программы QGroundControl соединение должно установиться автоматически.
|
||||||
|
|
||||||
**Далее**: [Доступ по SSH](ssh.md).
|
|
||||||
|
|||||||
@@ -15,5 +15,3 @@
|
|||||||
<img src="../assets/etcher.png" class="zoom">
|
<img src="../assets/etcher.png" class="zoom">
|
||||||
|
|
||||||
После записи образа на SD-карту, вы можете подключаться к [Клеверу по Wi-Fi](wifi.md), использовать [беспроводное соединение в QGroundControl](gcs_bridge.md), получать [доступ по SSH](ssh.md) и использовать остальные функции. При необходимости узнать версию записанного на карту образа используйте [утилиту selfcheck.py](selfcheck.md).
|
После записи образа на SD-карту, вы можете подключаться к [Клеверу по Wi-Fi](wifi.md), использовать [беспроводное соединение в QGroundControl](gcs_bridge.md), получать [доступ по SSH](ssh.md) и использовать остальные функции. При необходимости узнать версию записанного на карту образа используйте [утилиту selfcheck.py](selfcheck.md).
|
||||||
|
|
||||||
**Далее:** [Подключение по Wi-Fi](wifi.md).
|
|
||||||
|
|||||||
@@ -101,12 +101,12 @@ disconnected: { effect: blink, r: 255, g: 50, b: 50 }
|
|||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr><th>Событие</th><th>Описание</th><th>Эффект по умолчанию</th></tr>
|
<tr><th>Событие</th><th>Описание</th><th>Эффект по умолчанию</th></tr>
|
||||||
<tr><td><code>startup</code></td><td>Запуск всех систем Клевера</td><td>Белый</div></td></tr>
|
<tr><td><code>startup</code></td><td>Запуск всех систем Клевера</td><td>Белый</td></tr>
|
||||||
<tr><td><code>connected</code></td><td>Успешное подключение к полетному контроллеру</td><td>Эффект радуги</td></tr>
|
<tr><td><code>connected</code></td><td>Успешное подключение к полетному контроллеру</td><td>Эффект радуги</td></tr>
|
||||||
<tr><td><code>disconnected</code></td><td>Разрыв связи с полетным контроллером</td><td><div class=circle style="background:rgb(255,50,50)"></div>Мигание красным</div></td></tr>
|
<tr><td><code>disconnected</code></td><td>Разрыв связи с полетным контроллером</td><td><div class=circle style="background:rgb(255,50,50)"></div>Мигание красным</td></tr>
|
||||||
<tr><td><code>armed</code></td><td>Переход в состояние Armed</td><td></td></tr>
|
<tr><td><code>armed</code></td><td>Переход в состояние Armed</td><td></td></tr>
|
||||||
<tr><td><code>disarmed</code></td><td>Переход в состояние Disarmed</td><td></td></tr>
|
<tr><td><code>disarmed</code></td><td>Переход в состояние Disarmed</td><td></td></tr>
|
||||||
<tr><td><code>acro</code></td><td>Режим Acro</td><td><div class=circle style="background:rgb(245,155,0)"></div>Оранжевый</div></td></tr>
|
<tr><td><code>acro</code></td><td>Режим Acro</td><td><div class=circle style="background:rgb(245,155,0)"></div>Оранжевый</td></tr>
|
||||||
<tr><td><code>stabilized</code></td><td>Режим Stabilized</td><td><div class=circle style="background:rgb(30,180,50)"></div>Зеленый</td></tr>
|
<tr><td><code>stabilized</code></td><td>Режим Stabilized</td><td><div class=circle style="background:rgb(30,180,50)"></div>Зеленый</td></tr>
|
||||||
<tr><td><code>altctl</code></td><td>Режим Altitude</td><td><div class=circle style="background:rgb(255,255,40)"></div>Желтый</td></tr>
|
<tr><td><code>altctl</code></td><td>Режим Altitude</td><td><div class=circle style="background:rgb(255,255,40)"></div>Желтый</td></tr>
|
||||||
<tr><td><code>posctl</code></td><td>Режим Position</td><td><div class=circle style="background:rgb(50,100,220)"></div>Синий</td></tr>
|
<tr><td><code>posctl</code></td><td>Режим Position</td><td><div class=circle style="background:rgb(50,100,220)"></div>Синий</td></tr>
|
||||||
|
|||||||
@@ -46,5 +46,3 @@
|
|||||||
* **AUTO.LAND** – коптер выполняет посадку.
|
* **AUTO.LAND** – коптер выполняет посадку.
|
||||||
|
|
||||||
Дополнительная информация: https://dev.px4.io/en/concept/flight_modes.html.
|
Дополнительная информация: https://dev.px4.io/en/concept/flight_modes.html.
|
||||||
|
|
||||||
**Далее**: [Настройка питания](power.md).
|
|
||||||
|
|||||||
@@ -32,5 +32,3 @@
|
|||||||
<img src="../assets/qgc-power.png" class="zoom">
|
<img src="../assets/qgc-power.png" class="zoom">
|
||||||
|
|
||||||
Дополнительная информация: https://docs.px4.io/master/en/advanced_config/esc_calibration.html.
|
Дополнительная информация: https://docs.px4.io/master/en/advanced_config/esc_calibration.html.
|
||||||
|
|
||||||
**Далее**: [настройка Failsafe](failsafe.md).
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
Вы можете посмотреть короткую видеопрезентацию:
|
Вы можете посмотреть короткую видеопрезентацию:
|
||||||
|
|
||||||
<iframe width="640" height="480"src="https://www.youtube.com/embed/MEJdM9arz5c" frameborder="0" ; autoplay; encrypted-media; gyroscope; picture-in-picture"> </iframe>
|
<iframe width="640" height="480" src="https://www.youtube.com/embed/MEJdM9arz5c" frameborder="0" allow="autoplay; encrypted-media; gyroscope; picture-in-picture"></iframe>
|
||||||
|
|
||||||
## Использование
|
## Использование
|
||||||
|
|
||||||
|
|||||||
@@ -36,5 +36,3 @@
|
|||||||
8. При появлении надписи *"All settings have been captured. Click Next to write the new parameters to your board"* нажмите *Next*.
|
8. При появлении надписи *"All settings have been captured. Click Next to write the new parameters to your board"* нажмите *Next*.
|
||||||
|
|
||||||
Дополнительная информация: https://docs.qgroundcontrol.com/en/SetupView/Radio.html.
|
Дополнительная информация: https://docs.qgroundcontrol.com/en/SetupView/Radio.html.
|
||||||
|
|
||||||
**Далее**: [Настройка полетных режимов](modes.md).
|
|
||||||
|
|||||||
@@ -15,5 +15,3 @@ Raspberry Pi
|
|||||||
* HDMI-порт.
|
* HDMI-порт.
|
||||||
|
|
||||||
В Клевере Raspberry Pi подключается к полетному контроллеру и используется как вспомогательный компьютер. Он позволяет [подключаться к дрону по Wi-Fi](wifi.md), программировать автономные полеты, работать с периферией и многое другое.
|
В Клевере Raspberry Pi подключается к полетному контроллеру и используется как вспомогательный компьютер. Он позволяет [подключаться к дрону по Wi-Fi](wifi.md), программировать автономные полеты, работать с периферией и многое другое.
|
||||||
|
|
||||||
**Далее**: [образ для Raspberry Pi](image.md).
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
Для управления Клевером со смартфона через Wi-Fi необходимо установить приложение – [iOS](https://itunes.apple.com/ru/app/clever-rc/id1396166572?mt=8), [Android](https://play.google.com/store/apps/details?id=express.copter.cleverrc).
|
Для управления Клевером со смартфона через Wi-Fi необходимо установить приложение – [iOS](https://itunes.apple.com/ru/app/clever-rc/id1396166572?mt=8), [Android](https://play.google.com/store/apps/details?id=express.copter.cleverrc).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> **Warning** Мобильный пульт предназначен в первую очередь для полетов в помещении на дальность не более 10-15 м. Большое количество Wi-Fi сетей также может ухудшить отзывчивость и дальность пульта.
|
> **Warning** Мобильный пульт предназначен в первую очередь для полетов в помещении на дальность не более 10-15 м. Большое количество Wi-Fi сетей также может ухудшить отзывчивость и дальность пульта.
|
||||||
|
|
||||||
|
|||||||
@@ -66,8 +66,9 @@
|
|||||||
<img src="../assets/flysky_a8s/14_coexpix_rcin.png" width=300 class="zoom border center" alt="coex pix connection">
|
<img src="../assets/flysky_a8s/14_coexpix_rcin.png" width=300 class="zoom border center" alt="coex pix connection">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
> **Hint** Убедитесь, что провод, идущий в COEX Pix, подключен к порту RC IN:
|
Убедитесь, что провод, идущий в COEX Pix, подключен к порту RC IN:
|
||||||
<img src="../assets/coexpix-bottom.jpg" width=300 class="zoom border center" alt="coex pix pinout">
|
|
||||||
|
<img src="../assets/coex_pix/coexpix-bottom.jpg" width=300 class="zoom border center" alt="coex pix pinout">
|
||||||
|
|
||||||
## Сопряжение приёмника с пультом {#rc_bind}
|
## Сопряжение приёмника с пультом {#rc_bind}
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
На юге Японии японский фермер и философ Масанобу Фукуока изобрел технику посадки семенных шариков. Этот метод считается естественной техникой земледелия, не требующей машин, химикатов и очень небольшого количества прополки. При использовании семенных шариков земля обрабатывается без какой-либо подготовки почвы.
|
На юге Японии японский фермер и философ Масанобу Фукуока изобрел технику посадки семенных шариков. Этот метод считается естественной техникой земледелия, не требующей машин, химикатов и очень небольшого количества прополки. При использовании семенных шариков земля обрабатывается без какой-либо подготовки почвы.
|
||||||
|
|
||||||
<img src = "../assets/seeding_drone/seedcapsules/1.jpg" width="250px" class="center" />
|
<img src="../assets/seeding_drone/seedcapsules/1.jpg" width="250px" class="center" />
|
||||||
|
|
||||||
### Преимущества семенных шариков
|
### Преимущества семенных шариков
|
||||||
|
|
||||||
@@ -114,39 +114,39 @@
|
|||||||
|
|
||||||
1. Установите нижние держатели бака на крепление верхней палубы и закрепите винтами M3x8.
|
1. Установите нижние держатели бака на крепление верхней палубы и закрепите винтами M3x8.
|
||||||
|
|
||||||
<img src = "../assets/seeding_drone/mechanismpictures/1.PNG" width = "400px" class = "center" />
|
<img src="../assets/seeding_drone/mechanismpictures/1.png" width="400px" class="center" />
|
||||||
|
|
||||||
2. Установите нейлоновую стойку (40 мм) с 4 сторон крепления для деки.
|
2. Установите нейлоновую стойку (40 мм) с 4 сторон крепления для деки.
|
||||||
|
|
||||||
<img src = "../assets/seeding_drone/mechanismpictures/2.PNG" width = "400px" class= "center" />
|
<img src="../assets/seeding_drone/mechanismpictures/2.png" width="400px" class="center" />
|
||||||
|
|
||||||
3. Установите поручень и закрепите винтами M3x8.
|
3. Установите поручень и закрепите винтами M3x8.
|
||||||
|
|
||||||
<img src = "../assets/seeding_drone/mechanismpictures/3.PNG" width = "400px" class = "center" />
|
<img src="../assets/seeding_drone/mechanismpictures/3.png" width="400px" class="center" />
|
||||||
|
|
||||||
4. Установите верхние держатели бака на верхнее захватное крепление и закрепите винтами M3x8.
|
4. Установите верхние держатели бака на верхнее захватное крепление и закрепите винтами M3x8.
|
||||||
|
|
||||||
<img src = "../assets/seeding_drone/mechanismpictures/4.PNG" width = "400px" class = "center" />
|
<img src="../assets/seeding_drone/mechanismpictures/4.png" width="400px" class="center" />
|
||||||
|
|
||||||
5. Осторожно подсоедините резервуары к держателям резервуаров.
|
5. Осторожно подсоедините резервуары к держателям резервуаров.
|
||||||
|
|
||||||
<img src = "../assets/seeding_drone/mechanismpictures/5.PNG" width = "400px" class = "center" />
|
<img src="../assets/seeding_drone/mechanismpictures/5.png" width="400px" class="center" />
|
||||||
|
|
||||||
6. Подсоедините серводвигатели SG90 к резервуару с помощью стяжки.
|
6. Подсоедините серводвигатели SG90 к резервуару с помощью стяжки.
|
||||||
|
|
||||||
Окончательный вид сеялки дрона:
|
Окончательный вид сеялки дрона:
|
||||||
|
|
||||||
<img src = "../assets/seeding_drone/mechanismpictures/6.jpg" width = "400px" class = "center" />
|
<img src="../assets/seeding_drone/mechanismpictures/6.jpg" width="400px" class="center" />
|
||||||
|
|
||||||
### Модуль GPS
|
### Модуль GPS
|
||||||
|
|
||||||
Мы установили модуль GPS наверх, используя 2 нейлоновые стойки (40 мм).
|
Мы установили модуль GPS наверх, используя 2 нейлоновые стойки (40 мм).
|
||||||
|
|
||||||
<img src = "../assets/seeding_drone/mechanismpictures/7.jpg" alt = "" width = "400px" class = "center" />
|
<img src="../assets/seeding_drone/mechanismpictures/7.jpg" alt="" width="400px" class="center" />
|
||||||
|
|
||||||
Мы покрыли аккумулятор, чтобы защитить его от холода.
|
Мы покрыли аккумулятор, чтобы защитить его от холода.
|
||||||
|
|
||||||
<img src = "../assets/seeding_drone/mechanismpictures/8.jpg" alt = "" width = "400px" class = "center" />
|
<img src="../assets/seeding_drone/mechanismpictures/8.jpg" alt="" width="400px" class="center" />
|
||||||
|
|
||||||
## Как управлять механизмом высева
|
## Как управлять механизмом высева
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
|
|
||||||
Сигнальные контакты серводвигателя подключены к контактам 32 и 33 аппаратной ШИМ Raspberry Pi, а питание снимается с платы распределения питания (5 В).
|
Сигнальные контакты серводвигателя подключены к контактам 32 и 33 аппаратной ШИМ Raspberry Pi, а питание снимается с платы распределения питания (5 В).
|
||||||
|
|
||||||
<img src = "../assets/seeding_drone/electronicspictures/electronic1.png" width = "400px" class = "center" />
|
<img src="../assets/seeding_drone/electronicspictures/electronic1.png" width="400px" class="center" />
|
||||||
|
|
||||||
### Пояснение кода для управления серводвигателями
|
### Пояснение кода для управления серводвигателями
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@
|
|||||||
- Угол поворота 90° или рабочий цикл 2 мс => 2/20 * 100% = рабочий цикл 10%.
|
- Угол поворота 90° или рабочий цикл 2 мс => 2/20 * 100% = рабочий цикл 10%.
|
||||||
- Угол поворота 0° или рабочий цикл 1,5 мс => 1,5 / 20 * 100% = 7,5% рабочий цикл.
|
- Угол поворота 0° или рабочий цикл 1,5 мс => 1,5 / 20 * 100% = 7,5% рабочий цикл.
|
||||||
|
|
||||||
<img src = "../assets/seeding_drone/electronicspictures/electronic2.png" width = "400px" class = "center" />
|
<img src="../assets/seeding_drone/electronicspictures/electronic2.png" width="400px" class="center" />
|
||||||
|
|
||||||
Мы сделаем это с помощью библиотеки RPi.GPIO и написания кода Python на Raspberry Pi.
|
Мы сделаем это с помощью библиотеки RPi.GPIO и написания кода Python на Raspberry Pi.
|
||||||
|
|
||||||
|
|||||||
@@ -116,5 +116,3 @@
|
|||||||
|
|
||||||
1. Чтобы коптер мог летать с подключением по USB, установите параметр `CBRK_USB_CHK` в 197848.
|
1. Чтобы коптер мог летать с подключением по USB, установите параметр `CBRK_USB_CHK` в 197848.
|
||||||
2. Отключите проверку Safety Switch: `CBRK_IO_SAFETY` = 22027.
|
2. Отключите проверку Safety Switch: `CBRK_IO_SAFETY` = 22027.
|
||||||
|
|
||||||
**Далее**: [Калибровка датчиков](calibration.md).
|
|
||||||
|
|||||||
@@ -21,5 +21,3 @@ ssh pi@192.168.11.1
|
|||||||
Начиная с версии 0.11.4 [образа](image.md) доступ к шеллу также доступен через веб-браузер (с использованием [Butterfly](https://github.com/paradoxxxzero/butterfly)). Для доступа откройте страницу http://192.168.11.1 и выберите на ней ссылку *Open web terminal*:
|
Начиная с версии 0.11.4 [образа](image.md) доступ к шеллу также доступен через веб-браузер (с использованием [Butterfly](https://github.com/paradoxxxzero/butterfly)). Для доступа откройте страницу http://192.168.11.1 и выберите на ней ссылку *Open web terminal*:
|
||||||
|
|
||||||
<img src="../assets/butterfly.png">
|
<img src="../assets/butterfly.png">
|
||||||
|
|
||||||
**Далее**: [Командная строка](cli.md).
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
* Проверить работу мультиметра путем замыкания щупов между собой. При корректной работе прибор издаст характерный звук.
|
* Проверить работу мультиметра путем замыкания щупов между собой. При корректной работе прибор издаст характерный звук.
|
||||||
* Попарно красный щуп прикладывается к “+ ”контакту, черный к “-” / ”GND”. Если в цепи есть короткое замыкание, издается звук.
|
* Попарно красный щуп прикладывается к “+ ”контакту, черный к “-” / ”GND”. Если в цепи есть короткое замыкание, издается звук.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
1\. Прозвонить следующие цепи на НЕЗАМКНУТОСТЬ (отсутствие звукового сигнала мультиметра):
|
1\. Прозвонить следующие цепи на НЕЗАМКНУТОСТЬ (отсутствие звукового сигнала мультиметра):
|
||||||
|
|
||||||
|
|||||||
@@ -18,5 +18,3 @@
|
|||||||
После подключения к Клеверу по адресу http://192.168.11.1 будет доступен веб-интерфейс. В нем доступны основные веб-инструменты Клевера: просмотр топиков с изображениями, веб-терминал (Butterfly) а также полная копия данной документации.
|
После подключения к Клеверу по адресу http://192.168.11.1 будет доступен веб-интерфейс. В нем доступны основные веб-инструменты Клевера: просмотр топиков с изображениями, веб-терминал (Butterfly) а также полная копия данной документации.
|
||||||
|
|
||||||
<img src="../assets/web.png" alt="Веб-интерфейс Клевера" class="zoom">
|
<img src="../assets/web.png" alt="Веб-интерфейс Клевера" class="zoom">
|
||||||
|
|
||||||
**Далее**: [Подключение Raspberry Pi к полетному контроллеру](connection.md).
|
|
||||||
|
|||||||
Reference in New Issue
Block a user