Code Monkey home page Code Monkey logo

clover's Introduction

clover🍀: create autonomous drones easily

COEX Clover Drone

Clover is an open source ROS-based framework, providing user-friendly tools to control PX4-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.

COEX Clover Drone is an educational programmable drone kit, suited perfectly for running clover software. The kit is shipped unassembled and includes Pixracer-compatible autopilot running PX4 firmware, Raspberry Pi 4 as a companion computer, a camera for computer vision navigation as well as additional sensors and peripheral devices. Batteries included.

The main documentation is available at https://clover.coex.tech. Official website: coex.tech/clover.

Support us on Kickstarter!

Video compilation

Clover Drone Kit autonomy compilation

Clover drone is used on a wide range of educational events, including Copter Hack, WorldSkills Drone Operation competition, Autonomous Vehicles Track of NTI Olympics 2016–2020, Quadro Hack 2019 (National University of Science and Technology MISiS), Russian Robot Olympiad (autonomous flights), and others.

Raspberry Pi image

Preconfigured image for Raspberry Pi with installed and configured software, ready to fly, is available in the Releases section.

GitHub Workflow Status GitHub all releases

Image features:

  • Raspbian Buster
  • ROS Noetic
  • Configured networking
  • OpenCV
  • mavros
  • Periphery drivers for ROS (GPIO, LED strip, etc)
  • aruco_pose package for marker-assisted navigation
  • clover package for autonomous drone control

API description for autonomous flights is available on GitBook.

For manual package installation and running see clover package documentation.

Support

Telegram Support Chat

License

While the Clover platform source code is available under the MIT License, note, that the documentation is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

clover's People

Contributors

1den4ik1 avatar alamoris avatar alekseyshlykov avatar apostololeg avatar copterspace avatar deadln avatar gitbook-bot avatar goldarte avatar hany606 avatar kishere avatar korigod avatar kpetrykin avatar magicwinnie avatar max8rr8 avatar mmkuznecov avatar okalachev avatar oponfil avatar qandra-si avatar seliverstovae avatar sfalexrog avatar slavikyd avatar stinger000 avatar svetk0 avatar tenessinum avatar thomashamain avatar timkondratiev avatar urpylka avatar veneradal avatar vilesovds avatar yuliya1404 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

clover's Issues

Undefined substitution argument visual_material

I'm getting the below error while running roslaunch clover_simulation simulator.launch. I was following this tutorial.

rajendra@u20:~/drone_ws$ roslaunch clover_simulation simulator.launch
... logging to /home/rajendra/.ros/log/d8dbb14c-8caa-11ec-81f3-f39e9237e8e2/roslaunch-u20-672293.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

Undefined substitution argument visual_material
when evaluating expression 'color'
when instantiating macro: vertical_clover_rotor (/home/rajendra/drone_ws/src/clover/clover_description/urdf/clover/clover4_macros.xacro)
in file: /home/rajendra/drone_ws/src/clover/clover_description/urdf/clover/clover4_physics.xacro
included from: /home/rajendra/drone_ws/src/clover/clover_description/urdf/clover/clover4_base.xacro
included from: /home/rajendra/drone_ws/src/clover/clover_description/urdf/clover/clover4.xacro
RLException: while processing /home/rajendra/drone_ws/src/clover/clover_description/launch/spawn_drone.launch:
Invalid tag: Cannot load command parameter [drone_description]: command [['/opt/ros/noetic/lib/xacro/xacro', '/home/rajendra/drone_ws/src/clover/clover_description/urdf/clover/clover4.xacro', 'main_camera:=true', 'rangefinder:=true', 'led:=true', 'gps:=false', 'maintain_camera_rate:=false', 'use_clover_physics:=false']] returned with code [2].

Param xml is
The traceback for the exception was written to the log file

Не собирается софт Clever. Tag v0.18-rc1

Имеется ноутбук с 64-разрядной ubuntu 16.04 LTS
Собирал по инструкции Сборка образа Клевера в симуляторе
При попытке сборки возникает ошибка

led.cpp:18:30: fatal error: led_msgs/SetLEDs.h: Нет такого файла или каталога

Полный лог сборки: https://pastebin.com/kgbPpaZf
Примечательно, что при переключении на tag v0.17 всё собирается
Прошу помощи.

