clydemcqueen / tello_ros

C++ ROS2 driver for DJI Tello drones
BSD 3-Clause "New" or "Revised" License
193 stars 65 forks source link

Is the tello_ros driver compatible with the ROS 2 Humble distro? #69

Open H31T0RN3RY opened 1 year ago

H31T0RN3RY commented 1 year ago

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?

bchandaka commented 11 months ago

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.

clydemcqueen commented 10 months ago

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:

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:

I'm happy to entertain PRs!

clydemcqueen commented 10 months ago

https://github.com/clydemcqueen/tello_ros/pull/77

TSoli commented 6 months ago

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.

clydemcqueen commented 6 months ago

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