You can subscribe to this list here.
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2011 |
Jan
(4) |
Feb
(6) |
Mar
(16) |
Apr
(9) |
May
(6) |
Jun
(2) |
Jul
|
Aug
(14) |
Sep
(10) |
Oct
(12) |
Nov
(15) |
Dec
(3) |
2012 |
Jan
(15) |
Feb
(9) |
Mar
(10) |
Apr
(19) |
May
(20) |
Jun
(14) |
Jul
(1) |
Aug
(2) |
Sep
|
Oct
(3) |
Nov
(1) |
Dec
(2) |
2013 |
Jan
(13) |
Feb
(8) |
Mar
(11) |
Apr
(20) |
May
(11) |
Jun
(11) |
Jul
(12) |
Aug
(3) |
Sep
|
Oct
(7) |
Nov
(9) |
Dec
(1) |
2014 |
Jan
(1) |
Feb
(4) |
Mar
(13) |
Apr
(5) |
May
(10) |
Jun
(27) |
Jul
(17) |
Aug
|
Sep
(8) |
Oct
(12) |
Nov
(19) |
Dec
(31) |
2015 |
Jan
(21) |
Feb
(11) |
Mar
(15) |
Apr
(1) |
May
(15) |
Jun
(11) |
Jul
(23) |
Aug
(6) |
Sep
(28) |
Oct
(17) |
Nov
(18) |
Dec
(1) |
2016 |
Jan
(14) |
Feb
(42) |
Mar
(20) |
Apr
(10) |
May
(11) |
Jun
(3) |
Jul
(9) |
Aug
(6) |
Sep
(6) |
Oct
(8) |
Nov
|
Dec
(1) |
2017 |
Jan
(3) |
Feb
(1) |
Mar
(2) |
Apr
(6) |
May
(11) |
Jun
(5) |
Jul
(1) |
Aug
(1) |
Sep
(1) |
Oct
(4) |
Nov
(1) |
Dec
(8) |
2018 |
Jan
(8) |
Feb
(1) |
Mar
|
Apr
(2) |
May
(3) |
Jun
(8) |
Jul
(21) |
Aug
(7) |
Sep
(12) |
Oct
(4) |
Nov
(3) |
Dec
(2) |
2019 |
Jan
(9) |
Feb
(7) |
Mar
(5) |
Apr
(1) |
May
(4) |
Jun
(1) |
Jul
(2) |
Aug
(2) |
Sep
(2) |
Oct
(5) |
Nov
(2) |
Dec
(5) |
2020 |
Jan
(5) |
Feb
(5) |
Mar
(9) |
Apr
|
May
(2) |
Jun
(10) |
Jul
(7) |
Aug
(1) |
Sep
|
Oct
(3) |
Nov
|
Dec
(1) |
2021 |
Jan
(4) |
Feb
(5) |
Mar
(2) |
Apr
(5) |
May
(1) |
Jun
|
Jul
(2) |
Aug
(13) |
Sep
(5) |
Oct
(5) |
Nov
(1) |
Dec
(1) |
2022 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(4) |
Oct
|
Nov
(1) |
Dec
|
2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
(2) |
Dec
(1) |
2025 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Mark M. <mm...@ri...> - 2018-06-23 03:45:15
|
Hi Deepak, You might have better luck asking your MoveIt! questions on https://discourse.ros.org <https://discourse.ros.org/>. MoveIt! uses OMPL’s planners in the ompl::geometric namespace, which—as the name suggests—only perform geometric/kinematic planning and don’t consider the manipulator weight. If the arm has a payload of 150kg and MoveIt! cannot find a path for lifting up a 3kg object, I doubt that manipulator weight is the problem. There must be something else that is off about your setup. Best, Mark > On Jun 21, 2018, at 4:15 AM, Deepak <dpa...@gm...> wrote: > > Hello ompl-users, > > Sorry if this is the wrong way to raise a query in this forum. I did not find any other link to raise a question. > > I am pretty new to ROS and Robotics. I raised this same question in ROS answers forum and robotics.stackexchange.com <http://robotics.stackexchange.com/>, > > But I could not get any answers. Pardon my naiveté in this sort of question. > > Does the weight of the object to be picked by an arm manipulator, influence the trajectory/path planning by OMPL? > > If yes, could someone explain how by tweaking some settings, we can get it to plan for heavier object lifting trajectories? > > So that it can maintain the end effector pose after picking an heavy item and maintain its velocity/acceleration, so that it does not fall. > > How do I go about approaching a problem like this? Any keywords onto where to carryout my search to solve this problem, also would be of great help. > > For some context, I could successfully use the KUKA arm model from the following git link, > > https://github.com/udacity/RoboND-Kinematics-Project <https://github.com/udacity/RoboND-Kinematics-Project> > The KUKA arm is pretty powerful and the model used in simulation is capable of payloads upto 150Kg. > > However, when I tried to lift a cylidrical object weighing 3 kgs, the KUKA arm would not pick up. > > Kindly help me with any pointers. Thank you for your time in advance. > > Regards, > > Deepak > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > ompl-users mailing list > omp...@li... > https://lists.sourceforge.net/lists/listinfo/ompl-users |
From: Deepak <dpa...@gm...> - 2018-06-21 09:16:09
|
Hello ompl-users, Sorry if this is the wrong way to raise a query in this forum. I did not find any other link to raise a question. I am pretty new to ROS and Robotics. I raised this same question in ROS answers forum and robotics.stackexchange.com, But I could not get any answers. Pardon my naiveté in this sort of question. Does the weight of the object to be picked by an arm manipulator, influence the trajectory/path planning by OMPL? If yes, could someone explain how by tweaking some settings, we can get it to plan for heavier object lifting trajectories? So that it can maintain the end effector pose after picking an heavy item and maintain its velocity/acceleration, so that it does not fall. How do I go about approaching a problem like this? Any keywords onto where to carryout my search to solve this problem, also would be of great help. For some context, I could successfully use the KUKA arm model from the following git link, https://github.com/udacity/RoboND-Kinematics-Project The KUKA arm is pretty powerful and the model used in simulation is capable of payloads upto 150Kg. However, when I tried to lift a cylidrical object weighing 3 kgs, the KUKA arm would not pick up. Kindly help me with any pointers. Thank you for your time in advance. Regards, Deepak |
From: Mark M. <mm...@ri...> - 2018-06-14 03:12:49
|
Hi Anand, Informed RRT* will used the ellipsoidal heuristic for the R^2 subspace of SE(2) and rejection sampling for the SO(2) subspace. See the code in ompl/src/ompl/base/samplers/informed/src/PathLengthDirectInfSampler.cpp. This is specific to the path length optimization objective. Best, Mark > On Jun 13, 2018, at 9:53 PM, Anand <ana...@gm...> wrote: > > After reading the reference paper for Informed RRT* [https://arxiv.org/abs/1404.2334 <https://arxiv.org/abs/1404.2334>], it looks like you can sample using an ellipsoidal heuristic for Rn spaces. Is there an equivalent for SE2 spaces like the Reeds-Shepp state space? > > It wasn't immediately clear by looking at the code. |
From: Anand <ana...@gm...> - 2018-06-14 02:53:50
|
After reading the reference paper for Informed RRT* [ https://arxiv.org/abs/1404.2334], it looks like you can sample using an ellipsoidal heuristic for Rn spaces. Is there an equivalent for SE2 spaces like the Reeds-Shepp state space? It wasn't immediately clear by looking at the code. |
From: Mark M. <mm...@ri...> - 2018-05-07 16:42:06
|
Hi Luigi, Any version of omplapp is only guaranteed to work with the corresponding version of ompl. If there are problems with the installation directions, please open an issue on bitbucket (or email me). Thanks, Mark > On May 7, 2018, at 3:20 AM, pal...@cs... wrote: > > Hi all, > > Is there an easy way to install ompl-app against an existing Installation of ompl? The Installation suggested by the readme file of the github package does not work right out of the box. > > Thanks for your help. > > Best, > Luigi |
From: Rajaneesh <raj...@gm...> - 2018-05-07 09:42:07
|
In my understanding, each of them require different bindings. So we cannot reuse existing bindings Regards-Raj On Mon, May 7, 2018 at 1:50 PM, pal...@cs... < pal...@cs...> wrote: > Hi all, > > Is there an easy way to install ompl-app against an existing Installation > of ompl? The Installation suggested by the readme file of the github > package does not work right out of the box. > > Thanks for your help. > > Best, > Luigi > > ------------------------------------------------------------ > ------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > ompl-users mailing list > omp...@li... > https://lists.sourceforge.net/lists/listinfo/ompl-users > > |
From: <pal...@cs...> - 2018-05-07 08:44:45
|
Hi all, Is there an easy way to install ompl-app against an existing Installation of ompl? The Installation suggested by the readme file of the github package does not work right out of the box. Thanks for your help. Best, Luigi |
From: Guilherme A. S. P. <gpe...@uf...> - 2018-04-17 19:33:48
|
I still have the same problems... Did anyone have a similar experience before? Thanks, Guilherme Em 06/04/2018 11:22, Guilherme Augusto Silva Pereira escreveu: > Hi all, > > I'm using OMPL to plan the movement of a robot in an environment with > obstacles. The robot is a manipulator of 5 DOF, all revolute joints, > on a non-holonomic mobile base. The joints have limited values (-PI/2 > to PI/2). I'd like to use the kinodynamic planners from the library, > in special the RRT. So, based on HybridSystemPlanning.cpp example, > I've modeled the problem as follows: the state space was considered as > a compound space, like in the example. It has both SE(2) and R(5) sub > spaces. The collision avoidance was done in isStateValid function and > the states propagation was done in the propagate function. > > The algorithm is "working" so far, what means that the returned path > is in the free configuration space, and normally it ends closer to the > goal state than the initial state. However, the elapsed time is too > large in my opinion (about 30 seconds in some cases), and it ends > normally far from the goal state. I have two hypotheses about this: > maybe the default function isSatisfied and the default functions of > sampling are not good for my problem. > > I thus have some questions: > > Does isSatisfied default function take care of the topology of a > compound space in order to define a metric of distance to goal? > Does the default sampling function polarizs to somewhere or it is > always uniform sampling? > > Searching at the internet, I was able to find examples of people who > used OMPL and got excellent results in therms of performance, even for > much more complicated problems, with more than fifteen DOF using > complicated compound spaces. They spend like one or two seconds in the > planning. The HybridSystemPlanning.cpp example is very quickly as > well, spending less than four seconds in almost all the > cases. Therefore, I think I can improve the performance of my > algorithm someway, maybe tuning some parameter. I'm trying to tune the > parameters PropagationStepSize and MinMaxControlDuration to improve > the performance. Is there any other parameter that I should look as well? > > I'm using the RRT planner, but maybe other planner is better. Except > RRT, is there other kinodynamic planner that doesn't use projections > or other specific function to work? > > And the last question: I'd like to finish the algorithm when a > Lyapunov function (that is function of the configuration) is lower > than a threshold, what means the planner do not need to arrive at the > goal state. I have searched in internet and I found two possible > solutions, use a terminate condition, or use the goal region class. In > my case, I think the terminate condition would be better, but I could > not find any example of how to implement it. Can you tell me how I > implement a termination condition? > > Thanks a lot, > Guilherme > > > > -- > > Prof. Guilherme A. S. Pereira > Departamento de Engenharia Elétrica > Universidade Federal de Minas Gerais > Tel: +55 31 3409-6687 > http://www.ppgee.ufmg.br/~gpereira > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > > > _______________________________________________ > ompl-users mailing list > omp...@li... > https://lists.sourceforge.net/lists/listinfo/ompl-users -- Prof. Guilherme A. S. Pereira Departamento de Engenharia Elétrica Universidade Federal de Minas Gerais Tel: +55 31 3409-6687 http://www.ppgee.ufmg.br/~gpereira |
From: Guilherme A. S. P. <gpe...@uf...> - 2018-04-06 14:38:05
|
Hi all, I'm using OMPL to plan the movement of a robot in an environment with obstacles. The robot is a manipulator of 5 DOF, all revolute joints, on a non-holonomic mobile base. The joints have limited values (-PI/2 to PI/2). I'd like to use the kinodynamic planners from the library, in special the RRT. So, based on HybridSystemPlanning.cpp example, I've modeled the problem as follows: the state space was considered as a compound space, like in the example. It has both SE(2) and R(5) sub spaces. The collision avoidance was done in isStateValid function and the states propagation was done in the propagate function. The algorithm is "working" so far, what means that the returned path is in the free configuration space, and normally it ends closer to the goal state than the initial state. However, the elapsed time is too large in my opinion (about 30 seconds in some cases), and it ends normally far from the goal state. I have two hypotheses about this: maybe the default function isSatisfied and the default functions of sampling are not good for my problem. I thus have some questions: Does isSatisfied default function take care of the topology of a compound space in order to define a metric of distance to goal? Does the default sampling function polarizs to somewhere or it is always uniform sampling? Searching at the internet, I was able to find examples of people who used OMPL and got excellent results in therms of performance, even for much more complicated problems, with more than fifteen DOF using complicated compound spaces. They spend like one or two seconds in the planning. The HybridSystemPlanning.cpp example is very quickly as well, spending less than four seconds in almost all the cases. Therefore, I think I can improve the performance of my algorithm someway, maybe tuning some parameter. I'm trying to tune the parameters PropagationStepSize and MinMaxControlDuration to improve the performance. Is there any other parameter that I should look as well? I'm using the RRT planner, but maybe other planner is better. Except RRT, is there other kinodynamic planner that doesn't use projections or other specific function to work? And the last question: I'd like to finish the algorithm when a Lyapunov function (that is function of the configuration) is lower than a threshold, what means the planner do not need to arrive at the goal state. I have searched in internet and I found two possible solutions, use a terminate condition, or use the goal region class. In my case, I think the terminate condition would be better, but I could not find any example of how to implement it. Can you tell me how I implement a termination condition? Thanks a lot, Guilherme -- Prof. Guilherme A. S. Pereira Departamento de Engenharia Elétrica Universidade Federal de Minas Gerais Tel: +55 31 3409-6687 http://www.ppgee.ufmg.br/~gpereira |
From: Luigi P. <pal...@in...> - 2018-02-23 19:34:48
|
Hi all, still a couple of questions that I guess I could list under this topic. When generating plots from the benchmarks databases using the ompl_benchmark_statistics.py script I do encounter in strange cost trades: some of the trends are increasing for some periods (see attached picture). 1. Is this expected? Could be the case that this is due to some initial solutions of high cost found very late in the planning process? 2. Would be it possible to use a logarithmic scale for this plots? Thanks for the help! Best, Luigi > ompl::tools::Benchmark b(simpleSetup, “myBenchmark"); > b.addExperimentParameter(“startX", “REAL", std::to_string(startX)); > b.addExperimentParameter(“startY", “REAL", std::to_string(startY)); > … > > PlannerArena has some support for parametrized benchmarks. Give it a try and > let me know if you need a different kind of visualization of the result. > > Mark > > > >> On Jan 18, 2018, at 7:52 AM, pal...@cs... >> <mailto:pal...@cs...> wrote: >> >> Hi all, >> >> One question regarding the ompl::tools::benchmark tool. I would like to have >> a benchmark where I could vary the start and goal positions. Is that >> possible? I see that we could vary the planner parameters, but usually start >> and goals are not considered as such. Any idea on how to do it? >> >> Thanks! >> >> Best Regards, >> >> Luigi > > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > > > _______________________________________________ > ompl-users mailing list > omp...@li... > https://lists.sourceforge.net/lists/listinfo/ompl-users -- Luigi Palmieri, M.Sc. in Engineering in Computer Science PhD Candidate at Social Robotics Laboratory Albert-Ludwigs-Universität Freiburg skype: mr-luigi-palmieri Home Page: http://www.informatik.uni-freiburg.de/~palmieri/ |
From: Filippo B. <fil...@gm...> - 2018-01-22 15:57:19
|
hi mark, thanks for solving my issue and also for providing an example. in my planning problem i need a compound control space composed by a R^n real vector control space and a discrete control space it's a model for a polygonal prism being pushed from only one side at once (the discrete part is the side) thanks again Filippo Il giorno lun 22 gen 2018 alle ore 16:29 Mark Moll <mm...@ri...> ha scritto: > Hi Filippo, > > This was an oversight. I pushed a commit to Bitbucket and GitHub that > fixes this: > > https://bitbucket.org/ompl/ompl/commits/7334815d9fd2a0dae4c7619f7dbbe7e671ed8936 > (You will have to regenerate your python bindings.) > > I have attached a modified version of RigidBodyPlanning.py that shows how > you can use this. It changes the control space from R^2 to a > CompoundControlSpace with two copies of R. > > I am just curious, what kind of control space do you have that cannot be > handled by RealVectorControlSpace? > > Best, > > Mark > > > > On Jan 19, 2018, at 3:19 AM, Filippo Bertoncelli < > fil...@gm...> wrote: > > hello everybody, is it possible to use a compound control space using > python? > i've tried but it seems that i can't access the control value in the > propagate function (in the demos compound state objects are accessed using > the as() method, but "as" is a keyword in python and trying to use it as a > method creates a syntax error) is there a way around this problem in python > or i have to switch to c++? > Thanks > Filippo > > > |
From: Mark M. <mm...@ri...> - 2018-01-22 15:29:43
|
Hi Filippo, This was an oversight. I pushed a commit to Bitbucket and GitHub that fixes this: https://bitbucket.org/ompl/ompl/commits/7334815d9fd2a0dae4c7619f7dbbe7e671ed8936 (You will have to regenerate your python bindings.) I have attached a modified version of RigidBodyPlanning.py that shows how you can use this. It changes the control space from R^2 to a CompoundControlSpace with two copies of R. I am just curious, what kind of control space do you have that cannot be handled by RealVectorControlSpace? Best, Mark > On Jan 19, 2018, at 3:19 AM, Filippo Bertoncelli <fil...@gm...> wrote: > > hello everybody, is it possible to use a compound control space using python? > i've tried but it seems that i can't access the control value in the propagate function (in the demos compound state objects are accessed using the as() method, but "as" is a keyword in python and trying to use it as a method creates a syntax error) is there a way around this problem in python or i have to switch to c++? > Thanks > Filippo |
From: Luigi P. <pal...@in...> - 2018-01-19 17:49:50
|
Hi Mark, thanks! Luigi On 01/18/2018 05:23 PM, Mark Moll wrote: > Hi Luigi, > > For this you’d use the ompl::tools::Benchmark::addExperimentParameter > <http://ompl.kavrakilab.org/classompl_1_1tools_1_1Benchmark.html#afab48f173edc785ee005301642b1afb1> method > for that: > > // run a separate benchmark for all start and goal positions > ompl::tools::Benchmark b(simpleSetup, “myBenchmark"); > b.addExperimentParameter(“startX", “REAL", std::to_string(startX)); > b.addExperimentParameter(“startY", “REAL", std::to_string(startY)); > … > > PlannerArena has some support for parametrized benchmarks. Give it a try and > let me know if you need a different kind of visualization of the result. > > Mark > > > >> On Jan 18, 2018, at 7:52 AM, pal...@cs... >> <mailto:pal...@cs...> wrote: >> >> Hi all, >> >> One question regarding the ompl::tools::benchmark tool. I would like to have >> a benchmark where I could vary the start and goal positions. Is that >> possible? I see that we could vary the planner parameters, but usually start >> and goals are not considered as such. Any idea on how to do it? >> >> Thanks! >> >> Best Regards, >> >> Luigi > > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > > > _______________________________________________ > ompl-users mailing list > omp...@li... > https://lists.sourceforge.net/lists/listinfo/ompl-users -- Luigi Palmieri, M.Sc. in Engineering in Computer Science PhD Candidate at Social Robotics Laboratory Albert-Ludwigs-Universität Freiburg skype: mr-luigi-palmieri Home Page: http://www.informatik.uni-freiburg.de/~palmieri/ |
From: Filippo B. <fil...@gm...> - 2018-01-19 09:20:08
|
hello everybody, is it possible to use a compound control space using python? i've tried but it seems that i can't access the control value in the propagate function (in the demos compound state objects are accessed using the as() method, but "as" is a keyword in python and trying to use it as a method creates a syntax error) is there a way around this problem in python or i have to switch to c++? Thanks Filippo |
From: Mark M. <mm...@ri...> - 2018-01-18 16:24:08
|
Hi Luigi, For this you’d use the ompl::tools::Benchmark::addExperimentParameter <http://ompl.kavrakilab.org/classompl_1_1tools_1_1Benchmark.html#afab48f173edc785ee005301642b1afb1> method for that: // run a separate benchmark for all start and goal positions ompl::tools::Benchmark b(simpleSetup, “myBenchmark"); b.addExperimentParameter(“startX", “REAL", std::to_string(startX)); b.addExperimentParameter(“startY", “REAL", std::to_string(startY)); … PlannerArena has some support for parametrized benchmarks. Give it a try and let me know if you need a different kind of visualization of the result. Mark > On Jan 18, 2018, at 7:52 AM, pal...@cs... wrote: > > Hi all, > > One question regarding the ompl::tools::benchmark tool. I would like to have a benchmark where I could vary the start and goal positions. Is that possible? I see that we could vary the planner parameters, but usually start and goals are not considered as such. Any idea on how to do it? > > Thanks! > > Best Regards, > > Luigi |
From: <pal...@cs...> - 2018-01-18 15:09:51
|
Hi all, One question regarding the ompl::tools::benchmark tool. I would like to have a benchmark where I could vary the start and goal positions. Is that possible? I see that we could vary the planner parameters, but usually start and goals are not considered as such. Any idea on how to do it? Thanks! Best Regards, Luigi |
From: Mark M. <mm...@ri...> - 2018-01-05 17:00:05
|
Hi Andreas, You might also want to explore the Thunder planning framework, which loads/saves sparse roadmaps and lazily re-evaluates nodes and edges. See the demo in ompl/demos/ThunderLightning.cpp and the corresponding paper <https://www.cs.rice.edu/~mmoll/publications/coleman2015experience-based-planning-with-sparse.pdf>. Mark > On Jan 2, 2018, at 4:51 PM, ahofmann <an...@do...> wrote: > > > Hi Mark, > > I am currently interested only in using the PRM type planners. I would like to sample once to generate a roadmap that > avoids static obstacles and self collisions. I would then like to use this roadmap henceforth, but check at planning > time if any nodes or edges have become occluded by dynamic obstacles. It seems like the main thing I need for this is > the ability to save the roadmap after it's been generated (once), and then the ability to load it in future processes. > > It looks like the demo in PlannerData.cpp does something like this. I'll investigate this further. > > Andreas > > > > On 2017-12-31 10:55, Mark Moll wrote: >> Hi Andreas, >> It may be possible to load planner data in the GUI, but this would >> then only be used for visualization purposes. There is currently no >> way to initialize a planner with a saved tree/roadmap. Doing this is >> non-trivial. The internal planner representation of this data is not >> standardized. The exported planner data should contain *most* of the >> information needed to recreate it, but not necessarily all (for >> example, coverage estimates that are used by ProjEST and KPIECE are >> not saved). >> If you are thinking of using this in the context of replanning in >> dynamic / uncertain environments, you could also consider writing a >> special sampler class that uses planner data from a previous planning >> cycle to feed states to the current planning cycle (followed by >> generating random states if all states from the planner data have been >> sampled). >> Mark >>> On Dec 22, 2017, at 1:18 PM, ahofmann <an...@do...> wrote: >>> Hi, >>> I recently installed OMPLapp (on Ubuntu 16.04). I noticed that it >>> is possible, from the menu, >>> to save a PRM generated roadmap, but it does not seem to be possible >>> to load one. >>> I checked the code in ompl_app.py, and confirmed that this is the >>> case; there is >>> a function savePlannerData, but no corresponding loadPlannerData. >>> I also checked PRM.h, and it seems like there is an API for >>> accessing the roadmap graph >>> (g_) but not for setting it. >>> Are there any plans to provide a means for loading a saved roadmap? >>> Regards, >>> Andreas Hofmann |
From: ahofmann <an...@do...> - 2018-01-02 23:11:35
|
Hi Mark, I am currently interested only in using the PRM type planners. I would like to sample once to generate a roadmap that avoids static obstacles and self collisions. I would then like to use this roadmap henceforth, but check at planning time if any nodes or edges have become occluded by dynamic obstacles. It seems like the main thing I need for this is the ability to save the roadmap after it's been generated (once), and then the ability to load it in future processes. It looks like the demo in PlannerData.cpp does something like this. I'll investigate this further. Andreas On 2017-12-31 10:55, Mark Moll wrote: > Hi Andreas, > > It may be possible to load planner data in the GUI, but this would > then only be used for visualization purposes. There is currently no > way to initialize a planner with a saved tree/roadmap. Doing this is > non-trivial. The internal planner representation of this data is not > standardized. The exported planner data should contain *most* of the > information needed to recreate it, but not necessarily all (for > example, coverage estimates that are used by ProjEST and KPIECE are > not saved). > > If you are thinking of using this in the context of replanning in > dynamic / uncertain environments, you could also consider writing a > special sampler class that uses planner data from a previous planning > cycle to feed states to the current planning cycle (followed by > generating random states if all states from the planner data have been > sampled). > > Mark > >> On Dec 22, 2017, at 1:18 PM, ahofmann <an...@do...> wrote: >> >> Hi, >> >> I recently installed OMPLapp (on Ubuntu 16.04). I noticed that it >> is possible, from the menu, >> to save a PRM generated roadmap, but it does not seem to be possible >> to load one. >> I checked the code in ompl_app.py, and confirmed that this is the >> case; there is >> a function savePlannerData, but no corresponding loadPlannerData. >> I also checked PRM.h, and it seems like there is an API for >> accessing the roadmap graph >> (g_) but not for setting it. >> >> Are there any plans to provide a means for loading a saved roadmap? >> >> Regards, >> Andreas Hofmann |
From: Mark M. <mm...@ri...> - 2017-12-31 15:55:39
|
Hi Andreas, It may be possible to load planner data in the GUI, but this would then only be used for visualization purposes. There is currently no way to initialize a planner with a saved tree/roadmap. Doing this is non-trivial. The internal planner representation of this data is not standardized. The exported planner data should contain *most* of the information needed to recreate it, but not necessarily all (for example, coverage estimates that are used by ProjEST and KPIECE are not saved). If you are thinking of using this in the context of replanning in dynamic / uncertain environments, you could also consider writing a special sampler class that uses planner data from a previous planning cycle to feed states to the current planning cycle (followed by generating random states if all states from the planner data have been sampled). Mark > On Dec 22, 2017, at 1:18 PM, ahofmann <an...@do...> wrote: > > > Hi, > > I recently installed OMPLapp (on Ubuntu 16.04). I noticed that it is possible, from the menu, > to save a PRM generated roadmap, but it does not seem to be possible to load one. > I checked the code in ompl_app.py, and confirmed that this is the case; there is > a function savePlannerData, but no corresponding loadPlannerData. > I also checked PRM.h, and it seems like there is an API for accessing the roadmap graph > (g_) but not for setting it. > > Are there any plans to provide a means for loading a saved roadmap? > > Regards, > Andreas Hofmann |
From: ahofmann <an...@do...> - 2017-12-22 20:16:02
|
Hi, I recently installed OMPLapp (on Ubuntu 16.04). I noticed that it is possible, from the menu, to save a PRM generated roadmap, but it does not seem to be possible to load one. I checked the code in ompl_app.py, and confirmed that this is the case; there is a function savePlannerData, but no corresponding loadPlannerData. I also checked PRM.h, and it seems like there is an API for accessing the roadmap graph (g_) but not for setting it. Are there any plans to provide a means for loading a saved roadmap? Regards, Andreas Hofmann |
From: Mark M. <mm...@ri...> - 2017-12-17 17:43:07
|
Hi Luca, Whether saving a path vs. saving a tree is better depends on how much the environment is changing, how expensive is to re-check states for collisions, etc. There is no general rule for this. If recomputing the cost of a state is expensive, you could consider some sort of caching / memoization [1]. Mark [1] Something along the lines of https://stackoverflow.com/questions/17805969/writing-universal-memoization-function-in-c11 <https://stackoverflow.com/questions/17805969/writing-universal-memoization-function-in-c11> perhaps. > On Dec 17, 2017, at 3:32 AM, bar...@vi... wrote: > > Hello Mark, > > > > thanks for the hint and sorry for the late reply. > > So you are suggesting to save the path rather than the tree, right? My goal is to implement a planner that returns a solution as fast as possible. If I follow your suggestion, I will loose information, such the costs, parents and children of the nodes of the tree. I have been trying to save the overall tree to avoid recomputing these things again. > > Do you think that a RRT* algorithm with a modified sampler will be faster than the approach I described? Won't the planner loose too much time recomputing the information about each node? > > In any case, I will try to implement your idea. I'll get back to you as soon as I have something that works. > > > > Thanks again for the help! > > Luca > >> Il 16 dicembre 2017 alle 0.35 Mark Moll <mm...@ri...> ha scritto: >> >> Hi Luca, >> >> The bookkeeping for re-checking all states generated during a previous planning cycle can be quite expensive. It might be better to preserve just the remaining states of the path that the robot has been executing. The states on this path can be stored inside a new a StateSampler-derived class. This new class will return these states the first number of calls to sample(). Subsequent calls to sample() will return uniform samples as usual. You no need to set a SamplerAllocator <http://ompl.kavrakilab.org/classompl_1_1base_1_1StateSpace.html#aa88e8a85586b93866ef3b2a6fb31c114> to specify a function that will return an instance of this sampler. >> >> Mark >> >> >> >>> On Dec 15, 2017, at 5:22 AM, bartolomei-luca--- via ompl-users <omp...@li... <mailto:omp...@li...>> wrote: >>> >>> Hello everyone! >>> >>> I am trying to implement a path planning algorithm for a robot that navigates in an unknown environment. The concept is very simple: plan, move and if an obstacle is detected, then re-plan. Everything is implemented in ROS. >>> >>> In order to do so, I am trying to modify the RRT* algorithm. Basically, I want to re-use the existing tree and modify it according to the new incoming information. This issue has already been discussed in the OMPL mailing list, but I would like to explain to you guys my approach. It is different from all the others I have seen. >>> >>> I want to create a "storage" for the current tree. Every time the planner is called: >>> >>> 1) Read storage variable >>> >>> 2) Upload storage in the nn_ variable of the planner >>> >>> 3) Plan >>> >>> 4) Save the new tree in the storage variable >>> >>> Unfortunately it is not working properly. Now I will get into more detail (code-wise) . I have added some marks where the problems happen. They are explained at the bottom of the email. >>> >>> >>> >>> At the moment, I am saving the tree in a vector --> std::vector<Motion*> tree_storage >>> >>> I have added a temporary storage in the RRT* planner --> std::vector<Motion*>* temp_tree_storage (NOTE: a pointer) >>> >>> temp_tree_storage is needed in order to save the information and "upload" them in the variable nn_ of the planner. I have added the following method in order to save/update the tree: >>> >>> void ompl::geometric::RRTstarModified::setTree(std::vector<Motion*>* currentTree) // NOTE: get a pointer as input >>> { >>> >>> temp_tree_storage = currentTree; // set the address where to save the new tree --> problem:(1) >>> >>> for(int i=0; i<currentTree->size(); ++i) { >>> >>> nn_->add((*currentTree)[i]); // upload the new tree in the nn_ variable -----> problem:(2) >>> >>> } >>> >>> } >>> >>> The "solve" method has also been modified in order to save the new tree: >>> >>> ompl::base::PlannerStatus ompl::geometric::RRTstarModified::solve(const base::PlannerTerminationCondition &ptc) >>> { >>> >>> // Solver stuff .... >>> >>> ....... >>> >>> /// Before the "return" >>> >>> temp_tree_storage ->clear(); >>> std::vector<Motion*> list; >>> nn_->list(list); // get the new tree >>> for(int i=0; i<list.size(); ++i) >>> temp_tree_storage->push_back(list[i]); >>> >>> } >>> >>> Since the information on the space are changing, I am creating a new planner at every "iteration" (i.e. every time a replanning is needed). This happens in the main class: >>> >>> >>> >>> ompl::base::PlannerPtr MyPlannerAlgorithm::allocateGlobalPlanner(const ompl::base::SpaceInformationPtr &si) >>> { >>> ompl::geometric::RRTstarModified *rrt_star_planner {new ompl::geometric::RRTstarModified(si)}; >>> rrt_star_planner->setTree(¤tTree); // The method described above >>> ompl::base::PlannerPtr planner(rrt_star_planner); >>> >>> return planner; >>> } >>> >>> There are 2 main problems: >>> >>> (1) The children of some of the motions go crazy -> the information is not saved properly and basically I am reading/saving trash that will make my code crash. >>> >>> (2) When I use: nn_->add((*currentTree)[i]); the code crashes. I have made sure that nn_.reset and nn_->setDistanceFunction before the nn_->add method is called. >>> >>> >>> >>> I hope I have explained what's going on clearly. Do you have any suggestion on how to solve the problem? Or do you have any better strategy? >>> >>> >>> >>> Thanks a lot for the help! >>> >>> Have a nice day, >>> Luca >>> >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Check out the vibrant tech community on one of the world's most >>> engaging tech sites, Slashdot.org <http://slashdot.org/>! http://sdm.link/slashdot_______________________________________________ <http://sdm.link/slashdot_______________________________________________> >>> ompl-users mailing list >>> omp...@li... <mailto:omp...@li...> >>> https://lists.sourceforge.net/lists/listinfo/ompl-users >> |
From: <bar...@vi...> - 2017-12-17 09:32:38
|
Hello Mark, thanks for the hint and sorry for the late reply. So you are suggesting to save the path rather than the tree, right? My goal is to implement a planner that returns a solution as fast as possible. If I follow your suggestion, I will loose information, such the costs, parents and children of the nodes of the tree. I have been trying to save the overall tree to avoid recomputing these things again. Do you think that a RRT* algorithm with a modified sampler will be faster than the approach I described? Won't the planner loose too much time recomputing the information about each node? In any case, I will try to implement your idea. I'll get back to you as soon as I have something that works. Thanks again for the help! Luca > Il 16 dicembre 2017 alle 0.35 Mark Moll <mm...@ri...> ha scritto: > > Hi Luca, > > The bookkeeping for re-checking all states generated during a previous planning cycle can be quite expensive. It might be better to preserve just the remaining states of the path that the robot has been executing. The states on this path can be stored inside a new a StateSampler-derived class. This new class will return these states the first number of calls to sample(). Subsequent calls to sample() will return uniform samples as usual. You no need to set a SamplerAllocator http://ompl.kavrakilab.org/classompl_1_1base_1_1StateSpace.html#aa88e8a85586b93866ef3b2a6fb31c114 to specify a function that will return an instance of this sampler. > > Mark > > > > > > > On Dec 15, 2017, at 5:22 AM, bartolomei-luca--- via ompl-users <omp...@li... mailto:omp...@li... > wrote: > > > > > > Hello everyone! > > > > I am trying to implement a path planning algorithm for a robot that navigates in an unknown environment. The concept is very simple: plan, move and if an obstacle is detected, then re-plan. Everything is implemented in ROS. > > > > In order to do so, I am trying to modify the RRT* algorithm. Basically, I want to re-use the existing tree and modify it according to the new incoming information. This issue has already been discussed in the OMPL mailing list, but I would like to explain to you guys my approach. It is different from all the others I have seen. > > > > I want to create a "storage" for the current tree. Every time the planner is called: > > > > 1) Read storage variable > > > > 2) Upload storage in the nn_ variable of the planner > > > > 3) Plan > > > > 4) Save the new tree in the storage variable > > > > Unfortunately it is not working properly. Now I will get into more detail (code-wise) . I have added some marks where the problems happen. They are explained at the bottom of the email. > > > > > > At the moment, I am saving the tree in a vector --> std::vector<Motion*> tree_storage > > > > I have added a temporary storage in the RRT* planner --> std::vector<Motion*>* temp_tree_storage (NOTE: a pointer) > > > > temp_tree_storage is needed in order to save the information and "upload" them in the variable nn_ of the planner. I have added the following method in order to save/update the tree: > > > > void ompl::geometric::RRTstarModified::setTree(std::vector<Motion*>* currentTree) // NOTE: get a pointer as input > > { > > > > temp_tree_storage = currentTree; // set the address where to save the new tree --> problem:(1) > > > > for(int i=0; i<currentTree->size(); ++i) { > > > > nn_->add((*currentTree)[i]); // upload the new tree in the nn_ variable -----> problem:(2) > > > > } > > > > } > > > > The "solve" method has also been modified in order to save the new tree: > > > > ompl::base::PlannerStatus ompl::geometric::RRTstarModified::solve(const base::PlannerTerminationCondition &ptc) > > { > > > > // Solver stuff .... > > > > ....... > > > > /// Before the "return" > > > > temp_tree_storage ->clear(); > > std::vector<Motion*> list; > > nn_->list(list); // get the new tree > > for(int i=0; i<list.size(); ++i) > > temp_tree_storage->push_back(list[i]); > > > > } > > > > Since the information on the space are changing, I am creating a new planner at every "iteration" (i.e. every time a replanning is needed). This happens in the main class: > > > > > > ompl::base::PlannerPtr MyPlannerAlgorithm::allocateGlobalPlanner(const ompl::base::SpaceInformationPtr &si) > > { > > ompl::geometric::RRTstarModified *rrt_star_planner {new ompl::geometric::RRTstarModified(si)}; > > rrt_star_planner->setTree(¤tTree); // The method described above > > ompl::base::PlannerPtr planner(rrt_star_planner); > > > > return planner; > > } > > > > There are 2 main problems: > > > > (1) The children of some of the motions go crazy -> the information is not saved properly and basically I am reading/saving trash that will make my code crash. > > > > (2) When I use: nn_->add((*currentTree)[i]); the code crashes. I have made sure that nn_.reset and nn_->setDistanceFunction before the nn_->add method is called. > > > > > > I hope I have explained what's going on clearly. Do you have any suggestion on how to solve the problem? Or do you have any better strategy? > > > > > > Thanks a lot for the help! > > > > Have a nice day, > > Luca > > > > > > > > ------------------------------------------------------------------------------ > > Check out the vibrant tech community on one of the world's most > > engaging tech sites,http://Slashdot.org ! http://sdm.link/slashdot_______________________________________________ > > ompl-users mailing list > > omp...@li... mailto:omp...@li... > > https://lists.sourceforge.net/lists/listinfo/ompl-users > > > > > > |
From: Mark M. <mm...@ri...> - 2017-12-15 23:35:28
|
Hi Luca, The bookkeeping for re-checking all states generated during a previous planning cycle can be quite expensive. It might be better to preserve just the remaining states of the path that the robot has been executing. The states on this path can be stored inside a new a StateSampler-derived class. This new class will return these states the first number of calls to sample(). Subsequent calls to sample() will return uniform samples as usual. You no need to set a SamplerAllocator <http://ompl.kavrakilab.org/classompl_1_1base_1_1StateSpace.html#aa88e8a85586b93866ef3b2a6fb31c114> to specify a function that will return an instance of this sampler. Mark > On Dec 15, 2017, at 5:22 AM, bartolomei-luca--- via ompl-users <omp...@li...> wrote: > > Hello everyone! > > I am trying to implement a path planning algorithm for a robot that navigates in an unknown environment. The concept is very simple: plan, move and if an obstacle is detected, then re-plan. Everything is implemented in ROS. > > In order to do so, I am trying to modify the RRT* algorithm. Basically, I want to re-use the existing tree and modify it according to the new incoming information. This issue has already been discussed in the OMPL mailing list, but I would like to explain to you guys my approach. It is different from all the others I have seen. > > I want to create a "storage" for the current tree. Every time the planner is called: > > 1) Read storage variable > > 2) Upload storage in the nn_ variable of the planner > > 3) Plan > > 4) Save the new tree in the storage variable > > Unfortunately it is not working properly. Now I will get into more detail (code-wise) . I have added some marks where the problems happen. They are explained at the bottom of the email. > > > > At the moment, I am saving the tree in a vector --> std::vector<Motion*> tree_storage > > I have added a temporary storage in the RRT* planner --> std::vector<Motion*>* temp_tree_storage (NOTE: a pointer) > > temp_tree_storage is needed in order to save the information and "upload" them in the variable nn_ of the planner. I have added the following method in order to save/update the tree: > > void ompl::geometric::RRTstarModified::setTree(std::vector<Motion*>* currentTree) // NOTE: get a pointer as input > { > > temp_tree_storage = currentTree; // set the address where to save the new tree --> problem:(1) > > for(int i=0; i<currentTree->size(); ++i) { > > nn_->add((*currentTree)[i]); // upload the new tree in the nn_ variable -----> problem:(2) > > } > > } > > The "solve" method has also been modified in order to save the new tree: > > ompl::base::PlannerStatus ompl::geometric::RRTstarModified::solve(const base::PlannerTerminationCondition &ptc) > { > > // Solver stuff .... > > ....... > > /// Before the "return" > > temp_tree_storage ->clear(); > std::vector<Motion*> list; > nn_->list(list); // get the new tree > for(int i=0; i<list.size(); ++i) > temp_tree_storage->push_back(list[i]); > > } > > Since the information on the space are changing, I am creating a new planner at every "iteration" (i.e. every time a replanning is needed). This happens in the main class: > > > > ompl::base::PlannerPtr MyPlannerAlgorithm::allocateGlobalPlanner(const ompl::base::SpaceInformationPtr &si) > { > ompl::geometric::RRTstarModified *rrt_star_planner {new ompl::geometric::RRTstarModified(si)}; > rrt_star_planner->setTree(¤tTree); // The method described above > ompl::base::PlannerPtr planner(rrt_star_planner); > > return planner; > } > > There are 2 main problems: > > (1) The children of some of the motions go crazy -> the information is not saved properly and basically I am reading/saving trash that will make my code crash. > > (2) When I use: nn_->add((*currentTree)[i]); the code crashes. I have made sure that nn_.reset and nn_->setDistanceFunction before the nn_->add method is called. > > > > I hope I have explained what's going on clearly. Do you have any suggestion on how to solve the problem? Or do you have any better strategy? > > > > Thanks a lot for the help! > > Have a nice day, > Luca > > > > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > ompl-users mailing list > omp...@li... > https://lists.sourceforge.net/lists/listinfo/ompl-users |
From: <bar...@vi...> - 2017-12-15 11:22:26
|
Hello everyone! I am trying to implement a path planning algorithm for a robot that navigates in an unknown environment. The concept is very simple: plan, move and if an obstacle is detected, then re-plan. Everything is implemented in ROS. In order to do so, I am trying to modify the RRT* algorithm. Basically, I want to re-use the existing tree and modify it according to the new incoming information. This issue has already been discussed in the OMPL mailing list, but I would like to explain to you guys my approach. It is different from all the others I have seen. I want to create a "storage" for the current tree. Every time the planner is called: 1) Read storage variable 2) Upload storage in the nn_ variable of the planner 3) Plan 4) Save the new tree in the storage variable Unfortunately it is not working properly. Now I will get into more detail (code-wise) . I have added some marks where the problems happen. They are explained at the bottom of the email. At the moment, I am saving the tree in a vector --> std::vector<Motion*> tree_storage I have added a temporary storage in the RRT* planner --> std::vector<Motion*>* temp_tree_storage (NOTE: a pointer) temp_tree_storage is needed in order to save the information and "upload" them in the variable nn_ of the planner. I have added the following method in order to save/update the tree: void ompl::geometric::RRTstarModified::setTree(std::vector<Motion*>* currentTree) // NOTE: get a pointer as input { temp_tree_storage = currentTree; // set the address where to save the new tree --> problem:(1) for(int i=0; i<currentTree->size(); ++i) { nn_->add((*currentTree)[i]); // upload the new tree in the nn_ variable -----> problem:(2) } } The "solve" method has also been modified in order to save the new tree: ompl::base::PlannerStatus ompl::geometric::RRTstarModified::solve(const base::PlannerTerminationCondition &ptc) { // Solver stuff .... ....... /// Before the "return" temp_tree_storage ->clear(); std::vector<Motion*> list; nn_->list(list); // get the new tree for(int i=0; i<list.size(); ++i) temp_tree_storage->push_back(list[i]); } Since the information on the space are changing, I am creating a new planner at every "iteration" (i.e. every time a replanning is needed). This happens in the main class: ompl::base::PlannerPtr MyPlannerAlgorithm::allocateGlobalPlanner(const ompl::base::SpaceInformationPtr &si) { ompl::geometric::RRTstarModified *rrt_star_planner {new ompl::geometric::RRTstarModified(si)}; rrt_star_planner->setTree(¤tTree); // The method described above ompl::base::PlannerPtr planner(rrt_star_planner); return planner; } There are 2 main problems: (1) The children of some of the motions go crazy -> the information is not saved properly and basically I am reading/saving trash that will make my code crash. (2) When I use: nn_->add((*currentTree)[i]); the code crashes. I have made sure that nn_.reset and nn_->setDistanceFunction before the nn_->add method is called. I hope I have explained what's going on clearly. Do you have any suggestion on how to solve the problem? Or do you have any better strategy? Thanks a lot for the help! Have a nice day, Luca |
From: Mark M. <mm...@ri...> - 2017-12-08 17:46:52
|
Hi Henry, Most of the kinodynamic planning algorithms in OMPL don’t give any optimality guarantees. SST is currently the only one that offers asymptotic near optimality: the more time you give it, the closer it will get to the optimal path (within an approximation factor). Please give that planner a try with a generous time limit and let me know if that works any better. Also note that the default sampler for kinodynamic planning is just sampling uniformly random controls. For any specific system you can design a better sampler that, given two states, will generate a control that will drive the system from one state towards the other. If you can do this for your system, then the other planners in OMPL should perform much more reasonable paths. Mark > On Dec 7, 2017, at 5:12 PM, Henry Tonoyan <he...@ot...> wrote: > > Hi, > > I'm getting very poor results while attempting to use OMPL for a basic autonomous robot with car-like steering. I've installed and used the OMPL app gui and set up a trivial scenario. Screenshots are linked to below. Is there anything I can do to improve the quality of the plans? I was expecting a plan with 2 or 3 turns but instead the robot seems to wander around aimlessly until it hits the goal. I've also tried using all the different planners available in the drop-down menu in the GUI with similar results. > > Screenshots here - https://imgur.com/a/KqglH <https://imgur.com/a/KqglH> > > Any suggestions will be greatly appreciated. > > Thanks! |