Skip to content
Snippets Groups Projects
  1. May 25, 2022
  2. May 23, 2022
    • Le Quang Anh's avatar
      Solve when start state is a potential goal state · b940b29c
      Le Quang Anh authored
      Previously, we handled this case when goal is defined as a goal
      configuration. However, this case may still occur when goal is defined
      as a set of constraints. Moreover, the previous method does not store
      the loop transition to the list of solutions, making it difficult to
      re-try later on.
      b940b29c
  3. May 20, 2022
  4. May 13, 2022
  5. Apr 22, 2022
  6. Apr 21, 2022
  7. Apr 20, 2022
  8. Apr 15, 2022
  9. Apr 12, 2022
  10. Apr 04, 2022
  11. Apr 01, 2022
  12. Mar 31, 2022
  13. Mar 30, 2022
    • Le Quang Anh's avatar
      Log graph info in debug mode · a19a43fc
      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.
      a19a43fc
    • Le Quang Anh's avatar
      Remove code duplication by merging functions · a93f8e31
      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.
      a93f8e31
  14. Mar 28, 2022
    • Le Quang Anh's avatar
      Fix: analyse each new transition list · 5b36ad07
      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.
      5b36ad07
    • Le Quang Anh's avatar
      Add a threshold for bad solve statuses before reset · b35d205f
      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.
      b35d205f
  15. Mar 24, 2022
    • Le Quang Anh's avatar
      Fix solveStep validate collision in configuration · 3e15c4cd
      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).
      3e15c4cd
    • Le Quang Anh's avatar
      Refactor graph search data · ed5217c2
      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.
      ed5217c2
  16. Mar 21, 2022
  17. Mar 18, 2022
  18. Mar 17, 2022
    • Le Quang Anh's avatar
      Fix segv: stop using iterator on mutated deque · ffabc1d4
      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.
      ffabc1d4
    • Le Quang Anh's avatar
      Try all state sequences before finding new ones · d56d5215
      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.
      d56d5215
    • Le Quang Anh's avatar
      Fix: correct order of initialization list · 1e1a6c72
      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.
      1e1a6c72
    • Le Quang Anh's avatar
      Fix: Initialise weak pointer last · 06713ac6
      Le Quang Anh authored
      06713ac6
  19. Mar 16, 2022
    • Le Quang Anh's avatar
      Check if solver already has stricter constraints · 16ae96b1
      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`.
      16ae96b1
  20. Mar 07, 2022
    • Le Quang Anh's avatar
      Keep longest VALID config seq if cannot solve full · 3a915ccc
      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.
      3a915ccc
  21. Mar 03, 2022
  22. Mar 01, 2022
  23. Feb 28, 2022
  24. Feb 25, 2022
Loading