ardrone-autonomy
ardrone-autonomy copied to clipboard
Indoor, sub-meter movement/sensing
(I couldn't find a better place for this type of discussion. If you can point me in that direction we can close this and I can post it there...)
I just got my first AR Drone the other day and was playing around with a few different libraries to control it. I like the idea of using distance rather than amounts of thrust to control it so it brought me to this library. Looks great!
I was testing indoors at first since there is some concern about it going crazy due to the fact that it is an early project. When I tried to move it around with .1 or .25 m directions it would almost immediately veer quickly in one direction and crash against a wall. I'll try some more, but for the few runs I did it was pretty consistant.
A few questions:
- Are sub-meter changes in location supported? Are there reasons why this wouldn't work?
- Has anyone tried using this indoors yet? I would assume the camera could still pick out features to be able to use as a reference point.
- Does the library know when it is on path vs. correcting back onto path?
- What is the best process to start troubleshooting/debugging this?
- If I add a distance sensor (like the one on the bottom) that scans the horizon via something like Arduino or Spark would that help? Are there recommendations on how to integrate this into the library?
Anyways, a bunch of questions, but just trying to figure out what my next steps are to figure out what is going on, whether this is the right library for me and if I can help improve it.
Thanks for your interest and feedback! There is no reason sub-meters changes would not work, however I observed the precision is about 1/4 meter so you won't get really precise path with this (and in general due to the way the state estimation is done). Also note that there is a variable that defines the required precision (if you lower this you risk having unstable flight with the drone constantly trying to correct): https://github.com/eschnou/ardrone-autonomy/blob/master/lib/Controller.js#L8
To debug, use the log function from the mission API and please share a data dump (or send it to me by email directly, my details on my github profile). This data dump contains all onboard measurement and estimation.
An issue indoor is usually poor lighting which confuses the bottom camera used for the horizontal tracking.
Adding sensor could help, and would require enhancing the state estimation with the added data.
where can i find all the keys ?? so that i could do... client.config() or mission.config() INDOOR.. having tried flying in a couple of settings using my ipad.. setting-> max tilt angle to 5degrees makes the drone damn stable !! Can you please help me in finding a way to do it..
I also tried changing the gain of PD control .. didn't find any numbers that helped me with better stability
I also had disappointing results when I tried the drone indoors. I think adding tags on the floor might help in low light conditions, I am going to experiment and will provide feedback on it.
I noticed that in the PID settings that the ki gain is set to zero, is there a reason for this setting? Without ki the drone will struggle to get a zero steady state error. I hope to do some work on the PID values soon, I will keep you posted.
I also noticed that 70%+ of flights the drone would take off perfectly, but then just before it goes forward it would turn just slightly and head off that direction. Does anyone perhaps know why this is happening?
Ki is set to zero to prevent the drone getting damaged.. this is my understanding..
if your drone gets stuck on a tree or hits a wall and cannot move further, from the IMU part we will not receive andy motion.. now the integral part will think thrust is insufficient to reach destination and will increase thrust.. might damage motor and drone..
Adding tags to my dining room floor helped a lot, the drone could even fly autonomously under bright to medium-ish light conditions.
I don't believe those are sufficient reasons to set ki to zero, the drone will cut-out under most of these circumstances anyways. I will say that even for small values of ki the drone has significant overshoot when doing small indoor manoeuvres. I will have to look more carefully at all the PID values before I am happy. For now I have set my kp on x and y controllers to almost half so that I can fly indoor with little or no overshoot.
There is unfortunately no universal values that will work for the PID. The behavior of the drone also depends on how you configured it with the mobile app, knowing that these values are not overwritten by the application on startup.
So, ideally these coeficients should be easily configurable, so that one can change them on a per mission/scenario basis. With respect to the Ki, I don't recall why I finally ended up setting it to zero.
I'm open to pull requests if anyone got clues on how to improve this code, or to add wiki pages if you have insight to document and share with others.
Thanks all for your interest !
I am trying to figure out the usage of EKF, PID controller for working with tag. Is there any sample code / example out ? I am new to NodeJS and ar drone.. could anyone point me to the right direction?
Thanks a lot
I try to adjust configuration value. Drone when take off it's not stability sometime it's ok but sometime it's drive to the wall and crash. it's out of my way point. I have plan to use your library for collision avoidance when drones flight simultaneous.
Hello, I'm working on a project to create an autonomous drone who will be able to autonomously rescue people stucked into avalanches and i'm working with the Ar drone to test it. I am very interested in Klaman fliter too an when finished i'll add my work about it. I launched a simple program with 3 .go commands to the drone, but sometimes it slightly turns in a simple direction (45°) and doesn't start the mission. Do you know what does this strange phenomenon ? Thanks in advance
Hi Sevvbau
Try to read coding in Controller library the answer in this. I will give some information in my research.
- AR.Drone infrastructure aren't suitable for automatic control even try to use any technique.
- This library has movement in vector such as (X: 4 , Y:4) drone will move to this coordinate in 45 degree angle to destination. Distance is square root of 32.
- Sensor in AR.Drone is extremely very very bad. Yaw degree has many error you should change any movement in Controller by remove angle value. and use one axis movement.
How ever you should to use another drone instead of AR.Drone. Your work may successful.
@coeniebeyers: Do you have any tips on how to placed tags on the ground? What is the configuration that you recommend (e.g., how many, how far apart, etc). Thank you!
Unfortunately I don't really have any tips. As long as the tag placement is not uniform and the bottom camera has view of at least 2 tags, adding more didn't make a difference. Hope this helps!