Coder Social home page Coder Social logo

tello_ros's People

Contributors

clydemcqueen avatar ptrmu avatar wesleygas 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

tello_ros's Issues

Renaming frame

Greeting, I have been following ur codes for awhile. may I know are there any methods to rename the video streaming window application? I am currently running multiple drones and would to rename from "frame" to either "drone1" or 2. Thank you.

How to control a swarm of Tellos

Hi, I came across this video and I was wondering how you are controlling a swarm of drones. Are you using multiple network connections? i see there's an open issue.

P.S. I'm working on porting your work to ROS1.

No streaming in Rviz when no marker is on the frame?

if I make the drone yaw I can see that the streaming on rviz stops once there are no markers visible in the frame. I tested adding more markers, and indeed if I place enough of them around the drone, the streaming continues.

Is there a reason for this?

Reproducible with:
ros2 launch tello_gazebo vlam_launch.py
And another terminal running the command :
ros2 service call /tello_action tello_msgs/TelloAction "{cmd: 'takeoff'}" ros2 service call /tello_action tello_msgs/TelloAction "{cmd: 'rc 0 0 0 0.5'}"

Add Clang warnings

Add this to CMakeLists.txt:

if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif ()

And then fix the warnings.

Detect ArUco

Detect ArUco messages and publish poses & corners for use in RCARS.

This breaks the design pattern for a ROS driver, but there are 2 reasons to do this:

  1. downstream nodes won't need to subscribe to image topics, which will reduce network traffic. This will be important when we have 4+ drones in the air.
  2. this makes it easier to build a driver simulation.

RC control on the drone appears to be mixed up

When sending rc commands to the drone inside simulation it follows the format: forward/back, left/right, up/down, yaw.
This conflicts with the actual rc command which is left/right, forward/back, up/down, yaw (which is what is described in the documentation).

[RenderEngine.cc:89] Unable to create X window. Rendering will be disabled

Running this package in a docker container
Built the dockerfile and ran the container using

docker run -td --privileged --net=host --ipc=host
--name="tello12"
--gpus=all
-e "DISPLAY=$DISPLAY"
-e "QT_X11_NO_MITSHM=1"
-v "/tmp/.X11-unix:/tmp/.X11-unix:rw"
-e "XAUTHORITY=$XAUTH"
-e ROS_IP=127.0.0.1
-e NVIDIA_DRIVER_CAPABILITIES=all
--cap-add=SYS_PTRACE
tello1 bash

However, running the container normally (docker run -it tello1 bash) also produces the same result,

[gazebo-1] [Msg] Waiting for master.
[gazebo-1] [Msg] Connected to gazebo master @ http://127.0.0.1:11345
[gazebo-1] [Msg] Publicized address: 172.17.0.2
[gazebo-1] [Wrn] [GuiIface.cc:298] Couldn't locate specified .ini. Creating file at "/root/.gazebo/gui.ini"
[gazebo-1] [Err] [RenderEngine.cc:749] Can't open display:
[gazebo-1] [Wrn] [RenderEngine.cc:89] Unable to create X window. Rendering will be disabled
[gazebo-1] [Wrn] [RenderEngine.cc:292] Cannot initialize render engine since render path type is NONE. Ignore this warning ifrendering has been turned off on purpose.
[gazebo-1] [Wrn] [GuiIface.cc:120] could not connect to display
[gazebo-1] [Msg] Could not load the Qt platform plugin "xcb" in "" even though it was found.
[gazebo-1] [Err] [GuiIface.cc:124] This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
[gazebo-1]
[gazebo-1] Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Port to Eloquent

ROS2 Eloquent is expected 11/22, betas are out now. Create a dashing branch, then port to master to Eloquent.

Install ROS 2 to tello

Hello, I am still in Tello and ROS 2. I want to buy 2 tellos and build swarm controller. Before I buy it, I have a question, how to install ROS 2 in tello and use this repo as a driver? Will I buy Raspberry Phi and attach it on tello? Thank you

