Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Obstacle Avoidance Algorithm #8

Closed
3 tasks done
huckl3b3rry87 opened this issue Mar 12, 2018 · 4 comments
Closed
3 tasks done

New Obstacle Avoidance Algorithm #8

huckl3b3rry87 opened this issue Mar 12, 2018 · 4 comments

Comments

@huckl3b3rry87
Copy link
Contributor

Feature

Integrate a the obstacle avoidance algorithm described in this paper which I can now solve in real time using an official julia package that I developed called NLOptControl.

Motivation

If a vehicle needs to drive quickly and avoid moving obstacles then NLOptControl is well suited to solve the trajectory planning problem. Where A* and OpenPlanner are path planning algorithms and are mostly concerned with satisfying kinematic/geometric constraints, they can identify a path to follow, but without a temporal component, they do not tell you how to follow the path. While, trajectory planning also considers how you can follow the path. So, for instance, what are the optimal steering and throttle trajectories (not simply what are the X and Y waypoints).

NLOptControl is designed as a high level tool, so resarchers can easily define their own optimization problems, see my documentation here.

TODO

  • Initialize with a particular case using yaml config file, get rid of CaseModule initialization in MAVs
  • Read new obstacle information data from a particular message and update optimization accordingly
  • Read new vehicle state from a particular message and update optimization accordingly
@huckl3b3rry87
Copy link
Contributor Author

The first task is nearly completed with https://github.com/huckl3b3rry87/MAVs.jl/tree/feature/yaml. A few things still need to be tested and developed and then it can be merged into the master

@huckl3b3rry87
Copy link
Contributor Author

with this commit the three items on TODO 1 are complete

@huckl3b3rry87
Copy link
Contributor Author

TODO 2

  • create a launch file that accepts the arguments needed to run from a higher level
  • make sure that Docker file works
  • check gui functionality

@huckl3b3rry87
Copy link
Contributor Author

The first item on TODO 2 is done with this commit. Now, it should work as a stand alone module that updates these parameters

febbo@febbo-HP-ZBook-17-G2:~$ rosparam list
/nloptcontrol_planner/case_name
/nloptcontrol_planner/flags/3DOF_plant
/nloptcontrol_planner/flags/init
/nloptcontrol_planner/flags/known_environment
/nloptcontrol_planner/obstacle_name
...

it will publish trajectories as

/nloptcontrol_planner/traj/psi
/nloptcontrol_planner/traj/sa
/nloptcontrol_planner/traj/t
/nloptcontrol_planner/traj/vx
/nloptcontrol_planner/traj/x
/nloptcontrol_planner/traj/y

Given parameter information about the obstacles

/obstacle/radius
/obstacle/vx
/obstacle/vy
/obstacle/x
/obstacle/y

and the initial state of the vehicle

/state/ax
/state/psi
/state/r
/state/sa
/state/ux
/state/x
/state/y

In the demo.launch file a simple example is provided that assumes all perfect knowledge of the obstacles and the state of the vehicle, but args can be set if this is not the case and more realistic simulations can be ran.

@huckl3b3rry87 huckl3b3rry87 mentioned this issue Mar 12, 2018
6 tasks
huckl3b3rry87 pushed a commit that referenced this issue Nov 7, 2018
changed file names from path_follower to path_following
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant