- Apr 12, 2022
-
-
Le Quang Anh authored
-
- Apr 04, 2022
-
-
Le Quang Anh authored
-
Le Quang Anh authored
-
Le Quang Anh authored
The graph has loop edge for every state (node), which can be used to connect init and goal config directly if they are both in the same state.
-
- Apr 01, 2022
-
-
Florent Lamiraux authored
Fix bug in code for mask
-
- Mar 31, 2022
-
-
Le Quang Anh authored
These errors are shown when compiled in debug mode.
-
- Mar 30, 2022
-
-
Le Quang Anh authored
Information about all the nodes in the constraint graph would be useful for debugging, eg when checking if the constraint graph is properly constructed.
-
Le Quang Anh authored
Previously, there are multiple versions of the same function, to cater for two cases: when goal is defined as a configuration, and when when goal is defined as a set of constraints. This duplication is not desirable, as we need to make changes in multiple places if we want to make a small change in a function. This commit removes the duplication by merging the functions together and adding checks within the new functions to cater for the two cases. Some modifications are needed for analyseOptimizationProblem when goal is given as a configuration. So far we have made a few, but there may be more.
-
- Mar 28, 2022
-
-
Le Quang Anh authored
BUG: if a certain transition list succeeds to give a configuration list for the first time, and fails for the second time, a new transition list will be considered, but skipColAnalysis is NOT reset. This is now fixed by using the direct comparison with nTryConfigList_ instead of using an additional data member.
-
Le Quang Anh authored
Even though bad solve statuses are usual because sometimes it is hard to solve for the waypoint, there could be cases where it is impossible to solve for a waypoint for a certain transition list (although we try to ensure that the solver should have a positive probability of solving it, by analysing the optimization problem in an earlier step). Adding a threshold to it would ensure that the solving step does not take an exponential time to decide that a transition list is not suitable.
-
- Mar 24, 2022
-
-
Le Quang Anh authored
Previously, `solveOptimizationProblem()` sometimes returns configuration list that has collision in at least one configuration. This was possibly because the collision validation is not working properly. Fixed by using the new collision validation provided by hpp::core. Some refactoring is also done to make the return of the function a bit clearer (instead of simple int, use enum).
-
Le Quang Anh authored
Make graph search data part of the path planner object, so that we don't have to search the graph from scratch everytime we want to compute a new list of configurations.
-
- Mar 21, 2022
-
-
Le Quang Anh authored
Remove nested if and add more comments to explain GraphSearchData
-
- Mar 18, 2022
-
-
Le Quang Anh authored
-
Le Quang Anh authored
From the list of goal constraints, we can find a list of states that contain the maximum number of goal constraints. We choose to compute only state sequences that end in a state that can potentially be a goal state. However, future work needs to assess/prove that this heuristic covers all the possible goal states.
-
- Mar 17, 2022
-
-
Le Quang Anh authored
Previously the code has segmentation fault during one of the solutions (not every one). This was because when an item is inserted into the deque, iterators are invalidated. Incrementing the iterator causes undefined behavior, which somehow worked until that point in the program but not afterwards. We have changed to use index instead of iterator on the deque.
-
Le Quang Anh authored
When goal is defined as set of constraints, every state sequence is a possible solution. The current implementation grows the list of possible state sequences faster than they are attempted: for every time we add all neighbors of the front node to queue, we only try out one sequences. This could be too space consuming if the graph has large branching factor.
-
Le Quang Anh authored
Non-static data members should be initialized in the order they were declared in the class definition. For good practice, we should keep all the data members in good order.
-
Le Quang Anh authored
-
- Mar 16, 2022
-
-
Le Quang Anh authored
Before adding another constraint to a solver, check if it already has the stricter version of the constraint. `constraint/hold` is stricter than `constraint` and stricter than `constraint/complement`.
-
- Mar 07, 2022
-
-
Le Quang Anh authored
The expected behavior of solveOptimizationProblem () function is that, if it manages to compute configurations for all waypoints, it will return that sequence of configurations. In case when it fails, it should return the longest sequence of valid configurations. The previous implementation saves each configuration computed, even if it is invalid. Also, when backtracking to a previous waypoint, the new points computed will overwrite some of the waypoint in the longest sequence. So indeed, the final sequence kept is not valid, and not consistent (not generated in successful consecutive solves). This has now been fixed by saving the longest sequence of valid configurations in a separate variable, and only update it when a longer sequence is found.
-
- Mar 03, 2022
-
-
Le Quang Anh authored
For the parametrizable constraints, we should initialize them before using the solver to check if the initial configuration satisfies all the propagated constraints.
-
- Mar 01, 2022
-
-
Le Quang Anh authored
-
Florent Lamiraux authored
Change license to BSD 2 clauses.
-
- Feb 28, 2022
-
-
Florent Lamiraux authored
-
- Feb 25, 2022
-
-
Florent Lamiraux authored
[Handle] Allow to customize mask complement.
-
- Feb 24, 2022
-
-
Le Quang Anh authored
Propagate the constraints from intermediate nodes as well, so that we have a higher chance of filtering out invalid state sequences. Direction of propagation should be from the final node to the first node, so that we don't miss out the constraints that don't reach the final node but are still relevant for the first portion of the transitions.
-
Le Quang Anh authored
This is currently done by propagating the constraints from the last state to the initial state if the joints involved in each constraint are constrained during all transitions between the initial state and the last state. Checking the initial configuration to see if it satisfies these constraints will help to eliminate some state sequences.
-
- Feb 20, 2022
-
-
Florent Lamiraux authored
-
- Feb 11, 2022
-
-
Le Quang Anh authored
-
- Feb 10, 2022
-
-
Le Quang Anh authored
Able to build now, but code is probably useless
-
- Feb 07, 2022
-
-
Le Quang Anh authored
-
- Feb 04, 2022
-
-
Florent Lamiraux authored
[GraphValidation] Add method to get collision list for a node
-
- Feb 03, 2022
-
-
Diane Bury authored
-
- Feb 02, 2022
-
-
Le Quang Anh authored
Currently for most of the problems we look at, loops (an edge going into the same state) are not useful. However, these loops appear in a lot of state sequences considered by the algorithm and slow it down significantly. Until we encounter a problem where loops are necessary to accomplish the task, we should just ignore them.
-
- Feb 01, 2022
-
-
Florent Lamiraux authored
-
- Jan 31, 2022
-
-
Florent Lamiraux authored
-
- Jan 20, 2022
-
-
Florent Lamiraux authored
-
- Nov 05, 2021
-
-
Guilhem Saurel authored
fix submodule url
-
- Nov 02, 2021
-
-
Guilhem Saurel authored
-