From 6d7a9afe979e12e35df0291c49cb276595083b42 Mon Sep 17 00:00:00 2001 From: Kaustab Pal Date: Thu, 8 Sep 2022 19:01:07 +0530 Subject: [PATCH 01/10] Added first contribution --- .../kaustab_pal/4-phase_2_coding_period.md | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md diff --git a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md new file mode 100644 index 00000000..f07d1dd6 --- /dev/null +++ b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md @@ -0,0 +1,39 @@ +# GSoC'22 RoboComp project: Model Predictive Control for obstacle avoidance + +08 September 2022 + +## Phase 2 + +The phase 2 started from July 25th. The plans for phase 2 are: +1. Introduce a feature where if the target is given inside an obstacle, the + target will automatically be moved to the nearest unoccupied cell. +2. We discoreved a problem where the agent is unable to pass through narrow + corridors. This bug needs to be fixed. +3. Re-formulating the obstacle avoidance constraints as free-balls [ [Paper] ]( + https://arxiv.org/abs/1909.08267 ) and implement that as a constraint in the + MPC. + +## Contribution 1: Move target if it is in occupied cell + +During our testing in phase-1, we observed that if the target is given inside an +occupied cell, the MPC tries to move towards it as one of the cost function of +the MPC is to minimize the distance between the robot position and the goal +position. This often lead to the robot crashing as it reeached near the +obstacle. To fix this issue we added a check such that if the target of the MPC +is inside an occupied cell inside a occupancy grid map, we move the target to +the nearest free cell such that all the 16 neighbouring cells of the target are +also unoccupied. + +The following code snippet is taking care of this: + +``` +if(neighboors_16(target).size()<16){ + std::optional new_target = closest_free(target_); + target = pointToKey(new_target->x(), new_target->y()); + std::cout<<"OCCUPIED"< Date: Thu, 8 Sep 2022 19:03:53 +0530 Subject: [PATCH 02/10] Added first contribution --- gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md index f07d1dd6..bd342a86 100644 --- a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md +++ b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md @@ -26,12 +26,12 @@ also unoccupied. The following code snippet is taking care of this: -``` +```C++ if(neighboors_16(target).size()<16){ - std::optional new_target = closest_free(target_); - target = pointToKey(new_target->x(), new_target->y()); - std::cout<<"OCCUPIED"< new_target = closest_free(target_); + target = pointToKey(new_target->x(), new_target->y()); + std::cout<<"OCCUPIED"< Date: Thu, 8 Sep 2022 19:12:52 +0530 Subject: [PATCH 03/10] Added first contribution --- .../kaustab_pal/4-phase_2_coding_period.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md index bd342a86..0ef13ebc 100644 --- a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md +++ b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md @@ -18,11 +18,11 @@ The phase 2 started from July 25th. The plans for phase 2 are: During our testing in phase-1, we observed that if the target is given inside an occupied cell, the MPC tries to move towards it as one of the cost function of the MPC is to minimize the distance between the robot position and the goal -position. This often lead to the robot crashing as it reeached near the -obstacle. To fix this issue we added a check such that if the target of the MPC -is inside an occupied cell inside a occupancy grid map, we move the target to -the nearest free cell such that all the 16 neighbouring cells of the target are -also unoccupied. +position. This often leads to the robot crashing as it reeached near the +obstacle. To fix this issue we first checked if the target and all it's +neighbouring cells are unoccupied. If even one of the neighbouring 16 cells of +the target is occupied, we consider the target to be inside a occupied cell and +we move the target to the nearest free cell available. The following code snippet is taking care of this: @@ -33,7 +33,10 @@ if(neighboors_16(target).size()<16){ std::cout<<"OCCUPIED"< Date: Thu, 8 Sep 2022 21:46:49 +0530 Subject: [PATCH 04/10] Added second contribution --- .DS_Store | Bin 6148 -> 6148 bytes gsoc/2022/posts/kaustab_pal/.DS_Store | Bin 6148 -> 6148 bytes .../kaustab_pal/4-phase_2_coding_period.md | 50 +++++++++++++++--- .../kaustab_pal/assets/narrow_corridor.png | Bin 0 -> 17954 bytes 4 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 gsoc/2022/posts/kaustab_pal/assets/narrow_corridor.png diff --git a/.DS_Store b/.DS_Store index d8c2fa6358679372f09de77905964fa8324f8531..81726f5d68363273bffe34cc6bc9c476508302e8 100644 GIT binary patch delta 21 ccmZoMXffC@gOS6;)IvwW(8Of(0>%_E07mcz4gdfE delta 21 ccmZoMXffC@gOS77&{9Xi$k=T20>%_E07lCO3;+NC diff --git a/gsoc/2022/posts/kaustab_pal/.DS_Store b/gsoc/2022/posts/kaustab_pal/.DS_Store index e88da98a80242d20b7dfbcecb01272a1faf558cf..494501c5f169f43695fbdacf864ca37ebcbddf57 100644 GIT binary patch delta 21 ccmZoMXffC@hl#_))IvwW(8Of(5~c)E07pp%6951J delta 21 ccmZoMXffC@hl#`3&{9Xi$k=T25~c)E07oPS5dZ)H diff --git a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md index 0ef13ebc..25daa281 100644 --- a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md +++ b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md @@ -15,14 +15,14 @@ The phase 2 started from July 25th. The plans for phase 2 are: ## Contribution 1: Move target if it is in occupied cell -During our testing in phase-1, we observed that if the target is given inside an +During our testing in phase-1, I observed that if the target is given inside an occupied cell, the MPC tries to move towards it as one of the cost function of the MPC is to minimize the distance between the robot position and the goal position. This often leads to the robot crashing as it reeached near the -obstacle. To fix this issue we first checked if the target and all it's +obstacle. To fix this issue I first checked if the target and all it's neighbouring cells are unoccupied. If even one of the neighbouring 16 cells of -the target is occupied, we consider the target to be inside a occupied cell and -we move the target to the nearest free cell available. +the target is occupied, I consider the target to be inside a occupied cell and +move the target to the nearest free cell available. The following code snippet is taking care of this: @@ -35,8 +35,42 @@ if(neighboors_16(target).size()<16){ ``` In the video [ [Target in obstacle] ]( https://youtu.be/mq_63IHb0MQ ), you can see how the robot performs when the target is given in an obstacle. Before -fixing this issue, the robot used to crash but now the robot no -longer crashes. It goes near the obstacle and stops. - +fixing this issue, the robot used to crash but now the robot no longer crashes. +It goes near the obstacle and stops. [ [Pull Request #379] ]( +https://github.com/robocomp/robocomp/pull/379 ) -[ [Passing through narrow corridors] ]( https://youtu.be/1x6ngcrBRds ) +## Contribution 2: Passing through narrow corridors + +Another problem I found during my phase-1 testing period was that with the +euclidean distance obstacle avoidance constraints, the robot can't pass through +narrow corridors. The below image shows that the occupied cells in the map are +marked overconservatively. In the image, the green lines represent the actual +obstacle boundaries. + +![](assets/narrow_corridor.png) + +Because of this overconstrained representation of the obstacles, the MPC was +unable to come up with a feasible trajectory that can take the robot across the +corridors. Currently this was happening because given an occupied cell, all it's +16 neighbouring cells were also marked as obstacles. I fixed this my marking the +8 neighbouring cells as obstacles instead of 16. + +The below code snippet does is taking care of this: + +```C++ +for (auto &&[k, v]: iter::filterfalse([](auto v) { return std::get<1>(v).free; }, fmap)) +{ + v.cost = 100; + v.tile->setBrush(occ_brush); + for (auto neighs = neighboors_8(k); auto &&[kk, vv]: neighs) + { + fmap.at(kk).cost = 100; + fmap.at(kk).tile->setBrush(occ_brush); + } +} +``` + +In the video [ [Passing through narrow corridors] ]( +https://youtu.be/1x6ngcrBRds ), you can see that the robot can now pass through +the narrow corridors with the euclidean distance obstacle avoidance constraints. +[ [Pull Rrequest #379] ]( https://github.com/robocomp/robocomp/pull/379 ) diff --git a/gsoc/2022/posts/kaustab_pal/assets/narrow_corridor.png b/gsoc/2022/posts/kaustab_pal/assets/narrow_corridor.png new file mode 100644 index 0000000000000000000000000000000000000000..2c897c7e47d5758593cee3d89cb4acf8f72316a0 GIT binary patch literal 17954 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 literal 0 HcmV?d00001 From 10ce57d26c2d4925a577da11903e6b53dbaf0a9b Mon Sep 17 00:00:00 2001 From: Kaustab Pal Date: Thu, 8 Sep 2022 21:49:18 +0530 Subject: [PATCH 05/10] Update 4-phase_2_coding_period.md --- gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md index 25daa281..7cd92ab6 100644 --- a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md +++ b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md @@ -72,5 +72,5 @@ for (auto &&[k, v]: iter::filterfalse([](auto v) { return std::get<1>(v).free; } In the video [ [Passing through narrow corridors] ]( https://youtu.be/1x6ngcrBRds ), you can see that the robot can now pass through -the narrow corridors with the euclidean distance obstacle avoidance constraints. +the narrow corridors with the euclidean distance obstacle avoidance constraints. We can also observe that the obstacles are now represented in a much less conservative way. [ [Pull Rrequest #379] ]( https://github.com/robocomp/robocomp/pull/379 ) From 28d70db8839730a46cfe7cdb145e3cb89efbd79b Mon Sep 17 00:00:00 2001 From: Kaustab Pal Date: Thu, 8 Sep 2022 21:49:43 +0530 Subject: [PATCH 06/10] Added second contribution --- gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md index 7cd92ab6..fcffb2e9 100644 --- a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md +++ b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md @@ -72,5 +72,7 @@ for (auto &&[k, v]: iter::filterfalse([](auto v) { return std::get<1>(v).free; } In the video [ [Passing through narrow corridors] ]( https://youtu.be/1x6ngcrBRds ), you can see that the robot can now pass through -the narrow corridors with the euclidean distance obstacle avoidance constraints. We can also observe that the obstacles are now represented in a much less conservative way. +the narrow corridors with the euclidean distance obstacle avoidance constraints. +We can also observe that the obstacles are now represented in a much less +conservative way. [ [Pull Rrequest #379] ]( https://github.com/robocomp/robocomp/pull/379 ) From 0fa2b7ad8225355650743d8b9319ea1396edb657 Mon Sep 17 00:00:00 2001 From: Kaustab Pal Date: Thu, 8 Sep 2022 22:20:56 +0530 Subject: [PATCH 07/10] Added second contribution --- gsoc/2022/posts/kaustab_pal/.DS_Store | Bin 6148 -> 6148 bytes .../kaustab_pal/4-phase_2_coding_period.md | 35 ++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/gsoc/2022/posts/kaustab_pal/.DS_Store b/gsoc/2022/posts/kaustab_pal/.DS_Store index 494501c5f169f43695fbdacf864ca37ebcbddf57..612a917544cd85b9f2916f0c750a0d17495c4600 100644 GIT binary patch delta 68 zcmZoMXffEJ&cwKVvIbM3ns{}!xq*&?p^f|;>pZ7nBGpVy~X6N|J4*;nf6i)yE diff --git a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md index fcffb2e9..4b4ed0c5 100644 --- a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md +++ b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md @@ -76,3 +76,38 @@ the narrow corridors with the euclidean distance obstacle avoidance constraints. We can also observe that the obstacles are now represented in a much less conservative way. [ [Pull Rrequest #379] ]( https://github.com/robocomp/robocomp/pull/379 ) + +## Contribution 3: Reformulating the obstacle avoidance constraints as freeballs + +Suppose we have N obstacles and we are planning for T timesteps into the +future. Using the euclidean distance obstacle avoidance constraints, for each +timestep we will have a constraint for each of the N obstacles such that the +distance between the robot and the obstacle is greater than the sum of the +radius. Therefore for T timesteps, we will have N\*T constraints. This is a lot +of constraints and will slow down the computation time. To overcome this , we +use the freeballs algorithm as mentioned in the paper [ [An NMPC Approach using +Convex Inner Approximations for Online Motion Planning with Guaranteed Collision +Avoidance] ]( https://arxiv.org/abs/1909.08267 ) to avoid obstacles. In this +approach, we first take an initial guess for T centerpoints and and optimize for +them using a gradient based update rule such that the center points are furthest +away from the closest obstacle at that timestep. Now for each free ball we draw +a circle such that it's radius is the distance to the closest obstalce. If the +distance is above a certain threshold, we take a maximum circle radius defined +by the user. Once we have the center points and the radius, we add a constraint +to the MPC formualtion such that the robot always stays inside the circle. With +this approach, we only have T constraints and because of the decrease in the +number of constraints the computation time also decreases a lot. + +However this approach is very dependent on the value of the weight variables. +That is why to improve this, I added the feature that we will do a line search +for the weight variables and whichever weight will lead to a trajectory that is +furthest away from all the obstacles will be selected. In my experimentation, I +observed that we can only search for 3 weight variables after which the +computation time increases too much to operate safely in the environment. + +In the video [ [Free Balls obstacle avoidance with automatic weights tuning] ]( +https://youtu.be/BvM0eflDXGI ), the robot uses the freeballs algorith, with the +automatic weight search to navigate in the environment with narrow corridors. +[ [Pull Request #9] ]( https://github.com/robocomp/optimizer/pull/9 ) + + From 46e9a42c3906639b61d480a18b525257dccd257d Mon Sep 17 00:00:00 2001 From: Kaustab Pal Date: Thu, 8 Sep 2022 22:32:35 +0530 Subject: [PATCH 08/10] contrib 3 and conclusion --- .../kaustab_pal/4-phase_2_coding_period.md | 1 - gsoc/2022/posts/kaustab_pal/5-conclusion.md | 21 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 gsoc/2022/posts/kaustab_pal/5-conclusion.md diff --git a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md index 4b4ed0c5..de211813 100644 --- a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md +++ b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md @@ -110,4 +110,3 @@ https://youtu.be/BvM0eflDXGI ), the robot uses the freeballs algorith, with the automatic weight search to navigate in the environment with narrow corridors. [ [Pull Request #9] ]( https://github.com/robocomp/optimizer/pull/9 ) - diff --git a/gsoc/2022/posts/kaustab_pal/5-conclusion.md b/gsoc/2022/posts/kaustab_pal/5-conclusion.md new file mode 100644 index 00000000..39316536 --- /dev/null +++ b/gsoc/2022/posts/kaustab_pal/5-conclusion.md @@ -0,0 +1,21 @@ +# GSoC'22 RoboComp project: Model Predictive Control for obstacle avoidance + +08 September 2022 + +## Detailed report + +While the above contributions explain my GSoC'22 work, you can find a more +detailed explanation along with mathematical explanations here: [ [GSoC'22 +Project Report] ]( https://kaustabpal.github.io/gsoc_22_report ) + +## Future scope + +While the free balls algorithm works really well in complex environment, there +are much to be explored on how we can speed up the computation time to compute +the trajectories more efficiently. One approach would be to comne up with better +ways to initialize the optimizer. Another approach can be to make the trajectory +optimization formulation differentiable. Having a differentiable formulation +will enable us to integrate the trajectory computation with the perception +system in an end to end manner. + + From 2c92b74a97c67a1f51f00314b6ff0b4fe3cb52ad Mon Sep 17 00:00:00 2001 From: Kaustab Pal Date: Thu, 8 Sep 2022 22:39:41 +0530 Subject: [PATCH 09/10] Added links to index --- gsoc/2022/posts/index.md | 5 +++++ gsoc/2022/posts/kaustab_pal/.DS_Store | Bin 6148 -> 0 bytes 2 files changed, 5 insertions(+) delete mode 100644 gsoc/2022/posts/kaustab_pal/.DS_Store diff --git a/gsoc/2022/posts/index.md b/gsoc/2022/posts/index.md index 30e5357b..0449503c 100644 --- a/gsoc/2022/posts/index.md +++ b/gsoc/2022/posts/index.md @@ -40,6 +40,11 @@ Project: Model Predictive Control for obstacle avoidance Mentors: Pablo Bustos, Pedro Núñez 1. [Introduction](/web/gsoc/2022/posts/kaustab_pal/1-introduction) +2. [Community bonding period](/web/gsoc/2022/posts/kaustab_pal/2-community_bonding_period) +3. [Phase 1](/web/gsoc/2022/posts/kaustab_pal/3-phase_1_coding_period) +4. [Phase 2](/web/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period) +5. [Conclusion](/web/gsoc/2022/posts/kaustab_pal/5-conclusion) + ## Swati Dantu diff --git a/gsoc/2022/posts/kaustab_pal/.DS_Store b/gsoc/2022/posts/kaustab_pal/.DS_Store deleted file mode 100644 index 612a917544cd85b9f2916f0c750a0d17495c4600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}&BV5Z(oZHpGO3Mvt3#C6S-RpLi)1eE@6pAO>4Yps{obEpi|vz3PMb3ci5P z;MG@g_6H;4&yA>=A+z7??96WWYqQG`La06RtAvyYAqJ?xj0w#rBF2R-NJe||fK<+r zkk}i?125#>LNq#lBLm{y<%vsT_;twq`+M{TVGt*k$}`Pmb1V5m!7LODmrjq5oy1K> zvF#2oMDLXI(3{z=cNTQU?b6yIj}kYCIzyQd_#Fsood=Q6$2K2Dek^kxHDH>C*)DBN zCcBj~tJdn%GMnt}*UD_CzCWFs#`@Ow!Abij>__}g@krs5ld`ID2KQjhZ7J+loon77 z%mO}+_j$9aKUw3YWj{2IpBjrX{*N((-uLU=I>RXBQ5WW(J^Q;yLK7K429SZ}F`y42 zqqw{!aV2B`8Tca%i1UGg3bZt)3gyuOjVu8GbKsT&wx}gU4%299OclZi2vw?0Ct(j6 zKnDI512orknl@}n->nOq6L&2Gy#f^?;!=fgDPYK}7-Gd$ya_4={7e{tmc~>ectG%v NfTRH%WMHWbyaHHsYB>M^ From e49c5ee270017b3d223d6007f384814503ad250e Mon Sep 17 00:00:00 2001 From: Kaustab Pal Date: Thu, 8 Sep 2022 23:53:32 +0530 Subject: [PATCH 10/10] Update 4-phase_2_coding_period.md --- gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md index de211813..071c40a2 100644 --- a/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md +++ b/gsoc/2022/posts/kaustab_pal/4-phase_2_coding_period.md @@ -36,8 +36,8 @@ if(neighboors_16(target).size()<16){ In the video [ [Target in obstacle] ]( https://youtu.be/mq_63IHb0MQ ), you can see how the robot performs when the target is given in an obstacle. Before fixing this issue, the robot used to crash but now the robot no longer crashes. -It goes near the obstacle and stops. [ [Pull Request #379] ]( -https://github.com/robocomp/robocomp/pull/379 ) +It goes near the obstacle and stops. [ [Pull Request #377] ]( +https://github.com/robocomp/robocomp/pull/377 ) ## Contribution 2: Passing through narrow corridors