Slashdot Mirror


A Programming Language For Self-Organizing Swarms of Drones

New submitter jumpjoe writes: Drones are becoming a staple of everyday news. Drone swarms are the natural extension of the drone concept for applications such as search and rescue, mapping, and agricultural and industrial monitoring. A new programming language, compiler, and virtual machine were recently introduced to specify the behaviour of an entire swarm with a single program. This programming language, called Buzz, allows for self-organizing behaviour to accomplish complex tasks with simple program. Details on the language and examples are available here. Full disclosure: I am one of the authors of the paper.

56 comments

  1. Next step: crowd control implementation by Anonymous Coward · · Score: 1

    Mandatory in all brain implant chips after 2018. And after 2020, a brain implant chip will be mandatory.

  2. VOLTRON by Anonymous Coward · · Score: 1

    My team has developed a much superior solution, called VOLTRON. I recommend this language above any others. Please use it instead.

    Regards.

    1. Re: VOLTRON by Anonymous Coward · · Score: 0

      Ha, ha, ha! I hope i get to form the head.

      And, a 'natural extension of the concept' for whom? A bit presumptuous, don't you think? It'll be years before single drones are utilized on a larger scale. I highly doubt we'll see swarms any time soon, there are just a whole lot of logistics to be taken into consideration that have nothing to do with software. Sometimes it can be problematic to live and think only conceptually *cough*academia*cough*

    2. Re:VOLTRON by Rei · · Score: 2

      Um... read the paper, page 10.....

      Voltron [33] is a language designed for distributed mobile sensing. Voltron allows the developer to specify the logic to be executed at several locations, without having to dictate how the robots must coordinate to achieve the objectives...

      --
      "You see, Government is a system that is based on weapons." -- Timster
    3. Re:VOLTRON by Anonymous Coward · · Score: 0

      Which version? The one with the lions, or the earlier one?

    4. Re: VOLTRON by Anonymous Coward · · Score: 0

      Ok behalf of all authors and developers of the VOLTRON language, I can assure everyone that whoever posted the initial comment about VOLTRON has nothing to do with us.

      Take care,
          Luca Mottola

  3. Fizz by Anonymous Coward · · Score: 0

    So it only works with multiples of five?

  4. Re: Next step: Cyberdine systems by Anonymous Coward · · Score: 0

    We'll be back!

  5. Puzzling Paper by prefec2 · · Score: 3, Insightful

    I wonder, why you constructed that language as an external language, while for the most part it is just C like. And then you did not use flex and bison to construct scanner and parser of the language or any LL parser generator. This makes the whole language developing stuff cumbersome. You did not provide any definition in the paper or your site on the grammar used (I did not find any BNF-like grammar notation). And your semantics are vague. Furthermore, it is not very clever to allow unknown symbols. While lazy loading and other mechanisms are often seen as a convenient thing by programmers (at first), they later have to pay the price and debug like hell. Especially in flying or driving robots, you do not want to have faulty code on the machine. Therefore, you should ensure that all symbols are available with their complete signature.

    BTW: Most people would have developed this with any of the DSL development tools in existence, e.g., flex/bison+emacs (if you are from the 1990s), Xtext, MPS, Spoofax etc. and generated C code which would subsequently compiled to machine code of the specific platform. That would allow to support multiple platforms and you could use the optimization capabilities of the compiler.

    1. Re:Puzzling Paper by Anonymous Coward · · Score: 0

      Custom languages are great for genetic programming.
      A similar 20 year old project - http://www.lalena.com/ai/ant/

    2. Re:Puzzling Paper by Anonymous Coward · · Score: 0

      I agree...coming up with a whole new programming language for this or IOT or any number of emerging technologies makes as much sense as buying a new beauty product for each and every separate grooming issue which affects people in general. As I see this mindset being applied to technology more and more- we may as well have Revlon selling us new programming languages for 3x longer and stronger processing power.

    3. Re:Puzzling Paper by Anonymous Coward · · Score: 0

      I don't even know any more..

    4. Re: Puzzling Paper by Fwipp · · Score: 1

      You seriously can't tell that's a troll? I thought slashdotters were supposed to be good at the internet.

    5. Re:Puzzling Paper by Anonymous Coward · · Score: 0

      That's known as Poe's Law.

    6. Re:Puzzling Paper by ilpincy · · Score: 5, Informative

      I'm the lead researcher in this project. Thanks for your questions! I'll try to address all of them.

      Q. Why an external language?
      A. Robot swarms are a special kind of system. It's not just a collection of computers (like a network would be), but a collections of autonomous devices that occupy space and form networks with very volatile topology. Sure one could use C/C++/Java/Python to program them, but it gets fast very complex, due to the large number of interactions among robots. We believe that it's much better to have a language that natively provides you with the right kind of abstraction, and hides whatever is not necessary for swarm-level coordination.

      Q. It looks like C.
      A. It's directly inspired by JavaScript and Lua, which in turn look like C. We wanted this, so people can get productive faster and don't need to learn a whole new syntax from scratch. The entire point of our effort is to make something people would want to use.

      Q. Why not flex/bison/LL parser ecc.
      A. No specific reason. These are just development tools - we could have used Lemon, we found it easier and more fun to make our own thing. The fact that the VM is custom is a necessary feature - it weighs only 12KB, and this means that we can put it on very resource-limited robots.

      Q. There's no BNF available.
      A. I'll publish it, it's just not on the website yet. We just went public, there's lots of work to still. Good suggestion!

      Q. Semantics are vague.
      A. That means the paper was not written clearly enough. If you have more precise feedback on this, I'd be happy to hear you.

      Q. Unknown symbols are cumbersome and potentially confusing.
      A. I see your point, and I agree. I am currently working on a way to make the debugger aware of this issue, because I think that having robot-specific symbols is an interesting idea. You raise a good point, though.

      Once more, thanks for your feedback!

    7. Re:Puzzling Paper by prefec2 · · Score: 1

      Thanks for your polite answer. On the topic of the DSL you created, one question I had was, why not an internal DSL. It would be easier to develop. True internal DSLs do not support special checks as they only can use the host language syntax. But it might be easier to develop and you can add an external DSL later. If you intend to publish on a conference they most likely will ask that question in the review process. Anyway, the topic is definitely interesting.

    8. Re:Puzzling Paper by pigiron · · Score: 1

      "Q. There's no BNF available. A. I'll publish it, it's just not on the website yet. We just went public, there's lots of work to still. Good suggestion!"

      You do the BNF first dummy. You really should have just used Lisp if you want to create a domain specific language.

    9. Re:Puzzling Paper by Dashiva+Dan · · Score: 1

      "Q. There's no BNF available. A. I'll publish it, it's just not on the website yet. We just went public, there's lots of work to still. Good suggestion!"

      You do the BNF first dummy. You really should have just used Lisp if you want to create a domain specific language.

      He said (if I may paraphrase): he will publish it, but hasn't yet, he's kinda busy.
      It's a bit of an assumption that it doesn't exist?

      --
      "lt;dr" is the correct response to most of my posts.
    10. Re:Puzzling Paper by pigiron · · Score: 1

      "It's a bit of an assumption that it doesn't exist?"

      In the absence of any evidence that it does exist the default presumption should be that it does not.

    11. Re:Puzzling Paper by ilpincy · · Score: 2

      I indeed started with a BNF. I just haven't had the chance to publish it yet.

    12. Re:Puzzling Paper by ilpincy · · Score: 2

      I'm not familiar with the concept of internal and external DSL. Could you please explain what you mean?

    13. Re: Puzzling Paper by Anonymous Coward · · Score: 0

      The problem is that the loonies get loonier. So your troll detection skills, once strong, asymptotically approach uselessness with each new over-the-top post...

    14. Re:Puzzling Paper by prefec2 · · Score: 1

      DSL = domain-specific language. There is no sharp differentiation between general purpose languages (GPL) and DSLs. However, a DSL is a language with structures which cover specific domain concepts, e..g, communication. The two terms span a continuum where GPL is one extreme and DSL is the other. For example, SQL is a DSL for databases, Postscript for printing, HTML for webpages, while C is more or less a GPL.

      Now an external DSL is a DSL which has its own grammer, interpreter or compiler. While an internal DSL is, for example a library with a specific set of operations/methods/functions which have a coherent meaning. For example, OpenGL with its C library interface is such an internal DSL, or XML frameworks. A classic are file operations. They can also be described as a language with rules for open, close, read, write, and seek. The language here can be defined as a regular expression, e.g., (open, (read|write|seek)*, close) or even
      (open[mode=read], (seek|read)*, close) || (open[mode=write], (seek|write)*, close).

      Another typical case of internal DSL are, for instance, entity classes for the Java persistence API which are in fact Java classes with specific annotations.

      Your language is somewhat in the middle between DSL and GPL.

      Hope that helps. You might want to read "When and how to develop DSLs" by Mernik.

    15. Re:Puzzling Paper by ilpincy · · Score: 2

      I never heard the phrase "internal DSL" to simply mean "software interface". Anyway, I posted an answer to your question here.

    16. Re:Puzzling Paper by Dashiva+Dan · · Score: 1

      "It's a bit of an assumption that it doesn't exist?"

      In the absence of any evidence that it does exist the default presumption should be that it does not.

      Well, when you're talking about intellectual property like that, I think there's quite a lot of stuff out there that you have no evidence of.... and if you're default presumption is that it doesn't exist, I feel kinda sorry for you and the road you're following through life, but to each their own, right? Good luck with that :)
      p.s. just because evidence isn't provided (and not requested) doesn't mean there is no evidence, either.

      --
      "lt;dr" is the correct response to most of my posts.
    17. Re:Puzzling Paper by jumpjoe · · Score: 1

      The BNF is available here

  6. I don't get it. At all. by Rei · · Score: 3, Interesting

    Why did you create a brand new programming language rather than just a library? I looked at the examples and I don't see any functionality in there that can't just as easily be accomplished with current programming languages and a simple library.

    --
    "You see, Government is a system that is based on weapons." -- Timster
    1. Re:I don't get it. At all. by Anonymous Coward · · Score: 0

      Because new languages and "buzz" words get funding, duh.

    2. Re:I don't get it. At all. by Anonymous Coward · · Score: 0

      Heh, this should be at least a two semester undergraduate cs/cpe/ee course :P

    3. Re:I don't get it. At all. by ilpincy · · Score: 5, Informative

      I'm the lead researcher on this project. Thanks for your question!

      We gave your concern quite a bit of thought.

      In brief, we found no language with the features we wanted that would fit <16KB or <32KB. We wanted a dynamic language with closures, with a VM powerful enough to work in a networked environment with highly volatile topology, and that would be easy to modify to accomodate features such as swarm management and virtual stigmergy. We considered Python and Lua at first, but Python is just too complex to fit the requirements (I studied TinyPy for a week, and it's too limited) and Lua VM makes it hard to fit networking the way we wanted it.

      In the end, we thought that a dedicated language with the right features might be a good choice. After all, Python does nothing C++ doesn't do - but the level of abstraction that Python offers makes developers way more productive. With Buzz, we hope to offer a tool that makes people more productive when the problem is coordinating hundreds of robots. There's obviously lots of work to do towards this goal, and the current implementation of Buzz is just a step in that direction.

  7. I know ! I know, by Archangel+Michael · · Score: 4, Funny

    We should create a whole OS that controls Drone Swarms ....

    We'll call it ...

    BeeOS!

    --
    Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
    1. Re:I know ! I know, by halivar · · Score: 4, Funny

      It would be pretty hard to debug, would it not?

    2. Re:I know ! I know, by Virtucon · · Score: 1

      Buzzkill ...

      --
      Harrison's Postulate - "For every action there is an equal and opposite criticism"
    3. Re:I know ! I know, by Anonymous Coward · · Score: 0

      BeeOS, the threaded experience to the power of [Swarm]!

    4. Re:I know ! I know, by Anonymous Coward · · Score: 0

      Not if you smoke it first.

  8. Why a new language? by Anonymous Coward · · Score: 0

    What did they need to come up with new language to program swarms for? Why not create a new extension/library for one of the popular languages (C++/Java/C#/Python)? Maybe it's time we stopped wasting our creative time learning new languages and focus instead on the issues at hand, e.g., building on existing foundations and tools.

  9. Skynet by Anonymous Coward · · Score: 1

    Will this make a drone pack defend itself against firemen trying to shoot them down?

    1. Re:Skynet by PPH · · Score: 1

      No. But it will allow law enforcement to spoof a drone or group of drones and send out instructions to fly into the side of a mountain.

      --
      Have gnu, will travel.
    2. Re:Skynet by Anonymous Coward · · Score: 0

      I hope so. Those damn firemen need to be taken down a peg.

      You know, they're the reason dalmations are so expensive.

  10. Prey by CharlesPatterson · · Score: 1

    Didn't you read Michael Crichton's Prey? https://en.wikipedia.org/wiki/...

    1. Re:Prey by joelovestoastoo · · Score: 1

      There's also Neal Stephenson's seveneves https://en.wikipedia.org/wiki/... which has some similar tech and is a fun read. Most of the drone/swarm programming in it is handled with Python, though (at least initially: not sure that's the case by the end of the book).

  11. New terror tactic: by Anonymous Coward · · Score: 0

    1. Start a wildfire
    2. Launch an entire fleet of drones
    3. Using the 'Buzz' language, ensure that no firefighting aircraft can enter the area
    4. Burn the infidels country to the ground! ALLAHU ACKBAR!!!

    1. Re:New terror tactic: by Anonymous Coward · · Score: 0

      1. Enter a caliphate
      2. Launch an entire fleet of drones
      3. Using the 'Buzz' language, ensure that no jihadi survives (you know with missiles and freakin' lasers)
      4. Cause Merica' !!!

  12. A Language For Self-Organizing Swarms of Drones. by limaCAT76 · · Score: 1

    I thought that English and other human languages were used in online news sites comment sections by swarm of drones.

  13. Why not a library? by scamper_22 · · Score: 1

    I'll echo a few other comments here.
    Why in the world is this a new language?

    I read the paper and it looks like it has some nice utilities (neighbors, swarm classes...) that could be captured in a library in whatever language of your choose (C, C++, Go...)

    1. Re:Why not a library? by ilpincy · · Score: 2

      I replied to this question here. Thanks for your feedback!

  14. Been there by CockMonster · · Score: 1

    I did something like this for my thesis, but even I knew deep down at the time that it was all bollocks. So is this.

  15. Proprietary language by Anonymous Coward · · Score: 0

    In my career I've seen lots of proprietary languages developed for a specific device, non of them good. They are usually created by an electrical engineer to give the more expressability than an assembler. Such people are usually ignorant of decent APIs. A Galil motor controller and its language are a good bad example. Matlab might qualify as another.The automation industry is full of this garbage.

  16. If you're going to create a swarm language by recharged95 · · Score: 1

    ROS basically is that language if [you think] the swarm architectural choice is a pub-sub communication strategy. Otherwise, a communication stack that leverage true mesh or P2P (ROS tries, but no go) communication could be a good foundation of a new language. Data types? Maybe "time based" types?

    Otherwise, voting logic, to hierarchical actions, etc.. can be done in a algo library.

    I would like to see a swarm/drone/OS/language that addresses no-calibration, as most swarm projects need an extensive set-up (environment model, characterisations, etc...) to barely run simple group motions or tasks.

  17. Like teaching JAVA to teenagers? by Fthis4aGamefSoldiers · · Score: 1

    nt

  18. 3 Laws by Anonymous Coward · · Score: 0

    All languages for the Machine Age 2 (including drones) should automaticaly force the 3 laws.

    1. A robot may not injure a human being or, through inaction, allow a human being to come to harm.
    2. A robot must obey the orders given it by human beings, except where such orders would conflict with the First Law.
    3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Laws.

  19. Disappointed by lhowaf · · Score: 1

    I was hoping to find the answer to the question, "Would a swarm of pistol-packing drones beat a bear with a machine gun riding a shark?"