Compare commits
34 Commits
v0.21.1
...
take_off_s
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
749e34b3c4 | ||
|
|
68cec159f7 | ||
|
|
4e8127f690 | ||
|
|
8f78f2b6e4 | ||
|
|
c8163cd38b | ||
|
|
7831992d6a | ||
|
|
873befdba9 | ||
|
|
c3cbc305c3 | ||
|
|
b71e802a2e | ||
|
|
3c5f2c958e | ||
|
|
267993aec4 | ||
|
|
86dd42c3b3 | ||
|
|
9d338d843b | ||
|
|
3e100bee91 | ||
|
|
8a29b9a37a | ||
|
|
2e80a06db1 | ||
|
|
0003985c3b | ||
|
|
f250916ede | ||
|
|
ee2944a1d3 | ||
|
|
a088524468 | ||
|
|
215fe237ca | ||
|
|
8c1b5c19d0 | ||
|
|
779dfb3f4f | ||
|
|
23d503adc5 | ||
|
|
0350ecbff7 | ||
|
|
12bed337dc | ||
|
|
6a1b609ccd | ||
|
|
3d5c51a42e | ||
|
|
3702ed0c86 | ||
|
|
741abadb54 | ||
|
|
c6dc732867 | ||
|
|
ba76e51966 | ||
|
|
7951f0e2ba | ||
|
|
cd58c03c0f |
@@ -1,6 +1,6 @@
|
||||
# clover🍀: create autonomous drones easily
|
||||
|
||||
<img src="docs/assets/clever4-front-white.png" align="right" width="400px" alt="COEX Clover Drone">
|
||||
<img src="docs/assets/clover42-main.png" align="right" width="400px" alt="COEX Clover Drone">
|
||||
|
||||
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.
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@ p = cv2.aruco.DetectorParameters_create()
|
||||
|
||||
gen = ParameterGenerator()
|
||||
|
||||
gen.add("enabled", bool_t, 0, "if detection enabled", True)
|
||||
|
||||
gen.add("adaptiveThreshConstant", double_t, 0,
|
||||
"Constant for adaptive thresholding before finding contours",
|
||||
p.adaptiveThreshConstant, 0, 100)
|
||||
|
||||
@@ -62,6 +62,7 @@ private:
|
||||
std::unique_ptr<tf2_ros::Buffer> tf_buffer_;
|
||||
std::unique_ptr<tf2_ros::TransformListener> tf_listener_;
|
||||
std::shared_ptr<dynamic_reconfigure::Server<aruco_pose::DetectorConfig>> dyn_srv_;
|
||||
bool enabled_ = true;
|
||||
cv::Ptr<cv::aruco::Dictionary> dictionary_;
|
||||
cv::Ptr<cv::aruco::DetectorParameters> parameters_;
|
||||
image_transport::Publisher debug_pub_;
|
||||
@@ -128,6 +129,8 @@ public:
|
||||
private:
|
||||
void imageCallback(const sensor_msgs::ImageConstPtr& msg, const sensor_msgs::CameraInfoConstPtr &cinfo)
|
||||
{
|
||||
if (!enabled_) return;
|
||||
|
||||
Mat image = cv_bridge::toCvShare(msg, "bgr8")->image;
|
||||
|
||||
vector<int> ids;
|
||||
@@ -356,6 +359,7 @@ private:
|
||||
|
||||
void paramCallback(aruco_pose::DetectorConfig &config, uint32_t level)
|
||||
{
|
||||
enabled_ = config.enabled;
|
||||
parameters_->adaptiveThreshConstant = config.adaptiveThreshConstant;
|
||||
parameters_->adaptiveThreshWinSizeMin = config.adaptiveThreshWinSizeMin;
|
||||
parameters_->adaptiveThreshWinSizeMax = config.adaptiveThreshWinSizeMax;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Information: https://clover.coex.tech/en/aruco.html
|
||||
# Information: https://clover.coex.tech/aruco
|
||||
|
||||
import rospy
|
||||
from clover import srv
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Information: https://clover.coex.tech/en/leds.html
|
||||
# Information: https://clover.coex.tech/led
|
||||
|
||||
import rospy
|
||||
from clover.srv import SetLEDEffect
|
||||
|
||||
@@ -4,7 +4,9 @@ import os
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
EXCLUDE = ('clever4-front-white.png', '.DS_Store', 'clever4-front-black-large.png')
|
||||
EXCLUDE = ('clever4-front-white.png', 'clever4-front-white-large.png', '.DS_Store',
|
||||
'clever4-front-black-large.png','clover42-black.png')
|
||||
|
||||
code = 0
|
||||
|
||||
os.chdir('./docs')
|
||||
|
||||
@@ -82,6 +82,7 @@ add_service_files(
|
||||
GetTelemetry.srv
|
||||
Navigate.srv
|
||||
NavigateGlobal.srv
|
||||
TakeOff.srv
|
||||
SetPosition.srv
|
||||
SetVelocity.srv
|
||||
SetAttitude.srv
|
||||
|
||||
@@ -44,16 +44,12 @@ Alternatively you may change the `fcu_url` property in `mavros.launch` file to p
|
||||
|
||||
## Running
|
||||
|
||||
To start connection to SITL, use:
|
||||
|
||||
```bash
|
||||
roslaunch clover sitl.launch
|
||||
```
|
||||
|
||||
To start connection to the flight controller, use:
|
||||
|
||||
```bash
|
||||
roslaunch clover clover.launch
|
||||
```
|
||||
|
||||
For the simulation information see the [corresponding article](https://clover.coex.tech/en/simulation.html).
|
||||
|
||||
> Note that the package is configured to connect to `/dev/px4fmu` by default (see [previous section](#manual-installation)). Install udev rules or specify path to your FCU device in `mavros.launch`.
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
<launch>
|
||||
<!-- clover configuration for testing in sitl -->
|
||||
<arg name="ip" default="127.0.0.1"/>
|
||||
<arg name="rosbridge" default="false"/>
|
||||
|
||||
<include file="$(find clover)/launch/clover.launch">
|
||||
<arg name="fcu_conn" value="udp"/>
|
||||
<arg name="fcu_ip" value="$(arg ip)"/>
|
||||
<arg name="gcs_bridge" value="false"/>
|
||||
<arg name="optical_flow" value="false"/>
|
||||
<arg name="web_video_server" default="false"/>
|
||||
<arg name="main_camera" default="false"/>
|
||||
<arg name="rosbridge" value="$(arg rosbridge)"/>
|
||||
<arg name="aruco" default="false"/>
|
||||
<arg name="rangefinder_vl53l1x" default="false"/>
|
||||
<arg name="led" default="false"/>
|
||||
<arg name="rc" default="false"/>
|
||||
</include>
|
||||
</launch>
|
||||
@@ -41,6 +41,7 @@
|
||||
#include <clover/GetTelemetry.h>
|
||||
#include <clover/Navigate.h>
|
||||
#include <clover/NavigateGlobal.h>
|
||||
#include <clover/TakeOff.h>
|
||||
#include <clover/SetPosition.h>
|
||||
#include <clover/SetVelocity.h>
|
||||
#include <clover/SetAttitude.h>
|
||||
@@ -781,6 +782,10 @@ bool navigateGlobal(NavigateGlobal::Request& req, NavigateGlobal::Response& res)
|
||||
return serve(NAVIGATE_GLOBAL, NAN, NAN, req.z, NAN, NAN, NAN, NAN, NAN, req.yaw, NAN, NAN, req.yaw_rate, req.lat, req.lon, NAN, req.speed, req.frame_id, req.auto_arm, res.success, res.message);
|
||||
}
|
||||
|
||||
bool takeOff(TakeOff::Request& req, TakeOff::Response& res) {
|
||||
return serve(NAVIGATE, 0, 0, req.alt, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, 0, NAN, NAN, NAN, req.speed, body.child_frame_id, true, res.success, res.message);
|
||||
}
|
||||
|
||||
bool setPosition(SetPosition::Request& req, SetPosition::Response& res) {
|
||||
return serve(POSITION, req.x, req.y, req.z, NAN, NAN, NAN, NAN, NAN, req.yaw, NAN, NAN, req.yaw_rate, NAN, NAN, NAN, NAN, req.frame_id, req.auto_arm, res.success, res.message);
|
||||
}
|
||||
@@ -905,6 +910,7 @@ int main(int argc, char **argv)
|
||||
auto gt_serv = nh.advertiseService("get_telemetry", &getTelemetry);
|
||||
auto na_serv = nh.advertiseService("navigate", &navigate);
|
||||
auto ng_serv = nh.advertiseService("navigate_global", &navigateGlobal);
|
||||
auto to_serv = nh.advertiseService("take_off", &takeOff);
|
||||
auto sp_serv = nh.advertiseService("set_position", &setPosition);
|
||||
auto sv_serv = nh.advertiseService("set_velocity", &setVelocity);
|
||||
auto sa_serv = nh.advertiseService("set_attitude", &setAttitude);
|
||||
|
||||
5
clover/srv/TakeOff.srv
Normal file
@@ -0,0 +1,5 @@
|
||||
float32 alt
|
||||
float32 speed
|
||||
---
|
||||
bool success
|
||||
string message
|
||||
@@ -1,3 +1,5 @@
|
||||
<title>Clover Drone Kit Tools</title>
|
||||
|
||||
<h1>Clover Drone Kit Tools</h1>
|
||||
|
||||
<ul>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<launch>
|
||||
<arg name="type" default="gazebo"/> <!-- gazebo, jmavsim, none (only clover packages) -->
|
||||
<arg name="mav_id" default="0"/>
|
||||
<arg name="est" default="ekf2"/> <!-- PX4 estimator: lpe, ekf2 -->
|
||||
<arg name="vehicle" default="clover"/> <!-- PX4 vehicle configuration: clover, clover_vpe -->
|
||||
@@ -9,7 +10,7 @@
|
||||
<arg name="use_clover_physics" default="false"/> <!-- Use inertial parameters from CAD models -->
|
||||
|
||||
<!-- Gazebo instance -->
|
||||
<include file="$(find gazebo_ros)/launch/empty_world.launch">
|
||||
<include file="$(find gazebo_ros)/launch/empty_world.launch" if="$(eval type == 'gazebo')">
|
||||
<!-- Workaround for crashes in VMware -->
|
||||
<env name="SVGA_VGPU10" value="0"/>
|
||||
<arg name="gui" value="true"/>
|
||||
@@ -18,13 +19,13 @@
|
||||
</include>
|
||||
|
||||
<!-- PX4 instance -->
|
||||
<node name="sitl_$(arg mav_id)" pkg="px4" type="px4" output="screen" args="$(find px4)/ROMFS/px4fmu_common -s etc/init.d-posix/rcS -i $(arg mav_id)">
|
||||
<node name="sitl_$(arg mav_id)" pkg="px4" type="px4" output="screen" args="$(find px4)/ROMFS/px4fmu_common -s etc/init.d-posix/rcS -i $(arg mav_id)" unless="$(eval type == 'none')">
|
||||
<env name="PX4_SIM_MODEL" value="$(arg vehicle)"/>
|
||||
<env name="PX4_ESTIMATOR" value="$(arg est)"/>
|
||||
</node>
|
||||
|
||||
<!-- Clover model -->
|
||||
<include file="$(find clover_description)/launch/spawn_drone.launch">
|
||||
<include file="$(find clover_description)/launch/spawn_drone.launch" if="$(eval type == 'gazebo')">
|
||||
<arg name="main_camera" value="$(arg main_camera)"/>
|
||||
<arg name="rangefinder" value="$(arg rangefinder)"/>
|
||||
<arg name="led" value="$(arg led)"/>
|
||||
@@ -32,10 +33,20 @@
|
||||
<arg name="use_clover_physics" value="$(arg use_clover_physics)"/>
|
||||
</include>
|
||||
|
||||
<node name="jmavsim" pkg="px4" type="jmavsim_run.sh" output="screen" if="$(eval type == 'jmavsim')"/>
|
||||
|
||||
<param name="use_sim_time" value="false" if="$(eval type == 'jmavsim')"/>
|
||||
|
||||
<!-- Clover services -->
|
||||
<include file="$(find clover)/launch/clover.launch">
|
||||
<arg name="simulator" value="true"/>
|
||||
<arg name="fcu_conn" value="sitl"/>
|
||||
<arg name="fcu_ip" value="127.0.0.1"/>
|
||||
<arg name="gcs_bridge" value=""/>
|
||||
<arg name="rc" default="false"/>
|
||||
<arg name="web_video_server" default="false" if="$(eval type == 'jmavsim')"/>
|
||||
<arg name="main_camera" default="false" if="$(eval type == 'jmavsim')"/>
|
||||
<arg name="aruco" default="false" if="$(eval type == 'jmavsim')"/>
|
||||
<arg name="led" default="false" if="$(eval type == 'jmavsim')"/>
|
||||
</include>
|
||||
</launch>
|
||||
|
||||
BIN
docs/assets/clover42-black.png
Normal file
|
After Width: | Height: | Size: 267 KiB |
BIN
docs/assets/clover42-main.png
Normal file
|
After Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 415 KiB |
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 438 KiB |
4644
docs/assets/dxf/4.2/big_leg.dxf
Normal file
BIN
docs/assets/dxf/4.2/big_leg.png
Normal file
|
After Width: | Height: | Size: 158 KiB |
BIN
docs/assets/fpv/fpv_1.png
Normal file
|
After Width: | Height: | Size: 185 KiB |
BIN
docs/assets/fpv/fpv_10.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
docs/assets/fpv/fpv_11.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
docs/assets/fpv/fpv_12.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
docs/assets/fpv/fpv_13.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
docs/assets/fpv/fpv_14.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
docs/assets/fpv/fpv_15.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
docs/assets/fpv/fpv_16.png
Normal file
|
After Width: | Height: | Size: 177 KiB |
BIN
docs/assets/fpv/fpv_17.png
Normal file
|
After Width: | Height: | Size: 175 KiB |
BIN
docs/assets/fpv/fpv_18.png
Normal file
|
After Width: | Height: | Size: 177 KiB |
BIN
docs/assets/fpv/fpv_19.png
Normal file
|
After Width: | Height: | Size: 176 KiB |
BIN
docs/assets/fpv/fpv_2.png
Normal file
|
After Width: | Height: | Size: 172 KiB |
BIN
docs/assets/fpv/fpv_20.png
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
docs/assets/fpv/fpv_21.png
Normal file
|
After Width: | Height: | Size: 161 KiB |
BIN
docs/assets/fpv/fpv_22.png
Normal file
|
After Width: | Height: | Size: 213 KiB |
BIN
docs/assets/fpv/fpv_3.png
Normal file
|
After Width: | Height: | Size: 176 KiB |
BIN
docs/assets/fpv/fpv_4.png
Normal file
|
After Width: | Height: | Size: 197 KiB |
BIN
docs/assets/fpv/fpv_5.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
docs/assets/fpv/fpv_6.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
docs/assets/fpv/fpv_7.png
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
BIN
docs/assets/fpv/fpv_8.png
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
docs/assets/fpv/fpv_9.png
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
docs/assets/magnet_grip/magnet1.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
docs/assets/magnet_grip/magnet2.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
docs/assets/magnet_grip/magnet3.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
docs/assets/magnet_grip/magnet4.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
docs/assets/magnet_grip/magnet5.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
docs/assets/magnet_grip/magnet_arduino1.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
docs/assets/magnet_grip/magnet_arduino2.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
docs/assets/magnet_grip/magnet_check.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
docs/assets/magnet_grip/magnet_raspberry.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
docs/assets/magnet_grip/scheme.jpg
Normal file
|
After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 827 KiB After Width: | Height: | Size: 243 KiB |
|
Before Width: | Height: | Size: 870 KiB After Width: | Height: | Size: 266 KiB |
|
Before Width: | Height: | Size: 677 KiB After Width: | Height: | Size: 210 KiB |
|
Before Width: | Height: | Size: 623 KiB After Width: | Height: | Size: 204 KiB |
|
Before Width: | Height: | Size: 602 KiB After Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 489 KiB After Width: | Height: | Size: 172 KiB |
|
Before Width: | Height: | Size: 822 KiB After Width: | Height: | Size: 240 KiB |
|
Before Width: | Height: | Size: 821 KiB After Width: | Height: | Size: 253 KiB |
|
Before Width: | Height: | Size: 824 KiB After Width: | Height: | Size: 235 KiB |
|
Before Width: | Height: | Size: 837 KiB After Width: | Height: | Size: 263 KiB |
|
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 970 KiB |
@@ -40,13 +40,9 @@ section ul li:before {
|
||||
margin-bottom: 0.85em;
|
||||
}
|
||||
|
||||
/* Main Clover image */
|
||||
.book img.bigclever {
|
||||
margin-bottom: -12%;
|
||||
}
|
||||
.book.color-theme-2 img.bigclever {
|
||||
.book.color-theme-2 img.big-clover {
|
||||
/* change image for black background */
|
||||
content:url(assets/clever4-front-black-large.png);
|
||||
content:url(assets/clover42-black.png);
|
||||
}
|
||||
|
||||
footer {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# COEX Clover
|
||||
|
||||
<img class="center bigclever zoom" src="../assets/clever4-front-white-large.png" width="80%" alt="COEX Clover 4">
|
||||
<img class="center zoom big-clover" src="../assets/clover42-main.png" width="80%" 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.
|
||||
|
||||
The kit includes a Pixhawk/Pixracer flight controller with the PX4 flight stack, a [Raspberry Pi 4](raspberry.md) as a controlling onboard computer, and a [camera module](camera.md) for performing flights with the use of computer vision, as well as a set of various sensors and other peripherals.
|
||||
The kit includes a [COEX Pix](coex_pix.md) flight controller with the PX4 flight stack, a [Raspberry Pi 4](raspberry.md) as a controlling onboard computer, and a [camera module](camera.md) for performing flights with the use of computer vision, as well as a set of various sensors and other peripherals.
|
||||
|
||||
The Clover platform contains a [pre-configured image for Raspberry Pi](image.md) with the full set of required software for working with peripheral devices and [programming autonomous flights](simple_offboard.md). The source code of the platform and of the documentation is open and [available on GitHub](https://github.com/CopterExpress/clover).
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
* [Guide on autonomous flight](auto_setup.md)
|
||||
* [Hostname](hostname.md)
|
||||
* [PX4 Simulation](sitl.md)
|
||||
* [Navigation using vertical ArUco-markers](wall_aruco.md)
|
||||
* [PID Setup](calibratePID.md)
|
||||
* [Model files for parts](models.md)
|
||||
* [ROS Melodic installation](ros-install.md)
|
||||
@@ -76,7 +77,10 @@
|
||||
* [Interfacing with Arduino](arduino.md)
|
||||
* [Connecting GPS](gps.md)
|
||||
* [Working with IR sensors](ir_sensors.md)
|
||||
* [FPV Setup](fpv.md)
|
||||
* [FPV Setup](fpv_clover_4_2.md)
|
||||
* [FPV Setup (Clover 3)](fpv.md)
|
||||
* [Magnetic grip](magnetic_grip.md)
|
||||
* [Mechanical grip](mechanical_grip.md)
|
||||
* [Trainer mode](trainer_mode.md)
|
||||
* [Tinning](tinning.md)
|
||||
* [Types of power connectors](connectortypes.md)
|
||||
|
||||
@@ -14,7 +14,7 @@ For correct work of the blocks programming, `blocks` argument in the Clover laun
|
||||
|
||||
## Running
|
||||
|
||||
To run Clover's blocks programming interface, [connect to Clover's Wi-Fi](wifi.md) and go to web-page http://192.168.11.1:8080/clover_blocks/ or click the link *Blocks programming* at the [main page](wifi.md#web-interface).
|
||||
To run Clover's blocks programming interface, [connect to Clover's Wi-Fi](wifi.md) and go to web-page http://192.168.11.1/clover_blocks/ or click the link *Blocks programming* at the [main page](wifi.md#web-interface).
|
||||
|
||||
The page looks as follows:
|
||||
|
||||
|
||||
@@ -35,9 +35,9 @@ The **COEX Pix** flight controller is a modified [Pixracer](https://docs.px4.io/
|
||||
|
||||
### Port pinouts
|
||||
|
||||
<img src="../assets/coexpix-top.jpg" width="400" class="zoom">
|
||||
<img src="../assets/coex_pix/coexpix-top.jpg" width="400" class="zoom">
|
||||
|
||||
<img src="../assets/coexpix-bottom.jpg" width="400" class="zoom">
|
||||
<img src="../assets/coex_pix/coexpix-bottom.jpg" width="400" class="zoom">
|
||||
|
||||
> **Note** On rev. 1.0 boards *RC IN* port and microSD slot are switched. Pinout for the *RC IN* port is the same on these boards.
|
||||
|
||||
@@ -70,6 +70,6 @@ The board utilizes low-noise DC-DC converters, voltage inputs have LC and ferrit
|
||||
|
||||
### Port pinouts
|
||||
|
||||
<img src="../assets/coex_pix/coexpix-top-rev1.2.jpg" width=400 class=zoom>
|
||||
<img src="../assets/coex_pix/coexpix-top-rev1.2.png" width=400 class=zoom>
|
||||
|
||||
<img src="../assets/coex_pix/coexpix-bottom-rev1.2.jpg" width=400 class=zoom>
|
||||
<img src="../assets/coex_pix/coexpix-bottom-rev1.2.png" width=400 class=zoom>
|
||||
|
||||
94
docs/en/fpv_clover_4_2.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# Installing and configuring FPV equipment
|
||||
|
||||
## Preparing and installing the FPV camera and transmitter
|
||||
|
||||
1. Install the small mounting deck onto the main frame.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_1.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_2.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
2. Install the camera mount bracket into the corresponding holes.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_3.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_4.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
3. Cut the three-pin supplied camera cable.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_5.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_6.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
4. Tin the wires
|
||||
|
||||
<img src="../assets/fpv/fpv_7.png" width=300 class="zoom border center">
|
||||
|
||||
5. Solder the JST-male connector to the power wires of the camera.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_8.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_9.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
> **Hint** Сheck what you are wearing shrink tubes before soldering the wires.
|
||||
|
||||
6. Solder the JST male connector to the transmitter.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_10.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_11.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
7. Solder the yellow camera signal cable to the transmitter.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_12.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_13.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
8. Connect the antenna to the transmitter.
|
||||
|
||||
<img src="../assets/fpv/fpv_14.png" width=300 class="zoom border center">
|
||||
|
||||
> **Caution** If voltage is applied to a transmitter without an antenna, there is a high probability that it will burn out.
|
||||
|
||||
9. Place the receiver onto the mounting deck, securing it with ties.
|
||||
|
||||
<img src="../assets/fpv/fpv_15.png" width=300 class="zoom border center">
|
||||
|
||||
10. Place the mounting deck with the receiver on the bottom of the aircraft.
|
||||
|
||||
<img src="../assets/fpv/fpv_16.png" width=300 class="zoom border center">
|
||||
|
||||
11. Place the camera in the bracket and secure it with the 4 attached bolts. The camera should be at an angle of 15°-20° relative to the plane of the aircraft.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_17.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_18.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_19.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_20.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
12. Connect the signal cable to the camera.
|
||||
|
||||
<img src="../assets/fpv/fpv_21.png" width=300 class="zoom border center">
|
||||
|
||||
13. Connect the camera's power cable to the power JST soldered to the *BAT+* and *GND* pads on the power distribution board.
|
||||
|
||||
14. Connect the transmitter power cable to JST at 5V.
|
||||
|
||||
<img src="../assets/fpv/fpv_22.png" width=300 class="zoom border center">
|
||||
|
||||
## Setting up and connecting FPV goggles
|
||||
|
||||
1. Install the two supplied antennas on the glasses.
|
||||
2. Turn on the glasses by holding the power button for 3-4 seconds.
|
||||
3. Turn on the aircraft and make sure the transmitter LED is blue.
|
||||
4. Press the *Auto Search* button on the glasses to automatically search for an available radio channel.
|
||||
@@ -86,6 +86,8 @@ How it works: Works from DC. I.e., by applying voltage from a DC source (a batte
|
||||
|
||||
* Rapid wear
|
||||
|
||||
### Brushless motors
|
||||
|
||||
Brushless motors, in which the moving part is the stator, are more efficient than brush-type motors. This is achieved due to the absence of brushes. However, since motor design is much more complicated, they are more expensive.
|
||||
|
||||
**Advantages:**
|
||||
|
||||
65
docs/en/magnetic_grip.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# Assembling and setting up the electromagnetic gripper
|
||||
|
||||
The magnetic gripper can be assembled in various ways according to the wiring diagram.
|
||||
|
||||
<img src="../assets/magnet_grip/scheme.jpg" width=300 class="zoom border center">
|
||||
|
||||
The following is an example of assembling an electromagnetic capture circuit on a breadboard.
|
||||
|
||||
> **Info** It is recommended to lay the wiring between the elements on the back side of the board (in the following images, the wiring is done over the diagram for illustrative purpose).
|
||||
|
||||
1. Place the Schottky diode, 10K resistor, and transistor on the soldering board.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet1.png" width=300 class="zoom border center">
|
||||
|
||||
2. Solder the contacts on the other side of the board and bite off the remaining element legs.
|
||||
3. Connect the pins of the resistor and the two outer legs of the transistor.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet2.png" width=300 class="zoom border center">
|
||||
|
||||
4. Connect the center leg of the transistor and the leg of the Schottky diode (opposite to the gray marking strip).
|
||||
|
||||
<img src="../assets/magnet_grip/magnet3.png" width=300 class="zoom border center">
|
||||
|
||||
5. Cut the required amount of magnetic grab wire and solder it to the pins of the Schottky diode.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet4.png" width=300 class="zoom border center">
|
||||
|
||||
6. Solder the *Dupont* - male wires to the transistor and diode leg (red, black wires), and the *Dupont* - fmale wire to the opposite transistor leg (white wire).
|
||||
|
||||
<img src="../assets/magnet_grip/magnet5.png" width=300 class="zoom border center">
|
||||
|
||||
## Checking the operation of the electromagnetic gripper
|
||||
|
||||
In order to check the operation of the gripper, apply a voltage of 5V to the signal wire. You can use the *Dupont* dad-dad wire for that.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet_check.png" width=300 class="zoom border center">
|
||||
|
||||
After applying voltage, the magnet should turn on.
|
||||
|
||||
## Connecting to Raspberry Pi
|
||||
|
||||
Connect the magnetic gripper to a Raspberry Pi for software activation.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet_raspberry.png" width=300 class="zoom border center">
|
||||
|
||||
An example of the code activating the magnetic gripper can be found [here](gpio.md#connecting-an-electromagnet).
|
||||
|
||||
## Connecting to Arduino
|
||||
|
||||
Connect the gripper to the Arduino Nano board in order to control it manually.
|
||||
|
||||
It is convenient to place it on the same soldering board — insert it into the appropriate holes and solder it from the back to the board.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet_arduino1.png" width=300 class="zoom border center">
|
||||
|
||||
Then connect the signal output of the circuit to the selected port and solder the *Dupont* female wire to the selected signal port on the board.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet_arduino2.png" width=300 class="zoom border center">
|
||||
|
||||
## Installation of electromagnetic gripper
|
||||
|
||||
1. Install an electromagnet into the center hole on the gripper deck.
|
||||
2. Use a zip tie to pull the assembled circuit to the back of the deck.
|
||||
3. Plug the Arduino *D11* signal pin into one of the *AUX* pins on the flight controller.
|
||||
4. Plug the power wire of the electromagnetic gripper to JST 5V.
|
||||
18
docs/en/mechanical_grip.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Assembling and setting up a mechanical gripper
|
||||
|
||||
1. Combine the main gripper plates.
|
||||
2. Install the servo in the appropriate groove in the center of the plates with the axle gear in the middle.
|
||||
3. Hold down the gripper plates with the small spacers.
|
||||
4. Install the gripper deck so that the mounting holes in the grapple correspond with the self-tapping holes in the plate.
|
||||
5. Fix the gripper structure with self-tapping screws.
|
||||
6. Turn the servo gear to the end position.
|
||||
7. Install the cruciform mount onto the gear.
|
||||
8. Secure the cruciform mount using the screw attached to the servo.
|
||||
9. Tie the servo thread so that there is a 2 to 3 cm margin.
|
||||
10. Thread the servo thread into the corresponding tensioning slots.
|
||||
11. Fasten the grip claws with small self-tapping screws so that their angle is 25°–40°.
|
||||
12. Install the assembled grip onto the aircraft from below.
|
||||
13. Insert the servo cable into the *AUX* 1-2 output on the flight controller.
|
||||
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.
|
||||
16. Now, when you switch the toggle switch of the corresponding channel, the capture will be closed or opened.
|
||||
@@ -80,6 +80,24 @@ This page contains models and drawings of some of the drone parts. They can be u
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Clover 4.2 WorldSkills
|
||||
|
||||
### Milling
|
||||
|
||||
<table>
|
||||
<tr><th width=150>Preview</th><th>Part</th><th width=1>File</th></tr>
|
||||
<tr>
|
||||
<td><img src="../assets/dxf/4.2/big_leg.png"></td>
|
||||
<td>
|
||||
<b>Big leg</b>.<br>
|
||||
Function: Extended footing element.<br>
|
||||
Материал: Monolithic polycarbonate 2mm.<br>
|
||||
Quantity: 2 шт.
|
||||
</td>
|
||||
<td><a href="https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/4.2/big_leg.dxf"><code>big_leg.dxf</code></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Clover 4
|
||||
|
||||
### 3D print
|
||||
|
||||
@@ -6,7 +6,7 @@ In order to configure flight modes:
|
||||
|
||||
1. Open the *Vehicle Setup* tab in QGroundControl.
|
||||
2. Select the *Flight Modes* menu.
|
||||
3. Choose SwC (Channel 5) as mode selection switch.
|
||||
3. Choose SwC (Channel 6) as mode selection switch.
|
||||
4. Set desired flight modes.
|
||||
|
||||
The following flight modes are recommended:
|
||||
@@ -16,7 +16,7 @@ In order to configure flight modes:
|
||||
* Flight Mode 6: *Position*.
|
||||
|
||||
5. Check mode switching by changing the switch position.
|
||||
6. Choose SwA (Channel 6) as emergency motor stop (*Kill switch*).
|
||||
6. Choose SwA (Channel 5) as emergency motor stop (*Kill switch*).
|
||||
|
||||
<img src="../assets/qgc-modes.png" class="zoom" alt="QGroundControl modes">
|
||||
|
||||
|
||||
@@ -29,6 +29,8 @@ Main article: https://docs.qgroundcontrol.com/en/SetupView/Firmware.html
|
||||
|
||||
We recommend using the modified version of PX4 by CopterExpress for the Clover drone, especially for autonomous flights. Download the latest stable version **<a class="latest-firmware v4" href="https://github.com/CopterExpress/Firmware/releases">from our GitHub</a>**.
|
||||
|
||||
> **Info** For Pixhawk-based quadcopters there is a separate firmware version. See details in "[Pixhawk / Pixracer firmware flashing](firmware.md)" article.
|
||||
|
||||
Flash the flight controller with this firmware:
|
||||
|
||||
<img src="../assets/qgc-firmware.png" alt="QGroundControl firmware upload" class="zoom">
|
||||
|
||||
@@ -295,6 +295,8 @@ Parameters:
|
||||
* `thrust` — throttle level, ranges from 0 (no throttle, propellers are stopped) to 1 (full throttle).
|
||||
* `auto_arm` – switch the drone to `OFFBOARD` and arm automatically (**the drone will take off**);
|
||||
|
||||
The positive direction of `yaw_rate` rotation (when viewed from the top) is counterclockwise,`pitch_rate` rotation is forward, `roll_rate` rotation is to the left.
|
||||
|
||||
### land
|
||||
|
||||
Switch the drone to landing [mode](modes.md) (`AUTO.LAND` or similar).
|
||||
|
||||
@@ -32,3 +32,9 @@ The simulation environment is based on the following components:
|
||||
* ROS packages and Gazebo plugins.
|
||||
|
||||
<!-- TODO: Write more, add a diagram, etc -->
|
||||
|
||||
## Video
|
||||
|
||||
Short video review of the simulator:
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/8HYXREMDfzQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
PX4 Simulation
|
||||
===
|
||||
|
||||
> **Hint** This article is about running a standalone PX4 simulation with a generic quadcopter. Consider using [our configuration](simulation.md) for a more Clover-like experience.
|
||||
> **Warning** This article is about running a standalone PX4 simulation with a generic quadcopter and **is outdated**. Consider using [our configuration](simulation.md) for a more Clover-like experience.
|
||||
|
||||
Main article: https://dev.px4.io/en/simulation/
|
||||
|
||||
|
||||
58
docs/en/wall_aruco.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Navigation using vertical ArUco-markers
|
||||
|
||||
The algorithm of the navigation through visual ArUco-markers, that was implemented in the Clever image, supports the flexible configuration of the markers in area. It allows you to place them on any surface, at any angle.
|
||||
|
||||
## Installing the vertical camera mount
|
||||
|
||||
For a better recognition of the markers, you need to set the camera vertically so that the lens is pointed parallel to the horizon.
|
||||
|
||||
> **Note** The configuration file allows you to configure the location of the camera in area relative to the copter in any way. For your convenience, we will review the option of installing the camera at an angle of 90 degrees to the horizon in the direction of the copter's nose.
|
||||
|
||||
### Camera mount, 3D printing
|
||||
|
||||
Print the [camera mount](models.md#clover-3).
|
||||
|
||||
Install the mount in a convenient location, so that the camera has a minimum number of unnecessary objects (protection, legs, propellers, beams) — all of it will negatively affect the recognition of the markers.
|
||||
|
||||
## Setting the camera transform
|
||||
|
||||
To set the camera position at the desired angle, open the file `main_camera.launch`, located in `~/catkin_ws/src/clover/clover/launch/`.
|
||||
|
||||
```bash
|
||||
nano ~/catkin_ws/src/clover/clover/launch/main_camera.launch
|
||||
```
|
||||
|
||||
In the parameters `direction_x`, `direction_y`, set empty values manually or enter the following lines:
|
||||
|
||||
```bash
|
||||
sed -i "/direction_z/s/default=\".*\"/default=\"\"/" /home/pi/catkin_ws/src/clover/clover/launch/main_camera.launch
|
||||
sed -i "/direction_y/s/default=\".*\"/default=\"\"/" /home/pi/catkin_ws/src/clover/clover/launch/main_camera.launch
|
||||
```
|
||||
|
||||
Edit one of the configuration lines or add the line shown bellow:
|
||||
|
||||
```xml
|
||||
<node pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0.05 0 0.05 -1.5707963 0 -1.5707963 base_link main_camera_optical"/>
|
||||
```
|
||||
|
||||
> **Note**. Only one camera configuration can be used at a time. If you insert the line above, don't forget to comment the currently active one. The syntax highlighting system will help you determine that — the active line will be highlighted in a different color than the comments. To comment, add the `<!--` and `-->` symbols at the beginning and the end respectively.
|
||||
|
||||
If you are using the marker map, where the markers have equal distances along the x and y axes, you can use [script for creating markers map `gen_map.py`](aruco_map.md#marker-map-definition). Otherwise, you will need to set them manually. To do this, go to the directory `map_name.txt` and create a map file. Fill out your map according to the [map syntax](aruco_map.md#marker-map-definition). Here is an example of a marker map with a random marker location:
|
||||
|
||||
>**Hint**. When filling out the map, select one of the markers as the origin, and measure the distance to all other markers relative to it. If all your parameters are oriented same way, you can choose not to specify all 8 parameters, but only the first 5: the marker index, size, and its location in space along the x, y, and z axes, respectively.
|
||||
|
||||
```
|
||||
106 0.33 0 0 0
|
||||
103 0.33 1.53 0.23 0
|
||||
153 0.40 -0.56 1.36 0
|
||||
```
|
||||
|
||||
After you fill out the map, you need to apply it. To do it, edit the file `aruco.launch`, located in `~/catkin_ws/src/clover/clover/launch/`. Change the line `<param name="map" value="$(find aruco_pose)/map/map_name.txt"/>`, where `map_name.txt` is the name of your map file.
|
||||
|
||||
If you are using markers that are not linked to horizontal surfaces (floor, ceiling), you must disable the parameter `known_tilt` both in the module `aruco_detect` and `aruco_map` in the same file. To do it automatically, enter:
|
||||
|
||||
```bash
|
||||
sed -i "/known_tilt/s/value=\".*\"/value=\"\"/" /home/pi/catkin_ws/src/clover/clover/launch/aruco.launch
|
||||
```
|
||||
|
||||
After all the settings, call `sudo systemctl restart clover` to restart the `clover` service.
|
||||
@@ -1,10 +1,10 @@
|
||||
# Клевер
|
||||
|
||||
<img class="center bigclever zoom" src="../assets/clever4-front-white-large.png" width="80%" alt="Клевер 4">
|
||||
<img class="center zoom big-clover" src="../assets/clover42-main.png" width="80%" alt="Клевер 4.2">
|
||||
|
||||
**«Клевер»** — это учебный конструктор программируемого квадрокоптера, состоящего из популярных открытых компонентов, а также набор необходимой документации и библиотек для работы с ним.
|
||||
|
||||
Набор включает в себя полетный контроллер Pixracer с полетным стеком PX4, [Raspberry Pi 4](raspberry.md) в качестве управляющего бортового компьютера, [модуль камеры](camera.md) для реализации полетов с использованием компьютерного зрения, а также набор различных датчиков и другой периферии.
|
||||
Набор включает в себя полетный контроллер [COEX Pix](coex_pix.md) с полетным стеком PX4, [Raspberry Pi 4](raspberry.md) в качестве управляющего бортового компьютера, [модуль камеры](camera.md) для реализации полетов с использованием компьютерного зрения, а также набор различных датчиков и другой периферии.
|
||||
|
||||
Платформа Клевера также включает в себя преднастроенный [образ для Raspberry Pi](image.md) в полным набором необходимого ПО для работы со всей периферией и [программирования автономных полетов](simple_offboard.md). Исходный код платформы Клевера и данной документации открыт и [доступен на GitHub](https://github.com/CopterExpress/clover).
|
||||
|
||||
|
||||
@@ -79,7 +79,10 @@
|
||||
* [Взаимодействие с Arduino](arduino.md)
|
||||
* [Подключение GPS](gps.md)
|
||||
* [Работа с ИК датчиками](ir_sensors.md)
|
||||
* [Установка FPV](fpv.md)
|
||||
* [Установка FPV](fpv_clover_4_2.md)
|
||||
* [Установка FPV (Клевер 3)](fpv.md)
|
||||
* [Магнитный захват](magnetic_grip.md)
|
||||
* [Механический захват](mechanical_grip.md)
|
||||
* [Сборка шаровой защиты](sphere_guard.md)
|
||||
* [Управление в режиме тренера](trainer_mode.md)
|
||||
* [Техника лужения](tinning.md)
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
## Запуск
|
||||
|
||||
Для того, чтобы открыть интерфейс блочного программирования в Клевере, [подключитесь к Клеверу по Wi-Fi](wifi.md) и перейдите на страницу http://192.168.11.1:8080/clover_blocks/ либо нажмите ссылку *Blocks programming* на [основной веб-странице Клевера](wifi.md#веб-интерфейс).
|
||||
Для того, чтобы открыть интерфейс блочного программирования в Клевере, [подключитесь к Клеверу по Wi-Fi](wifi.md) и перейдите на страницу http://192.168.11.1/clover_blocks/ либо нажмите ссылку *Blocks programming* на [основной веб-странице Клевера](wifi.md#веб-интерфейс).
|
||||
|
||||
Интерфейс выглядит следующим образом:
|
||||
|
||||
|
||||
@@ -63,9 +63,9 @@
|
||||
|
||||
### Нововведения
|
||||
|
||||
* Заменен разъем USB Micro-B на раазъем USB Type-C.
|
||||
* Заменен разъем USB Micro-B на разъем USB Type-C.
|
||||
* Изменен слот для MicroSD карт, на более глубокий.
|
||||
* Изменены назначения пинов на разьеме I2C.
|
||||
* Изменены назначения пинов на разъеме I2C.
|
||||
* Добавлены ферритовые фильтры в цепи питания.
|
||||
|
||||
### Схемы расположения контактов
|
||||
|
||||
94
docs/ru/fpv_clover_4_2.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# Установка и настройка FPV-оборудования
|
||||
|
||||
## Подготовка и установка камеры и передатчика
|
||||
|
||||
1. Установите малую монтажную деку на основную раму.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_1.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_2.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
2. Установите скобу для крепления камеры в соответствующие отверстия.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_3.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_4.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
3. Обрежьте трехпиновый комплектный кабель камеры.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_5.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_6.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
4. Залудите провода
|
||||
|
||||
<img src="../assets/fpv/fpv_7.png" width=300 class="zoom border center">
|
||||
|
||||
5. К силовым проводам камеры припаяйте разъем JST-папа.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_8.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_9.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
> **Hint** Перед спаиванием проводов не забудьте надеть термоусадку на провода.
|
||||
|
||||
6. К передатчику припаяйте разъем JST-папа.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_10.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_11.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
7. К передатчику припаяйте желтый сигнальный кабель камеры.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_12.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_13.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
8. Подключите антенну к передатчику.
|
||||
|
||||
<img src="../assets/fpv/fpv_14.png" width=300 class="zoom border center">
|
||||
|
||||
> **Caution** Если на передатчик без антенны подать напряжение есть большая вероятность, что он сгорит.
|
||||
|
||||
9. На монтажную деку установите приемник, закрепив его стяжками.
|
||||
|
||||
<img src="../assets/fpv/fpv_15.png" width=300 class="zoom border center">
|
||||
|
||||
10. Установите монтажную деку вместе с приемником снизу коптера.
|
||||
|
||||
<img src="../assets/fpv/fpv_16.png" width=300 class="zoom border center">
|
||||
|
||||
11. Установите камеру в скобу и закрепите ее с помощью 4-х комплектных болтов. Камера должна быть под углом 15°-20° относительно плоскости коптера.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_17.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_18.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/fpv/fpv_19.png" width=300 class="zoom border">
|
||||
<img src="../assets/fpv/fpv_20.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
12. Подключите сигнальный кабель к камере.
|
||||
|
||||
<img src="../assets/fpv/fpv_21.png" width=300 class="zoom border center">
|
||||
|
||||
13. Подключите кабель питания камеры к силовому JST, припаянному к площадкам *BAT+* и *GND* на плате распределения питания.
|
||||
|
||||
14. Подключите кабель питания передатчика к JST на 5В.
|
||||
|
||||
<img src="../assets/fpv/fpv_22.png" width=300 class="zoom border center">
|
||||
|
||||
## Настройка и подключение FPV-очков
|
||||
|
||||
1. Установите на очки две комплектные антенны.
|
||||
2. Включите очки удерживая кнопку питания 3–4 секунды.
|
||||
3. Включите коптер и убедитесь, что светодиод передатчика светится синим цветом.
|
||||
4. Нажмите на очках кнопку *Auto Search*, для автоматического поиска доступного радиоканала.
|
||||
65
docs/ru/magnetic_grip.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# Сборка и настройка электромагнитного захвата
|
||||
|
||||
Магнитный захват можно собрать различными способами в соответствии с электрической схемой.
|
||||
|
||||
<img src="../assets/magnet_grip/scheme.jpg" width=300 class="zoom border center">
|
||||
|
||||
Ниже представлен пример сборки схемы электромагнитного захвата на макетной плате.
|
||||
|
||||
> **Info** Рекомендуется проложить проводку между элементами с обратной стороны платы (на дальнейших изображениях проводка сделана поверх схемы, для наглядности).
|
||||
|
||||
1. На паечной плате разместите диод Шоттки, резистор на 10 кОм и транзистор.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet1.png" width=300 class="zoom border center">
|
||||
|
||||
2. Припаяйте контакты с другой стороны платы и откусите оставшиеся ножки элементов.
|
||||
3. Соедините контакты резистора и двух крайних ножек транзистора.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet2.png" width=300 class="zoom border center">
|
||||
|
||||
4. Соедините центральную ножку транзистора и ножку диода Шоттки (противоположную серой маркировочной полоске).
|
||||
|
||||
<img src="../assets/magnet_grip/magnet3.png" width=300 class="zoom border center">
|
||||
|
||||
5. Обрежьте необходимое количество провода магнитного захвата и припаяйте его к контактам диода Шоттки.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet4.png" width=300 class="zoom border center">
|
||||
|
||||
6. Припаяйте провода *Dupont*-папа к ножке транзистора и диода (красный, черный провода), а также провод *Dupont*-мама на противоположную ножку транзистора (белый провод).
|
||||
|
||||
<img src="../assets/magnet_grip/magnet5.png" width=300 class="zoom border center">
|
||||
|
||||
## Проверка работы электромагнитного захвата
|
||||
|
||||
Для того, чтобы проверить работу захвата, подайте на сигнальный провод напряжение 5В. Для этого можно использовать провод *Dupont* папа-папа.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet_check.png" width=300 class="zoom border center">
|
||||
|
||||
После подачи напряжения магнит должен включиться.
|
||||
|
||||
## Подключение к Raspberry Pi
|
||||
|
||||
Подключите магнитный захват к плате Raspberry Pi для программного использования
|
||||
|
||||
<img src="../assets/magnet_grip/magnet_raspberry.png" width=300 class="zoom border center">
|
||||
|
||||
Пример кода, активирующего магнитный захват, можно посмотреть [тут](gpio.md#подключение-электромагнита).
|
||||
|
||||
## Подключение к Arduino
|
||||
|
||||
Подключите захват плате Arduino Nano, чтобы использовать его в ручном режиме.
|
||||
|
||||
Удобно ее располагать на той же паечной плате -- вставьте ее в подходящие отверстия и припаяйте с обратной стороны к плате.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet_arduino1.png" width=300 class="zoom border center">
|
||||
|
||||
Затем подключите сигнальный выход схемы к выбранному порту и припаяйте провод *Dupont*-мама к выбранному сигнальному порту на плате.
|
||||
|
||||
<img src="../assets/magnet_grip/magnet_arduino2.png" width=300 class="zoom border center">
|
||||
|
||||
## Установка электромагнитного захвата
|
||||
|
||||
1. В центральное отверстие на деке захвата установите электромагнит.
|
||||
2. Стяжкой притяните собранную схему к обратной стороне деки.
|
||||
3. Сигнальный вывод Arduino *D11* вставьте в один из выводов *AUX* на полетном контроллере.
|
||||
4. Вставьте силовой вывод электромагнитного захвата в JST 5В.
|
||||
18
docs/ru/mechanical_grip.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Сборка и настройка механического захвата
|
||||
|
||||
1. Совместите главные пластины захвата.
|
||||
2. Установите сервопривод в соответствующий паз в центре пластин, таким образом, чтобы осевая шестерня находилась посередине захвата.
|
||||
3. Прижмите пластины захвата небольшими проставками.
|
||||
4. Установите деку захвата таким образом, чтобы крепежные отверстия в захвате совпадали с отверстиями для саморезов в пластине.
|
||||
5. Закрепите конструкцию захвата саморезами.
|
||||
6. Поверните шестерню сервопривода в крайнее положение.
|
||||
7. Установите на шестерню крестообразное крепление.
|
||||
8. Закрепите крестообразное крепление с помощью винта, прилагающегося к сервоприводу.
|
||||
9. Завяжите сервоприводную нить таким образом, чтобы оставалось 2-3 см запаса.
|
||||
10. Проденьте сервоприводную нить в соответствующие натягивающие пазы.
|
||||
11. Закрепите клешни захвата маленькими саморезами таким образом, чтобы их угол составлял 25°–40°.
|
||||
12. Установите собранный захват на коптер снизу.
|
||||
13. Протяните кабель сервопривода и вставьте его в выход *AUX* 1-2 на полетном контроллере.
|
||||
14. Для того, чтобы настроить управление захватом с пульта, зайдите во вкладку *Radio*.
|
||||
15. В параметре *AUX 1/2 Passthrough RC channel* укажите необходимый вам канал.
|
||||
16. Теперь при переключении тумблера соответствующего канала захват будет закрываться или открываться.
|
||||
@@ -80,13 +80,31 @@
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Клевер 4.2 WorldSkills
|
||||
|
||||
### Фрезеровка
|
||||
|
||||
<table>
|
||||
<tr><th width=150>Изображение</th><th>Деталь</th><th width=1>Файл</th></tr>
|
||||
<tr>
|
||||
<td><img src="../assets/dxf/4.2/big_leg.png"></td>
|
||||
<td>
|
||||
<b>Ножка большая</b>.<br>
|
||||
Функция: Опорный элемент увеличенной высоты.<br>
|
||||
Материал: Монолитный поликарбонат 2мм.<br>
|
||||
Количество: 2 шт.
|
||||
</td>
|
||||
<td><a href="https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/4.2/big_leg.dxf"><code>big_leg.dxf</code></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Клевер 4
|
||||
|
||||
### 3D печать
|
||||
|
||||
* **АКБ холдер** – [`battery_holder.stl`](https://github.com/CopterExpress/clover/raw/master/docs/assets/stl/battery_holder.stl)
|
||||
Функция: Фиксация АКБ и тестера напряжения.
|
||||
Материал: ABS пластик(или аналог). Заполнение не менее 50%.
|
||||
* **АКБ холдер** – [`battery_holder.stl`](https://github.com/CopterExpress/clover/raw/master/docs/assets/stl/battery_holder.stl)
|
||||
Функция: Фиксация АКБ и тестера напряжения.
|
||||
Материал: ABS пластик(или аналог). Заполнение не менее 50%.
|
||||
Количество: 1шт.
|
||||
|
||||
## Дополнительные модели для Клевер 4
|
||||
@@ -95,16 +113,16 @@
|
||||
|
||||
### Лазерная резка
|
||||
|
||||
* **Усиленная пластина - основа** – [`reinforced_plate_base.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/reinforced_plate_base.dxf)
|
||||
Функция: Крепление компьютеров формата Jetson Nano и виброразвязок на раме Клевер 4.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
* **Усиленная пластина - основа** – [`reinforced_plate_base.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/reinforced_plate_base.dxf)
|
||||
Функция: Крепление компьютеров формата Jetson Nano и виброразвязок на раме Клевер 4.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
Количество: 1шт.
|
||||
* **Ребро жёсткости усиленной пластины** – [`reinforced_plate_rib.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/reinforced_plate_rib.dxf)
|
||||
Функция: Увеличение жёсткости сборки.
|
||||
* **Ребро жёсткости усиленной пластины** – [`reinforced_plate_rib.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/reinforced_plate_rib.dxf)
|
||||
Функция: Увеличение жёсткости сборки.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
Количество: 2шт.
|
||||
* **Пластина для камеры** – [`reinforced_plate_camera_pad.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/reinforced_plate_camera_pad.dxf)
|
||||
Функция: Крепление камеры при использовании усиленной пластины.
|
||||
Функция: Крепление камеры при использовании усиленной пластины.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
Количество: 1шт.
|
||||
|
||||
@@ -112,65 +130,65 @@
|
||||
|
||||
### 3D печать
|
||||
|
||||
* **Кейс для камеры** – [`camera_case.stl`](https://github.com/CopterExpress/clover/raw/master/docs/assets/stl/camera_case.stl)
|
||||
Функция: Кейс для крепления модуля камеры.
|
||||
Материал: PLA/ABS(или аналог). Заполнение 30%.
|
||||
Количество: 1шт.
|
||||
**Крепежная пластина для камеры** – [`camera_mount.stl`](https://github.com/CopterExpress/clover/raw/master/docs/assets/stl/camera_mount.stl).
|
||||
Функция: Крепежный модуль, для монтажа кейса.
|
||||
Материал: PLA/ABS(или аналог). Заполнение 30%.
|
||||
Количество: 1шт.
|
||||
**Пластина для камеры** – [`camera_plate.stl`](https://github.com/CopterExpress/clover/raw/master/docs/assets/stl/camera_plate.stl).
|
||||
Функция: Пластина для закрепление модуля камеры в кейсе.
|
||||
Материал: PLA/ABS(или аналог). Заполнение 30%.
|
||||
* **Кейс для камеры** – [`camera_case.stl`](https://github.com/CopterExpress/clover/raw/master/docs/assets/stl/camera_case.stl)
|
||||
Функция: Кейс для крепления модуля камеры.
|
||||
Материал: PLA/ABS(или аналог). Заполнение 30%.
|
||||
Количество: 1шт.
|
||||
**Крепежная пластина для камеры** – [`camera_mount.stl`](https://github.com/CopterExpress/clover/raw/master/docs/assets/stl/camera_mount.stl).
|
||||
Функция: Крепежный модуль, для монтажа кейса.
|
||||
Материал: PLA/ABS(или аналог). Заполнение 30%.
|
||||
Количество: 1шт.
|
||||
**Пластина для камеры** – [`camera_plate.stl`](https://github.com/CopterExpress/clover/raw/master/docs/assets/stl/camera_plate.stl).
|
||||
Функция: Пластина для закрепление модуля камеры в кейсе.
|
||||
Материал: PLA/ABS(или аналог). Заполнение 30%.
|
||||
Количество: 1шт.
|
||||
* **Малая монтажная дека** – [`mounting_deck_small.stl`](https://github.com/CopterExpress/clover/raw/master/docs/assets/stl/mounting_deck_small.stl).
|
||||
Функция: Крепление камеры и полетного контроллера.
|
||||
Материал: PLA/ABS(или аналог). Заполнение 60%.
|
||||
Функция: Крепление камеры и полетного контроллера.
|
||||
Материал: PLA/ABS(или аналог). Заполнение 60%.
|
||||
Количество: 1шт.
|
||||
|
||||
### Лазерная резка
|
||||
|
||||
* **Ножка** (вариант с захватом) – [`big_leg.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/big_leg.dxf)
|
||||
Функция: Опорный элемент для ситуации установки захвата.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
* **Ножка** (вариант с захватом) – [`big_leg.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/big_leg.dxf)
|
||||
Функция: Опорный элемент для ситуации установки захвата.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
Количество: 4шт.
|
||||
* **Дека монтажная** – [`deck.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/deck.dxf)
|
||||
Функция: Крепление АКБ сопутствующей периферии.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
* **Дека монтажная** – [`deck.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/deck.dxf)
|
||||
Функция: Крепление АКБ сопутствующей периферии.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
Количество: 1шт.
|
||||
* **Дуга** – [`prop_guard.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/prop_guard.dxf)
|
||||
Функция: Элемент каркаса защиты.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
* **Дуга** – [`prop_guard.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/prop_guard.dxf)
|
||||
Функция: Элемент каркаса защиты.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
Количество: 16шт.
|
||||
* **Рогатка + ушко** – [`prop_guard_mount.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/prop_guard_mount.dxf)
|
||||
Функция: Крепление защиты пропеллеров к раме.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
* **Рогатка + ушко** – [`prop_guard_mount.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/prop_guard_mount.dxf)
|
||||
Функция: Крепление защиты пропеллеров к раме.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
Количество: 4шт.
|
||||
* **Проставка** – [`grab_spacer.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/grab_spacer.dxf).
|
||||
Функция: Монтаж сервопривода к деке захвата.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
* **Проставка** – [`grab_spacer.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/grab_spacer.dxf).
|
||||
Функция: Монтаж сервопривода к деке захвата.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
Количество: 1шт.
|
||||
* **Ножка** – [`leg.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/leg.dxf).
|
||||
Функция: Опорный элемент.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
* **Ножка** – [`leg.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/leg.dxf).
|
||||
Функция: Опорный элемент.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
Количество: 4шт.
|
||||
* **Обруч (LED)** – [`led_mount_plate.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/led_mount_plate.dxf).
|
||||
Функция: Крепление светодиодной ленты.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
* **Обруч (LED)** – [`led_mount_plate.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/led_mount_plate.dxf).
|
||||
Функция: Крепление светодиодной ленты.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
Количество: 4шт.
|
||||
* **Малая монтажная дека** – [`mounting_deck_small.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/mounting_deck_small.dxf).
|
||||
Функция: Крепление камеры и полетного контроллера.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
Функция: Крепление камеры и полетного контроллера.
|
||||
Материал: Монолитный поликарбонат 2мм.
|
||||
Количество: 1шт.
|
||||
|
||||
### Фрезеровка
|
||||
|
||||
* **Дека центральная** – [`central_plate.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/central_plate.dxf).
|
||||
Функция: Несущая часть коптера.
|
||||
Материал: Стеклотекстолит/карбон 2мм.
|
||||
* **Дека центральная** – [`central_plate.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/central_plate.dxf).
|
||||
Функция: Несущая часть коптера.
|
||||
Материал: Стеклотекстолит/карбон 2мм.
|
||||
Количество: 1шт.
|
||||
* **Луч** – [`arm.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/arm.dxf).
|
||||
Функция: Крепление моторов.
|
||||
Материал: Стеклотекстолит/карбон 2мм.
|
||||
* **Луч** – [`arm.dxf`](https://github.com/CopterExpress/clover/raw/master/docs/assets/dxf/arm.dxf).
|
||||
Функция: Крепление моторов.
|
||||
Материал: Стеклотекстолит/карбон 2мм.
|
||||
Количество: 4шт.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
1. Зайдите во вкладку *Vehicle Setup*.
|
||||
2. Выберите меню *Flight Modes*.
|
||||
3. Установите переключатель режимов на переключатель SwC (Channel 5).
|
||||
3. Установите переключатель режимов на переключатель SwC (Channel 6).
|
||||
4. Выберите необходимые полетные режимы.
|
||||
|
||||
Рекомендуемые полетные режимы:
|
||||
@@ -16,7 +16,7 @@
|
||||
* Flight Mode 6: *Position*.
|
||||
|
||||
5. Проверьте корректность переключения режимов, переключая переключатель на пульте.
|
||||
6. Назначьте аварийное отключение моторов (*Kill switch*) на переключатель SwA (Channel 6).
|
||||
6. Назначьте аварийное отключение моторов (*Kill switch*) на переключатель SwA (Channel 5).
|
||||
|
||||
<img src="../assets/qgc-modes.png" class="zoom" alt="QGroundControl modes">
|
||||
|
||||
|
||||
@@ -29,7 +29,9 @@
|
||||
|
||||
Для Клевера, в особенности для осуществления автономных полетов, рекомендуется использовать версию прошивки PX4 от Copter Express. Скачайте актуальную версию прошивки на GitHub — **<a class="latest-firmware v4" href="https://github.com/CopterExpress/Firmware/releases">скачать</a>**.
|
||||
|
||||
Далее загрузите прошивку в полетный контролер.
|
||||
> **Info** Для квадрокоптеров с Pixhawk (Клевер 2) существует отдельная версия прошивки. Подробности смотрите в статье "[Прошивка полетного контроллера](firmware.md)".
|
||||
|
||||
Загрузите прошивку в полетный контролер:
|
||||
|
||||
<img src="../assets/qgc-firmware.png" alt="QGroundControl firmware upload" class="zoom">
|
||||
|
||||
|
||||
@@ -295,6 +295,8 @@ set_velocity(vx=0.4, vy=0.0, vz=0, yaw=float('nan'), yaw_rate=0.4, frame_id='bod
|
||||
* `thrust` – уровень газа от 0 (нет газа, пропеллеры остановлены) до 1 (полный газ).
|
||||
* `auto_arm` – перевести коптер в `OFFBOARD` и заармить автоматически (**коптер взлетит**);
|
||||
|
||||
Положительное направление вращения `yaw_rate` (при виде сверху) – против часовой, `pitch_rate` – вперед, `roll_rate` – влево.
|
||||
|
||||
### land
|
||||
|
||||
Перевести коптер в [режим](modes.md) посадки (`AUTO.LAND` или аналогичный).
|
||||
|
||||
@@ -34,3 +34,9 @@
|
||||
* пакеты ROS и плагины Gazebo;
|
||||
|
||||
<!-- TODO: Write more, add a diagram, etc -->
|
||||
|
||||
## Видео
|
||||
|
||||
Короткий видеообзор симулятора:
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/8HYXREMDfzQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
||||
@@ -198,7 +198,7 @@ catkin_make
|
||||
|
||||
```bash
|
||||
. devel/setup.bash
|
||||
roslaunch clover sitl.launch
|
||||
roslaunch clover_simulation simulator.launch type:=none
|
||||
```
|
||||
|
||||
Для того, чтобы воспользоваться функциями предоставляемыми нашим пакетом, в новом окне терминала подтяните зависимости из файла `setup`:
|
||||
@@ -207,4 +207,4 @@ roslaunch clover sitl.launch
|
||||
source ~/catkin_ws/devel/setup.bash
|
||||
```
|
||||
|
||||
Теперь вы можете воспользоваться всеми возможностями пакета `Clover` в вашем симуляторе.
|
||||
Теперь вы можете воспользоваться всеми возможностями пакета `clover` в вашем симуляторе.
|
||||
|
||||
@@ -1,47 +1,47 @@
|
||||
# Навигация по вертикальным ArUco-маркерам
|
||||
|
||||
Алгоритм навигации по визуальным ArUco-маркерам, реализованный в образе Клевера поддерживает гибкую настройку положения маркеров в пространстве, что позволяет располагать их на любой поверхности, под любым углом.
|
||||
Алгоритм навигации по визуальным ArUco-маркерам, реализованный в образе Клевера, поддерживает гибкую настройку положения маркеров в пространстве, что позволяет располагать их на любой поверхности, под любым углом.
|
||||
|
||||
## Установка вертикального крепления камеры
|
||||
|
||||
Для более точного распознавания маркеров необходимо установить камеру вертикально, таким образом, чтобы объектив был направлен параллельно горизонту.
|
||||
Для более точного распознавания маркеров необходимо установить камеру вертикально таким образом, чтобы объектив был направлен параллельно горизонту.
|
||||
|
||||
> **Note** Конфигурационный файл позволяет настраивать расположение камеры в пространстве относительно коптера любым образом. Для удобства, далее будет рассматриваться вариант установки камеры под 90° к горизонту, по направлению носа коптера.
|
||||
> **Note** Конфигурационный файл позволяет настраивать расположение камеры в пространстве относительно коптера любым образом. Для удобства далее будет рассматриваться вариант установки камеры под 90° к горизонту, по направлению носа коптера.
|
||||
|
||||
### Крепление камеры, 3D печать
|
||||
|
||||
Распечатайте [крепление камеры](models.md#клевер-3).
|
||||
|
||||
Установите крепление в удобное место, таким образом, чтобы в камере было минимальное количество лишних объектов(защита, ножки, пропеллеры, лучи), все эти части будут негативно сказываться на распознавании маркеров.
|
||||
Установите крепление в удобное место таким образом, чтобы в камере было минимальное количество лишних объектов (защита, ножки, пропеллеры, лучи) — все это будет негативно сказываться на распознавании маркеров.
|
||||
|
||||
## Настройка расположения камеры
|
||||
|
||||
Чтобы установить расположение камеры под необходимым углом, откройте файл `main_camera.launch`, расположенный в `~/catkin_ws/src/clover/clover/launch/`.
|
||||
Чтобы задать расположение камеры под необходимым углом, откройте файл `main_camera.launch`, расположенный в `~/catkin_ws/src/clover/clover/launch/`.
|
||||
|
||||
```bash
|
||||
nano ~/catkin_ws/src/clover/clover/launch/main_camera.launch
|
||||
```
|
||||
|
||||
### Версии 0.20>
|
||||
### Версии 0.20+
|
||||
|
||||
В параметрах `direction_x`, `direction_y`, установите пустые значения вручную или введите строки:
|
||||
В параметрах `direction_x`, `direction_y` установите пустые значения вручную или введите строки:
|
||||
|
||||
```bash
|
||||
sed -i "/direction_z/s/default=\".*\"/default=\"\"/" /home/pi/catkin_ws/src/clover/clover/launch/main_camera.launch
|
||||
sed -i "/direction_y/s/default=\".*\"/default=\"\"/" /home/pi/catkin_ws/src/clover/clover/launch/main_camera.launch
|
||||
```
|
||||
|
||||
Отредактируйте одну из конфигурационных строк или добавьте строку представленную ниже:
|
||||
Отредактируйте одну из конфигурационных строк или добавьте строку, представленную ниже:
|
||||
|
||||
```
|
||||
```xml
|
||||
<node pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0.05 0 0.05 -1.5707963 0 -1.5707963 base_link main_camera_optical"/>
|
||||
```
|
||||
|
||||
> **Note** Единовременно может использоваться только одна конфигурация камеры, если вы вставляете представленную выше строку, не забудьте закомментировать активную на данный момент. Для определения этого, вам поможет подсветка синтаксиса, используемая строка будет подсвечена другим цветом, нежели комментарии. Для комментирования в начало и конец строки добавьте символы *<!-- и -->* соответственно.
|
||||
> **Note** Одновременно может использоваться только одна конфигурация камеры — если вы вставляете представленную выше строку, не забудьте закомментировать активную на данный момент. Для определения этого вам поможет подсветка синтаксиса — активная строка будет подсвечена отличным от комментариев цветом. Для комментирования в начало и конец строки добавьте символы `<!--` и `-->` соответственно.
|
||||
|
||||
Если используемая вами карта маркеров имеет равномерные расстояния между ними, можете воспользоваться [утилитой для создания карт `gen_map.py`](aruco_map.md#настройка-карты-маркеров). В случае если ваши маркеры расположены в случайном порядке вам потребуется задать их вручную, для этого перейдите в директорию `~/catkin_ws/src/clover/aruco_map/map` и создайте файл карты `map_name.txt`. Заполните вашу карту в соответствии с [синтаксисом карт](aruco_map.md#настройка-карты-маркеров). Пример карты маркеров со случайным расположением маркеров:
|
||||
Если на используемой вами карте, маркеры имеют равное расстояние по осям *X* и *Y*, можете воспользоваться [утилитой для создания карт `gen_map.py`](aruco_map.md#настройка-карты-маркеров). В ином случае, вам потребуется задать их вручную — для этого перейдите в директорию `~/catkin_ws/src/clover/aruco_map/map` и создайте файл карты `map_name.txt`. Заполните вашу карту в соответствии с [синтаксисом карт](aruco_map.md#настройка-карты-маркеров). Пример карты маркеров со случайным расположением маркеров:
|
||||
|
||||
> **Hint** При введении карты, выберите один из маркеров, как начало координат, и относительно него отмеряйте расстояние до всех остальных маркеров. Вы можете не указывать все 8 параметров, в случае если все ваши маркеры ориентированы одинаково, можно указывать только первые 5: индекс маркера, размер и его расположение в пространстве по осям x, y, z соответственно.
|
||||
> **Hint** При введении карты выберите один из маркеров в качестве начала координат и относительно него отмеряйте расстояние до всех остальных маркеров. Если все ваши маркеры ориентированы одинаково, вы можете не указывать все 8 параметров, а указать только первые 5: индекс маркера, размер и его расположение в пространстве по осям x, y, z соответственно.
|
||||
|
||||
```
|
||||
106 0.33 0 0 0
|
||||
@@ -49,9 +49,9 @@ sed -i "/direction_y/s/default=\".*\"/default=\"\"/" /home/pi/catkin_ws/src/clov
|
||||
153 0.40 -0.56 1.36 0
|
||||
```
|
||||
|
||||
После того, как карта введена, необходимо применить ее, для этого отредактируйте файл `aruco.launch`, расположенный в `~/catkin_ws/src/clover/clover/launch/`. Измените в нем строку `<param name="map" value="$(find aruco_pose)/map/map_name.txt"/>`, где `map_name.txt` название вашего файла с картой.
|
||||
После того, как вы заполните карту, необходимо применить ее — для этого отредактируйте файл `aruco.launch`, расположенный в `~/catkin_ws/src/clover/clover/launch/`. Измените в нем строку `<param name="map" value="$(find aruco_pose)/map/map_name.txt"/>`, где `map_name.txt` название вашего файла с картой.
|
||||
|
||||
При использовании маркеров не привязанных к горизонтальным плоскостям(пол, потолок), необходимо отключить параметр `known_tilt`, как в модуле `aruco_detect`, так и в модуле `aruco_map` в том же файле. Для того, чтобы сделать это автоматически, введите:
|
||||
При использовании маркеров, не привязанных к горизонтальным плоскостям(пол, потолок), необходимо отключить параметр `known_tilt` как в модуле `aruco_detect`, так и в модуле `aruco_map` в том же файле. Для того, чтобы сделать это автоматически, введите:
|
||||
|
||||
```bash
|
||||
sed -i "/known_tilt/s/value=\".*\"/value=\"\"/" /home/pi/catkin_ws/src/clover/clover/launch/aruco.launch
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
{ "from": "snippets/", "to": "ru/snippets.html" },
|
||||
{ "from": "optical_flow/", "to": "ru/optical_flow.html" },
|
||||
{ "from": "laser/", "to": "ru/laser.html" },
|
||||
{ "from": "led/", "to": "ru/leds.html" },
|
||||
{ "from": "led/", "to": "en/leds.html" },
|
||||
{ "from": "leds/", "to": "ru/leds.html" },
|
||||
{ "from": "hostname/", "to": "en/hostname.html" },
|
||||
{ "from": "programming/", "to": "en/programming.html" },
|
||||
|
||||