en docs: final edits

This commit is contained in:
Artem30801
2020-10-06 01:53:23 +03:00
parent 41bf1e3c5d
commit 4452c489aa
7 changed files with 76 additions and 82 deletions

View File

@@ -3,7 +3,7 @@
A separate module [animation](../../drone/modules/animation.py) is responsible for animation processing. When animation is loaded on the copter, the module divides the sequence of animation frames into 5 key stages:
1. The copter is stationary at the beginning of the animation - `static_begin`.
2. Copter takes off - `takeoff'.
2. Copter takes off - `takeoff`.
3. The copter follows the route of animation - `route`.
4. Copter performs landing - `land`.
5. The copter is stationary until the animation file - `static_end` is finished.
@@ -14,9 +14,9 @@ An animation frame is a set of data needed to position the copter and determine
* `yaw` - copter yaw, in radians
* `r`, `g`, `b` - сopter LED strip color components, integers from 0 to 255
After splitting the animation into key stages, the module generates an output sequence of frames defining the position of the copter and its lED strip color as well as the sequence of actions during the flight to the first point of the animation.
After splitting the animation into key stages, the module generates an output sequence of frames defining the position of the copter and its LED strip color as well as the sequence of actions during the flight to the first point of the animation.
You can configure the module in the [ANIMATION](client.md#раздел-animation) section.
You can configure the module in the [ANIMATION](client.md#animation-section) section.
Preliminary selection of frames is carried out using a set of [[OUTPUT]] flags, which set which frame sequences out of 5 key stages will be used in flight and which will not.

View File

@@ -4,7 +4,7 @@ The Addon for Blender is designed to convert Blender's copters flight animations
## Installation and configuration
* Download and install the latest version of Blender 2.83 from [the official website](https://www.blender.org/download/).
* Download and install the latest version of Blender 2.90 from [the official website](https://www.blender.org/download/).
* Open Blender, select `Edit > Preferences` from the top menu. In the opened settings window, select `Add-ons` in the side panel. Click the button `Install...` in the upper right corner of the window. In the dialog box, open the path to the addon folder [clever-show/blender-addon](.../../blender-addon/) and select the file `addon.py`. Click `Install Add-on from file...`. Addon is now installed.
* After installing the addon, tick the `Import-Export: clever-show animation (.csv)` checkbox to activate the addon.
@@ -13,7 +13,7 @@ Addon is now active and ready to go. You will not need to perform these operatio
## Exporting with the addon
* To open the export dialog box, click on the top menu `File > Export > clever-show animation (.csv)`. In the export window that opens, you should select the destination export path and the name of the folder that the addon will create during the export process. The export options panel is available in the side menu:
* `Use name filter for objects` - checkbox determines if the object filter will be used while saving the paths. If this option is disabled, the paths of all visible objects will be exported.`Name identifier` - фильтр имён объектов. Если активен чекбокс `Use name filter for objects`, будут сохранены только пути объектов, содержащих данное значение в названии.
* `Use name filter for objects` - checkbox determines if the object filter will be used while saving the paths. If this option is disabled, the paths of all visible objects will be exported. `Name identifier` - object name filter. If checkbox `Use name filter for objects` is active, only paths of objects containing this value in the name will be saved.
* `Show detailed animation warnings` - checkbox determines whether the animation's speeds and distances limits warnings will be displayed.
* `Speed limit` - warnings will be displayed if the specified speed limit is violated.
* `Distance limit` - warnings will be displayed if the specified minimum distance between drones is violated.
@@ -26,6 +26,6 @@ To deactivate an addon, uncheck the checkbox next to the addon name as described
For more information, click the arrow icon to the left of the activation field. There are also buttons in the unfolded block:
* `Documentation` - leads to the addon's documentation page
* `Report a bug` - leads to the issues page of the clever-show repository
* `Remove` - removes the addon (before installing a new version it is recommended to remove the old one)
* `Documentation` - leads to the addon's documentation page.
* `Report a bug` - leads to the issues page of the clever-show repository.
* `Remove` - removes the addon (before installing a new version it is recommended to remove the old one).

View File

@@ -12,18 +12,18 @@ Application for remote synchronized drone control in show and emergency drone pr
## Client workflow the Raspberry Pi image
The client is the `clever-show` service in the copter operating system. The service runs the [client.py](.../.../drone/client.py) script and starts automatically when the operating system boots. If it is necessary to apply the parameters of the updated client configuration, the service can be restarted. The `clever-show' service is designed to manage and configure the copter for group flight through the server application.
The client is the `clever-show` service in the copter operating system. The service runs the [client.py](.../.../drone/client.py) script and starts automatically when the operating system boots. If it is necessary to apply the parameters of the updated client configuration, the service can be restarted. The `clever-show` service is designed to manage and configure the copter for group flight through the server application.
Along with the client, the emergency drone protection service `failsafe` is registered in the operating system. This service launches the script [failsafe.py](.../../drone/failsafe.py) and starts automatically when the operating system boots . The service can be restarted if it is necessary to apply parameters of the updated client configuration.
The ''failsafe'' service is designed for automatic landing of the copter in emergency situations:
The `failsafe` service is designed for automatic landing of the copter in emergency situations:
* if there are no messages about the drone position from the `/mavros/vision_pose/pose` topic.
* in case of collision with objects in flight, when the distance between the current point where the copter is and the point where it should be according to the flight task exceeds the threshold value.
Also `failsafe` provides '`/emergency_land` ROS service, which can be accessed by the client upon command from the server for emergency drone landing.
Also `failsafe` provides `/emergency_land` ROS service, which can be accessed by the client upon command from the server for emergency drone landing.
Logs of both services are written to the`/var/log/syslog` file of the drone's on-board computer Raspberry Pi operating system. The log files of the current session are available for viewing upon execution of the commands `journalctl -u clever-show` for the client and `journalctl -u failsafe` for the service of emergency drone protection in the terminal connected to Raspberry Pi. Logs may be useful for analysis of unexpected behavior or emergencies during the flight under control of the client application.
Logs of both services are written to the `/var/log/syslog` file of the drone's on-board computer Raspberry Pi operating system. The log files of the current session are available for viewing upon execution of the commands `journalctl -u clever-show` for the client and `journalctl -u failsafe` for the service of emergency drone protection in the terminal connected to Raspberry Pi. Logs may be useful for analysis of unexpected behavior or emergencies during the flight under control of the client application.
## Client configuration
@@ -42,13 +42,13 @@ In order to make a centralized upload of the configuration to all the copters th
* `config_name` - configuration name
* `config_version` - configuration version
* `id` - the name of the copter displayed in the table. If the value is `/hostname` - name is determined from the `/etc/hostname` file.
* `clover_dir` - path to the directory with the [clover](https://github.com/CopterExpress/clover) ROS package. It is necessary to load files with aruco maps and launch configuration files for starting `clover` service. If the value `auto` - the client tries to define the required directory of the package `clover` (or `clever`) by itself through `rospkg` at the first launch. If the directory of the `clover` package cannot be determined, the value is set to `error` and files specific to ROS configuration of the `clover` package are not transferred from server to client.путь к директории с ROS пакетом [сlover](https://github.com/CopterExpress/clover).
* `clover_dir` - path to the directory with the [clover](https://github.com/CopterExpress/clover) ROS package. It is necessary to load files with ArUco maps and launch configuration files for starting `clover` service. If the value `auto` - the client tries to define the required directory of the package `clover` (or `clever`) by itself through `rospkg` at the first launch. If the directory of the `clover` package cannot be determined, the value is set to `error` and files specific to ROS configuration of the `clover` package are not transferred from server to client.
#### SERVER section
This section contains the parameters of client-server network communication. Following parameters are available:
* `port` - TCP port to which incoming connections from the server will be accepted. When using the [use_broadcast](server.md#broadcast section) setting on the server, this port will be automatically configured by the client. *It is recommended to change the default value for security reasons (any five digits or more if another software does not use the selected port).*
* `port` - TCP port to which incoming connections from the server will be accepted. When using the [use_broadcast](server.md#broadcast-section) setting on the server, this port will be automatically configured by the client. *It is recommended to change the default value for security reasons (any five digits or more if another software does not use the selected port).*
* `host` - server IP address.
* `buffer_size` - buffer size for data transfer. *It is not recommended to modify. It is recommended to use the same value for the server and clients.*
@@ -87,7 +87,7 @@ This section describes the offset of the coordinate system with the name `floor`
* `translation` - offset of the `floor` coordinate system along the axes (x, y, z) from the `parent` coordinate system, in meters.
* `rotation` - rotation of `floor` coordinate system by angles (roll, pitch, yaw) around axes (x, y, z) relative to `parent` coordinate system, in degrees.
**Warning!** Rotations `roll`, `pitch`, `yaw` are made sequentially in the stated order.
> **Warning!** Rotations `roll`, `pitch`, `yaw` are made sequentially in the stated order.
#### GPS FRAME section
@@ -103,18 +103,18 @@ This section describes creation of a coordinate system with the name `gps`. The
This section configures the animation processing. A separate module [animation](../../drone/modules/animation.py) is responsible for animation processing. When an animation is loaded on the copter, the module divides the sequence of animation frames into 5 key stages:
1. Copter is stationary at the beginning of the animation - `static_begin`.
2. Copter takes off - `takeoff'.
2. Copter takes off - `takeoff`.
3. Copter follows the animation path - `route`.
4. Copter performs landing - `land`
5. Copter is stationary until the end of the animation file - `static_end`.
An animation frame is a set of data necessary to position the copter and determine its led strip color. In the current version of the software the animation frame is represented by a sequence of numbers `x y zaw r g b` in the line `.csv` of the animation file, where:
An animation frame is a set of data necessary to position the copter and determine its LED strip color. In the current version of the software the animation frame is represented by a sequence of numbers `x y zaw r g b` in the line `.csv` of the animation file, where:
* `x',`y', `z' - copter coordinates in the current frame, in meters
* `x`, `y`, `z` - copter coordinates in the current frame, in meters
* `yaw` - the copter's yaw in radians
* `r`, `g`, `b` - components of the color of the copter led strip, integers from 0 to 255
* `r`, `g`, `b` - components of the color of the copter LED strip, integers from 0 to 255
After splitting the animation into key stages, the module generates an output sequence of frames defining the position of the copter and its led strip color as well as the sequence of actions when flying to the first point of the animation. Adjustment of the module is performed using the following parameters:
After splitting the animation into key stages, the module generates an output sequence of frames defining the position of the copter and its LED strip color as well as the sequence of actions when flying to the first point of the animation. Adjustment of the module is performed using the following parameters:
* `start_action` - the first action when the animation playback starts. Available options:
@@ -126,65 +126,56 @@ If the copter takes off from the ground in the animation file, at the start of t
If in the animation file the copter starts to fly in the air, at the start of the animation will be applied **flight logic to the first point (takeoff)**: The copter with the motors turned off plays the color from the animation as long as it is stationary, turns the motors on before takeoff, then takes off in `takeoff_height` time, then moves to the first point in `reach_first_point_time` and then starts to follow the points specified in the animation.
* `takeoff_level` - takeoff level to automatically detect the first action of the copter when the animation starts
* `takeoff_level` - takeoff level to automatically detect the first action of the copter when the animation starts.
* `ground_level` - ground level, used to check if the copter will try to fly underground when playing the animation. Available settings:
* `current` - the current height level of the copter before the start is taken as the ground level.
* z coordinate in meters
* `check_ground` - boolean value, determines whether to check the ground level in the animation.
* `frame_delay` - playback time of one frame in seconds
* `frame_delay` - playback time of one frame in seconds.
* `yaw` - copter rotation during flight to points, in degrees. If `nan`, the copter preserves its original orientation in flight. If `animation` - the copter rotates by yaw from the animation file.
* `ratio` - scale of animation (ratio_x, ratio_y, ratio_z) along the axis (x, y, z)
* `common_offset` - Animation offset relative to the current system, common for all copters, in meters. List of 3 values (x, y, z): each value sets the offset on the corresponding axis.
* `private_offset` - Animation offset relative to the current system, only for this copter, in meters. List of 3 values (x, y, z): each value sets the offset on the corresponding axis.
* `[[OUTPUT]]` - flags that define which steps will be included in the output frame sequence.
#### LED section
Settings of the LED strip use on the copter. To configure the LED strip itself, you need to configure the `led.launch` file, see [LED strip in Clover](https://clover.coex.tech/ru/leds.html) for details.
Settings of the LED strip use on the copter. To configure the LED strip itself, you need to configure the `led.launch` file, see [LED strip in Clover](https://clover.coex.tech/en/leds.html) for details.
* `use` - boolean value, determines whether the LED strip is used
* `takeoff_indication` - boolean value, determines whether to use the LEDs to indicate takeoff
* `land_indication` - boolean value, determines whether to use the LEDs to indicate land
* `use` - Boolean value, determines whether the LED strip is used.
* `takeoff_indication` - Boolean value, determines whether to use the LEDs to indicate takeoff.
* `land_indication` - Boolean value, determines whether to use the LEDs to indicate land.
#### FAILSAFE section
This section configures the program of emergency protection of the copter from a position loss or collision with an object. The `failsafe` module provides the service `/emergency_land` at startup, its configuration is located in the [EMERGENCY LAND](#emergency-land-section) section.
* `enabled` - boolean value, determines whether to use emergency protection in case of loss of visual position or collision with an object.
* `log_state` - boolean value, determines whether the copter state will be logged in the service log: `armed: {} | mode: {} | vis_dt: {:.2f} | pos_delta: {:.2f} | pos_dt: {:.2f} | range: {:.2f} | watchdog_action: {}`.
* `action` - action upon emergency protection triggering. Available options: `land` - landing of the copter in the flight controllers mode AUTO.LAND, `emergency_land` - landing of the copter with the gradual reduction of the motor power, `disarm` - switching off the motors. **Warning!** It is not recommended to use the AUTO.LAND mode with the barometer turned off - when the altitude source in flight is lost, e.g. laser reading or visual position, the AUTO.LAND mode does not guarantee the landing of the copter, because it is oriented to the altitude reading. It is recommended to use the `emergency_land` mode to land the copter when positioning it using a visual position or laser and the possibility of losing data from these systems.
* `vision_pose_delay_after_arm` - time after takeoff of the copter in seconds, required to get the visual position. During this time after takeoff, the visual position loss protection will not work. This parameter is useful when using the emergency protection module in conjunction with the positioning system with aruco markers located on the floor: at takeoff copter has no visual position for some time.
* `vision_pose_timeout` - time in seconds after losing the visual position, after which the emergency protection is triggered.
* `position_delta_max` - the maximum distance between the current position and the point where the copter should now be in meters. Required to check for collision of the copter with objects. If the distance between the current position of the copter and the point where the copter should be now is greater than this number (in meters), an emergency protection is triggered.
* `disarm_timeout` - time after which the copter will unconditionally shut down the motors after the emergency protection is triggered, in seconds.
* `enabled` - Boolean value, determines whether to use emergency protection in case of loss of visual position or collision with an object.
* `log_state` - Boolean value, determines whether the copter state will be logged in the service log: `armed: {} | mode: {} | vis_dt: {:.2f} | pos_delta: {:.2f} | pos_dt: {:.2f} | range: {:.2f} | watchdog_action: {}`.
* `action` - Action upon emergency protection triggering. Available options: `land` - landing of the copter in the flight controllers mode AUTO.LAND, `emergency_land` - landing of the copter with the gradual reduction of the motor power, `disarm` - switching off the motors. **Warning!** It is not recommended to use the AUTO.LAND mode with the barometer turned off - when the altitude source in flight is lost, e.g. laser reading or visual position, the AUTO.LAND mode does not guarantee the landing of the copter, because it is oriented to the altitude reading. It is recommended to use the `emergency_land` mode to land the copter when positioning it using a visual position or laser and the possibility of losing data from these systems.
* `vision_pose_delay_after_arm` - Time after takeoff of the copter in seconds, required to get the visual position. During this time after takeoff, the visual position loss protection will not work. This parameter is useful when using the emergency protection module in conjunction with the positioning system with ArUco markers located on the floor: at takeoff copter has no visual position for some time.
* `vision_pose_timeout` - Time in seconds after losing the visual position, after which the emergency protection is triggered.
* `position_delta_max` - The maximum distance between the current position and the point where the copter should now be in meters. Required to check for collision of the copter with objects. If the distance between the current position of the copter and the point where the copter should be now is greater than this number (in meters), an emergency protection is triggered.
* `disarm_timeout` - Time after which the copter will unconditionally shut down the motors after the emergency protection is triggered, in seconds.
#### EMERGENCY LAND section
Settings of emergency landing parameters in case of `emergency_land` emergency protection action or when calling the `/emergency_land` ROS service.
* `thrust` - the initial power supplied to the motors in the event of a `emergency_land` action when the emergency protection is triggered. Measurementless value, from 0 (no thrust) to 1 (full thrust). For a guaranteed fit it is recommended to set it to a value 5-10 percent lower than the hanging gas (parameter `MPC_THR_HOVER` in px4). **Warning!** Incorrect configuration of this option may cause the copter to rise up instead of landing!
* `decrease_thrust_after` - the time after which the power on the motors slowly begins to decrease (in seconds) if the action `emergency_land` is selected when the emergency protection is triggered.
* `thrust` - The initial power supplied to the motors in the event of a `emergency_land` action when the emergency protection is triggered. Measurementless value, from 0 (no thrust) to 1 (full thrust). For a guaranteed fit it is recommended to set it to a value 5-10 percent lower than the hanging gas (parameter `MPC_THR_HOVER` in PX4). **Warning!** Incorrect configuration of this option may cause the copter to rise up instead of landing!
* `decrease_thrust_after` - The time after which the power on the motors slowly begins to decrease (in seconds) if the action `emergency_land` is selected when the emergency protection is triggered.
#### SYSTEM section
System settings for client's service commands
* `change_hostname` - boolean option, determines whether a change of hostname is required when renaming the copter `id`.
* `restart_after_rename` - boolean option, determines whether it is necessary to reboot the copter when renaming its `id` remotely from the server.
* `change_hostname` - Boolean value, determines whether a change of hostname is required when renaming the copter `id`.
* `restart_after_rename` - Boolean value, determines whether it is necessary to reboot the copter when renaming its `id` remotely from the server.
#### NTP section
In addition to time synchronization (with millisecond precision) using the chrony package, there is an alternative - the ability to use external (in the presence of a local network connection to the Internet) or intranet NTP-servers. **Warning!** For proper system operation, both **the server and the clients** must use a single method of time synchronization (set of parameters in this section). This section is fully unified for both server and clients.
* `use` - determines whether time synchronization using NTP will be used. (if `False', the local OS time will be used (synchronized automatically when using chrony). *It is recommended to use chrony instead of NTP*.
* `host` - host name or IP address of the NTP server (local or remote)
* `port` - port used by the NTP server
* `use` - determines whether time synchronization using NTP will be used. (if `False`, the local OS time will be used (synchronized automatically when using chrony). *It is recommended to use chrony instead of NTP*.
* `host` - host name or IP address of the NTP server (local or remote).
* `port` - port used by the NTP server.

View File

@@ -4,22 +4,23 @@ Sometimes it is necessary to build an image with copter settings different from
## Building preparation
Install [docker](https://www.docker.com):
Install [Docker](https://www.docker.com):
```bash
sudo apt install docker.io
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
```
## Local build with modified Clover settings
* Place the Clover configuration folders (`launch`, `map` and `camera_info`) in the`builder/clever-config` [folder](../../builder/clever-config) in the clever-show source directory.
* All files from the `launch` folder will be copied to the `/home/pi/catkin_ws/src/clever/clever/launch' directory in the built image.
* Place the Clover configuration folders (`launch`, `map` and `camera_info`) in the `builder/clever-config` [folder](../../builder/clever-config) in the clever-show source directory.
* All files from the `launch` folder will be copied to the `/home/pi/catkin_ws/src/clever/clever/launch` directory in the built image.
* All files from the `map` folder will be copied to the `/home/pi/catkin_ws/src/clever/aruco_pose/map` directory in the built image.
* All files from the `camera_info` folder will be copied to the `/home/pi/catkin_ws/src/clever/clever/camera_info` directory in the built image.
* Build your image with docker:
* Build your image with Docker:
```bash
cd source-dir
cd <source-dir>
sudo docker run --privileged -it --rm -v /dev:/dev -v $(pwd):/mnt goldarte/img-tool:v0.5
```
@@ -28,7 +29,7 @@ sudo docker run --privileged -it --rm -v /dev:/dev -v $(pwd):/mnt goldarte/img-t
* Extract the file with the downloaded image, navigate to the directory with this image, and enter the image collector console using the command:
```bash
cd image-dir
cd <image-dir
sudo docker run --privileged -it --rm -v /dev:/dev -v $(pwd):/mnt goldarte/img-tool:v0.5 img-chroot /mnt/<IMAGE>
```

View File

@@ -2,13 +2,13 @@
The `clover` software officially supports the following [positioning systems](https://clover.coex.tech/en/programming.html#positioning) :
* [optical flow](https://clover.coex.tech/en/optical_flow.html)
* [aruco](https://clover.coex.tech/en/aruco.html)
* [gps](https://clover.coex.tech/en/gps.html)
* [Optical Flow](https://clover.coex.tech/en/optical_flow.html)
* [ArUco](https://clover.coex.tech/en/aruco.html)
* [GPS](https://clover.coex.tech/en/gps.html)
The `clever-show` software supports all positioning systems supporte by`clover`.
**Following configuration examples are for the Clover 4 copter, assembled and configured according to the [documentation](https://clover.coex.tech)**.
>Following configuration examples are for the Clover 4 copter, assembled and configured according to the [documentation](https://clover.coex.tech).
It is recommended to set up and check one copter from the group and reproduce its settings for the rest of the copters before starting the group.
@@ -17,8 +17,8 @@ Configure one copter to work with any of listed above positioning systems. Setup
* Editing `.launch` files of ROS package `clover`. These files are located in the directory `/home/pi/catkin_ws/src/clover/clover/launch` on the copter (on Raspberry Pi).
* Configuring the flight controller parameters.
* Editing [client](client.md) `clever-show` configuration file.
* Editing [сервера](server.md) `clever-show` configuration file.
* [Calibrating camera](https://clover.coex.tech/en/camera_calibration.html).
* Editing [server](server.md) `clever-show` configuration file.
* [Calibrating camera](../camera_calibration.html).
Make sure that the copter holds the position autonomously: mark the checkbox near the name of the copter and press the "Takeoff" button in the right panel of the server interface. The copter should take off at the height specified in the `takeoff_height` parameter of the "FLIGHT" section in the [client configuration](.../drone/config/spec/configspec_client.ini). By default, this height is 1 meter. If the copter takes off and holds a position at 1 meter height, the check is passed. Put the copter on the ground by pressing the `Land` or `Land All` button. **Warning!** For your safety it is recommended to perform a test of autonomous takeoff with the remote control turned on and ability to intercept the copter into the manual mode.
@@ -30,25 +30,25 @@ If the takeoff was successful, reproduce the client configuration, positioning s
* The flight controller configuration file can be saved by connecting to the flight controller through [QGroundControl](http://qgroundcontrol.com) application. It is possible to connect directly to the flight controller [via USB port](https://clover.coex.tech/en/connection.html) or [via TCP or UDP bridge](https://clover.coex.tech/en/gcs_bridge.html) (the TCP bridge is configured in the `clever-show` image by default, in the `Host Address` field you can enter the name of the copter instead of the ip address with the addition of .local at the end, e.g. clover-1.local). After connection you should go to [section](https://docs.px4.io/master/en/advanced_config/parameters.html#tools) `Parameters -> Tools -> Save to file...` and choose the path to save the parameter file.
* The camera calibration file is useful for refinement of visual positioning. The name of the calibration file should consist of the id of the copter, for which the calibration was made, with the addition of the extension `.yaml', e.g.`clover-1.yaml'. To get the calibration files, use the [manual](https://clover.coex.tech/ru/camera_calibration.html).
After loading the necessary files from the configured copter, copy these files to the other copters: select the necessary copters in the table and use the commands `Send -> Configuration`, `Send -> Launch files folder`, `Send -> FCU parameters file`, `Send -> Camera calibrations` from the `Selected drones` section of the [server](server.md#Selected-drones) application .
After loading the necessary files from the configured copter, copy these files to the other copters: select the necessary copters in the table and use the commands `Send -> Configuration`, `Send -> Launch files folder`, `Send -> FCU parameters file`, `Send -> Camera calibrations` from the [`Selected drones`](server.md#selected-drones-section) section of the server application .
## Settings of clever-show server and client
The `clever-show` software suite includes many status checks of the copters to minimize the number of failed launches as well as a set of parameters to configure the positioning systems. All settings are stored in client and server application configuration files. Each positioning system has its own features that need to be taken into account when configuring the server-client interaction. Below are the settings that you need to pay attention to when configuring the client and server:
* Server:
* [CHECKS](server.md#checks) section - server side copter telemetry checks
* [CHECKS](server.md#checks-section) section - server side copter telemetry checks
* Client:
* [FLIGHT](client.md#flight-section) section - name of the frame_id reference coordinate system, flight parameters
* [FLOOR FRAME](client.md#floor-frame section) section - allows to create a new coordinate system with the name `floor` in relation to any existing coordinate system:
* `map` - matches the starting position of the copter when using optical flow or gps
* `map` - matches the starting position of the copter when using optical flow or GPS
* `aruco_map` - matches the origin of ArUco marker map coordinates
* `gps` - the origin of coordinates is in the specified GPS coordinate with rotation by the specified angle relative to the north, it is adjusted in [GPS FRAME] (client.md#gps-frame-section) and allows to set the coordinate system with a common origin for all copters.
* [FAILSAFE](client.md#failsafe-section) section - disabled by default, but allows you to configure emergency landing conditions of the copter:
* at loss of visual position - useful for ArUco marker positioning system.
* if there is a large distance between the current position and the point where the copter should be - with the help of this check it is possible to avoid unexpected behavior of copters during collisions or any physical problems
* [EMERGENCY LAND](client.md#emergency-land-section) section - configures emergency landing of the copter: the parameter `thrust` sets the throttle of motors to start landing, after the time `decrease_thrust_after` the copter starts to gradually reduce the throttle level to 0. **Attention!** The default gas level of the emergency landing is 45% - this setting works for the Clover 4 copter with a 3S battery. If your configuration is different, you should first determine the hovering throttle and then set the `thrust` parameter to 5% less than the hovering throttle. If the emergency landing throttle exceeds the hovering throttle of the copter, the copter may fly up for the first 3 seconds (the default value of `decrease_thrust_after`) and only then will start to smoothly reduce the motor throttle to 0.
* [EMERGENCY LAND](client.md#emergency-land-section) section - configures emergency landing of the copter: the parameter `thrust` sets the throttle of motors to start landing, after the time `decrease_thrust_after` the copter starts to gradually reduce the throttle level to 0. **Warning!** The default gas level of the emergency landing is 45% - this setting works for the Clover 4 copter with a 3S battery. If your configuration is different, you should first determine the hovering throttle and then set the `thrust` parameter to 5% less than the hovering throttle. If the emergency landing throttle exceeds the hovering throttle of the copter, the copter may fly up for the first 3 seconds (the default value of `decrease_thrust_after`) and only then will start to smoothly reduce the motor throttle to 0.
## Optical flow
@@ -106,7 +106,7 @@ In order to configure the server configuration for positioning by optical flow,
* Execute the command `rm config/server.ini` from the directory with the location of the application `server.py`.
* Restart the server by selecting the command `Server -> Restart server` from the top menu item.
## Aruco
## ArUco
ArUco-Markers is a popular technology for positioning robotic systems using computer vision. Positioning is performed by obtaining information about the location of special visual markers.
@@ -120,7 +120,7 @@ If the marker map is located on the floor, there are some nuances: right after s
### clover ROS package configuration
Setting up the positioning system by ArUco markers is described in the `clover` [documentation](https://clover.coex.tech/ru/aruco_map.html) .
Setting up the positioning system by ArUco markers is described in the `clover` [documentation](https://clover.coex.tech/en/aruco_map.html) .
Examples of `.launch` files for setting up a marker map on the floor:
@@ -151,7 +151,7 @@ Satellite positioning is the preferred method of positioning for outdoor flights
### clover ROS package configuration
Setting up the positioning system by ArUco markers is described in the `clover` [documentation](https://clover.coex.tech/ru/gps.html).
Setting up the positioning system by ArUco markers is described in the `clover` [documentation](https://clover.coex.tech/en/gps.html).
Example `.launch` file: [clover.launch](../../examples/positioning/gps/launch/clover.launch).

View File

@@ -35,18 +35,18 @@ The copter is considered **ready to fly** if all cells in the row except `animat
* `copter ID` - the client name. Can be configured on the client side. Displayed immediately when the client is connected. Next to each Copter ID there is a checkbox - Copters whose ID is marked with a positive checkbox (tick) are considered *selected*. Cells in this column are always pass the check.
* By double-clicking on this field you can enter a new `copter ID` of the client and rename it. As a name, combinations of Latin letters, digits and dashes (A-Z, a-z, 0-9, '-') not longer than 63 characters are permitted. The dash cannot be the first character.
* `version` - a hash code of the current git version of the client. Cells in this column are checked when [check_git_version](#checks section) is enabled (value `true`) in the server settings. A cell in this column passes the check if the hash code of the git version of the given client and the server match (if the server is not located in the git repository, the check is passed out automatically).
* `version` - a hash code of the current git version of the client. Cells in this column are checked when [check_git_version](#checks-section) is enabled (value `true`) in the server settings. A cell in this column passes the check if the hash code of the git version of the given client and the server match (if the server is not located in the git repository, the check is passed out automatically).
* `configuration` - a user-defined version of the client configuration. Cells in this column are always pass the check.
* Cells of this column supports *drag-and-drop*. When you drag and drop a cell to any third-party application that supports files (e.g. "Explorer"), the client configuration file will be copied to the specified location. When a cell is dragged to another cell, the configuration file will be copied from one cell to another. When a file is dragged to a cell, it will be written to the client as a configuration (subject to validation). When the configuration is transferred to the client, the `PRIVATE` section will not be sent.
* `animation ID` - an internal name of the animation file loaded by the client. A cell in this column does not pass the check if there is no animation (value `No animation`). In other cases, if a cell is not empty, it will be checked. **Warning!** Check if the names of the animation files correspond to the copters before starting.
* `battery` - a value of voltage on the copter battery in volts and charge in percent according to the flight controller. A cell in this column passes the check if the battery charge value is higher than [battery_percentage_min](#section-checks) specified in the server settings. In other cases, if a cell is not empty, it does not pass the check.
* `battery` - a value of voltage on the copter battery in volts and charge in percent according to the flight controller. A cell in this column passes the check if the battery charge value is higher than [battery_percentage_min](#checks-section) specified in the server settings. In other cases, if a cell is not empty, it does not pass the check.
* `system` - a flight controller status. A cell in this column passes the check if its value is `STANDBY`. In other cases, if a cell is not empty, it does not pass the check.
* `sensors` - calibration status of the flight controller compass, accelerometer and gyroscope. A cell in this column passes the check if its value is `OK`. In other cases, if a cell is not empty, it does not pass the check.
* `mode` - flight controller mode. A cell in this column does not pass the check if its value `NO_FCU` or contains `CMODE`. In other cases, if a cell is not empty, it passes the chseck.
* `checks` - copter self-test state. A cell in this column passes the check if its value is `OK`. In other cases, if a cell is not empty, it does not pass the check.
* Double-clicking on a cell if there are errors will show a dialog box with full detailed information about all errors.
* `current x y z yaw frame_id` - current copter position with the coordinate system name. The cell is automatically passes the check if [check_current_position](#section-checks) is set to `false`. Otherwise, a cell in this column does not pass the check if its value is `NO_POS` or contains `nan`. Otherwise, if a cell is not empty, it passes the check.
* `start x y z action delay` - start position of the copter for playback of the animation, the first action during playback of the animation and the time after which the first action will be performed after the start of the animation. A cell in this column does not pass the check if its value `NO_POS`, the distance between the current and the starting position of the copter is greater than [start_pos_delta_max](#section-checks) or the client's animation module generates an error when processing the animation and checking that all points of the animation are above ground level. Otherwise, if a cell is not empty, it passes the check.
* `current x y z yaw frame_id` - current copter position with the coordinate system name. The cell is automatically passes the check if [check_current_position](#checks-section) is set to `false`. Otherwise, a cell in this column does not pass the check if its value is `NO_POS` or contains `nan`. Otherwise, if a cell is not empty, it passes the check.
* `start x y z action delay` - start position of the copter for playback of the animation, the first action during playback of the animation and the time after which the first action will be performed after the start of the animation. A cell in this column does not pass the check if its value `NO_POS`, the distance between the current and the starting position of the copter is greater than [start_pos_delta_max](#checks-section) or the client's animation module generates an error when processing the animation and checking that all points of the animation are above ground level. Otherwise, if a cell is not empty, it passes the check.
* `dt` - the delay between the time on the server and the client in seconds, including network latency. A cell in this column passes the check if its value is less than [time_delta_max](#checks-section) specified in the server configuration. In other cases, if a cell is not empty, it does not pass the check. If the values are too high, it signals that there is no time synchronization between the copter and the client.
### Menu
@@ -55,7 +55,8 @@ The copter is considered **ready to fly** if all cells in the row except `animat
![Screenshot of the section - Selected drones - Send](../assets/server-drone-send.png)
This section contains several utilities to send various data and commands to *selected* clients. **Warning!** Do not use these commands during the flight of copters!
This section contains several utilities to send various data and commands to *selected* clients.
>**Warning!** Do not use these commands during the flight of copters!
* `Send` subsection
@@ -69,7 +70,7 @@ This section contains several utilities to send various data and commands to *se
---
* `Aruco map` - sends *single* aruco marker map file to all selected clients. In the dialog box, select *one* card file in the specified format. File on client will be overwritten and saved as `<clover_dir>/.../aruco_pose/map/animation_map.txt`. Once the file is received and written, the client will automatically restart the `clover` service. In order to resume flight functions and to receive some telemetry values *it is necessary to wait* some time until the service is fully started.
* `Aruco map` - sends *single* ArUco marker map file to all selected clients. In the dialog box, select *one* card file in the specified format. File on client will be overwritten and saved as `<clover_dir>/.../aruco_pose/map/animation_map.txt`. Once the file is received and written, the client will automatically restart the `clover` service. In order to resume flight functions and to receive some telemetry values *it is necessary to wait* some time until the service is fully started.
* `Animation` - sends *a single* animation file to all selected clients. In the dialog box you need to select *one* animation file. On the client, the file will be saved as `<clever-show>/drone/animation.csv`. This is a useful feature to quickly test multiple drones when used in combination with `Set start X Y to current position`.
@@ -242,7 +243,7 @@ The server can use UDP broadcast to send clients actual information about the se
In addition to time synchronization (with millisecond precision) using the chrony package, there is an alternative - the ability to use external (in the presence of a local network connection to the Internet) or intranet NTP-servers. **Warning!** For proper system operation, both **the server and the clients** must use a single method of time synchronization (set of parameters in this section). This section is fully unified for both server and clients.
* `use` - determines whether time synchronization using NTP will be used. (if `False', the local OS time will be used (synchronized automatically when using chrony). *It is recommended to use chrony instead of NTP*.
* `use` - determines whether time synchronization using NTP will be used. (if `False`, the local OS time will be used (synchronized automatically when using chrony). *It is recommended to use chrony instead of NTP*.
* `host` - host name or IP address of the NTP server (local or remote)
* `port` - port used by the NTP server

View File

@@ -51,10 +51,11 @@ sudo client-setup <SSID> <password> <copter name>
sudo apt install chrony
```
* Set the required python packages using the command (ran from the source directory)
* Set the required Python packages using the command (ran from the source directory)
```bash
pip3 install -r requirements.txt
cd
pip3 install -r server/requirements.txt
```
* Connect to the wifi network of the router where your copters are connected.
@@ -98,11 +99,11 @@ Make sure that the copter holds the position autonomously: mark the checkbox nea
You can configure the copter to utilize a different positioning system. The following [positioning systems](https://clover.coex.tech/en/programming.html#positioning) are officially supported:
* optical flow
* aruco
* GPS
* [optical flow](../optical_flow.md).
* [ArUco](../aruco.md).
* [GPS](../gps.md).
**Detailed information about working with and setting up positioning systems can be found [here](positioning.md)**
>**Detailed information about working with and setting up positioning systems can be found [here](positioning.md)**
### LED Strip Operation Check