Bug with import module rospy on stable version of clever image

I am using verion v0.8.1 of clever image.
I got this error

Traceback (most recent call last):
  File "py.py", line 1, in <module>
    import rospy
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/__init__.py", line 47, in <module>
    from std_msgs.msg import Header
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/std_msgs/msg/__init__.py", line 1, in <module>
    from ._Bool import *
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/std_msgs/msg/_Bool.py", line 5, in <module>
    import genpy
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/genpy/__init__.py", line 34, in <module>
    from . message import Message, SerializationError, DeserializationError, MessageException, struct_I
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/genpy/message.py", line 44, in <module>
    import yaml
ImportError: No module named 'yaml'

This is python script

import rospy

rospy.init_node('my_ros_node')  # имя ROS-ноды

rospy.spin()  # входим в бесонечный цикл..

2018-10-09 15_51_24

Пока просто заметка

Наш программный пакет состоит из четырех основных частей:

  1. ROS пакет CLEVER, в свою очередь содержит:
    1. Нода для определения положения аппарата
    2. Нода API CLEVER (Simple Control)
  2. Набор инструкций для сборки образа операционной системы
  3. Документация к ROS, аппаратной сборки и настройки коптера
  4. Исходники приложения программного пульта под iOS

Почему считаю что лучше переносить.

Основная идея заключается в том что
Концептуально Arucopose И simpleoffboard являются лишь устанавливаемыми пакетами
И нет причин держать их в главном пакете
А документация должна прикручиваться исходя из того что добавляется в install_ros или другие requirements как и эти репозитории.

Также использование их как внешних пакетов должно наконец стимулировать решить проблему с ros requirements

Вот пока не понял только где должна быть документация 😅
CLEVER - это набор инструкций для сборки преднастроенного образа с документацией.

  1. Что связывает ноду клевера и builder?
  2. Что связывает документацию и builder?

Запуск Клевера с разрешением 640x480, камера в потолок

Попробовал запустить Клевер на 640х480 (вместо 320х240 по умолчанию). На потолочных маркерах.
В main_camera.launch прописал:

  • param name="camera_info_url" value="file://$(find clever)/camera_info/fe130_640_02.yaml"
  • param name="image_width" value="640"
  • param name="image_height" value="480"

fe130_640_02.yaml - калибровал как описано в http://wiki.ros.org/camera_calibration , потом полученные коэффициенты вписал в образцовый fisheye_cam_640.yaml

С помощью rviz проверил на дизармленом коптере - карту на потолке видит, маркеры распознаёт, положение в пространстве и движение по всем трём осям видит правильно.

Но при взлёте на 1 метр и зависании (с помощью navigate) - коптер взлетает, плавно пролетает target position и летит вверх, пока не ударится в потолок. В rviz это видно также как и в логах:
2018-08-08_17-17-19

LPE_VIS_XY = 0.1 m, LPE_VIS_Z = 0.15 m и остальные настройки pixhawk- те же, что и при 320х240.
При полётах с разрешением камеры по умолчанию 320х240 такой проблемы не наблюдается, коптер зависает в target position, a не пролетает её.

В чём может быть проблема и куда смотреть?

Проблема с жестко заданным портом подключения PixHawk to Raspberry

В mavros.launch порт подключения PixHawk жестко прописан как ttyACM0:
<param name="fcu_url" value="/dev/ttyACM0" if="$(eval fcu_conn == 'usb')"/>
При подключении к Raspberry более одного внешнего устройства (USB, UART) - в частности, MarvelMind - могут возникать сбои, так как PixHawk далеко не всегда оказывается висящим на нулевом порту.

Проблема с переходом в режим "OFFBOARD"

Добрый день!

Не получается перейти в полетный режим "OFFBOARD".
Команда rosservice call /mavros/set_mode "base_mode: 0 custom_mode: 'OFFBOARD'" возвращает False.
Возможно, в прошивке PX4 нет такого режима.
Подскажите, пожалуйста, как перейти в данный режим?

clover: Cannot locate rosdep definition for [led_msgs]

I get the following error with rosdep install -y --from-paths src --ignore-src command. How to fix this error. I will be glad if you help. I use full desktop kinetic on rpi 3 with ubuntu mate 16.04.

DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
clover: Cannot locate rosdep definition for [led_msgs]
clover_simulation: Cannot locate rosdep definition for [led_msgs]

Запуск дальномера

Коллеги, что-то не завёлся дальномер VL53L1X на образе 13-го Клевера.
Скачал образ. В raspi-config разрешил i2c, больше ничего не настраивал.
Подключать i2c пробовали и к 0 и к 1 каналу, фотки ниже.
img_20181116_155734
img_20181116_160225

Остановил clever, просто пытаюсь запустить ноду дальномера (python vl53l1x.py)

После стр 26:
tof = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29)
tof.open() # Initialise the i2c bus and configure the sensor

Куча ошибок, в стиле:
Traceback (most recent call last):
File "_ctypes/callbacks.c", line 315, in 'calling callback function'
File "/usr/local/lib/python2.7/dist-packages/VL53L1X.py", line 99, in _i2c_read
self._i2c.i2c_rdwr(msg_w, msg_r)
File "/usr/local/lib/python2.7/dist-packages/smbus2/smbus2.py", line 483, in i2c_rdwr
ioctl(self.fd, I2C_RDWR, ioctl_data)
IOError: [Errno 121] Remote I/O error

Просьба поделиться правильной схемой подключения дальномера, что-то не нашёл ничего внятного в сети.

Добавлять имя коптера в файл /etc/hostname

Сегодня поменял эту штуку, очень стало удобно, если несколько дронов подключены к одной точке доступа (отображается что за дрон). Также в терминале пишет сразу понятно, где ты работаешь.

Предложение писать именно уникальный id, чтобы можно было понять что за дрон. Делать это лучше так https://github.com/urpylka/raspberrypi/blob/master/configuration/setup_pi_interactive#L37

ERROR [mavlink] Failed to start shell (-1) and Failed to load plugin libgazebo_multirotor_base_plugin.so

Hi i wad following the instructions to setup clover from simulation_native.md but when run following i am facing following issues. Could you please help me to fix the issue

catkin_ws$ source devel/setup.bash
catkin_ws$ source /usr/share/gazebo/setup.sh
catkin_ws$ roslaunch clover_simulation simulator.launch

issue1: Failed to load plugin xxx.so

.....
....
[Err] [Plugin.hh:178] Failed to load plugin libgazebo_multirotor_base_plugin.so: libgazebo_multirotor_base_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:178] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:178] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:178] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:178] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:178] Failed to load plugin libgazebo_magnetometer_plugin.so: libgazebo_magnetometer_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:178] Failed to load plugin libgazebo_barometer_plugin.so: libgazebo_barometer_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:178] Failed to load plugin libgazebo_mavlink_interface.so: libgazebo_mavlink_interface.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:178] Failed to load plugin libgazebo_imu_plugin.so: libgazebo_imu_plugin.so: cannot open shared object file: No such file or directory
[Wrn] [sim_leds.cpp:162] Failed to convert visual to integer: stoi, assuming 0
[Wrn] [sim_leds.cpp:129] Creating new LED controller for namespace 
[ INFO] [1621853865.491137029, 0.440000000]: LedController has started (as server)
[ INFO] [1621853865.500041617, 0.448000000]: ros.roscpp: waitForService: Service [/led/set_leds] is now available.
ERROR [mavlink] [timesync] Time jump detected. Resetting time synchroniser.
[ INFO] [1621853865.622684878, 0.556000000]: ros.clover: ready
....
...

Problem installing the simulation environment

I would like to install the simulation environment, as outlines in the Native Setup description, but the process unfortunately fails. In particular, the error message I get at the very end while building the catkin workspace:

gz: symbol lookup error: /usr/lib/x86_64-linux-gnu/libgazebo_common.so.9: undefined symbol: _ZN8ignition10fuel_tools12ClientConfig12SetUserAgentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
sitl_gazebo/CMakeFiles/sdf.dir/build.make:62: recipe for target '/root/catkin_ws/src/sitl_gazebo/models/iris/iris.sdf' failed
make[2]: *** [/root/catkin_ws/src/sitl_gazebo/models/iris/iris.sdf] Error 127
make[2]: *** Deleting file '/root/catkin_ws/src/sitl_gazebo/models/iris/iris.sdf'
CMakeFiles/Makefile2:2137: recipe for target 'sitl_gazebo/CMakeFiles/sdf.dir/all' failed
make[1]: *** [sitl_gazebo/CMakeFiles/sdf.dir/all] Error 2

