microsoft / AirSim

Open source simulator for autonomous vehicles built on Unreal Engine / Unity, from Microsoft AI & Research
https://microsoft.github.io/AirSim/
Other
16.28k stars 4.53k forks source link

Adding Communication Protocols and Parameters for multi-vehicle/drone swarms #2487

Closed xxEoD2242 closed 4 years ago

xxEoD2242 commented 4 years ago

Currently, I have made a fork of AirSim and have begun building out a communications protocol tracking structure that works internally with AirSim. This is to work with drone swarms and other consensus-based algorithms for testing.

Is there a scenario where that feature would be wanted or needed? I would be happy to open a PR for what I have so far and get your opinion on whether this would be valuable to the community at large.

Currently, I have built a simple communications_data structure that I modeled after the multirotorstate struct and have similar methods for getting the data. The client doesn't actually store any information and just spits out the data you want. However, I will be updating this structure as we continue our research to include randomized packet drops, weather effects, etc..

madratman commented 4 years ago

Hi @xxEoD2242 Sounds interesting, but can you give us pros/cons of using your data structure and APIs instead of airsim python APIs? I briefly skimmed the master branch of your fork just now. It seems like communications_data was comprised of lat, long, alt? How generalizable is your idea? And also please share how is it better than airsim_client.getMultirotorState(vehicle_name). Almost all of the airsim APIs take in a vehicle_name argument and allow the user the deal with drone swarms in a minimal fashion. I could imagine a few higher level python client side utility classes and example scripts which can help users deal with a subset of drones (say within a ball of radius r meters in space) in a larger drone swarm in a single command, et cetera. Are you planning something like that?

If you can exemplify your scenario a bit more concretely, and share how it's better than using raw airsim APIs, that would help. And yeah, PRs are always welcome, and feel free to make one and my guess is that it would answer the above implicitly.