]> rtime.felk.cvut.cz Git - hubacji1/iamcar.git/log
hubacji1/iamcar.git
5 years agoRelease version 0.2.0 v0.2.0
Jiri Hubacek [Sat, 6 Oct 2018 12:29:47 +0000 (14:29 +0200)]
Release version 0.2.0

### Added
- Compilation macros that can specify output binary parameters.
- Auxiliary build and test scripts.
- Nearest neighbour `nn2` procedure based on linear search over `nodes()`.
- Nearest neighbour `nn3` procedure based on indexing over `y` axis.
- Near vertices `nv2` procedure based on indexing over `y` axis.
- OpenMP parallelization of nearest neighbour and near vertices procedures.
- Rebase method that changes (rebases) RRT root to another RRT node.
- Structure and method for logging tree edges.
- Time dimension to RRT node.
- Obstacle distance to RRT Node.
- Test planner `T2` based on RRT\* [Karaman2011] with steering from newly added
  nodes to goal.
- OpenGL 2.1 plot using SDL2.
- `nn4` procedure - set node's heading to heading of currently comparing node.
- Add optimize path method based on [Islam2012]'s *Path Optimize* procedure.
- Update cost method of `RRTNode` that updates cumulative costs of all
  children.

### Changed
- Build with Ninja.
- Split `connect` and `rewire` procedures from Karaman2011's `next` procedure.
- Main planning loop logic.
- Path optimization of `T2` based on Dijkstra between cusps points.

### Fixed
- Deletion of nodes returned by `steer` but not used.
- Scaling for `iy_` nearest neighbour search structure.

5 years agoMerge branch 'feature/refactor-optimize-path'
Jiri Hubacek [Sat, 6 Oct 2018 12:28:44 +0000 (14:28 +0200)]
Merge branch 'feature/refactor-optimize-path'

5 years agoReturn path to first cusps if goal not found
Jiri Hubacek [Sat, 6 Oct 2018 12:05:55 +0000 (14:05 +0200)]
Return path to first cusps if goal not found

5 years agoRemove unused vector, use `npi` for parent node
Jiri Hubacek [Sat, 6 Oct 2018 11:19:06 +0000 (13:19 +0200)]
Remove unused vector, use `npi` for parent node

5 years agoFix searching for cusps points
Jiri Hubacek [Sat, 6 Oct 2018 10:57:22 +0000 (12:57 +0200)]
Fix searching for cusps points

5 years agoAdd only TMAX limited main loop
Jiri Hubacek [Fri, 5 Oct 2018 14:43:58 +0000 (16:43 +0200)]
Add only TMAX limited main loop

5 years agoMerge branch 'feature/refactor'
Jiri Hubacek [Fri, 5 Oct 2018 15:24:39 +0000 (17:24 +0200)]
Merge branch 'feature/refactor'

5 years agoOptimize path, rebase to first cusps node
Jiri Hubacek [Fri, 5 Oct 2018 14:34:07 +0000 (16:34 +0200)]
Optimize path, rebase to first cusps node

5 years agoLimit outer while with #iterations
Jiri Hubacek [Fri, 5 Oct 2018 14:33:19 +0000 (16:33 +0200)]
Limit outer while with #iterations

5 years agoFind nn if not goal found else nn is goal
Jiri Hubacek [Fri, 5 Oct 2018 14:32:02 +0000 (16:32 +0200)]
Find nn if not goal found else nn is goal

5 years agoReturn from rebase if new root is null
Jiri Hubacek [Fri, 5 Oct 2018 14:11:54 +0000 (16:11 +0200)]
Return from rebase if new root is null

5 years agoReturn false if no cusps in opt_path()
Jiri Hubacek [Fri, 5 Oct 2018 14:07:59 +0000 (16:07 +0200)]
Return false if no cusps in opt_path()

5 years agoNot return trajectory if init node is null
Jiri Hubacek [Fri, 5 Oct 2018 14:07:04 +0000 (16:07 +0200)]
Not return trajectory if init node is null

5 years agoReturn false if nn() in next() fails
Jiri Hubacek [Fri, 5 Oct 2018 14:05:54 +0000 (16:05 +0200)]
Return false if nn() in next() fails

5 years agoOptimize when goal not found
Jiri Hubacek [Fri, 5 Oct 2018 08:10:42 +0000 (10:10 +0200)]
Optimize when goal not found

5 years agoMake optimization independent on goal
Jiri Hubacek [Fri, 5 Oct 2018 08:09:33 +0000 (10:09 +0200)]
Make optimization independent on goal