Error while doung Colcon Build: Permission denied

Hi, I am trying to colcon build using Ubuntu 22.04 and ROS2 Humble. I got error for the /tello_description/src/replace.py: Permission denied.

I have tried adding sudo to the colcon build but still the same

Cite your plugin in scientific paper

Hello,
Thank you for your open-source plugin, which was quite useful to simulate and control Tello through ROS2.
I want to acknowledge your work by citing you in my scientific article. Do you have any reference that I can cite?
Have a good day

error: gazebo_ros/node.hpp: No such file or directory

Hello sir, I'm having this error when i compile with colcon build, i can't solve the problem. Should I have to modify my cmake ?

cmake in Tello_gazebo:

cmake_minimum_required(VERSION 3.5)
project(tello_gazebo)

#=============

Setup

#=============

Default to C99

if (NOT CMAKE_C_STANDARD)
set(CMAKE_C_STANDARD 99)
endif ()

Default to C++14

if (NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
endif ()

Emulate colcon

if ($ENV{CLION_IDE})
message("Running inside CLion")
set(tello_msgs_DIR "${PROJECT_SOURCE_DIR}/../../../install/tello_msgs/share/tello_msgs/cmake")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRUN_INSIDE_CLION")
endif ()

Find packages

find_package(ament_cmake REQUIRED)
find_package(gazebo REQUIRED) # Note uppercase variables in /usr/lib/x86_64-linux-gnu/cmake/gazebo/gazebo-config.cmake
find_package(gazebo_dev REQUIRED)
find_package(gazebo_ros REQUIRED)
find_package(geometry_msgs REQUIRED)
find_package(rclcpp REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(std_msgs REQUIRED)
find_package(tello_msgs REQUIRED)

Local includes

include_directories(
include
${gazebo_ros_INCLUDE_DIRS}
${geometry_msgs_INCLUDE_DIRS}
${std_msgs_INCLUDE_DIRS}
${tello_msgs_INCLUDE_DIRS}
)

#=============

Tello Gazebo plugin

#=============

add_library(
TelloPlugin SHARED
src/tello_plugin.cpp
)

ament_target_dependencies(
TelloPlugin
gazebo_dev
gazebo_ros
geometry_msgs
rclcpp
std_msgs
tello_msgs
)

#=============

Install

#=============

Install targets

install(
TARGETS TelloPlugin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)

Install world and launch files

install(
DIRECTORY models worlds launch
DESTINATION share/${PROJECT_NAME}
)

Install Python scripts

install(
PROGRAMS src/inject_entity.py
DESTINATION lib/${PROJECT_NAME}
)

#=============

Run ament macros

#=============

ament_package()

Docker image

Thank you so much for this great project!

I just wanted to thank you and share a project that I made this weekend: tello_ros_docker. It creates a docker image to run tello_ros. Right now, it's not completely setup to work with a real Tello drone (I don't have one yet, but should be getting one this week). So, for the moment, it defaults to running the tello_gazebo simple_launch.

Anyhow, it should be a useful development environment for others or even just a quick way to get tello_ros running. If you're interested in taking a look, I'd welcome any feedback.

Support header.frame_id as parameter

Right now frame_id is hardcoded:
header.frame_id = "camera_frame"

It probably makes sense to pass TelloDriverContext into the sockets, since we may want to add more parameters later.

Caught exception in launch (see debug for traceback): executable 'vmap_node' not found on the libexec directory '/home/user/tello_ros_ws/install/fiducial_vlam/lib/fiducial_vlam'

Hi, thank you very much for sharing such a great project ~

It is very amazing ~

So far I tried tello_gazebo and it works very well ~

However, when I tried the integration of fiducial_vlam, it showed the following error:

user@ubuntu:~/tello_ros_ws$ ros2 launch tello_gazebo vlam_launch.py
[INFO] [launch]: All log files can be found below /home/user/.ros/log/2020-11-01-01-37-50-957820-ubuntu-9691
[INFO] [launch]: Default logging verbosity is set to INFO
[ERROR] [launch]: Caught exception in launch (see debug for traceback): executable 'vmap_node' not found on the libexec directory '/home/user/tello_ros_ws/install/fiducial_vlam/lib/fiducial_vlam' 
Task exception was never retrieved
future: <Task finished coro=<LaunchService._process_one_event() done, defined at /opt/ros/eloquent/lib/python3.6/site-packages/launch/launch_service.py:293> exception=RuntimeError('Signal event received before subprocess transport available.',)>
Traceback (most recent call last):
  File "/opt/ros/eloquent/lib/python3.6/site-packages/launch/launch_service.py", line 295, in _process_one_event
    await self.__process_event(next_event)
  File "/opt/ros/eloquent/lib/python3.6/site-packages/launch/launch_service.py", line 315, in __process_event
    visit_all_entities_and_collect_futures(entity, self.__context))
  File "/opt/ros/eloquent/lib/python3.6/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 38, in visit_all_entities_and_collect_futures
    sub_entities = entity.visit(context)
  File "/opt/ros/eloquent/lib/python3.6/site-packages/launch/action.py", line 108, in visit
    return self.execute(context)
  File "/opt/ros/eloquent/lib/python3.6/site-packages/launch/actions/opaque_function.py", line 75, in execute
    return self.__function(context, *self.__args, **self.__kwargs)
  File "/opt/ros/eloquent/lib/python3.6/site-packages/launch/actions/execute_process.py", line 383, in __on_signal_process_event
    raise RuntimeError('Signal event received before subprocess transport available.')
