Compare commits

..

21 Commits

Author SHA1 Message Date
Oleg Kalachev
91252d8d50 image: decrease git clone depth 2020-10-31 22:31:21 +03:00
Oleg Kalachev
c4b94390e9 image: increase compression level more 2020-10-31 18:11:10 +03:00
Oleg Kalachev
1b4167365e image: increase compression level 2020-10-31 16:48:01 +03:00
Oleg Kalachev
01ec592abb docs: remove unused assets 2020-10-28 17:07:39 +03:00
Volga
e2e2e04381 docs: Fix image link 2020-10-28 11:44:45 +03:00
Andrei Korigodski
27e0189cf5 readme: remove table with logos 2020-10-27 20:35:54 +03:00
Andrei Korigodskii
e3d89cbc4c readme: change title and update description
Co-authored-by: Oleg Kalachev <okalachev@gmail.com>
2020-10-27 20:13:11 +03:00
Oleg Kalachev
a0ac85e0d3 led: change default number of leds to 72 2020-10-27 19:52:02 +03:00
Oleg Kalachev
83e5911110 docs: add pid tuning stand idea to projects 2020-10-27 19:38:29 +03:00
Oleg Kalachev
05d634d2d3 docs: make download link to vm more notable 2020-10-27 19:38:29 +03:00
Oleg Kalachev
4967d651bd docs: add default username/password info to the simulator vm article 2020-10-27 19:38:29 +03:00
Volga
91f948d3f4 docs: Fix orthography 2020-10-27 17:07:59 +03:00
Volga
ebf55244f4 docs: Update renders in the article about clover 4_2 WS 2020-10-27 17:01:53 +03:00
Oleg Kalachev
5b6d08e25d blocks: fix set_leds with color-typed argument 2020-10-25 19:20:45 +03:00
Oleg Kalachev
8036214406 Merge branch 'master' of github.com:CopterExpress/clever 2020-10-24 21:53:06 +03:00
Oleg Kalachev
5d3c8c89cb builder: make pi an owner of examples files 2020-10-24 21:52:54 +03:00
Oleg Kalachev
2075fa52ef examples: make leds.py more verbose 2020-10-24 21:52:34 +03:00
Andrei Korigodski
b0e1e1ffae docs: fix translation 2020-10-24 09:46:21 +03:00
Oleg Kalachev
4482f973db docs: editing 2020-10-23 13:08:09 +03:00
Oleg Kalachev
b1c7ee6b66 docs: editing 2020-10-23 12:35:41 +03:00
Oleg Kalachev
ff9e669352 docs: minor fixes 2020-10-23 12:23:53 +03:00
47 changed files with 110 additions and 73 deletions

View File

@@ -22,6 +22,7 @@
"ROS Kinetic",
"ROS Melodic",
"OpenCV",
"OpenVPN",
"Gazebo",
"GitHub",
"FPV",
@@ -106,7 +107,9 @@
"UDP",
"QR",
"Li-ion",
"Nvidia"
"Nvidia",
"VirtualBox",
"VMware"
],
"code_blocks": false
},

View File