5 years agoLog only if trajectory cost is better
Jiri Hubacek [Fri, 5 Oct 2018 07:57:58 +0000 (09:57 +0200)]
Log only if trajectory cost is better

5 years agoUpdate changelog
Jiri Hubacek [Thu, 4 Oct 2018 11:46:51 +0000 (13:46 +0200)]
Update changelog

5 years agoMerge branch 'feature/dijkstra-optimize-path'
Jiri Hubacek [Thu, 4 Oct 2018 11:46:04 +0000 (13:46 +0200)]
Merge branch 'feature/dijkstra-optimize-path'

5 years agoRun path optimization in each iteration
Jiri Hubacek [Thu, 4 Oct 2018 11:45:09 +0000 (13:45 +0200)]
Run path optimization in each iteration

5 years agoUse Dijkstra in path optimization
Jiri Hubacek [Thu, 4 Oct 2018 11:40:05 +0000 (13:40 +0200)]
Use Dijkstra in path optimization

When optimizing path, use Dijkstra between cusps nodes. Use Reeds and
Shepp cost between cusps nodes when connecting nodes is collision free
and some high value otherwise.

When Dijkstra between cusps found, add path created by steering between
cusps nodes.

5 years agoFix missing cusps points
Jiri Hubacek [Thu, 4 Oct 2018 08:27:03 +0000 (10:27 +0200)]
Fix missing cusps points

5 years agoReturn false if no trajectory found
Jiri Hubacek [Thu, 4 Oct 2018 08:14:53 +0000 (10:14 +0200)]
Return false if no trajectory found

5 years agoMerge branch 'feature/refactor'
Jiri Hubacek [Thu, 4 Oct 2018 08:13:21 +0000 (10:13 +0200)]
Merge branch 'feature/refactor'

5 years agoNote bug in optimize part method
Jiri Hubacek [Thu, 4 Oct 2018 08:11:54 +0000 (10:11 +0200)]
Note bug in optimize part method

5 years agoUse variable for steered size
Jiri Hubacek [Thu, 4 Oct 2018 07:29:33 +0000 (09:29 +0200)]
Use variable for steered size

5 years agoDo not remove nodes from RRT
Jiri Hubacek [Thu, 4 Oct 2018 07:22:02 +0000 (09:22 +0200)]
Do not remove nodes from RRT

5 years agoAdd RRTNode's update cost method
Jiri Hubacek [Thu, 4 Oct 2018 07:06:10 +0000 (09:06 +0200)]
Add RRTNode's update cost method

5 years agoMerge branch 'feature/optimize-cusps'
Jiri Hubacek [Wed, 3 Oct 2018 05:55:29 +0000 (07:55 +0200)]
Merge branch 'feature/optimize-cusps'

5 years agoUpdate changelog
Jiri Hubacek [Wed, 3 Oct 2018 05:54:58 +0000 (07:54 +0200)]
Update changelog

5 years agoUpdate optimize path method
Jiri Hubacek [Wed, 3 Oct 2018 05:47:44 +0000 (07:47 +0200)]
Update optimize path method

Based on [Islam2012] *Path Optimization* procedure. From goal try the
longest possible subpath along cusps points. If collide, restart the
goal to previously tested cusps node. Continue until root.

5 years agoInclude root/goal to cusps
Jiri Hubacek [Wed, 3 Oct 2018 05:27:26 +0000 (07:27 +0200)]
Include root/goal to cusps

5 years agoTMP? Allow full Reeds and Shepp path
Jiri Hubacek [Wed, 3 Oct 2018 05:21:57 +0000 (07:21 +0200)]
TMP? Allow full Reeds and Shepp path

5 years agoAdd optimize path, optimize part
Jiri Hubacek [Tue, 2 Oct 2018 16:22:10 +0000 (18:22 +0200)]
Add optimize path, optimize part

Optimize path method optimizes parts between cusps nodes of the last
trajectory found.

Optimize part method substitutes part of the last trajectory by nodes
returned by steer method if don't collide.

5 years agoPlot cusps
Jiri Hubacek [Tue, 2 Oct 2018 13:58:33 +0000 (15:58 +0200)]
Plot cusps

5 years agoAdd nn4 procedure
Jiri Hubacek [Tue, 2 Oct 2018 13:16:36 +0000 (15:16 +0200)]
Add nn4 procedure

Add nearest neighbour procedure with modifying node's heading when
comparing to others nodes. Node's heading is set to comparing node's
heading.

