{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaMPC/MAVs/issues/8","repository_url":"https://api.github.com/repos/JuliaMPC/MAVs","labels_url":"https://api.github.com/repos/JuliaMPC/MAVs/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/JuliaMPC/MAVs/issues/8/comments","events_url":"https://api.github.com/repos/JuliaMPC/MAVs/issues/8/events","html_url":"https://github.com/JuliaMPC/MAVs/issues/8","id":304539476,"number":8,"title":"New Obstacle Avoidance Algorithm","user":{"login":"huckl3b3rry87","id":8204378,"avatar_url":"https://avatars1.githubusercontent.com/u/8204378?v=4","gravatar_id":"","url":"https://api.github.com/users/huckl3b3rry87","html_url":"https://github.com/huckl3b3rry87","followers_url":"https://api.github.com/users/huckl3b3rry87/followers","following_url":"https://api.github.com/users/huckl3b3rry87/following{/other_user}","gists_url":"https://api.github.com/users/huckl3b3rry87/gists{/gist_id}","starred_url":"https://api.github.com/users/huckl3b3rry87/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/huckl3b3rry87/subscriptions","organizations_url":"https://api.github.com/users/huckl3b3rry87/orgs","repos_url":"https://api.github.com/users/huckl3b3rry87/repos","events_url":"https://api.github.com/users/huckl3b3rry87/events{/privacy}","received_events_url":"https://api.github.com/users/huckl3b3rry87/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2018-03-12T21:04:34Z","updated_at":"2018-03-12T21:05:03Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"# Feature\r\nIntegrate a the obstacle avoidance algorithm described [in this paper](https://scholar.google.com/citations?user=aJBQ8dwAAAAJ&hl=en) which I can now solve in real time using an official julia package that I developed called [NLOptControl](https://github.com/JuliaMPC/NLOptControl.jl). \r\n\r\n# Motivation\r\nIf 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).\r\n\r\nNLOptControl is designed as a high level tool, so resarchers can easily define their own optimization problems, see my documentation [here](https://juliampc.github.io/MPCDocs.jl/latest/index.html).\r\n\r\n# TODO \r\n- [x] Initialize with a particular case using yaml config file, get rid of CaseModule initialization in MAVs\r\n- [x] Read new obstacle information data from a particular message and update optimization accordingly\r\n- [x] Read new vehicle state from a particular message and update optimization accordingly"},"comment":{"url":"https://api.github.com/repos/JuliaMPC/MAVs/issues/comments/372462132","html_url":"https://github.com/JuliaMPC/MAVs/issues/8#issuecomment-372462132","issue_url":"https://api.github.com/repos/JuliaMPC/MAVs/issues/8","id":372462132,"user":{"login":"huckl3b3rry87","id":8204378,"avatar_url":"https://avatars1.githubusercontent.com/u/8204378?v=4","gravatar_id":"","url":"https://api.github.com/users/huckl3b3rry87","html_url":"https://github.com/huckl3b3rry87","followers_url":"https://api.github.com/users/huckl3b3rry87/followers","following_url":"https://api.github.com/users/huckl3b3rry87/following{/other_user}","gists_url":"https://api.github.com/users/huckl3b3rry87/gists{/gist_id}","starred_url":"https://api.github.com/users/huckl3b3rry87/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/huckl3b3rry87/subscriptions","organizations_url":"https://api.github.com/users/huckl3b3rry87/orgs","repos_url":"https://api.github.com/users/huckl3b3rry87/repos","events_url":"https://api.github.com/users/huckl3b3rry87/events{/privacy}","received_events_url":"https://api.github.com/users/huckl3b3rry87/received_events","type":"User","site_admin":false},"created_at":"2018-03-12T21:05:03Z","updated_at":"2018-03-12T21:05:03Z","author_association":"CONTRIBUTOR","body":"The first item on TODO 2 is done with [this commit](https://github.com/huckl3b3rry87/Autoware/commit/b7a5eb7cfec50693edf40ff2d102298ce3c072ce). Now, it should work as a stand alone module that updates these parameters\r\n```\r\nfebbo@febbo-HP-ZBook-17-G2:~$ rosparam list\r\n/nloptcontrol_planner/case_name\r\n/nloptcontrol_planner/flags/3DOF_plant\r\n/nloptcontrol_planner/flags/init\r\n/nloptcontrol_planner/flags/known_environment\r\n/nloptcontrol_planner/obstacle_name\r\n...\r\n```\r\nit will publish trajectories as\r\n```\r\n/nloptcontrol_planner/traj/psi\r\n/nloptcontrol_planner/traj/sa\r\n/nloptcontrol_planner/traj/t\r\n/nloptcontrol_planner/traj/vx\r\n/nloptcontrol_planner/traj/x\r\n/nloptcontrol_planner/traj/y\r\n``` \r\nGiven parameter information about the obstacles \r\n```\r\n/obstacle/radius\r\n/obstacle/vx\r\n/obstacle/vy\r\n/obstacle/x\r\n/obstacle/y\r\n```\r\nand the initial state of the vehicle\r\n```\r\n/state/ax\r\n/state/psi\r\n/state/r\r\n/state/sa\r\n/state/ux\r\n/state/x\r\n/state/y\r\n```\r\nIn 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.  "}}
{"actor":{"display_login":"huckl3b3rry87"}}