@@ -10,7 +10,7 @@ env:
- IMAGE_VERSION=${TRAVIS_TAG:-${TRAVIS_COMMIT:0:7}}
- IMAGE_NAME="$(basename -s '.git' ${TARGET_REPO})_${IMAGE_VERSION}.img"
git:
depth: 50
depth: 25
jobs:
fast_finish: true
include:
@@ -38,7 +38,7 @@ jobs:
- cp images/*.zip imgcache
after_success:
- sudo chmod -R 777 *
- cd images && zip ${IMAGE_NAME}.zip ${IMAGE_NAME} && stat --printf="Compressed image size:%s\n" ${IMAGE_NAME}.zip
- cd images && zip -9 ${IMAGE_NAME}.zip ${IMAGE_NAME} && stat --printf="Compressed image size:%s\n" ${IMAGE_NAME}.zip
before_deploy:
# Set up git user name and tag this commit
- git config --local user.name "goldarte"

View File

@@ -1,12 +1,14 @@
# COEX Clover Drone Kit
# clover🍀: create autonomous drones easily
<img src="docs/assets/clever4-front-white.png" align="right" width="400px" alt="Clover Drone">
<img src="docs/assets/clever4-front-white.png" align="right" width="400px" alt="COEX Clover Drone">
Clover is an educational programmable drone kit consisting of an unassembled quadcopter, open source software and documentation. The kit includes Pixracer-compatible autopilot running PX4 firmware, Raspberry Pi 4 as companion computer, a camera for computer vision navigation as well as additional sensors and peripheral devices.
Clover is an open source [ROS](https://www.ros.org)-based framework, providing user-friendly tools to control [PX4](https://px4.io)-powered drones. Clover is available as a ROS package, but is shipped mainly as a preconfigured image for Raspberry Pi. Once you've installed Raspberry Pi on your drone and flashed the image to its microSD card, taking the drone up in the air is a matter of minutes.
The main documentation is available [on Gitbook](https://clover.coex.tech/).
COEX Clover Drone is an educational programmable drone kit, suited perfectly for running clover software. The kit is shipped unassembled and includes Pixracer-compatible autopilot running PX4 firmware, Raspberry Pi 4 as a companion computer, a camera for computer vision navigation as well as additional sensors and peripheral devices. Batteries included.
Official website: <a href="https://coex.tech/clover">coex.tech/clover</a>.
The main documentation is available at [https://clover.coex.tech](https://clover.coex.tech/). Official website: [coex.tech/clover](https://coex.tech/clover).
[__Support us on Kickstarter!__](https://www.kickstarter.com/projects/copterexpress/cloverdrone)
## Video compilation

View File

@@ -7,19 +7,25 @@ rospy.init_node('leds')
set_effect = rospy.ServiceProxy('led/set_effect', SetLEDEffect) # define proxy to ROS-service
print('Fill red')
set_effect(r=255, g=0, b=0) # fill strip with red color
rospy.sleep(2)
print('Fill green')
set_effect(r=0, g=100, b=0) # fill strip with green color
rospy.sleep(2)
print('Fade to blue')
set_effect(effect='fade', r=0, g=0, b=255) # fade to blue color
rospy.sleep(2)
print('Flash red')
set_effect(effect='flash', r=255, g=0, b=0) # flash twice with red color
rospy.sleep(5)
rospy.sleep(2)
print('Blink white')
set_effect(effect='blink', r=255, g=255, b=255) # blink with white color
rospy.sleep(5)
print('Rainbow')
set_effect(effect='rainbow') # show rainbow

View File

@@ -105,7 +105,7 @@ ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/monkey.
# software install
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-software.sh'
# examples
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/examples' '/home/pi/'
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/examples' '/home/pi/' # TODO: symlink?
# network setup
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-network.sh'
# avahi setup

View File

@@ -130,6 +130,9 @@ catkin_make run_tests #&& catkin_test_results
echo_stamp "Change permissions for catkin_ws"
chown -Rf pi:pi /home/pi/catkin_ws
echo_stamp "Change permissions for examples"
chown -Rf pi:pi /home/pi/examples
echo_stamp "Setup ROS environment"
cat << EOF >> /home/pi/.bashrc
LANG='C.UTF-8'

View File

@@ -2,7 +2,7 @@
<arg name="ws281x" default="true"/>
<arg name="led_effect" default="true"/>
<arg name="led_notify" default="true"/>
<arg name="led_count" default="58"/>
<arg name="led_count" default="72"/>
<arg name="gpio_pin" default="21"/>
<arg name="simulator" default="false"/>

View File

@@ -391,7 +391,7 @@ Blockly.Python.set_led = function(block) {
return `set_leds([LEDState(index=${index}, r=${color.r}, g=${color.g}, b=${color.b})])\n`;
} else {
let parseColor = Blockly.Python.provideFunction_('parse_color', [PARSE_COLOR]);
return `set_leds([LEDState(index=${index}, **${parseColor}(${colorCode})])\n`;
return `set_leds([LEDState(index=${index}, **${parseColor}(${colorCode}))])\n`;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 549 KiB

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 KiB

After

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 469 KiB

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 KiB

After

Width:  |  Height:  |  Size: 469 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 472 KiB

After

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 KiB

After

Width:  |  Height:  |  Size: 472 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 461 KiB

After

Width:  |  Height:  |  Size: 324 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

After

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 KiB

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 KiB

After

Width:  |  Height:  |  Size: 362 KiB

View File

@@ -18,15 +18,15 @@ Note that when connected, the modem must be recognized in the system as a networ
Create the VPN network keys to connect Raspberry Pi and the ground station.
To connect Raspberry Pi to your network, install the *openvpn* package:
To connect Raspberry Pi to your network, install the OpenVPN package:
```bash
sudo apt-get install openvpn
```
Move your keys to the */etc/openvpn/client* directory. For convenience, use the graphical SFTP data transfer interface, for example: WinSCP, FileZilla, etc.
Move your keys to the `/etc/openvpn/client` directory. For convenience, use the graphical SFTP data transfer interface, for example: WinSCP, FileZilla, etc.
To enable the client mode, you must activate the keys you have transmitted. Keys can be generated in various formats, for example: *.ovpn*, *.conf*. The key or configuration used on your copter should be strictly in *.conf* format.
To enable the client mode, you must activate the keys you have transmitted. Keys can be generated in various formats, for example: `.ovpn`, `.conf`. The key or configuration used on your copter should be strictly in `.conf` format.
Initialize the service that uses your keys to connect in client mode:

