Skip to content
Snippets Groups Projects
  1. Apr 12, 2022
  2. Apr 04, 2022
  3. Apr 01, 2022
  4. Mar 31, 2022
  5. 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
  6. 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
  7. 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
  8. Mar 21, 2022
  9. Mar 18, 2022
  10. 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
  11. 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
  12. 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
  13. Mar 03, 2022
  14. Mar 01, 2022
  15. Feb 28, 2022
  16. Feb 25, 2022
  17. Feb 24, 2022
    • Le Quang Anh's avatar
      analyseoptprob propagate intermediate node constr · 01c6c2c4
      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.
      01c6c2c4
    • Le Quang Anh's avatar
      Analyse opt prob when goal is set of constraint · 247330bc
      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.
      247330bc
  18. Feb 20, 2022
  19. Feb 11, 2022
  20. Feb 10, 2022
  21. Feb 07, 2022
  22. Feb 04, 2022
  23. Feb 03, 2022
  24. Feb 02, 2022
    • Le Quang Anh's avatar
      [StatesPathFinder] Avoid loops in state sequence · 40b094b9
      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.
      40b094b9
  25. Feb 01, 2022
  26. Jan 31, 2022
  27. Jan 20, 2022
  28. Nov 05, 2021
  29. Nov 02, 2021
Loading