5 years agoUpdate GL screen width/height
Jiri Hubacek [Tue, 2 Oct 2018 12:56:19 +0000 (14:56 +0200)]
Update GL screen width/height

5 years agoPlot last sample, plot bigger root, goal
Jiri Hubacek [Tue, 2 Oct 2018 12:21:23 +0000 (14:21 +0200)]
Plot last sample, plot bigger root, goal

5 years agoUse OpenGL enabling macro
Jiri Hubacek [Mon, 1 Oct 2018 08:50:34 +0000 (10:50 +0200)]
Use OpenGL enabling macro

5 years agoMerge branch 'feature/GL'
Jiri Hubacek [Wed, 26 Sep 2018 17:43:12 +0000 (19:43 +0200)]
Merge branch 'feature/GL'

5 years agoUpdate changelog
Jiri Hubacek [Wed, 26 Sep 2018 17:43:03 +0000 (19:43 +0200)]
Update changelog

5 years agoPlot last trajectory
Jiri Hubacek [Wed, 26 Sep 2018 17:35:19 +0000 (19:35 +0200)]
Plot last trajectory

5 years agoReset line/point width
Jiri Hubacek [Wed, 26 Sep 2018 17:35:05 +0000 (19:35 +0200)]
Reset line/point width

5 years agoPlot root/goal
Jiri Hubacek [Wed, 26 Sep 2018 16:16:37 +0000 (18:16 +0200)]
Plot root/goal

5 years agoAdd node scaling macro for OpenGL
Jiri Hubacek [Wed, 26 Sep 2018 16:16:04 +0000 (18:16 +0200)]
Add node scaling macro for OpenGL

5 years agoAdd segment obstacle GL plot
Jiri Hubacek [Wed, 26 Sep 2018 15:49:56 +0000 (17:49 +0200)]
Add segment obstacle GL plot

5 years agoAdd plot OpenGL RRTBase method
Jiri Hubacek [Wed, 26 Sep 2018 15:34:28 +0000 (17:34 +0200)]
Add plot OpenGL RRTBase method

5 years agoDefine constants as macros
Jiri Hubacek [Wed, 26 Sep 2018 15:31:59 +0000 (17:31 +0200)]
Define constants as macros

5 years agoUse OpenGL with SDL
Jiri Hubacek [Wed, 26 Sep 2018 14:10:33 +0000 (16:10 +0200)]
Use OpenGL with SDL

See: http://lazyfoo.net/tutorials/SDL/50_SDL_and_opengl_2/index.php

5 years agoPlot basic window
Jiri Hubacek [Wed, 26 Sep 2018 12:51:49 +0000 (14:51 +0200)]
Plot basic window

See: http://lazyfoo.net/tutorials/SDL/index.php

5 years agoLink SDL2 library
Jiri Hubacek [Wed, 26 Sep 2018 12:51:29 +0000 (14:51 +0200)]
Link SDL2 library

5 years agoPlot sample's frame if defined
Jiri Hubacek [Wed, 26 Sep 2018 11:51:32 +0000 (13:51 +0200)]
Plot sample's frame if defined

5 years agoAdd RRTNode heading setter
Jiri Hubacek [Wed, 26 Sep 2018 11:06:49 +0000 (13:06 +0200)]
Add RRTNode heading setter

5 years agoFix max cusps for path from steer procedure
Jiri Hubacek [Wed, 26 Sep 2018 08:35:34 +0000 (10:35 +0200)]
Fix max cusps for path from steer procedure

5 years agoMerge branch 'feature/test-planner-2'
Jiri Hubacek [Mon, 24 Sep 2018 16:07:32 +0000 (18:07 +0200)]
Merge branch 'feature/test-planner-2'

5 years agoUpdate changelog
Jiri Hubacek [Mon, 24 Sep 2018 16:07:24 +0000 (18:07 +0200)]
Update changelog

5 years agoAdd function that recomputes goal cost
Jiri Hubacek [Mon, 24 Sep 2018 14:12:20 +0000 (16:12 +0200)]
Add function that recomputes goal cost

5 years agoLimit node distance, #cusps for RRT* grow in T2
Jiri Hubacek [Mon, 24 Sep 2018 13:35:52 +0000 (15:35 +0200)]
Limit node distance, #cusps for RRT* grow in T2

5 years agoAdd testing planner 2
Jiri Hubacek [Mon, 24 Sep 2018 13:23:54 +0000 (15:23 +0200)]
Add testing planner 2

T2 is based on RRT* [Karaman2011] and use newly added list of nodes to
try connect goal from just added.