I could follow all the prior installation steps without any problems. I am trying to install the simulation inside a docker container with the following build instructions:

FROM nvidia/cudagl:10.0-devel-ubuntu18.04

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update 
RUN apt-get install -y --no-install-recommends \
    apt-utils git curl vim unzip openssh-client wget \
    build-essential cmake \
    libopenblas-dev \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libxrender-dev \
    python-pip\
    lsb-release

RUN sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

RUN apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

RUN apt-get update && apt-get install -y --no-install-recommends\
    ros-melodic-desktop-full\
    python-rosdep\
    python-jinja2 

RUN rosdep init
RUN rosdep update
RUN echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
RUN source ~/.bashrc

Does anybody know what might be the reason for gazebo related problem while building the catkin workspace? I am grateful for any tips or suggestions!

RPi initial script

It's impossible to complete all the image configurations in a build process. Some operations need to be executed only once, on the first boot.

For example, we need to change wifi SSID to CLEVER-XXXX, where XXXX – four random digits. If we generate these digits in the image build process, all SSID will be the same.

For there post-build configurations I wrote the magic (self-remove after execute) script & added him to rc.local in the build process by line number. For easy use I duplicated the code below:

# Magic script:
RENAME_SSID="sudo sed -i.OLD \"s/CLEVER/CLEVER-\$(head -c 100 /dev/urandom | xxd -ps -c 100 | sed -e 's/[^0-9]//g' | cut -c 1-4)/g\" /etc/wpa_supplicant/wpa_supplicant.conf && sudo sed -i '/sudo sed/d' /etc/rc.local && sudo reboot"

# Adding to rc.local
sed -i "19a$RENAME_SSID" /etc/rc.local

After adding to the rc.local the script takes the following form:

sudo sed -i.OLD "s/CLEVER/CLEVER-$(head -c 100 /dev/urandom | xxd -ps -c 100 | sed -e 's/[^0-9]//g' | cut -c 1-4)/g" /etc/wpa_supplicant/wpa_supplicant.conf && sudo sed -i '/sudo sed/d' /etc/rc.local && sudo reboot

But now I need to execute several post-build operations. And I see a few solutions:

  1. Add commands to one line (as it is).
    But this method is not user friendly & without some standard form.
  2. Each atomic operation is in individual line.
    But it's not clear where to add the reboot option. And how to add strings to rc.local without basing on the line number. And it's also not clear on what the choice of self-remove is based.
  3. Add initial script as a separated file.
    This solution helps to avoid possible collisions with self-remove operations, adding one or more strings. And it may be helpful for standadization list of operations. I see two options of how it can be done:
    1. Separated initial script for storing operations and separated configure script (e.g. makefile) for adding the executable script to rc.local.
    2. One initial script for storing operation & adding the initial script to rc.local. Separated params can be used for this solution.

And also I wrote some rules for standadization of writing operations to the initial script:

  1. Initial script should comprise a list of atomic operations, each operation must be on a separated line.
  2. Each atomic operation may consist of several operations united by &&.
  3. Atomic operations do not consist of interrupted operations such as sudo reboot.
  4. Atomic operations can not be related to each other (e.g. using set -e or &&).
  5. If it's needed to execute interrupted operation, such as sudo reboot, it must be executed after other operations.

Не работает get_telemetry в симуляции

Здравствуйте! Так и не смог разобраться с проблемой. При вызове get_telemetry() выдает следующее:
rame_id: "map"
connected: True
armed: True
mode: "OFFBOARD"
x: nan
y: nan
z: nan
lat: 47.3977665
lon: 8.5456138
alt: 47.8988990784
vx: nan
vy: nan
vz: nan
pitch: nan
roll: nan
yaw: nan
pitch_rate: -0.391697049141
roll_rate: 0.332374721766
yaw_rate: 0.0333648249507
voltage: 11.4899997711
cell_voltage: 3.82800006866

List of all part

