1 Star 8 Fork 4

蓝蓝蓝笨笨 / tello_fly

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
BSD-3-Clause

TELLO & rotors_simulator的仿真(ACURO目标跟随)

前言

功能包说明

名称 功能 所含文件
common 包含公用的头文件
包含公用的消息(msg)
include
msgs
drone_control 用于rotors_simulator中仿真模型的控制
drone_ground_station 显示rotors_simulator仿真时的一些状态
drone_simulator 用于rotors_simulator中仿真模型的控制
tello_contorl TELLO的控制
readme_image 一些效果图片,某些会

1. 概述

1.1 TELLO节点说明

本 ROS 包建立在非官方的TelloPy之上。此时使用TelloPy库是因为它提供了比官方[Tello SDK](https://dl-cdn.ryzerobotics.com/downloads/Tello/Tello SDK 2.0 User Guide.pdf)或任何其他非官方库更多的功能。tellopy库的ROS封装使用Tello_driver 这个ROS包。这个 ROS 包的开发追求不修改 TelloPy 库,而是以封装的方式对 ros_driver 包进行任何修改或添加。这可以防止在更新 TelloPy 库时破坏功能。该包的详细介绍可在tello_driver的ROS页面

为了更好的适应控制,在原节点tello_driver_node基础上修改了控制部分的指令,自封装的节点名称为:

tello_cmd_node

修改内容如下:

tello_driver_node tello_cmd_node
self.set_pitch self.backward
self.forward
self.set_roll self.right
self.left
self.set_throttle self.down
self.up

改动原因:

  • throttle给0时可能真的变为0(降落至tello可以飞行的最低点,此时只能响应land指令)
  • 原来的三个函数需要输入小数(-1~1),修改后输入(-100,100),只下发整数某些时刻可以避免有符号数溢出的bug

1.2 算法和框架说明

本ROS功能包的算法、框架是基于promethues项目进行移植,由于TELLO与PX4/pixhawk有较大差别(体现在控制逻辑、数据回传),以及订阅的相机话题来源于TELLO的相机数据,而promethues的相机话题来源与机载计算机。因此主要修改节点为

a. sender(发送),estimator(位置、速度、姿态估计)

b. terminal(交互终端)

目前移植实现如下功能(按照launch文件说明):

序号 名称 功能
1 tello_estimator 测试tello是否能够连接,查看相机是否正常
2 tello_sender 利用terminal交互节点,控制tello飞行(非指点飞行)
3 aruco_det_single
web_cam0
利用usb相机测试aruco码的识别,本人使用奥比中光pro测试
4 tello_track_test tello的二维码跟踪测试

2.安装与使用

前置条件:

  • 操作系统:ubuntu 18.04.5 LTS
  • ROS:melodic版本
  • 计算机具备wifi功能

step1. 安装tellopy包(python)

详细安装过程:https://github.com/hanyazou/TelloPy

建议源代码安装

$ git clone https://github.com/hanyazou/TelloPy 
$ cd TelloPy
$ python setup.py bdist_wheel
$ pip install dist/tellopy-*.dev*.whl --upgrade

测试起飞:

这个例子让 Tello 起飞。Tello 将在几秒钟后自动着陆。

$ python -m tellopy.examples.simple_takeoff

测试视频显示:

$ pip install av
$ pip install image
$ python -m tellopy.examples.video_effect

【注意1】原安装过程中需要安装opencv,但ROS通常存在opencv版本,若opencv不可用,请按照ros的opencv安装方式进行配置

【注意2】在 Ubuntu 16.04 上安装 PyAV 需要至少版本 3 的 ffmpeg:

$ sudo add-apt-repository ppa:jonathonf/ffmpeg-3`
`$ sudo apt update && sudo apt install ffmpeg

【注意3】pyav最新版可能无法安装,本人使用的是6.0,0

STEP2. 安装tello_driver 并加入修改节点

【注意1】该ROS包只有ros kinetic的二进制文件,而且需要加入修改节点,所以需要编译安装

$ cd {你的工作空间名}/src
$ git clone --recursive https://github.com/appie-17/tello_driver.git
$ cd ..
$ catkin_make
$ source devel/setup.bash

如果不想每次运行都运行source,可以修改.bashrc,在最后一行

source /home/{你的用户名}/{你的工作空间名}/devel/setup.bash

测试:

  • Turn on Tello drone
  • Connect to drone's WiFi access point (TELLO_XXXXXX)
  • $ roslaunch tello_driver tello_node.launch

此时可以使用rostopic pub向/tello/takeoff和/tello/land发送指令(按tab补全即可),TELLO可以起飞或者降落

将tello_cmd_node.py放到与tello_driver_node所在的文件夹即可

/homee/{你的用户名}/{你的工作空间名}/src/tello_driver/nodes

STEP3 本功能包的安装(uav_drone)

修改.bashrc,在最后一行加入

source /{你的用户名}/{你的工作空间名}/tello_fly/devel/setup.bash

下载项目:

git clone https://gitee.com/lanlanlanbenben/tello_fly.git

进入项目目录:

cd tello_fly

进行编译:

./compile_all.sh

运行各launch即可

3.功能说明

目前只录制了Aruco跟随的视频,所以先说明该功能

3.1 Aruco跟随

【注意】无论是什么功能,都需要下面这两步(除了使用aruco_det_single,web_cam0两个launch文件 )

  • Turn on Tello drone
  • Connect to drone's WiFi access point (TELLO_XXXXXX)

【准备物体】:

  • 8cm的印有Aruco码(图的大小为8cm)的纸板,所用的Aruco码如下图

Image text

启动功能节点:

roslaunch tello_control tello_track_test.launch 

此时会额外弹出一个新的终端窗口

交互终端

首先输入0,然后先输入1命令tello起飞,在输入6进入Aruco跟随模式

启动几个终端:

  • 终端1:启动rqt,rqt中打开image_view和topic管理器
  • 终端2:执行下面的指令,读取视觉检测aruco码的位置与姿态信息
rostopic echo /tello/object_detection/aruco_det

动态效果图(如果不能显示,可查看 readme_image文件夹,后续增加功能后使用子文件夹进行细分)

img

版权申明

  • 本项目受 BSD 3-Clause 协议保护。点击 LICENSE了解更多
  • 本项目仅限个人使用,请勿用于商业用途。
  • 如利用本项目进行营利活动,蓝蓝蓝笨笨将追究侵权行为。

致敬

promethues开源项目组

amov-lab阿木实验室

Tello_driverROS功能包开发者

BSD 3-Clause License Copyright (c) 2021, 蓝蓝蓝笨笨 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

简介

使用TELLO配合ROS做一些有意思的事情 展开 收起
C++ 等 4 种语言
BSD-3-Clause
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/lanlanlanbenben/tello_fly.git
git@gitee.com:lanlanlanbenben/tello_fly.git
lanlanlanbenben
tello_fly
tello_fly
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891