5 years agoRemove time from RRT* connect/rewire
Jiri Hubacek [Mon, 24 Sep 2018 13:09:36 +0000 (15:09 +0200)]
Remove time from RRT* connect/rewire

5 years agoAdd sign template
Jiri Hubacek [Mon, 24 Sep 2018 13:01:34 +0000 (15:01 +0200)]
Add sign template

5 years agoFix comment note
Jiri Hubacek [Mon, 24 Sep 2018 12:36:42 +0000 (14:36 +0200)]
Fix comment note

5 years agoInclude speed in Reeds and Shepp callback
Jiri Hubacek [Mon, 24 Sep 2018 11:14:46 +0000 (13:14 +0200)]
Include speed in Reeds and Shepp callback

5 years agoAdd missing `cco3` function
Jiri Hubacek [Mon, 24 Sep 2018 08:04:15 +0000 (10:04 +0200)]
Add missing `cco3` function

Cumulative cost function needs to be defined for every cost function.

5 years agoLog edges even if goal found
Jiri Hubacek [Mon, 24 Sep 2018 08:02:16 +0000 (10:02 +0200)]
Log edges even if goal found

5 years agoAdd `speed` to RRTNode
Jiri Hubacek [Mon, 24 Sep 2018 08:01:26 +0000 (10:01 +0200)]
Add `speed` to RRTNode

5 years agoAdd IS_NEAR macro
Jiri Hubacek [Mon, 24 Sep 2018 08:00:38 +0000 (10:00 +0200)]
Add IS_NEAR macro

5 years agoAdd interrupt/terminate handling
Jiri Hubacek [Fri, 21 Sep 2018 14:41:31 +0000 (16:41 +0200)]
Add interrupt/terminate handling

Also, add test script example to readme.

5 years agoIgnore unknow pragmas
Jiri Hubacek [Fri, 21 Sep 2018 14:12:40 +0000 (16:12 +0200)]
Ignore unknow pragmas

5 years agoAdd cost function
Jiri Hubacek [Fri, 21 Sep 2018 14:07:51 +0000 (16:07 +0200)]
Add cost function

Currently, the following may be used in the cost function:
- Euclidean distance,
- Reed & Shepp distance,
- heading difference,
- time difference,
- distance to the obstacle,
- distance to the parent node,
- node's cumulative distance.

5 years agoRename cumulative cost functions
Jiri Hubacek [Fri, 21 Sep 2018 14:03:28 +0000 (16:03 +0200)]
Rename cumulative cost functions

5 years agoAdd plot for minimum trajectories costs
Jiri Hubacek [Fri, 21 Sep 2018 07:17:16 +0000 (09:17 +0200)]
Add plot for minimum trajectories costs

5 years agoAdd get latst/maxs functions to gplot
Jiri Hubacek [Fri, 21 Sep 2018 07:13:56 +0000 (09:13 +0200)]
Add get latst/maxs functions to gplot

Function `get_lasts_if_exist` returns the list of last values of some
element of trajectory (i. e. *cost*).

Function `get_maxs_if_exist` return the list of maximum values of some
element of trajectory (i. e. *cost*).

5 years agoLog trajectory only if exists
Jiri Hubacek [Fri, 21 Sep 2018 07:12:32 +0000 (09:12 +0200)]
Log trajectory only if exists

5 years agoUpdate gplot template
Jiri Hubacek [Fri, 21 Sep 2018 06:23:53 +0000 (08:23 +0200)]
Update gplot template

5 years agoSeparate variable for logs folder in plot
Jiri Hubacek [Fri, 21 Sep 2018 06:21:31 +0000 (08:21 +0200)]
Separate variable for logs folder in plot

5 years agoMove success rate plot to separate function
Jiri Hubacek [Fri, 21 Sep 2018 06:20:01 +0000 (08:20 +0200)]
Move success rate plot to separate function

5 years agoFix NNVERSION if directive
Jiri Hubacek [Thu, 20 Sep 2018 18:22:44 +0000 (20:22 +0200)]
Fix NNVERSION if directive

5 years agoDo not allow rewire if too long time distance
Jiri Hubacek [Thu, 20 Sep 2018 17:27:13 +0000 (19:27 +0200)]
Do not allow rewire if too long time distance

5 years agoFix Kuwata2008 next steer collide behaviour
Jiri Hubacek [Thu, 20 Sep 2018 14:27:00 +0000 (16:27 +0200)]
Fix Kuwata2008 next steer collide behaviour

