ROS nodes are runned in docker container
Build: docker-compose build
Run: ./run.sh
The run.sh
script runs a docker container named tello-ros
with the solution.
The solution is specified by the environment variable SOLUTION_NAME
in the docker-compose.yml
file.
The exec_script.sh
script executes a specified script in the docker container. Available scripts:
manager_node
-- runsManagerNode
(the default script)
MangerNode
is responsible for switching between solution and manual control (see more here).
Available commands:
r/run
-- run solutions/stop
-- stop solutiontakeoff
-- take off the droneland
-- land the dronecall <cmd>
-- send<cmd>
to the drone (rc
command is not allowed)shutdown
-- shutdown manager node
- Connects the gamepad to your PC
- Replace
./simple_solution.launch
with./control.launch
inscripts/start.sh
file - Connect to the drone's wifi network
- Run the container with the
run.sh
script - Use the gamepad to control the drone:
- Button Menu -- take off the drone
- Button View -- landing the drone
- Left stick:
- Up/Down -- move drone up/down
- Left/Right -- rotate drone counterclockwise/clockwise
- Right stick:
- Up/Down -- move drone forward/backward
- Left/Right -- move drone left/right
- Stop the container with the
stop.sh
script (or Ctrl+C)
Go to camera_calibration directory
See this guide
- When the drone moves, it has an error in movements. If the drone moves left-right indefinitely, it will not stay in line, but will move slightly forward
- In
rclpy
,Rate.sleep()
does not work in the main thread. An extra thread must be used ([1][2]) (Need to check)
The library from clydemcqueen is now used as a driver
Not working, cannot run tello driver node
Last commit: 17 February 2022
The oldest opened pull-request: 2 December 2020
Opened issues since 2018
Disadvantages:
- Always shows the original video stream from the drone with fixed name
- Problems with sending commands to the drone. Commands are sent using ros service. Currently it is impossible to send more than two TelloAction, and the second TelloAction call blocks the client node forever
Call
(notcall_async
) on TelloAction service blocks the client node forever