Does anybody can list all part of this drone ?
like : what is FC? how much kv of motors and ....

Сеть сломалась в 16-м Клевере

В 13-м Клевере и до него всё было хорошо: была у меня виртуалка Ubuntu с rviz-ом на ней, заполнял на виртуалке я 2 переменные:

export ROS_MASTER_URI=http://192.168.11.1:11311
export ROS_IP=10.0.2.15

После этого у меня был полностью доступен ROS с Малины - и rostopic echo, и rviz и всё остальное. (10.0.2.15 - это виртуалкин ip адрес из ifconfig).

В 16-м Клевере сейчас:

  • rostopic list - отображаются все топики, как на виртуалке, так и на Малине
  • rostopic echo /mavros/state - есть только в сеансе малины и пусто - на виртуалке.
  • попробовал через rostopic pub публиковать строку в тестовый топик на Малине - она также не отображается на виртуалке.

Тогда я остановил Клевер и начал лечить roscore, чтоб через rostopic pub просто текст на виртуалке увидеть. И вылечился roscore только от возврата на место ROS_IP + устранения запуска сервиса roscore от пользователя pi ( отката #101 + отката a89dda8#diff-e0fb8eab5334899c39004d5843582224 )

при этом у Клевера я User=pi пока не убрал из builder/assets/clever.service - и rostopic echo /mavros/state по - прежнему виден ОК по ssh в Малине и НЕ виден на виртуалке.

Я-то могу всё восстановить как было в 13-м Клевере, и наверно, заработает. Но вопрос: а как должно быть на самом деле?

p.s. на виртуалке пытался писать export ROS_HOSTNAME=raspberrypi.local - не спасло, пока пользователя pi в запуске сервисов не отключил - всё было глухо...

Не отображаются координаты телеметрии в симуляторе

Здравствуйте! При запросе телеметрии коптера командой get_telemetry в полях x,y,z выводятся значения nan. Пример вывода:
frame_id: "map"
connected: True
armed: True
mode: "OFFBOARD"
x: nan
y: nan
z: nan
lat: 47.3977665
lon: 8.5456138
alt: 47.8988990784
vx: nan
vy: nan
vz: nan
pitch: nan
roll: nan
yaw: nan
pitch_rate: -0.391697049141
roll_rate: 0.332374721766
yaw_rate: 0.0333648249507
voltage: 11.4899997711
cell_voltage: 3.82800006866

В чем может быть причина?

Question about the convertion from xacro files to urdf files

Hello, i have a problem regarding the xacro files. I try to convert the xacro files in clover_description to urdf files, but the convertion of files: clover4_physics.xacro and clover4_base.xacro always fail: "Undefined substitution argument use_clover_physics". Could u tell why?

I know it maybe a very basic question but i am new to ros so this is very strange for me. Thanks in advance

Класть clever.service в /lib/systemd/system

Надо класть симлинк на clever.service в /lib/systemd/system, чтобы потом можно включать и выключать clever с помощью sudo systemctl enable clever.service и sudo systemctl disable clever.service, и не надо было писать полный путь.

Убрать все варнинги при компиляции пакета:

/home/pi/catkin_ws/src/clever/aruco_pose/src/aruco_pose.cpp:298:37: warning: ‘tf::Quaternion::Quaternion(const tfScalar&, const tfScalar&, const tfScalar&)’ is deprecated [-Wdeprecated-declarations]

/home/pi/catkin_ws/src/clever/aruco_pose/src/aruco_pose.cpp:127:15: warning: unused variable ‘z’ [-Wunused-variable]
float z = std::stof(parts.at(3));
^
/home/pi/catkin_ws/src/clever/aruco_pose/src/aruco_pose.cpp:128:15: warning: unused variable ‘yaw’ [-Wunused-variable]
float yaw = std::stof(parts.at(4));
^~~
/home/pi/catkin_ws/src/clever/aruco_pose/src/aruco_pose.cpp:129:15: warning: unused variable ‘pitch’ [-Wunused-variable]
float pitch = std::stof(parts.at(5));
^~~~~
/home/pi/catkin_ws/src/clever/aruco_pose/src/aruco_pose.cpp:130:15: warning: unused variable ‘roll’ [-Wunused-variable]
float roll = std::stof(parts.at(6));

Upgrading to Px4 Firmware 1.12 with Coex Pix

Hi! We've been using the clovers for a projects at our lab where we have a workflow of first testing controllers we have built in simulation (px4 sitl + gazebo) and then running on the drones. There have been a number of improvements made to the PX4 firmware since 1.8 (your release) which are now in our sitl (1.12) (and QGC) which are unfortunately not in the firmware on the drone. (E.g. improvements to the controller, EKF, new parameters etc)

I have attempted to run the latest PX4 firmware on the drone but it does not recognize the hardware configuration of your Pix. Therefore I wanted to ask for advice/help on how I might be able to get the latest PX4 firmware onto the clover? In particular:

  • I assume there is a hardware configuration somewhere in your PX4 fork for the Coex Pix - is it (hopefully) just a case of re-compiling PX4 with this configuration available?
  • I see you made a number of changes to your fork of 1.8, would some of these have to be recreated...

Or whether this might be a lot more challenging than I anticipated.

Many Thanks!

VL530L0/1XV2 laser rangefinder not working

Good morning,

I have the VL530L0/1XV2 laser rangefinder sensor wired up per the directions on https://clover.coex.tech/en/laser.html

The particular model I am using is this: https://www.amazon.com/gp/product/B07Q5Y3G4C

It is wired per the instructions and the Clover config file has it enabled, but the topic is not publishing messages.

The device shows up when I perform an i2cdetect -y 1 with the expected address 0x29.

How can I help debug this further?

Thank you.

pixhawk 2.4.8 with apm firmware

I try to communicate to a pixhawk flight controller with apm firmware。 clover on raspi 3+,uart connect to pixhawk,but it cannot work。

is there anyway to make it work?

Камера pi-v2 как opflow поведение при крене

Прошу прощения за возможно глупый вопрос, но в доках не нашел упоминания о таком.
Насколько я понимаю изображение дебага opflow, полоска от центра показывает направление, противоположное движению (как движется картинка).
Но при крене / тангаже картинка тоже движется, возможно ли что это распознаётся как горизонтальное перемещение, и поэтому коптер в position просто валится вбок, так как кренится и эффект усиливается ещё больше?
Поможет ли калибровка камеры и более сложный фон?
Фокус настроил как мог, но на мой взгляд, резкость не очень. Но лучше не настраивается.
Камера без допобъектива, стандартная камера pi v2. С ней вообще возможно получить результат opflow?

Does it supports Ardupilot?

I want to use clever-show to fly drone formations, but my drones are all using Ardupilot as the fc firmware, clever-show only supports px4, can I modify some configurations of the clover to make the clever-show drone side to support Ardupilot? because it would be a lot of troubles to switch all drones to px4 . THanks!

Нет возможности подключить pixracer по uart

В прошивке 1.8.2, на которую ведет документация, отсутствуют параметры в MAV_ для выбора порта TELEM1 или TELEM2 пикса.
В 1.10.1 они есть, коннект есть, но selfcheck.py ругается что прошивка не Clover.
Как быть?
Спасибо заранее

Can't launch clover simulation

When I run the launch file for the clover simulation roslaunch clover_simulation simulator.launch as per the Native Setup description, I get the following error:

RLException: while processing /root/catkin_ws/src/clover/clover/launch/clover.launch:
included file [/root/catkin_ws/src/clover/clover/launch/mavros.launch] requires the 'prefix' arg to be set

Does somebody know what I could do to address the problem? I am grateful for any hints or suggestions!

Симулятор с несколькими дронами

Здравствуйте! Запускаю через px4 sitl gazebo несколько дронов. В списке запущенных ROS - нод у меня:
/gazebo
/gazebo_gui
/map_flipped_frame
/mavros
/nodelet_manager
/rangefinder_frame
/rosout
/shell
/simple_offboard
/uav0/mavros
/uav1/mavros
/uav2/mavros
/visualization

Если использую navigate, то она применяется только к первому дрону ( /uav0/mavros). Можно ли как-то применить её к остальным двум?

Проблема при подключении Raspberry 3 к PX4 по UART

Не передаются данные при подключении Raspberry 3 к PX4 по UART, хотя в launch файле Clever тип подключения установлен на "uart" и передача по UART включена.
При подключении по USB данные передаются.
Подскажите, пожалуйта, в чем может быть проблема?

Bug with import module rospy

When I started app I had this errors
import rospy
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/init.py", line 47, in
from std_msgs.msg import Header
File "/opt/ros/kinetic/lib/python2.7/dist-packages/std_msgs/msg/init.py", line 1, in
from ._Bool import *
File "/opt/ros/kinetic/lib/python2.7/dist-packages/std_msgs/msg/_Bool.py", line 5, in
import genpy
File "/opt/ros/kinetic/lib/python2.7/dist-packages/genpy/init.py", line 34, in
from . message import Message, SerializationError, DeserializationError, MessageException, struct_I
File "/opt/ros/kinetic/lib/python2.7/dist-packages/genpy/message.py", line 44, in
import yaml
This is my code

# -*- coding: utf-8 -*-
import rospy
from clever import srv
from std_srvs.srv import Trigger
import rospy
from clever import srv
from std_srvs.srv import Trigger

rospy.init_node('xopter')   # название вашей ROS-ноды

# Создаем прокси ко всем сервисам:

get_telemetry = rospy.ServiceProxy('get_telemetry', srv.GetTelemetry)
navigate = rospy.ServiceProxy('navigate', srv.Navigate)
navigate_global = rospy.ServiceProxy('navigate_global', srv.NavigateGlobal)
set_position = rospy.ServiceProxy('set_position', srv.SetPosition)
set_velocity = rospy.ServiceProxy('set_velocity', srv.SetVelocity)
set_attitude = rospy.ServiceProxy('set_attitude', srv.SetAttitude)
set_rates = rospy.ServiceProxy('set_rates', srv.SetRates)
land = rospy.ServiceProxy('land', Trigger)
release = rospy.ServiceProxy('release', Trigger)
z = 1  # высота
tolerance = 0.2  # точность проверки высоты (м)

# Запоминаем изначальную точку
start = get_telemetry()

# Взлетаем на 2 м
print(navigate(z=z, speed=0.5, frame_id='fcu_horiz', auto_arm=True))

# Ожидаем взлета
while True:
    # Проверяем текущую высоту
    if get_telemetry().z - start.z + z < tolerance:
        # Взлет завершен
        break
    rospy.sleep(5)
res = land()
if res.success:
    print("Copter is landing")

mjpg-streamer installation warnings

In file included from /home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c:51:0:
/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c: In function ‘raspicamcontrol_set_saturation’:
/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c:762:32: warning: implicit declaration of function ‘mmal_port_parameter_set_rational’ [-Wimplicit-function-declaration]
       ret = mmal_status_to_int(mmal_port_parameter_set_rational(camera->control, MMAL_PARAMETER_SATURATION, value));
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c: In function ‘raspicamcontrol_set_ISO’:
/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c:864:30: warning: implicit declaration of function ‘mmal_port_parameter_set_uint32’ [-Wimplicit-function-declaration]
    return mmal_status_to_int(mmal_port_parameter_set_uint32(camera->control, MMAL_PARAMETER_ISO, ISO));
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c: In function ‘raspicamcontrol_set_video_stabilisation’:
/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c:899:30: warning: implicit declaration of function ‘mmal_port_parameter_set_boolean’ [-Wimplicit-function-declaration]
    return mmal_status_to_int(mmal_port_parameter_set_boolean(camera->control, MMAL_PARAMETER_VIDEO_STABILISATION, vstabilisation));
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c: In function ‘raspicamcontrol_set_exposure_compensation’:
/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c:913:30: warning: implicit declaration of function ‘mmal_port_parameter_set_int32’ [-Wimplicit-function-declaration]
    return mmal_status_to_int(mmal_port_parameter_set_int32(camera->control, MMAL_PARAMETER_EXPOSURE_COMP , exp_comp));
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c: In function ‘worker_thread’:
/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c:885:10: warning: implicit declaration of function ‘mmal_port_pool_create’ [-Wimplicit-function-declaration]
   pool = mmal_port_pool_create(encoder_output, encoder_output->buffer_num, encoder_output->buffer_size);
          ^~~~~~~~~~~~~~~~~~~~~
/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c:885:8: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
   pool = mmal_port_pool_create(encoder_output, encoder_output->buffer_num, encoder_output->buffer_size);
        ^
/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c:1057:5: warning: implicit declaration of function ‘mmal_port_pool_destroy’ [-Wimplicit-function-declaration]
     mmal_port_pool_destroy(encoder->output[0], pool);
     ^~~~~~~~~~~~~~~~~~~~~~

Why we need a Velocity estimation during automate flight?

I try to run an example program "flight.py", but it failed, it armed,but cannot takeoff。 Then I run the selfcheck.py, it tell me I need a
velocity estimatiom, it's very hard to find this one in our contry。 Is it necessary for drone to fly? you know, we have accelerator 。

ssh не работает, pi4/0.19img

Распаковал на флешку, запустил, подрубился к wifi. SSH не отвечает на смартфоне и пк, вебморда отзывается только на смартфоне, на ПК ничего - даже не пингуется 1.11, адреса выданы верно, шлюз 1.11, адрес из этой подсети..
Подрубить пока нечего чтоб увидеть напрямую, hdmi монитора нет пока..
В чем может быть дело?

ROS web_video_server installation warnings

Simmilary as #20

/home/pi/ros_catkin_ws/src/web_video_server/src/libav_streamer.cpp: In member function ‘virtual void web_video_server::LibavStreamer::initialize(const cv::Mat&)’:
/home/pi/ros_catkin_ws/src/web_video_server/src/libav_streamer.cpp:125:35: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
   codec_context_ = video_stream_->codec;
                                   ^~~~~
In file included from /home/pi/ros_catkin_ws/src/web_video_server/include/web_video_server/libav_streamer.h:12:0,
                 from /home/pi/ros_catkin_ws/src/web_video_server/src/libav_streamer.cpp:1:
/usr/include/arm-linux-gnueabihf/libavformat/avformat.h:893:21: note: declared here
     AVCodecContext *codec;
                     ^~~~~
/home/pi/ros_catkin_ws/src/web_video_server/src/libav_streamer.cpp:125:35: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
   codec_context_ = video_stream_->codec;
                                   ^~~~~
In file included from /home/pi/ros_catkin_ws/src/web_video_server/include/web_video_server/libav_streamer.h:12:0,
                 from /home/pi/ros_catkin_ws/src/web_video_server/src/libav_streamer.cpp:1:
/usr/include/arm-linux-gnueabihf/libavformat/avformat.h:893:21: note: declared here
     AVCodecContext *codec;
                     ^~~~~
/home/pi/ros_catkin_ws/src/web_video_server/src/libav_streamer.cpp:125:35: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
   codec_context_ = video_stream_->codec;
                                   ^~~~~
In file included from /home/pi/ros_catkin_ws/src/web_video_server/include/web_video_server/libav_streamer.h:12:0,
                 from /home/pi/ros_catkin_ws/src/web_video_server/src/libav_streamer.cpp:1:
/usr/include/arm-linux-gnueabihf/libavformat/avformat.h:893:21: note: declared here
     AVCodecContext *codec;
                     ^~~~~

ROS orocos_kdl installation warnings

This is the multiple warning

/home/pi/ros_catkin_ws/src/orocos_kinematics_dynamics/orocos_kdl/src/path.cpp:122:3: warning: ‘template<class> class std::auto_ptr’ is deprecated [**-Wdeprecated-declarations**]
   auto_ptr<RotationalInterpolation> orient( RotationalInterpolation::Read(is) );
   ^~~~~~~~
In file included from /usr/include/c++/6/bits/locale_conv.h:41:0,
                 from /usr/include/c++/6/locale:43,
                 from /usr/include/c++/6/iomanip:43,
                 from /home/pi/ros_catkin_ws/src/orocos_kinematics_dynamics/orocos_kdl/src/utilities/utility_io.h:28,
                 from /home/pi/ros_catkin_ws/src/orocos_kinematics_dynamics/orocos_kdl/src/utilities/error_stack.h:42,
                 from /home/pi/ros_catkin_ws/src/orocos_kinematics_dynamics/orocos_kdl/src/path.cpp:45:
/usr/include/c++/6/bits/unique_ptr.h:49:28: note: declared here
   template<typename> class auto_ptr;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.