First of all, I am amazed by how good your software works! I've been searching for software to use in a project for my university and ARC is by far the most promising software i've found.
So I have a few questions that i'd hoped you guys could help me with.
For a project on my university me and a few fellow students want to use a drone to help people navigate within the school.
To do this we are using a Parrot AR 2 drone, together with (hopefully) EZ-Builder.
We have played with ARC for a bit to try and understand how the software really works. This went well until the point that we have to make the drone fly autonomously, why autonomously you might think? We want the drone to be able to fly to a given location within the school, by itself, without any user interaction whatshowever AND without crashing or being a hazard to people.
This is where we run into trouble.
We got the drone to perform a script, but for it to fly autonomously we need the drone to recognize 'danger' being people (automatic ascending) and close proximity to walls (automatic centering in hallways). Do you guys think this is possible to do with EZ-Builder, and if so, can you give us a push in the right direction?
Besides this; is it possible to combine different functionality of EZ-builder? For example, let the drone perform a script, while using the camera to make sure it doesn't hit anything, give a led signal when the destination has been reached and then fly back to the starting point?
Im very curious what you guys think about this and if somebody is willing to help us out a bit
Lets end this post with another (small) question!:
After I connect to the drone in EZ-builder, and let it take off using my keyboard and then land again, the drone won't respond to any scripts I send to it, it will only listen to my keyboard and I have to reset the connection for it to execute scripts again, is there a way to fix this, so to make the drone respond to everything I tell it to do?
Sorry for the long post!
Upgrade to ARC Pro
Your robot can be more than a simple automated machine with the power of ARC Pro!
I have a GPS Flight Recorder for the AR Drone v2 - it weighs about as much as the EZ-B v4 without the plastic shell. You can use the EZ-B v4 without a plastic shell and connect Ultrasonic Sensors to the drone's body.
There is already a control in ARC that allows that
How about the use of some sort of Wi-Fi positioning system, would that be good enough for a parrot drone to determine it's location in your opinion?
The thought of additional proximity sensors places on the indoor hull crossed my mind before, though I have no clue on how to connect these to the drone for it to be able to use data from them.
Also, due to safety, we are required to keep the indoor hull on at all times when flying with the drone, or do you mean to keep the hull on and also place the EZ-B v4 on the drone? Won't that make the drone unstable, especially when it has to fly through hallways that are 2 metres wide?
It's a good suggestion, thanks! But, is it safe to say its near impossible to prevent collisions with walls using sensors already in the drone or ARC?
In order for the drone to navigate indoors, it needs to know where it is in it's surroundings... This is too big, but it might work... Laser range finder Neato floor vacuums use this technology, however they only need to know x and y coordinates... The drone needs to know x, y and z....
I meant something like this, though I'm not sure if it's possible for the drone to work with a system of that kind.
Thanks for the good idea's. I will discuss it with my teammates, problem is that we don't really have a budget, so it will be tricky.
Seems that we will need to have some sort of additional piece of hardware for our plan to be able to succeed, the drone can do much, but not all.
I know EZ Robot (DJ) is rumoured to be working on a camera based indoor navigation system... I don't know any more details than that and I don't know if it will be able to work with flying type robots, but it sounds promising... I guess we'll have to stay tuned...
Is it possible to define labels in a script, and make the drone fly from label to label to get to the destination of the user, where the user can input his destination and the script 'calculates' which route the drone should take?
Ergo: Is it possible for me to have for example, 30 labels, and write a short script to every possible destination?
User wants to go to destination 1:
Goto (label 1); <- Starting point
Goto (label 3);
Goto (label 4);
Sleep (5000); <- waiting at the destination for a bit so the user knows
Goto (label 3); <- starting journey back to starting point
Goto (label 1); <- back at starting point
Some same script to go to destination 2, 3, 4 and so on flying from label to label and then returning by flying from label to label.
I'm asking because we need to start somewhere, and build up from that point.
So if we at the very least can get the drone to fly regular patterns, we can step by step improve the quality of the flight by maybe adding sensors or other possible solutions.
To put this in perspective... I consider myself a decent ARC programmer, however what you want to do is even probably beyond me (unless DJ rolls out his indoor nav system). There are a couple of guys on here that have the programming skills to do this, however... What I am trying to say is you have set quite a challenge for yourself indeed... and I seriously applaud your enthusiasm and determination....
Below is a simple example of how to use the "goto" statement in a script
I have done some programming before, Java and Python, but I'm not good at it (at all).
Thanks for the clarification, I didn't understand that the goto() was used for the code itself. This does enable me to re-use code in a decent-ish way, with the correct use of if/elif statements i reckon.
Anyways, I will look into it some more tomorrow and I'll update this thread with any progress, or obstacles
I'll keep trying and if i run into things or if I succeed, I'll post back here
We have proven to be unable to accomplish anything that has been discussed on this thread *tired*
To not let our heads get down, we wanted to try to use two functions of ARC to work together to maybe accomplish our task in some way.
We wanted to use the nice color identifying feature in ARC to let the drone follow a stripe of coloured something (paper or something), while following a script invoked by a user.
Is it possible to use EZ script to not let the drone fly for an X amount of seconds, but rather an X amount of metres, while paying attention to the coloured stripe on the floor?
If i need to start a new thread for this let me know, I'm curious to your answers.
If instead of just a stripe, you had some other object (glyph, shape, etc) intersecting the stripe, so the camera could see that it has approached or passed the object might be a way to do it. More programming than I want to try to wrap my head around, but would at least be something to give you positional awareness.
You make a valid point, Multiple colours could allow us to make the drone recognize when it's in front of a location.
For example a green stripe that it follows in general, and Red one in front of a location, so we can let it decide when the right location has been reached using while and if statements?
Also, is it possible to combine the camerafeed with the EZ-Script functions, I cannot find this in the Script documentation.
As a last question, is it possible to declare your own variables and use these to count (and increase the count) of objects it sees with the camera with EZ-script?
If you click the "gear" icon and go into the camera setup, you can assign a script when tracking has started ( a tracked object it detected) and a script when tracking has stopped (a tracked object is no longer detected). IN that same dialog, click on the variables tab and you will see all the variables available to your scripts related to the camera. Most are related to tracked objects.
ControlCommand can be used to turn tracking on and off or change the type of tracking you are doing.
Incrementing a variable is easy.
Initialize your variable at the beginning of the script. Every time you want to increment it, add 1 to the variable. To decrement, -1.
Very simplified Example:
Thank you VERY much for your help, I really appreciate it and you've helped me in the right direction BIG TIME!
I only have one more question relating to the use of the various scripts within the camera config window. The way I now see it, is that it is possible to assign a script or even multiple scripts, to be executed when camera tracking starts. I can also assign scripts which I wrote myself.
The eventual goal is to have a different script for each destination, in which the drone follows some commands to reach a destination, and then fly back. The script the drone will execute depends on user input. Can we make it possible to make the drone execute another script every time depending on some form of input by a user?
The camera start and stop tracking scripts can only execute a single script each, but each script can execute other scripts, so you could have camera tracking (or a script which is monitoring the various camera variables) kick off a script which requests user input, and then the response to that user input could drive further scripts.
Or, it could all be one big script with Goto and Return statements, and various IF conditions.
I seem to be unable to let keep the drone hovering over the object, in this case a stripe of green on the floor formed by green paper. It recognizes it, but then starts flying around no matter what, losing the object in the process, while I want it to keep the green stripe in the middle 3 grid-fields (so the middle one on the top row, the middle one on the second row and the middle one on the 3rd row).
After this, I want it to follow a movement script while constantely making sure the green stripe is in the gridlines.
Any clues on how to make this work?
If it's of any value, I'm using the bottom camera of the drone.