Closed mhl787156 closed 5 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.
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.
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!