5 years agoAdd macro for indexing `iy_` structure
Jiri Hubacek [Thu, 20 Sep 2018 14:10:41 +0000 (16:10 +0200)]
Add macro for indexing `iy_` structure

5 years agoFix missing nearest neighbour version check
Jiri Hubacek [Thu, 20 Sep 2018 13:11:12 +0000 (15:11 +0200)]
Fix missing nearest neighbour version check

5 years agoLog tree only when logging edges
Jiri Hubacek [Thu, 20 Sep 2018 13:10:48 +0000 (15:10 +0200)]
Log tree only when logging edges

5 years agoUpdate changelog
Jiri Hubacek [Thu, 20 Sep 2018 12:42:06 +0000 (14:42 +0200)]
Update changelog

5 years agoMerge branch 'feature/obstacle-distance'
Jiri Hubacek [Thu, 20 Sep 2018 12:41:04 +0000 (14:41 +0200)]
Merge branch 'feature/obstacle-distance'

5 years agoCompute obstacle cost for root/goal
Jiri Hubacek [Thu, 20 Sep 2018 12:35:15 +0000 (14:35 +0200)]
Compute obstacle cost for root/goal

5 years agoMake JSON edges output macro-dependent
Jiri Hubacek [Thu, 20 Sep 2018 12:34:48 +0000 (14:34 +0200)]
Make JSON edges output macro-dependent

5 years agoUpdate RRT planner adding child
Jiri Hubacek [Thu, 20 Sep 2018 12:03:03 +0000 (14:03 +0200)]
Update RRT planner adding child

When adding child node in RRT planner `next` method, compute node's
distance to obstacles.

5 years agoAdd obstacle cost method to RRT planner base
Jiri Hubacek [Thu, 20 Sep 2018 11:54:05 +0000 (13:54 +0200)]
Add obstacle cost method to RRT planner base

5 years agoUpdate RRTNode with obstacle cost
Jiri Hubacek [Thu, 20 Sep 2018 11:48:59 +0000 (13:48 +0200)]
Update RRTNode with obstacle cost

Update:
- constructor.

Create:
- getter,
- setter.

5 years agoMerge branch 'feature/time-dimension'
Jiri Hubacek [Thu, 20 Sep 2018 11:36:26 +0000 (13:36 +0200)]
Merge branch 'feature/time-dimension'

5 years agoUpdate `add_child` method with time
Jiri Hubacek [Thu, 20 Sep 2018 07:52:22 +0000 (09:52 +0200)]
Update `add_child` method with time

5 years agoUpdate RRTNode with time
Jiri Hubacek [Thu, 20 Sep 2018 07:44:27 +0000 (09:44 +0200)]
Update RRTNode with time

Update:
- getter,
- setter,
- constructor.

5 years agoFix 80 text width typo
Jiri Hubacek [Thu, 20 Sep 2018 06:18:13 +0000 (08:18 +0200)]
Fix 80 text width typo

5 years agoMerge branch 'feature/rebase-rrt'
Jiri Hubacek [Wed, 19 Sep 2018 14:30:46 +0000 (16:30 +0200)]
Merge branch 'feature/rebase-rrt'

5 years agoChange planning logic
Jiri Hubacek [Wed, 19 Sep 2018 14:25:46 +0000 (16:25 +0200)]
Change planning logic

There is change in the main planning loop. If the goal is not found in
`TMAX` interval, rebase to the nearest node and continue in planning
until goal found.

Also, in each "goal not found" iteration, log all RRT edges to JSON.

5 years agoRemove samples traversing in rebase method
Jiri Hubacek [Wed, 19 Sep 2018 13:50:23 +0000 (15:50 +0200)]
Remove samples traversing in rebase method

Samples are not added to RRT so no need to traverse when rebasing.

5 years agoReturn false if trying to rebase on root/goal
Jiri Hubacek [Wed, 19 Sep 2018 12:35:11 +0000 (14:35 +0200)]
Return false if trying to rebase on root/goal

5 years agoFix Karaman2011 next steer collide behaviour
Jiri Hubacek [Wed, 19 Sep 2018 11:59:57 +0000 (13:59 +0200)]
Fix Karaman2011 next steer collide behaviour

Only rewire when connected.

Only reparent if old parent exists.

When next steer node `ns` introduces collision, remove `ns`'s parent,
and remove `ns` from `iy_` nearest neighbour structure.

5 years agoFix possible overflow in `add_iy` method
Jiri Hubacek [Wed, 19 Sep 2018 11:26:57 +0000 (13:26 +0200)]
Fix possible overflow in `add_iy` method