RuntimeError: Signal event received before subprocess transport available.
[INFO] [gazebo-1]: process started with pid [9707]
[gazebo-1] [Msg] Waiting for master.
[gazebo-1] [Msg] Connected to gazebo master @ http://127.0.0.1:11345
[gazebo-1] [Msg] Publicized address: 192.168.142.135
[gazebo-1] Gazebo multi-robot simulator, version 9.14.0
[gazebo-1] Copyright (C) 2012 Open Source Robotics Foundation.
[gazebo-1] Released under the Apache 2 License.
[gazebo-1] http://gazebosim.org
[gazebo-1] 
[gazebo-1] Gazebo multi-robot simulator, version 9.14.0
[gazebo-1] Copyright (C) 2012 Open Source Robotics Foundation.
[gazebo-1] Released under the Apache 2 License.
[gazebo-1] http://gazebosim.org
[gazebo-1] 
[gazebo-1] [Wrn] [ModelDatabase.cc:340] Getting models from[http://models.gazebosim.org/]. This may take a few seconds.
[ERROR] [gazebo-1]: process[gazebo-1] failed to terminate '5' seconds after receiving 'SIGINT', escalating to 'SIGTERM'
[INFO] [gazebo-1]: sending signal 'SIGTERM' to process[gazebo-1]
[ERROR] [gazebo-1]: process has died [pid 9707, exit code -15, cmd 'gazebo --verbose -s libgazebo_ros_init.so -s libgazebo_ros_factory.so /home/user/tello_ros_ws/install/tello_gazebo/share/tello_gazebo/worlds/fiducial.world'].
[gazebo-1] 
[gazebo-1] 
user@ubuntu:~/tello_ros_ws$ 

Can I know what should I do in order to solve this ?

Thank you very much ..

Appreciate a lot ~

Gazebo model not working

Running with ROS2Eloquent and Gazebo 9

Errors:
I got this line : "Unable to parse model.config for model : bin_4_dropping_task" together will other errors to import models from the online database

VIO

Hi @clydemcqueen,
Tello IMU data aren't standard raw IMU measurments. Is it possible to do VIO just using monocular video + Tello IMU messages?
Regards,

tello_ros gazebo errors

I am running ros2 Dashing and I get this error whenever I try to simulate the drone in gazebo. I am able to control the actual tello drone through teleop, this problem arises only when i run the gazebo simulation. I followed every step in the readme file but there is always the possibility I might have missed something

alessandro@alessandro-K501UX:~/projects/ros_tello$ ros2 launch tello_gazebo simple_launch.py
[INFO] [launch]: All log files can be found below /home/alessandro/.ros/log/2019-12-09-18-44-13-280853-alessandro-K501UX-10266
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [gazebo-1]: process started with pid [10276]
[INFO] [inject_entity.py-2]: process started with pid [10277]
[ERROR] [inject_entity.py-2]: process has died [pid 10277, exit code 1, cmd '/home/alessandro/projects/ros_tello/install/tello_gazebo/lib/tello_gazebo/inject_entity.py /home/alessandro/projects/ros_tello/install/tello_description/share/tello_description/urdf/tello_1.urdf 0 0 1 0'].
[INFO] [robot_state_publisher-3]: process started with pid [10278]
[INFO] [joy_node-4]: process started with pid [10279]
[INFO] [tello_joy-5]: process started with pid [10280]
[ERROR] [launch]: Caught exception in launch (see debug for traceback): I/O operation on closed file
[INFO] [tello_joy-5]: sending signal 'SIGINT' to process[tello_joy-5]
[INFO] [joy_node-4]: sending signal 'SIGINT' to process[joy_node-4]
[INFO] [robot_state_publisher-3]: sending signal 'SIGINT' to process[robot_state_publisher-3]
[INFO] [gazebo-1]: sending signal 'SIGINT' to process[gazebo-1]
[robot_state_publisher-3] Initialize urdf model from file: /home/alessandro/projects/ros_tello/install/tello_description/share/tello_description/urdf/tello_1.urdf
[robot_state_publisher-3] Parsing robot urdf xml string.
[robot_state_publisher-3] The root link base_link_1 has an inertia specified in the URDF, but KDL does not support a root link with an inertia.  As a workaround, you can add an extra dummy link to your URDF.
[robot_state_publisher-3] Link camera_link_1 had 0 children
[robot_state_publisher-3] got segment base_link_1
[robot_state_publisher-3] got segment camera_link_1
[robot_state_publisher-3] Adding fixed segment from base_link_1 to camera_link_1
[gazebo-1] Gazebo multi-robot simulator, version 9.0.0
[gazebo-1] Copyright (C) 2012 Open Source Robotics Foundation.
[gazebo-1] Released under the Apache 2 License.
[gazebo-1] http://gazebosim.org
[gazebo-1]
[gazebo-1] Gazebo multi-robot simulator, version 9.0.0
[gazebo-1] Copyright (C) 2012 Open Source Robotics Foundation.
[gazebo-1] Released under the Apache 2 License.
[gazebo-1] http://gazebosim.org
[gazebo-1]
[tello_joy-5] [INFO] [rclcpp]: signal_handler(signal_value=2)
[INFO] [tello_joy-5]: process has finished cleanly [pid 10280]
[robot_state_publisher-3] [INFO] [rclcpp]: signal_handler(signal_value=2)
[INFO] [robot_state_publisher-3]: process has finished cleanly [pid 10278]
[joy_node-4] terminate called after throwing an instance of 'rclcpp::exceptions::RCLError'
[joy_node-4]   what():  Failed to create interrupt guard condition in Executor constructor: the given context is not valid, either rcl_init() was not called or rcl_shutdown() was called., at /tmp/binarydeb/ros-dashing-rcl-0.7.7/src/rcl/guard_condition.c:69
[gazebo-1] [Msg] Waiting for master.
[gazebo-1] [Msg] Connected to gazebo master @ http://127.0.0.1:11345
[gazebo-1] [Msg] Publicized address: 192.168.1.37
[ERROR] [joy_node-4]: process has died [pid 10279, exit code -6, cmd '/opt/ros/dashing/lib/joy/joy_node __ns:=/drone1'].
[INFO] [gazebo-1]: process has finished cleanly [pid 10276]
[gazebo-1]
[gazebo-1]
alessandro@alessandro-K501UX:

I will provide any further information if needed

Update build instructions for Eloquent and Dashing

Build instructions for Dashing and Eloquent (README.md, Dockerfile) should be updated.

E.g., in docker/eloquent/Dockerfile

RUN git clone https://github.com/clydemcqueen/tello_ros.git
RUN git clone https://github.com/ptrmu/ros2_shared.git
RUN git clone https://github.com/ptrmu/fiducial_vlam.git

should be

RUN git clone https://github.com/clydemcqueen/tello_ros.git -b eloquent
RUN git clone https://github.com/ptrmu/ros2_shared.git -b eloquent
RUN git clone https://github.com/ptrmu/fiducial_vlam.git -b eloquent

tello_ros to ros 1

wonderfull work, i buy a tello drone, but i have intalled ros 1 with catkin_make , how i can run the driver on ros1 , please help me

can i get the camera image from gazebo?

Hi, I am trying to make a simulation for personal project using the tello model you made. however i can't find a way to get the image sent from the tello in gazebo. Is it possible to get it? (I am just starting of with using ros2...so I am having a hard time)

ModuleNotFoundError: No module named 'transformations' (gazebo spawn drone issue) [solved]

i faced issue at inject_entity.py (/root/tello_ws/install/tello_gazebo/lib/tello_gazebo/inject_entity.py)
and i can't solve use "pip install" command

ModuleNotFoundError: No module named 'transformations'

and i would like to share the solution for you who try to spawn tello_urdf in gazebo

solution1)
add below method in inject_entity.py