View File

@@ -4,7 +4,7 @@ For interaction with ROS topics and services on a Raspberry Pi, you can use the
The main tutorial for rosserial: http://wiki.ros.org/rosserial_arduino/Tutorials
Arudino is to be installed on Clover and connected via a USB port.
Arduino is to be installed on Clover and connected via a USB port.
## Configuring Arduino IDE
@@ -14,7 +14,7 @@ To work with ROS and Arduino, you should understand the format of installed pack
rosrun rosserial_arduino make_libraries.py.
```
The obtained folder `ros_lib` is to be copied to `<sketches folder>/libraries` on a computer with Arudino IDE.
The obtained folder `ros_lib` is to be copied to `<sketches folder>/libraries` on a computer with Arduino IDE.
## Configuring Raspberry Pi
@@ -24,7 +24,7 @@ To run the program on Arduino once, you can use command:
roslaunch clover arduino.launch
```
To start the link with Arduino at the startup automatically, set argument `arudino` in the Clover launch file (`~/catkin_ws/src/clover/clover/launch/clover.launch`):
To start the link with Arduino at the startup automatically, set argument `arduino` in the Clover launch file (`~/catkin_ws/src/clover/clover/launch/clover.launch`):
```xml
<arg name="arduino" default="true"/>
@@ -202,7 +202,7 @@ getTelemetry.call(gt_req, gt_res);
## Problem
When using Arudino Nano, RAM may be insufficient. In this case, messages will appear in the Aruino IDE like:
When using Arduino Nano, RAM may be insufficient. In this case, messages will appear in the Arduino IDE like:
```
Global variables use 1837 bytes (89%) of the dynamic memory, leaving 211 bytes for local variables. The maximum is 2048 bytes.

View File

@@ -51,7 +51,7 @@ TODO
1. Unpack the power board and install the power ribbon cable.
2. Switch the multimeter in the DC voltage measurement mode (20V or 200V range).
3. Check the correct functionning of the power board by connecting the battery.
3. Check the correct functioning of the power board by connecting the battery.
* Voltage measurements are to be made between black and red wires.
* Output voltage at the XT30 connector should be equal to the battery voltage (10 V to 12.6 V).
* The output voltage at the power ribbon cable should be between 4.9 V to 5.3 V.
@@ -69,7 +69,7 @@ TODO
BLACK -> OUT-
RED -> OUT+
6. Check BEC functionning.
6. Check BEC functioning.
* Solder the BEC to the power board:
BLACK -> -

View File

@@ -29,7 +29,7 @@
## Installing motors
1. Unbox the motors.
2. Shorten the motor wires using wire strippers or sidecutters:
2. Shorten the motor wires using wire strippers or side cutters:
* Cut wires to 30 mm.
* Strip 5 mm of insulation while taking care to not damage the cores
@@ -315,7 +315,7 @@ The flight controller expects PPM signal from your RC gear. Switch your transmit
<img src="../assets/assembling_clever4/lower_deck_4.png" width=300 class="zoom border center">
6. Connect the camera ribbon cable to the camera.
7. Connect the laser rangefineder to the Raspberry Pi using the following pinout:
7. Connect the laser rangefinder to the Raspberry Pi using the following pinout:
* Connect **VCC** to pin 1 (**3v3**)
* Connect **GND** to pin 9 (**Ground**)
* Connect **SDA** to pin 3 (**GPIO2**)
@@ -391,7 +391,7 @@ Perform the quadrotor components setup according to [the "Configuration" section
> **Warning** Be sure to **not** mount the propellers **until the setup is complete**. Do it only when you are ready to fly.
Attach the propellers according to their rotation direction. The battery should be disconnected duting propeller installation.
Attach the propellers according to their rotation direction. The battery should be disconnected during propeller installation.
<div class="image-group">
<img src="../assets/assembling_clever4/final_2.png" width=300 class="zoom border">

View File

@@ -8,7 +8,7 @@ Infrared sensors are a convenient tool for transmitting any commands to the copt
Most IR receivers operate and are connected the same way. Such receivers have 3 pins for connecting: G/GND — ground V/VCC — 5V power, S/OUT — signal.
<img src="../assets/IR_reciver_connection.png" height="500px" alt="ir reciver connection to raspberry">
<img src="../assets/IR_reciver_connection.png" height="500px" alt="ir receiver connection to raspberry">
> **Hint** The signal port doesn't have to be connected to port GPIO 17; this pin may be changed during the [in/out port settings](#in/out).

View File

@@ -137,7 +137,7 @@ Jetson Nano currently does not support older Raspberry Pi v1 cameras (that are b
Fortunately, these cameras are available using GStreamer. You can try using the [`gscam`](http://wiki.ros.org/gscam) ROS package or our [`jetson_camera`](https://github.com/sfalexrog/jetson_camera) node. The latter requires you to build OpenCV 3.4 from source with GStreamer support.
The GStreamer pipelines are available at [JetsonHacksNano CSI camera reposotory](https://github.com/JetsonHacksNano/CSI-Camera).
The GStreamer pipelines are available at [JetsonHacksNano CSI camera repository](https://github.com/JetsonHacksNano/CSI-Camera).
You may also notice that the camera image has a red tint that is more pronounced near the edges. This can be fixed by image signal processor tuning. Generally this should be done by your camera manufacturer; [here is a sample ISP configuration](https://www.arducam.com/docs/camera-for-jetson-nano/fix-red-tint-with-isp-tuning/) from Adrucam

View File

@@ -12,7 +12,7 @@ Our [Raspberry Pi image](image.md) contains preinstalled modules for interfacing
* control individual LED colors (low-level control);
* configure the strip to display flight events.
> **Caution** LED strip can consume a lot of power! Powering it from a Raspyerry Pi may overload the computer's power circuitry. Consider using a separate BEC as a power source.
> **Caution** LED strip can consume a lot of power! Powering it from a Raspberry Pi may overload the computer's power circuitry. Consider using a separate BEC as a power source.
## High-level control

View File

@@ -8,7 +8,7 @@ Connect the +5v and GND leads of your LED to a power source and the DIN (data in
<img src="../assets/led_connection.png" height="400px" alt="leds">
> **Caution** LED strip can consume a lot of power! Powering it from a Raspyerry Pi may overload the computer's power circuitry. Consider using a separate BEC as a power source.
> **Caution** LED strip can consume a lot of power! Powering it from a Raspberry Pi may overload the computer's power circuitry. Consider using a separate BEC as a power source.
<!-- -->

View File

@@ -60,7 +60,7 @@ An Unmanned Aerial Vehicle (UAV) is an aircraft flying without a pilot (crew) on
Types and configuration
-------------------
There are many engines configurations: a tricopter, a hexacopter, or an octocopter, but the simplest one in terms of assembly and operation is a quadcopter, i. e., a multi-rotor platform with four engines. In turn, a quadcopter may have + and х configuration. In copters with a "+" configuration, one of the beams faces forward, while in platforms with the "x" configuration, the main direction of movement is between two adjacent beams.
There are many engines configurations: a tricopter, a hexacopter, or an octocopter, but the simplest one in terms of assembly and operation is a quadcopter, i. e., a multi-rotor platform with four engines. In turn, a quadcopter may have + and x configuration. In copters with a "+" configuration, one of the beams faces forward, while in platforms with the "x" configuration, the main direction of movement is between two adjacent beams.
![Types](../assets/1_4.png)

View File

@@ -117,12 +117,11 @@ In a closed electric circuit, the sum of all the EMF is equal to the sum of the
In making equations, the direction of circuit traversal is chosen and arbitrarily specified directions of currents are specified.
If an electric circuit contains two power sources, the directions of electromotive forces of which coincide, i.е., connected according to Fig. 1, the EMF across the entire circuit shall be equal to the sum of the EMFs of the sources,
т. i.е.,
If an electric circuit contains two power sources, the directions of electromotive forces of which coincide, i.e., connected according to Fig. 1, the EMF across the entire circuit shall be equal to the sum of the EMFs of the sources, i.e.,
**E = E1+E2.**
If a circuit contains two sources of EDS with opposite directions, i.е., connected according to Fig. 2, the total EMF of the circuit will be equal to the difference of EMFs of these sources
If a circuit contains two sources of EDS with opposite directions, i.e., connected according to Fig. 2, the total EMF of the circuit will be equal to the difference of EMFs of these sources
**Е = Е1—Е2.**

View File

@@ -46,7 +46,7 @@ set_attitude = rospy.ServiceProxy('set_attitude', srv.SetAttitude)
set_rates = rospy.ServiceProxy('set_rates', srv.SetRates)
land = rospy.ServiceProxy('land', Trigger)
# Take off 1 м
# Take off 1 m
navigate(x=0, y=0, z=1, frame_id='body', auto_arm=True)
```

View File

@@ -44,7 +44,7 @@ When using **LPE** (parameter `SYS_MC_EST_GROUP` = `local_position_estimator, at
* `SENS_FLOW_ROT` No rotation.
* `SENS_FLOW_MAXHGT` 4.0 (for the rangefinder VL53L1X)
* `SENS_FLOW_MINHGT` 0.01 (for the rangefinder VL53L1X)
* Optional: `LPE_FUSION`  falg 'pub agl as lpos down' is on (сf. [rangefinder setup](laser.md).
* Optional: `LPE_FUSION`  falg 'pub agl as lpos down' is on (see [rangefinder setup](laser.md).
[The `selfcheck.py` utility](selfcheck.md) will help you verify that all settings are correctly set.
@@ -97,7 +97,7 @@ When using Optical Flow, the maximal horizontal speed is further limited. This i
## Errors
If errors of `EKF INTERNAL CHECKS` occur, try to restart EKF2. To do so, enter in the MAVLink-console : в MAVLink-консоли:
If errors like `EKF INTERNAL CHECKS` occur, try to restart EKF2. To do so, enter in the MAVLink-console:
```nsh
ekf2 stop

View File

@@ -20,7 +20,7 @@ This is a group of modules that calculates the current state of the copter using
* Copter orientation (in the local coordinate system) pitch, roll, yaw (one of presentations);
* Copter position (in the local coordinate system) x, y, z;
* Copter speed (in the local coordinate system) vx, vy, vz;
* Global coordinates of the copter lattitude, longitude, altitude;
* Global coordinates of the copter latitude, longitude, altitude;
* Altitude above the surface;
* Other parameters (the drift of gyroscopes, wind speed, etc.).
@@ -39,15 +39,15 @@ This is a group of modules that calculates the current state of the copter using
Variant 2 is the most accurate; however, it is correct to use it only if the surface the copter flies over is flat. Otherwise, the Z axis origin will move up and down with the altitude of the surface.
## Multicopter Control Position (flying by position)
## Multicopter Position Control
These parameters adjust the flight of the copter by position (POSCTL, OFFBOARD, AUTO modes).
`MPC_THR_HOVER` — hovering throttle. This option is to set to the approximate percentage of throttle needed to make the copter maintain its altitude. If copter has a tendency to gain or lose altitude during the hovering mode, reduce or increase this value.
`MPC_XY_P` position factor *P* of the ESC. This parameter affects how sharply the copter will react to the position commands. A too high value may cause {перестрелы}.
`MPC_XY_P` position factor *P* of the ESC. This parameter affects how sharply the copter will react to the position commands. A too high value may cause overshoots.
`MPC_XY_VEL_P` speed factor *P* of the ESC. This parameter also affects the accuracy and sharpness of copter execution of the given position. A too high value may cause {перестрелы}.
`MPC_XY_VEL_P` speed factor *P* of the ESC. This parameter also affects the accuracy and sharpness of copter execution of the given position. A too high value may cause overshoots.
`MPC_XY_VEL_MAX` — the maximum horizontal speed in POSCTL, OFFBOARD, AUTO modes.

View File

@@ -41,21 +41,21 @@ Now you can install the ROS package itself.
```
After the package has installed, initialize `rosdep`.
Package `rosdep` will allow to easily install dependecies for the source files that you whish to compile. Running some essential components of ROS will as well require this package.
Package `rosdep` will allow to easily install dependencies for the source files that you whish to compile. Running some essential components of ROS will as well require this package.
```bash
sudo rosdep init
rosdep update
```
If you are not confortable with entering environment variables manually each time, you may configure it in a way that it add itself in your bash session on every new shell startup:
If you are not comfortable with entering environment variables manually each time, you may configure it in a way that it add itself in your bash session on every new shell startup:
```bash
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
```
If you whish to install any additionnal packages for yout ROS Melodic simply use:
If you whish to install any additional packages for your ROS Melodic simply use:
```bash
sudo apt-get install ros-melodic-PACKAGE

View File

@@ -14,7 +14,7 @@ Install package `ros-melodic-desktop-full` or `ros-melodic-desktop` using the [i
Start rviz
---
To start еру visualization of the state of Clover in real time, connect to it via Wi-Fi (`clover-xxx`) and run rviz, specifying an appropriate ROS_MASTER_URI:
To start the Clover state visualization in real time, connect to it via Wi-Fi (`clover-xxx`) and run rviz, specifying an appropriate ROS_MASTER_URI:
```(bash)
ROS_MASTER_URI=http://192.168.11.1:11311 rviz

View File

@@ -14,7 +14,7 @@ Consult the [official QGroundControl user guide](https://docs.qgroundcontrol.com
Prepare the MicroSD card for your flight controller.
<img src="../assets/pix-sd.png" alt="Pixracer и MicroSD-карта" class="zoom center" width=400>
<img src="../assets/pix-sd.png" alt="Pixracer and MicroSD-card" class="zoom center" width=400>
* Put the card into your computer (use an adapter if necessary).
* Format the card to FAT32 filesystem. Right click on the SD card icon in Windows Explorer and select "Format". Use the Disk Utility in macOS.
@@ -114,7 +114,7 @@ Press the *Save* button to save the changed value to the flight controller. Chan
> **Hint** Note that you should fine-tune the PID parameters for each drone individually. <!-- TODO: add PID article link -->
#### Cicruit breaker parameters
#### Circuit breaker parameters
1. Set `CBRK_USB_CHK` to 197848 to allow flights with the USB cable connected.
2. Disable safety switch check: `CBRK_IO_SAFETY` = 22027.

View File

@@ -13,7 +13,7 @@ The `simple_offboard` module of the `clover` package is intended for simplified
Main services are [`get_telemetry`](#gettelemetry) (receive telemetry data), [`navigate`](#navigate) (fly to a given point along a straight line), [`navigate_global`](#navigateglobal) (fly to a point specified as latitude and longitude along a straight line), [`land`](#land) (switch to landing mode).
Python samples
Python examples
---
You need to create proxies for services before calling them. Use the following template for your programs:

View File

@@ -8,17 +8,21 @@ In addition to [native installation instructions](simulation_native.md), we prov
* preconfigured Gazebo simulation environment;
* Visual Studio Code with C++ and Python plugins.
> **Info** The default username on the VM is `clover`, with password `clover`.
The VM is an easy way to set up a simulation environment, but can be used as a development environment for a real drone as well.
## Downloading
You can download the latest VM image [in the VM releases repository](https://github.com/CopterExpress/clover_vm/releases).
> **Note** The virtual machine should be used when native installation is not feasible or possible. You may experience reduced performance in programs that use 3D rendering, like rviz and Gazebo.
## Setting up the VM
You need to use a VM manager that supports OVF format, like [Virtualbox](https://www.virtualbox.org/wiki/Downloads), [VMware Player](https://www.vmware.com/products/workstation-player.html) or [VMware Workstation](https://www.vmware.com/products/workstation-pro.html).
You need to use a VM manager that supports OVF format, like [VirtualBox](https://www.virtualbox.org/wiki/Downloads), [VMware Player](https://www.vmware.com/products/workstation-player.html) or [VMware Workstation](https://www.vmware.com/products/workstation-pro.html).
> **Note** At the time of writing Virtualbox had issues running the VM, particularly with 3D applications. We recommend using VMware Player or VMware Workstation if possible. The following steps assume you're using VMware Player.
> **Note** At the time of writing VirtualBox had issues running the VM, particularly with 3D applications. We recommend using VMware Player or VMware Workstation if possible. The following steps assume you're using VMware Player.
Make sure that you have hardware virtualization enabled in your BIOS/UEFI (it may be supported by your hardware but turned off by default). The steps to enable virtualization differ from manufacturer to manufacturer, but should be described in your system manual. Consult your system's manufacturer if you're having trouble turning virtualization on.
@@ -33,7 +37,7 @@ Make sure that you have hardware virtualization enabled in your BIOS/UEFI (it ma
2. Right-click on the VM name and select **Virtual Machine Settings**. In the new window, set the following parameters:
* increase the amount of memory available to the virtual machine (a good rule of thumb is 2048 MB per CPU core, but no less than 4 GB):
![Increasing avaliable memory](../assets/simulation_setup_vm/03_max_memory.png)
![Increasing available memory](../assets/simulation_setup_vm/03_max_memory.png)
* increase the amount available CPU cores:
![Increasing cpu cores](../assets/simulation_setup_vm/04_core_count.png)
* enable 3D acceleration:

View File

@@ -103,7 +103,7 @@ arming = rospy.ServiceProxy('mavros/cmd/arming', CommandBool)
# ...
arming(False) # дизарм
arming(False) # disarm
```
### # {#transform}

View File

@@ -89,7 +89,7 @@ while True:
### Filtering the data
To filter (smooth out) the data and delete [emission](https://ru.wikipedia.org/wiki/Outbreak_%28statistics%29) [Kalman filter] (https://ru.wikipedia.org/wiki/Фильтр_Калмана) or a simple [median filter](https://ru.wikipedia.org/wiki/Median_filter) can be used. An example of median filtering implementation:
To filter (smooth out) the data and delete [outliers](https://en.wikipedia.org/wiki/Outlier), [Kalman filter](https://en.wikipedia.org/wiki/Kalman_filter) or a simple [median filter](https://ru.wikipedia.org/wiki/Median_filter) can be used. An example of median filtering implementation:
```python
import collections
@@ -97,7 +97,7 @@ import numpy
# ...
history = collections.deque(maxlen=10) # 10 - количество сэмплов для усреднения
history = collections.deque(maxlen=10) # 10 - number of samples for averaging
def read_distance_filtered():
history.append(read_distance())

View File

@@ -12,7 +12,7 @@ Read more about the interface and the Protocol in [this article](https://habr.co
## Linux TTY
In Linux, there is the concept of Posix Terminal Interface (read more [here](https://ru.wikipedia.org/wiki/TTY-абстракция)). It is an abstraction over the serial or virtual interface that allows several agents to work with the device simultaneously.
In Linux, there is the concept of POSIX Terminal Interface (read more [here](https://en.wikipedia.org/wiki/POSIX_terminal_interface). It is an abstraction over the serial or virtual interface that allows several agents to work with the device simultaneously.
An example of such abstraction in Raspbian may be `/dev/tty1` the device for text output to the screen connected via HDMI.
@@ -37,7 +37,7 @@ By default, Raspberry Pi 3 PL011 is connected to the Bluetooth module. And Mini
For the sake of convenience of working with these outputs, aliases exist in Raspbian:
* `/dev/serial0` always points to the TTY device that is connected to the GPIO ports.
* `/dev/serial1` always points to the TTY device that is connected to the Bluetooh module.
* `/dev/serial1` always points to the TTY device that is connected to the Bluetooth module.
### Configuration of UART on Raspberry Pi 3

View File

@@ -18,15 +18,15 @@
Сформируйте необходимые ключи VPN сети, для подключения Raspberry Pi и наземной станции.
Для того, чтобы подключить Raspberry Pi к вашей сети, установите пакет *openvpn*:
Для того, чтобы подключить Raspberry Pi к вашей сети, установите пакет `openvpn`:
```bash
sudo apt-get install openvpn
```
Перенесите ваши ключи в директорию */etc/openvpn/client*. Для удобства используйте графический SFTP интерфейс передачи данных, к примеру: WinSCP, FileZilla и т.д.
Перенесите ваши ключи в директорию `/etc/openvpn/client`. Для удобства используйте графический SFTP интерфейс передачи данных, к примеру: WinSCP, FileZilla и т.д.
Для включения режима клиента, необходимо активировать переданные вами ключи. Ключи могу быть сформированы в различных форматах, к примеру: *.ovpn*, *.conf*. Ключ или конфигурация использующийся на вашем коптере, должны быть строго в формате *.conf*.
Для включения режима клиента, необходимо активировать переданные вами ключи. Ключи могу быть сформированы в различных форматах, к примеру: `.ovpn`, `.conf`. Ключ или конфигурация использующийся на вашем коптере, должны быть строго в формате `.conf`.
Инициализируйте сервис применяющий ваши ключи для подключения в режиме клиента:
@@ -34,7 +34,7 @@ sudo apt-get install openvpn
sudo systemctl enable openvpn-client@config-name
```
где *config-name* - название вашего конфигурационного файла.
где `config-name` - название вашего конфигурационного файла.
Если все сделано правильно, при каждом перезапуске системы, сервис-клиент будет автоматически подключаться к вашей сети.
@@ -65,7 +65,7 @@ sudo systemctl enable openvpn-client@config-name
> **Info** При выборе джойстика, обратите внимание на количество рабочих каналов и на поддержку его, в QGroundControl(SDL2). Встречаются пульты поддерживающие всего 4 канала, что не удобно для такого типа управления.
Если изменения положения стиков отображается в окне QGgroundControl, вам остается только применить параметр, определяющий, что управление коптером происходит с помощью джойстика, а не радиоаппаратуры:
Если изменения положения стиков отображается в окне QGroundControl, вам остается только применить параметр, определяющий, что управление коптером происходит с помощью джойстика, а не радиоаппаратуры:
`COM_RC_IN_MODE` - Joystick/No RC Checks

View File

@@ -102,46 +102,50 @@
<img src="../assets/assembling_soldering_clever_4/esc_2.png" width=300 class="zoom border">
</div>
2. Установите регуляторы оборотов (ESC) в соответствующие места на луче и притяните хомутами.
2. Установите регуляторы оборотов (ESC) в соответствующие места на луче.
<div class="image-group">
<img src="../assets/assembling_soldering_clever_4/esc_3.png" width=300 class="zoom border">
<img src="../assets/assembling_soldering_clever_4/esc_4.png" width=300 class="zoom border">
</div>
3. Отмерьте необходимое количество силового провода регуляторов оборотов(ESC), и обрежьте лишнее.
3. Притяните регуляторы оборотов (ESC) хомутами.
4. Зачистите и залудите обрезанные провода
<img id="prop_rotation" src="../assets/assembling_soldering_clever_4/esc_5.png" width=300 class="zoom border center">
5. Залудите контактные площадки на плате распределения питания.
4. Отмерьте необходимое количество силового провода регуляторов оборотов(ESC), и обрежьте лишнее.
6. Припаяйте силовые провода регуляторов оборотов к плате распределения питания.
5. Зачистите и залудите обрезанные провода.
6. Залудите контактные площадки на плате распределения питания.
7. Припаяйте силовые провода регуляторов оборотов к плате распределения питания.
<div class="image-group">
<img src="../assets/assembling_soldering_clever_4/esc_5.png" width=300 class="zoom border">
<img src="../assets/assembling_soldering_clever_4/esc_6.png" width=300 class="zoom border">
<img src="../assets/assembling_soldering_clever_4/esc_7.png" width=300 class="zoom border">
</div>
> **Caution** Будьте внимательны к подписям контактов на плате. Красный провод должен идти к площадке с подписью *+*, а черный к подписи *-*.
7. Обрежьте лишний фазный кабель идущий от моторов.
8. Обрежьте лишний фазный кабель идущий от моторов.
8. Зачистите и залудите фазные кабели.
9. Зачистите и залудите фазные кабели.
9. Залудите контактные площадки регуляторов оборотов.
10. Залудите контактные площадки регуляторов оборотов.
10. Припаяйте фазные кабели к контактным площадкам регуляторов в любом порядке.
11. Припаяйте фазные кабели к контактным площадкам регуляторов в любом порядке.
<div class="image-group">
<img src="../assets/assembling_soldering_clever_4/esc_7.png" width=300 class="zoom border">
<img src="../assets/assembling_soldering_clever_4/esc_8.png" width=300 class="zoom border">
<img src="../assets/assembling_soldering_clever_4/esc_9.png" width=300 class="zoom border">
</div>
11. Припаяйте 3 разъема JST мама к 2ум площадкам *5V* и площадке *bat+*
12. Припаяйте 3 разъема JST мама к 2ум площадкам *5V* и площадке *bat+*.
<div class="image-group">
<img src="../assets/assembling_soldering_clever_4/esc_9.png" width=300 class="zoom border">
<img src="../assets/assembling_soldering_clever_4/esc_10.png" width=300 class="zoom border">
<img src="../assets/assembling_soldering_clever_4/esc_11.png" width=300 class="zoom border">
</div>
## Установка полетного контроллера
@@ -334,4 +338,15 @@
<img src="../assets/assembling_soldering_clever_4/guard_3.png" width=300 class="zoom border center">
4. Подключите полетный контролер к Raspberry Pi с помощью USB к кабеля.
<div class="image-group">
<img src="../assets/assembling_soldering_clever_4/guard_4.png" width=300 class="zoom border">
<img src="../assets/assembling_soldering_clever_4/guard_5.png" width=300 class="zoom border">
</div>
5. Установите ремешок для крепления АКБ.
<img src="../assets/assembling_soldering_clever_4/guard_6.png" width=300 class="zoom border center">
> **Success** Дрон собран, далее произведите [настройку](setup.md).

View File

@@ -36,5 +36,6 @@
|Полет коптера на точку на изображении с камеры, направленной вертикально вниз||
|Внедрение лидара ([RPLIDAR](https://www.slamtec.com/en/Lidar)) в Клевер||
|Зарядная станция для коптера на солнечном концентраторе|<!-- placeholder for gitbook-->|
|Стенд для стройки коэффициентов PID на Клевере|<!-- placeholder for gitbook-->|
Вышеперечисленные и другие проекты вы также можете реализовать в рамках конкурса проектов [Copter Hack](https://ru.coex.tech/copterhack). Мы приглашаем команды для реализации проектов и в других форматах.

View File

@@ -10,9 +10,13 @@
* предварительно настроенный симулятор Gazebo;
* среда разработки Visual Studio Code с плагинами для разработки на Python и C++.
> **Info** Имя пользователя по умолчанию на виртуальной машине - `clover`, пароль - `clover`.
Виртуальная машина может использоваться как для запуска симуляторов, так и для работы с настоящим дроном.
Скачать текущую версию виртуальной машины можно [в релизах репозитория виртуальной машины](https://github.com/CopterExpress/clover_vm/releases)
## Скачивание
Скачать текущую версию виртуальной машины можно [в релизах репозитория виртуальной машины](https://github.com/CopterExpress/clover_vm/releases).
> **Warning** Виртуальную машину следует использовать только в тех случаях, когда по каким-то причинам использование Ubuntu 18.04 напрямую невозможно. Производительность всех программ, особенно тех, которые используют 3D-графику - jMAVSim, Gazebo, rviz - будет существенно ниже; кроме того, в ряде случаев будут возникать графические ошибки, приводящие к частичной или полной неработоспособности указанных программ.