Code Monkey home page Code Monkey logo

ltl_automaton_core's People

Contributors

pvarnai avatar rbinsonb avatar shawcortez avatar xiaotan-git avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ltl_automaton_core's Issues

If initial TS state from agent, initial state received twice

Because TS state is a latched topic, if initial state is given from agent, the TS state callback will also get the same state.
This could trigger re-planning or other issues.

Could be solve by having the callback ignore the first TS state if the parameter for initial state from agent in on.

LTL2BA needs to be recompiled for different CPU architectures

The code includes compiled binaries of the LTL2BA software. However this was compiled on 64bits desktop computer (x86_64) and doesn't work on some onboard computer with different CPU architecture (ARM, ...).

LTL2BA should therefor be compiled at the same time as the ROS package, maybe using a ROS wrapper package.

Self-loop in TS

Self-loop on TS nodes seems to be critical to trap detection (see issue here).

For now, those self-loop are defined at the TS config file level. Should they always be included in the TS build process? That would only make sense to leave them in the config files if there are specific configurations where we want to avoid it.

Cannot construct transition system if a state does not have actions associated to it

For exampe, if a parallel dimension of states is defined as:

package_state:
        ts_type: "package_state"
        initial: "empty"
        nodes:
            empty:
                connected_to:
            arrived:
                connected_to:

then the following error is thrown:

processing model dimension package_state
Traceback (most recent call last):
  File "/home/tusike/catkin_ws/src/ltl_automaton_core/ltl_automaton_planner/nodes/planner_node.py", line 385, in <module>
    ltl_planner_node = MainPlanner()
  File "/home/tusike/catkin_ws/src/ltl_automaton_core/ltl_automaton_planner/nodes/planner_node.py", line 59, in __init__
    self.build_automaton()
  File "/home/tusike/catkin_ws/src/ltl_automaton_core/ltl_automaton_planner/nodes/planner_node.py", line 166, in build_automaton
    state_models = state_models_from_ts(ts_dict, self.initial_state_ts_dict)
  File "/home/tusike/catkin_ws/src/ltl_automaton_core/ltl_automaton_planner/src/ltl_automaton_planner/ltl_automaton_utilities.py", line 49, in state_models_from_ts
    for connected_node in state_model_dict['nodes'][node]['connected_to']:
TypeError: 'NoneType' object is not iterable

Guard is not computed properly for TS with more than 2 subspaces

If using more than 2 TS in the agent model, the guard doesn't work properly.

The problem is that graph product is done iteratively by doing the product of 2 TS at a time, including node generation and building transitions. The guard doesn't work because it is not checked always against the final node label.

One way to solve the issue would be to build all nodes of the product at once, and then only build the transitions.

Error if prefix plan is empty

[INFO] [1615043700.323179]: LTL automaton Turtlebot node: waiting for turtlebot move base action server...
[INFO] [1615043700.626788]: LTL Planner: --- Planning in progress (static) ---
[INFO] [1615043700.628346]: LTL Planner: Hard task is: ([] (uncharged -> <> charged)) && ([] <> loaded) && [](loaded -> <> unloaded) && [](!r23 && !r29)
[INFO] [1615043700.630186]: LTL Planner: Soft task is:
[INFO] [1615043700.699133]: LTL Planner: full Buchi constructed with 10 states and 64 transitions
[INFO] [1615043700.984835]: LTL Planner: full model constructed with 76 states and 266 transitions
[INFO] [1615043700.986108]: LTL Planner: initial state in TS is set([('r36', 'unloaded', 'charged')])
[INFO] [1615043701.707568]: LTL Planner: full product constructed with 760 states and 5810 transitions
[INFO] [1615043703.264106]: LTL Planner: Prefix plan: []
[INFO] [1615043703.265290]: LTL Planner: Suffix plan: ['goto_r35', 'goto_r34', 'pick', 'goto_r35', 'goto_r32', 'goto_r33', 'goto_r30', 'goto_r27', 'goto_r24', 'goto_r21', 'drop', 'goto_r24', 'goto_r27', 'goto_r30', 'goto_r33', 'goto_r36']
[INFO] [1615043703.266800]: LTL Planner: --- Planning successful! ---
Traceback (most recent call last):
File "/home/sml/catkin_ws/src/ltl_automaton_core/ltl_automaton_planner/nodes/planner_node.py", line 390, in
ltl_planner_node = MainPlanner()
File "/home/sml/catkin_ws/src/ltl_automaton_core/ltl_automaton_planner/nodes/planner_node.py", line 44, in init
self.build_automaton()
File "/home/sml/catkin_ws/src/ltl_automaton_core/ltl_automaton_planner/nodes/planner_node.py", line 157, in build_automaton
self.ltl_planner.optimal()
File "/home/sml/catkin_ws/src/ltl_automaton_core/ltl_automaton_planner/src/ltl_automaton_planner/ltl_tools/ltl_planner.py", line 80, in optimal
self.next_move = self.run.pre_plan[self.index]
IndexError: list index out of range
[ltl_planner-1] process has died [pid 2064, exit code 1, cmd /home/sml/catkin_ws/src/ltl_automaton_core/ltl_automaton_planner/nodes/planner_node.py __name:=ltl_planner __log:=/home/sml/.ros/log/e22ec8f0-7e83-11eb-badc-f48e38896d95/ltl_planner-1.log].
log file: /home/sml/.ros/log/e22ec8f0-7e83-11eb-badc-f48e38896d95/ltl_planner-1*.log

Repeating TS states accepted on parameter in planner

For some specific applications, receiving twice the same TS state could make sense. Right now the hard-coded behavior is to ignore and print a warning when the received TS state is the same as the previous one. It would be interesting to have a parameter to accept or not repeating TS states

Possibly optimize IRL

The build_full_margin function could possibly be made more efficient by directly iterating over existing edges as opposed to rebuilding the entire product automaton.

Bug when using TS state of 1 dimension

When using only one TS state model (2d region pose for example), TS state received by the LTL planner (planner.py of ltl_automaton_planner) is not recognized as either part of the TS or as previous state. It probably as something to do with the variable format.

Cells should not be connected

The 2D regions generation script seems to be connecting the last cell of a row with the first cell of the following row.

Initial TS state from agent

The planner has a parameter for getting the initial state from the agent instead of the TS config file. Implementation of this feature has not been completed yet.

Error changing TS state

Previously, running the nexus e.g. irl_test launch file allowed to publish ts_state messages in order to change the TS state. The initial state is r1, unloaded, and a transition to r2, unloaded should be possible. Nevertheless, the error "Received TS states don't match TS state models: 2 initial states and 1 state models" is raised.

All states are trap

In a simple scenario with only 2D regions, all states are considered trap when testing the HIL

One-dimensional state not recognized by planner node

Commit d052b6e reformatted the TS state format to work with more than 2 dimensions. Even with one dimension in the TS, the TS state is now a tuple.

This seems to create an issue with one dimensional TS states, as they are not recognized as being part of the plan when received by the planner from the agent node.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.