def quaternion_from_euler(roll, pitch, yaw):
    """
    Converts euler roll, pitch, yaw to quaternion (w in last place)
    quat = [x, y, z, w]
    Bellow should be replaced when porting for ROS 2 Python tf_conversions is done.
    """
    cy = math.cos(yaw * 0.5)
    sy = math.sin(yaw * 0.5)
    cp = math.cos(pitch * 0.5)
    sp = math.sin(pitch * 0.5)
    cr = math.cos(roll * 0.5)
    sr = math.sin(roll * 0.5)

    q = [0] * 4
    q[0] = cy * cp * cr + sy * sp * sr
    q[1] = cy * cp * sr - sy * sp * cr
    q[2] = sy * cp * sr + cy * sp * cr
    q[3] = sy * cp * cr - cy * sp * sr

    return q

solution2)
include tranformation.py file in the same path as injcet_entity.py
https://github.com/ros/geometry/blob/noetic-devel/tf/src/tf/transformations.py#L1100

complied problem

When I complied the code, “fatal error: asio.hpp: No such file or directory” is encounter. How can I deal with it?
Screenshot from 2019-03-30 11-09-26

Driver won't connect to Gazebo simulated drone

When launching the sample Gazebo sim with ros2 launch tello_gazebo simple_launch.py and the driver with ros2 launch tello_driver teleop_launch.py then running ros2 service call /tello_action tello_msgs/TelloAction "{cmd: 'takeoff'}" to arm the drone, the response from the driver is always [tello_driver]: Not connected, dropping 'takeoff'
From the code I can see this is the warning that occurs when the state socket or video socket are not receiving data. When no command is sent, a [tello_driver]: Command timed out error is printed at regular intervals, which indicates no connection.
Any insight as to what might be wrong?
I am running this in Docker if that is relevant

Support multiple network interfaces (host IP addresses)

tello_driver always binds to 0.0.0.0, which will listen to every network interface. There should be an option to bind to a particular IP address, so that users with multiple wifi network cards can control multiple drones.

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.