Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fbc9c22cb3 | ||
|
|
32da94aeae |
@@ -1,6 +1,6 @@
|
|||||||
# clover🍀: create autonomous drones easily
|
# clover🍀: create autonomous drones easily
|
||||||
|
|
||||||
<img src="docs/assets/clover42-main.png" align="right" width="400px" alt="COEX Clover Drone">
|
<img src="docs/assets/clever4-front-white.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.
|
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.
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
Changelog for package aruco_pose
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
0.21.1 (2020-11-17)
|
|
||||||
-------------------
|
|
||||||
* First release of aruco_pose package to ROS
|
|
||||||
* Contributors: Alamoris, Alexey Rogachevskiy, Arthur Golubtsov, Ilya Petrov, Oleg Kalachev
|
|
||||||
@@ -8,8 +8,6 @@ p = cv2.aruco.DetectorParameters_create()
|
|||||||
|
|
||||||
gen = ParameterGenerator()
|
gen = ParameterGenerator()
|
||||||
|
|
||||||
gen.add("enabled", bool_t, 0, "if detection enabled", True)
|
|
||||||
|
|
||||||
gen.add("adaptiveThreshConstant", double_t, 0,
|
gen.add("adaptiveThreshConstant", double_t, 0,
|
||||||
"Constant for adaptive thresholding before finding contours",
|
"Constant for adaptive thresholding before finding contours",
|
||||||
p.adaptiveThreshConstant, 0, 100)
|
p.adaptiveThreshConstant, 0, 100)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<package format="2">
|
<package format="2">
|
||||||
<name>aruco_pose</name>
|
<name>aruco_pose</name>
|
||||||
<version>0.21.1</version>
|
<version>0.0.1</version>
|
||||||
<description>Positioning with ArUco markers</description>
|
<description>Positioning with ArUco markers</description>
|
||||||
|
|
||||||
<maintainer email="okalachev@gmail.com">Oleg Kalachev</maintainer>
|
<maintainer email="okalachev@gmail.com">Oleg Kalachev</maintainer>
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ private:
|
|||||||
std::unique_ptr<tf2_ros::Buffer> tf_buffer_;
|
std::unique_ptr<tf2_ros::Buffer> tf_buffer_;
|
||||||
std::unique_ptr<tf2_ros::TransformListener> tf_listener_;
|
std::unique_ptr<tf2_ros::TransformListener> tf_listener_;
|
||||||
std::shared_ptr<dynamic_reconfigure::Server<aruco_pose::DetectorConfig>> dyn_srv_;
|
std::shared_ptr<dynamic_reconfigure::Server<aruco_pose::DetectorConfig>> dyn_srv_;
|
||||||
bool enabled_ = true;
|
|
||||||
cv::Ptr<cv::aruco::Dictionary> dictionary_;
|
cv::Ptr<cv::aruco::Dictionary> dictionary_;
|
||||||
cv::Ptr<cv::aruco::DetectorParameters> parameters_;
|
cv::Ptr<cv::aruco::DetectorParameters> parameters_;
|
||||||
image_transport::Publisher debug_pub_;
|
image_transport::Publisher debug_pub_;
|
||||||
@@ -129,8 +128,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
void imageCallback(const sensor_msgs::ImageConstPtr& msg, const sensor_msgs::CameraInfoConstPtr &cinfo)
|
void imageCallback(const sensor_msgs::ImageConstPtr& msg, const sensor_msgs::CameraInfoConstPtr &cinfo)
|
||||||
{
|
{
|
||||||
if (!enabled_) return;
|
|
||||||
|
|
||||||
Mat image = cv_bridge::toCvShare(msg, "bgr8")->image;
|
Mat image = cv_bridge::toCvShare(msg, "bgr8")->image;
|
||||||
|
|
||||||
vector<int> ids;
|
vector<int> ids;
|
||||||
@@ -359,7 +356,6 @@ private:
|
|||||||
|
|
||||||
void paramCallback(aruco_pose::DetectorConfig &config, uint32_t level)
|
void paramCallback(aruco_pose::DetectorConfig &config, uint32_t level)
|
||||||
{
|
{
|
||||||
enabled_ = config.enabled;
|
|
||||||
parameters_->adaptiveThreshConstant = config.adaptiveThreshConstant;
|
parameters_->adaptiveThreshConstant = config.adaptiveThreshConstant;
|
||||||
parameters_->adaptiveThreshWinSizeMin = config.adaptiveThreshWinSizeMin;
|
parameters_->adaptiveThreshWinSizeMin = config.adaptiveThreshWinSizeMin;
|
||||||
parameters_->adaptiveThreshWinSizeMax = config.adaptiveThreshWinSizeMax;
|
parameters_->adaptiveThreshWinSizeMax = config.adaptiveThreshWinSizeMax;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Information: https://clover.coex.tech/aruco
|
# Information: https://clover.coex.tech/en/aruco.html
|
||||||
|
|
||||||
import rospy
|
import rospy
|
||||||
from clover import srv
|
from clover import srv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Information: https://clover.coex.tech/led
|
# Information: https://clover.coex.tech/en/leds.html
|
||||||
|
|
||||||
import rospy
|
import rospy
|
||||||
from clover.srv import SetLEDEffect
|
from clover.srv import SetLEDEffect
|
||||||
|
|||||||
@@ -4,9 +4,7 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
EXCLUDE = ('clever4-front-white.png', 'clever4-front-white-large.png', '.DS_Store',
|
EXCLUDE = ('clever4-front-white.png', '.DS_Store', 'clever4-front-black-large.png')
|
||||||
'clever4-front-black-large.png','clover42-black.png')
|
|
||||||
|
|
||||||
code = 0
|
code = 0
|
||||||
|
|
||||||
os.chdir('./docs')
|
os.chdir('./docs')
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
Changelog for package clover
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
0.21.1 (2020-11-17)
|
|
||||||
-------------------
|
|
||||||
* First release of clover package to ROS
|
|
||||||
* Contributors: Alexey Rogachevskiy, Arthur Golubtsov, Oleg Kalachev
|
|
||||||
@@ -44,12 +44,16 @@ Alternatively you may change the `fcu_url` property in `mavros.launch` file to p
|
|||||||
|
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
|
To start connection to SITL, use:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
roslaunch clover sitl.launch
|
||||||
|
```
|
||||||
|
|
||||||
To start connection to the flight controller, use:
|
To start connection to the flight controller, use:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
roslaunch clover clover.launch
|
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`.
|
> 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`.
|
||||||
|
|||||||
19
clover/launch/sitl.launch
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<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>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<package format="2">
|
<package format="2">
|
||||||
<name>clover</name>
|
<name>clover</name>
|
||||||
<version>0.21.1</version>
|
<version>0.0.1</version>
|
||||||
<description>The Clover package</description>
|
<description>The Clover package</description>
|
||||||
|
|
||||||
<maintainer email="okalachev@gmail.com">Oleg Kalachev</maintainer>
|
<maintainer email="okalachev@gmail.com">Oleg Kalachev</maintainer>
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
<title>Clover Drone Kit Tools</title>
|
|
||||||
|
|
||||||
<h1>Clover Drone Kit Tools</h1>
|
<h1>Clover Drone Kit Tools</h1>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
Changelog for package clover_blocks
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
0.21.1 (2020-11-17)
|
|
||||||
-------------------
|
|
||||||
* First release of clover_blocks package to ROS
|
|
||||||
* Contributors: Oleg Kalachev
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<package format="2">
|
<package format="2">
|
||||||
<name>clover_blocks</name>
|
<name>clover_blocks</name>
|
||||||
<version>0.21.1</version>
|
<version>0.0.0</version>
|
||||||
<description>Blockly programming support for Clover</description>
|
<description>Blockly programming support for Clover</description>
|
||||||
<maintainer email="okalachev@gmail.com">Oleg Kalachev</maintainer>
|
<maintainer email="okalachev@gmail.com">Oleg Kalachev</maintainer>
|
||||||
<license>MIT</license>
|
<license>MIT</license>
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
Changelog for package clover_description
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
0.21.1 (2020-11-17)
|
|
||||||
-------------------
|
|
||||||
* First release of clover_description package to ROS
|
|
||||||
* Contributors: Alexey Rogachevskiy
|
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<package format="2">
|
<package format="2">
|
||||||
<name>clover_description</name>
|
<name>clover_description</name>
|
||||||
<version>0.21.1</version>
|
<version>0.0.1</version>
|
||||||
<description>The clover_description package provides URDF models of the Clover series of quadcopters.</description>
|
<description>The clover_description package provides URDF models of the Clover series of quadcopters.</description>
|
||||||
|
|
||||||
<maintainer email="sfalexrog@gmail.com">Alexey Rogachevskiy</maintainer>
|
<maintainer email="sfalexrog@gmail.com">Alexey Rogachevskiy</maintainer>
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
Changelog for package clover_simulation
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
0.21.1 (2020-11-17)
|
|
||||||
-------------------
|
|
||||||
* First release of clover_simulation package to ROS
|
|
||||||
* Contributors: Alexey Rogachevskiy
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
<launch>
|
<launch>
|
||||||
<arg name="type" default="gazebo"/> <!-- gazebo, jmavsim, none (only clover packages) -->
|
|
||||||
<arg name="mav_id" default="0"/>
|
<arg name="mav_id" default="0"/>
|
||||||
<arg name="est" default="ekf2"/> <!-- PX4 estimator: lpe, ekf2 -->
|
<arg name="est" default="ekf2"/> <!-- PX4 estimator: lpe, ekf2 -->
|
||||||
<arg name="vehicle" default="clover"/> <!-- PX4 vehicle configuration: clover, clover_vpe -->
|
<arg name="vehicle" default="clover"/> <!-- PX4 vehicle configuration: clover, clover_vpe -->
|
||||||
@@ -10,22 +9,22 @@
|
|||||||
<arg name="use_clover_physics" default="false"/> <!-- Use inertial parameters from CAD models -->
|
<arg name="use_clover_physics" default="false"/> <!-- Use inertial parameters from CAD models -->
|
||||||
|
|
||||||
<!-- Gazebo instance -->
|
<!-- Gazebo instance -->
|
||||||
<include file="$(find gazebo_ros)/launch/empty_world.launch" if="$(eval type == 'gazebo')">
|
<include file="$(find gazebo_ros)/launch/empty_world.launch">
|
||||||
<!-- Workaround for crashes in VMware -->
|
<!-- Workaround for crashes in VMware -->
|
||||||
<env name="SVGA_VGPU10" value="0"/>
|
<env name="SVGA_VGPU10" value="0"/>
|
||||||
<arg name="gui" value="true"/>
|
<arg name="gui" value="true"/>
|
||||||
<arg name="world_name" value="$(find clover_simulation)/resources/worlds/clover_aruco.world"/>
|
<arg name="world_name" value="$(find clover_simulation)/resources/worlds/clover.world"/>
|
||||||
<arg name="verbose" value="true"/>
|
<arg name="verbose" value="true"/>
|
||||||
</include>
|
</include>
|
||||||
|
|
||||||
<!-- PX4 instance -->
|
<!-- 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)" unless="$(eval type == 'none')">
|
<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)">
|
||||||
<env name="PX4_SIM_MODEL" value="$(arg vehicle)"/>
|
<env name="PX4_SIM_MODEL" value="$(arg vehicle)"/>
|
||||||
<env name="PX4_ESTIMATOR" value="$(arg est)"/>
|
<env name="PX4_ESTIMATOR" value="$(arg est)"/>
|
||||||
</node>
|
</node>
|
||||||
|
|
||||||
<!-- Clover model -->
|
<!-- Clover model -->
|
||||||
<include file="$(find clover_description)/launch/spawn_drone.launch" if="$(eval type == 'gazebo')">
|
<include file="$(find clover_description)/launch/spawn_drone.launch">
|
||||||
<arg name="main_camera" value="$(arg main_camera)"/>
|
<arg name="main_camera" value="$(arg main_camera)"/>
|
||||||
<arg name="rangefinder" value="$(arg rangefinder)"/>
|
<arg name="rangefinder" value="$(arg rangefinder)"/>
|
||||||
<arg name="led" value="$(arg led)"/>
|
<arg name="led" value="$(arg led)"/>
|
||||||
@@ -33,20 +32,10 @@
|
|||||||
<arg name="use_clover_physics" value="$(arg use_clover_physics)"/>
|
<arg name="use_clover_physics" value="$(arg use_clover_physics)"/>
|
||||||
</include>
|
</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 -->
|
<!-- Clover services -->
|
||||||
<include file="$(find clover)/launch/clover.launch">
|
<include file="$(find clover)/launch/clover.launch">
|
||||||
<arg name="simulator" value="true"/>
|
<arg name="simulator" value="true"/>
|
||||||
<arg name="fcu_conn" value="sitl"/>
|
<arg name="fcu_conn" value="sitl"/>
|
||||||
<arg name="fcu_ip" value="127.0.0.1"/>
|
<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>
|
</include>
|
||||||
</launch>
|
</launch>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 94 B |