aerostack2 / as2_platform_tello

BSD 3-Clause "New" or "Revised" License
0 stars 1 forks source link

[as2_platform_tello] Multi Tello Deployment #6

Closed mhl787156 closed 5 months ago

mhl787156 commented 6 months ago

Hi again!

So I'm interested in flying multiple drones around offboard(for now the Tellos - will look at aerostack2/as2_platform_tello#3 ). I'm still not totally familiar with AS2 project structure, and I was wondering how you deal with hardware specific parameters (e.g. IP address, Ports, Names) for each drone and launching them? Two questions then:

If I understand correctly, to fly a drone (e.g. a Tello), for each drone we need the whole flight stack - the as2 drone interface adapter (e.g. tello_platform.launch), a state estimator, controller and motion behaviour module. The single platform launch will need to read in hardware parameters, and the state estimator may need tuning parameters etc.

Then at a high level we just need to run one mission.py connecting to multiple DroneInterfaces with the correct names like the crazyflie swarm example mission_swarm.py.

Then with multiple real platforms, we have to launch multiple flight stacks. How do you achieve this at the moment - do you have an example? Or if you haven't how would you suggest achieving this?

You could do it manually I suppose, having a "project" per drone and launching a tmux flight stack session per drone, but that doesn't seem ideal. Or a very large tmux session! Maybe a docker container per flight stack and use docker-compose to manage parameters for you?

Thanks!

pariaspe commented 6 months ago

Hi @mhl787156 !

If I understand correctly, to fly a drone (e.g. a Tello), for each drone we need the whole flight stack - the as2 drone interface adapter (e.g. tello_platform.launch), a state estimator, controller and motion behaviour module. The single platform launch will need to read in hardware parameters, and the state estimator may need tuning parameters etc.

Then at a high level we just need to run one mission.py connecting to multiple DroneInterfaces with the correct names like the crazyflie swarm example mission_swarm.py.

That's right! We usually refer to project as a work or assignment on a topic (e.g. a swarm of crazyflies performing a frontier exploration problem aka project_cf_exploring, for short naming). We have a couple of special projects just as examples to show how Aerostack2 works (project_gazebo or project_dji_tello). We gather all launcher at the same project, even if we have multiple drones.

Take a look at the launcher of project_gazebo where we launch three drones if swarm option is set. We launch one tmux session per drone. https://github.com/aerostack2/project_gazebo/blob/4d6825252668e1f3b97ad563ea4dd95c80255c04/launch_as2.bash#L66-L76

Anyway, there isn't a bad way to do it, so feel free to choose yours :+1:

PS: Tello platform has reported some issues lately. Please ask if you struggle with it too.

mhl787156 commented 5 months ago

Just wanted to follow up here, I have figured out a nice project structure for our multi-tello work which is here

Essentially its as suggested above :)

The only change is to have a dedicated alphanumeric tmux session which shows the state of all specified drones.