Hi,

I am currently working on simulations of UAVs (for now I assume those UAVs are all quadrotors).

I am using hector_quadrotor so I have basically working quadrotor which is listening on cmd_vel topic and receives geometry_msgs/Twist message. I can control quadrotor just fine publishing those messages. But now I wan't to fly it autonomously.

I already have some global planner implemented from other project so I have trajectory with waypoints. What I wan't now is to give the waypoint to UAV and from there generate geometry_msgs/Twist (use some 3D local planner for motion) for UAV to move in simulation.

Is there already some local planner for this or should I write my own? And if there is no local planner, what should I learn to be able to write it? I am currently studying on University, but I am at the beginning so I don't have needed knowledge.

Thank you for any suggestions.

Edit: Or as I said, I can write it on my own. I wan't to learn how to do that. But I need some clue what to do and where to look. Maybe what kind of book should I read or something.

Edit2: I only wan't to be able to do that in simulation. So basically I don't have to solve problem with location of UAV itself yet. So I have UAV, I have it's position and I have given waypoint and I wan't to fly to that waypoint autonomously.

edit retag close merge delete

Sort by » oldest newest most voted

Controlling a robot autonomously involves two aspects.

1. Path planning and
2. Path tracking or path following.

Since you already have your path, you need to concentrate on path tracking. There are a few well established techniques for path-tracking such as potential field based ( there are many variants of this. Most obvious variant is Vector Field approach. These techniques assume that you know your map. There are other path tracking algorithms that work without a map too.

The package you mentioned in the answer uses Potential field based approach ( If I am not wrong). If you want to learn how path-tracking is done, pick an algorithm and try to implement it by yourself. You will learn better.

more

Oh, that's what I was looking for. I have basically no mentor so it's hard for me to find the right terms. I will definitely try to implement it by myself for better understanding. Thank you very much.

( 2015-09-22 08:25:17 -0500 )edit

Hm, it seems that it's far more advanced than I am capable of understanding it right now. Those are great things, however I really need only some basic path follower. You said there are more path tracking algorithms, can you mention some? I can only find hw based algorithms using control theory.

( 2015-09-23 06:10:34 -0500 )edit
1

Look at this for a comprehensive survey on these algorithms. Carrot-chasing (or rabbit-chasing) algorithm and geometric approaches would be easy to implement.

( 2015-09-23 06:40:27 -0500 )edit

For hours of search I found something useful. https://github.com/DaikiMaekawa/quadr... here is some quadrotor_navigation package which include also local planner for quadrotors. After a few modifications, my quadrotor can now fly autonomously. It's pretty simple local planner though.

Personally I wanted something advanced, but I guess I would have to learn some physics and do it by myself.

Any suggestions where should I start?

more

Hi, may I know what modifications you have made on that to make this project run? Thank you in advance.

( 2016-04-04 23:44:09 -0500 )edit

As I remember, I just used apf_planner.cpp where I published goal and planner worked for my quadrotor without any other modifications. But then as Willson Amalraj suggested I implemented some planning algorithms by myself. Not the best planning algorithm, but it works just fine f

( 2016-04-05 05:50:11 -0500 )edit

Hi, thank you very much for your reply. Would you like to share the global planner you use? And which ROS release and dependency packages were used? Thanks in advance :3

( 2016-04-05 06:21:17 -0500 )edit

For global planner it's little tricky, because on this worked my colleges at university. As global planner you may have look at open motion planning lib. I'm currently using ROS indigo with full desktop installation (maybe other dependencies, but I don't quite rememter what I've installed or not).

( 2016-04-05 07:25:16 -0500 )edit