tello_ros
tello_ros copied to clipboard
Is the tello_ros driver compatible with the ROS 2 Humble distro?
I was using the driver to control DJI Tello on Ubuntu 20.04 using ROS 2 Foxy, but now I'm using Ubuntu 22.04 and ROS 2 Humble, so I would like to know if tello_ros can be used to control the drone on Humble?
I could build all the packages except for tello_description
on ros2 humble. I was still able to successfully control the drone with the tele-op launch script.
I spent a little time looking at how to port this to ROS2 Humble.
I was able to get tello_description to build by making these changes to the CMakeLists.txt file:
- change minimimum to CMake 3.14:
cmake_minimum_required(VERSION 3.14)
- find Python3:
find_package(Python3 COMPONENTS Interpreter Development)
- replace
PYTHON_EXECUTABLE
withPython3_EXECUTABLE
I got stuck on tello_gazebo. The plugin was written for Gazebo Classic, which AFAICT isn't well supported on Humble. It looks like the options are:
- build Gazebo Classic from source
- update the plugin to use Gazebo Sim
I'm happy to entertain PRs!
https://github.com/clydemcqueen/tello_ros/pull/77
Any update on this? I was using master branch since you made the changes in #77 but I still get errors as below when I build.
/home/tariq/tello_ros_ws/src/tello_ros/tello_driver/src/tello_joy_node.cpp:49:10: fatal error: rclcpp_components/register_node_macro.hpp: No such file or directory
49 | #include "rclcpp_components/register_node_macro.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/tello_joy_node.dir/build.make:76: CMakeFiles/tello_joy_node.dir/src/tello_joy_node.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:197: CMakeFiles/tello_joy_node.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
[ 40%] Building CXX object CMakeFiles/tello_joy_main.dir/src/tello_joy_node.cpp.o
/home/tariq/tello_ros_ws/src/tello_ros/tello_driver/src/tello_joy_node.cpp:49:10: fatal error: rclcpp_components/register_node_macro.hpp: No such file or directory
49 | #include "rclcpp_components/register_node_macro.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/tello_joy_main.dir/build.make:90: CMakeFiles/tello_joy_main.dir/src/tello_joy_node.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
[ 45%] Building CXX object CMakeFiles/tello_driver_node.dir/src/video_socket.cpp.o
/home/tariq/tello_ros_ws/src/tello_ros/tello_driver/src/tello_driver_node.cpp:180:10: fatal error: rclcpp_components/register_node_macro.hpp: No such file or directory
180 | #include "rclcpp_components/register_node_macro.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/tello_driver_node.dir/build.make:76: CMakeFiles/tello_driver_node.dir/src/tello_driver_node.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
[ 50%] Building CXX object CMakeFiles/tello_driver_main.dir/src/tello_driver_node.cpp.o
/home/tariq/tello_ros_ws/src/tello_ros/tello_driver/src/tello_driver_node.cpp:180:10: fatal error: rclcpp_components/register_node_macro.hpp: No such file or directory
180 | #include "rclcpp_components/register_node_macro.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/tello_driver_main.dir/build.make:90: CMakeFiles/tello_driver_main.dir/src/tello_driver_node.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
[ 54%] Linking CXX executable tello_emulator
[ 54%] Built target tello_emulator
gmake[1]: *** [CMakeFiles/Makefile2:249: CMakeFiles/tello_joy_main.dir/all] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:223: CMakeFiles/tello_driver_main.dir/all] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:145: CMakeFiles/tello_driver_node.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
--- stderr: tello_driver
/home/tariq/tello_ros_ws/src/tello_ros/tello_driver/src/tello_joy_node.cpp:49:10: fatal error: rclcpp_components/register_node_macro.hpp: No such file or directory
49 | #include "rclcpp_components/register_node_macro.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/tello_joy_node.dir/build.make:76: CMakeFiles/tello_joy_node.dir/src/tello_joy_node.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:197: CMakeFiles/tello_joy_node.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
/home/tariq/tello_ros_ws/src/tello_ros/tello_driver/src/tello_joy_node.cpp:49:10: fatal error: rclcpp_components/register_node_macro.hpp: No such file or directory
49 | #include "rclcpp_components/register_node_macro.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/tello_joy_main.dir/build.make:90: CMakeFiles/tello_joy_main.dir/src/tello_joy_node.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
/home/tariq/tello_ros_ws/src/tello_ros/tello_driver/src/tello_driver_node.cpp:180:10: fatal error: rclcpp_components/register_node_macro.hpp: No such file or directory
180 | #include "rclcpp_components/register_node_macro.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/tello_driver_node.dir/build.make:76: CMakeFiles/tello_driver_node.dir/src/tello_driver_node.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
/home/tariq/tello_ros_ws/src/tello_ros/tello_driver/src/tello_driver_node.cpp:180:10: fatal error: rclcpp_components/register_node_macro.hpp: No such file or directory
180 | #include "rclcpp_components/register_node_macro.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/tello_driver_main.dir/build.make:90: CMakeFiles/tello_driver_main.dir/src/tello_driver_node.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[1]: *** [CMakeFiles/Makefile2:249: CMakeFiles/tello_joy_main.dir/all] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:223: CMakeFiles/tello_driver_main.dir/all] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:145: CMakeFiles/tello_driver_node.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
---
Failed <<< tello_driver [16.4s, exited with code 2]
Summary: 3 packages finished [26.7s]
1 package failed: tello_driver
1 package had stderr output: tello_driver
And the gazebo library is quite broken too. I am not super experienced but if there is some way I can try to help port this I wouldn't mind trying to help. Might need a little guidance on where to start though.
I did try sudo apt install ros-humble-rclcpp-components
and it was already installed. I am on Linux Mint 21.3 which is based on Ubuntu 22.04.
I fixed the tello_driver compiler error and pushed the commit.
Porting tello_gazebo from Gazebo Classic to Gazebo Sim (aka Ignition) will take some work. I'd start here: https://community.gazebosim.org/t/migration-from-gazebo-classic-to-ignition-gazebo/805