I have two Arducopters and I am planning to create a swarm type communication between them.
Here is my setup:
1) Two similarly constructed Arducopters with APM 2.5+.
2) Both have Telemetry enabled
- I want to be able to control both of them via one Mission Planner, not two separate MP's and radios. I want to have one master copter and the other as the slave copter. Master, I control via radio and telemetry in Mission Planner (just as normal) and the other slave copter gets command like take off/ land from MP, etc and communicates with both master quad and Mission Planner (but slave copter may not display its data on MP, that is still fine). I went through the Mission Planner C# code (and there is interesting something planned for swarms, is this already functional)?
- One USB Telemetry attached to my laptop (Windows OS running Missing Planner) detects both these copters? I believe I have to change the 'component ID' in code (C++ for APM and C# MP) for this? Is there a way to get around with it via Mission Planner? One Telemetry attached to Mission Planner and if I switch on two copters (having Telemetry), Mission Planner gets mad at me, shouts at me (random behaviors) - I think it gets awesomely confused as there is no distinction. All have the same system and component IDs.
Hope this can be helpful to others in the near future. Any ideas?
Sounds great. Probably can't really contribute much useful, just a hint to maybe get you going with the detection of multiple vehicles. Try QGroundControl. I only tested it once to see the difference to Mission Planner and it seemed to be made specifically to handle several vehicles over the mavlink protocol....
There are some long term plans to have swarm capability in Mission Planner. I don't believe there's a working implementation at this point in time.
In the meantime, you could use the "Follow Me" mode, where the APM will follow a GPS position. Use CTRL+F in Mission Planner to get this function.
You will need 1 instance of Mission Planner (the master) sending out the updated GPS position and a 2nd instance of Mission Planner (the slave) in Follow Me mode reading the GPS position from the master Mission Planner.
I'm not sure how "experimental" this approach is, so you may want to be ready to take manual control just in case :)
I haven't tried this myself but there was a similar topic a couple of months ago that Chris weighed in on here:
The solution the OP came up with was this:
I was able to solve the problem in Mission Planner. First, connect to the correct APM board using the 3DR Radio telemetry and then disconnect. Then go to Hardware>Optional Hardware>3DR Radio and click Load Settings. Then change the Net ID. Give each 3DR Radio Telemetry device a different net ID.
If you hit Control-F at the main screen in Mission Planner you'll see that they have already programmed in some of the Swarm code but I haven't tried to mess around with it yet.
Hope this helps.
That's interesting, I'd like to do something similar, although my copters are not identical ;-)
So if I understand correctly, you want to connect two copters and one ground station (one 3DR radio) together as a mesh? As far as I know, the 3DR radios are only supporting point-to-point connections. Mesh might be possible with Xbee's. What are you using?
My ideal case would be to have one ground station linked to a master UAV with a long-distance connection (e.g. RFD900?). And the master UAV (serving as a router/bridge for the slaves) connected to slave(s) UAV(s) with a mesh ad-hoc network (e.g. Xbee).
Question to all: assuming we have a telemety link established, can we get a slave UAV to follow a master UAV in follow-me mode? That could be a good first step.
Andropilot is testing multiple vehicles now as well, just plug in multiple 3DR radios.
Thanks for your suggestions and nice to know people are realizing its potential.
I like the idea of follow me and I appreciate having developed it, but for what I wish to achieve I find it as a work-around but not the solution:
This listing below precisely what I am looking for as a starting point:
1) 2 Quads each with its own telemetry, 1 telemetry at GCS i.e. 1 laptop and 1 mission Planner only. I hope you get the idea of the kind of swarm of quads with one ground control.
2) The key idea is with how MavLink communicates (i.e. how Quads communicate with the Ground station). I am still in the learning mode on using MavLink.
Yes, it is true and have tested that having 1 telemetry on a laptop receives commands from multiple quad telemtry's at the same time. This is a problem on using swarms of copter because it will not work. Because currently all copters and Mission Planner is working with considering the same 'hardcoded' system ID [a parameter in MavLink protocol]. MP gets the messages from all quads and MP thinks, hey all messages are from the same quad and replies back with the message to both the quads. At this point, you would see all fields in MP are flickering. This can and will be dangerous, I just crashed both my quads (just to prove the point). Each system (like a quad) is assigned a unique System ID.
The solution I see:
Mission Planner (MP) controls the master quad directly via telemetry on a System ID we set for the quad #1.
It ignores the message from quad#2 with a different System ID.
Quad#1 can instruct quad#2 to take off autonomously and follow Quad#1 by giving it, its GPS coordinates (just like follow me).
In short, MP control Quad#1 and Quad#1 controls Quad#2, would be a simpler design right now to get the swarm running, I so believe. If Quad#1 fails, Quad#2 lands itself automatically if there is no signal from Quad#1 for x seconds.
Any comments are welcome.
Most of that seems doable if you're happy to play around with the Mission Planner or qgroundcontrol code.
The difficult part would be Quad #1 sending the commands to Quad #2 - this may require changes to how the APM sends/receives MAVLink packets. Possibly some code changes to the telemetry radio firmware to handle mesh networks more elegantly.
Or you could equip quadcopter 1 with a Raspberry Pi running Android and Droidplanner or AndroPilot and send mavlink commands this way...
Hi Shyam and all,
thanks to you for starting this thread!
Rgd 1) Ok I get you now, thanks for clarifying. That's the same I am interested in. Plugging in as many telemetry modules in your groundstation as you have flying vehicles, doesn't sound very elegant to me.
Rgd 2) So you are using Xbees? I'd be (pleasantly) surprised if the 3DR modules would be able to do that without interfering with each other. I have not read about the chipsets and protocols used though. The ISO-OSI model helps to understand the difference between physical radio links and application specific communication protocols (such as MAVlink): http://en.wikipedia.org/wiki/OSI_model
The thread quoted by stone1295 above mentions in the first reply "I was able to solve the problem in Mission Planner. First, connect to the correct APM board using the 3DR Radio telemetry and then disconnect. Then go to Hardware>Optional Hardware>3DR Radio and click Load Settings. Then change the Net ID. Give each 3DR Radio Telemetry device a different net ID"
Did you try that? Unfortunately I am travelling now so I can't try. Maybe that would solve the ID-collision issue?
Rgd Solution) I think the communication links should be separate, i.e. different nodes (quads, GCS) should not share a common communication line. Then it the first point would also be a non-issue.
For the second part: yes quad #1 (let's call it Master-UAV) should be able to either send own messages to quad #2 (let's call it Slave-UAV) or relay messages from the ground station. Agreed on the rest as well.
My concern are twofold:
A) Does APM have the horsepower to perform these extra tasks on Master-UAV? What about PX-4 / pixhawk? Bringing a RaspberryPi on board is not an option for me, simply for weight reasons. My quads are lightweight (600-800g) and I have to watch every extra gram.
B) How to do that? I'd need some guidance from the developers to get that going.
One more remark: seems like swarming has been tested on the rovers and some other people mentioned existing code.
Could we start a diydrones swarming group? Would be keen to join in...
Did some looking around regarding multi-point communication / telemetry and it seems RFD-900 are capable of this. Plus they are fully compatible to the 3DR radios. So this seems to be a good choice for the Master-UAV. Still need to find out whether this can link to multiple 3DR radios in a multipoint scenario.
Then the setup would be 3DR or RFD900 on GCS, RFD900 on Master UAV and 3DR on Slave-UAV(s). Why not using RFD900 on every node? Price and weight.
Would that work, anybody have any comments?
On a separate note: SenseFly / EPFL have been looking into swarming for fixed wings for a long time. Now they offer this as product officially: http://www.suasnews.com/2013/10/25468/sensefly-releases-swarm-techn...
@ FD: +1 for both your messages.
I saw the RFD900, 40km+ range with +31dBm power, pretty impressive I must say.
However, this is quite expensive isn't it? Also, can we set an ID to each device for RFD900 (I believe we cannot set that directly to 3DR radios). All 3DR radios in range of other 3DR radios will be flooded with each other's messages.