GithubHelp home page GithubHelp logo

jharwell / rcppsw Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 1.0 3.57 MB

Collection of reusable C++ software (design patterns, boost gaps, etc.)

License: MIT License

C++ 97.98% CMake 1.41% Emacs Lisp 0.38% Shell 0.24%
data-structures design-patterns multiprocessing multithreading state-machine

rcppsw's People

Contributors

jharwell avatar wwubuntu avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

gravity369

rcppsw's Issues

feature/23-add-builder-design-pattern

This provides a OOP approach for class initialization that can replace classes
that need an init() method, because for some reason they can't be fully
constructed in the constructor and/or the constructor is long and tedious. Also
suitable for constructors that have a large # of arguments.

feature/30-create-task-partitioner-class

This would encapsulate the action that is undertaken after a decomposable task
or one of its children has finished to determine if partitioning should be
employed for the next task.

  • In either case, a pointer to the next task to execute should be returned.

bugfix/15-PID-loop-does-not-work-properly-for-distance-minimization

Frequently when using the loop, where you are using it to drive a robot's linear velocity as it approaches a target, it overshoots the target and begins to oscillate around it because it does not slow down fast enough as it approaches the target. This should not happen.

31/feature-add-polled-executive-class

Would be responsible for managing the execution of a task tree by an entity such
as a robot.

  • Only need to create the polled version of this for now, as the
    threaded/asynchronous version should use Intel's tbb.
  • Should still have a base executive abstract class
  • Should support access of tasks by name
  • Creation of tasks should be done elsewhere; only root of task tree should be
    passed to executive's constructor.
  • Constructor should take a parameter specifying the maximum allowed task
    partitioning depth.
  • Definitely needs to be an er_client.

Interface:

execute() - Runs the currently active task. If that task finishes, it should
get the finished task's parent (a partitionable task), and use it
to figure out what task to execute next.

Internal functions:

get_next_task() - Runs the partitioning algorithm on the parent of a task that
just finished, to determine what task should be executed
next.

8-create-er-null-server.

For use with things that obstensibly require an er_server handle, but which I
don't really care about logging the output from.

bugfix/19-hfsms-should-not-require-transition-tables

HFSMs should not be required to specify transition tables for every
external event that occurs (they still should be able to, should they
wish). Instead, they should provide a single function that takes an external
event, derived from fsm::event_data, and sends it to the current state. If
that state cannot handle it, then it will return a signal up to its parent state.

This is a bug because without this functionality you really don't have an HFSM,
but sort of a weird hybrid simple_fsm/HFSM.

bugfix/18-hfsm-is-not-inheritable

There is not currently a way to change the parent state of a state once it is
declared, something that is need for bottom-up inheritance (i.e. that in which
derived classes build on top of the functionality provided by base classes).

refactor/26-move-functionality-into-base_fsm

Right now in every HFSM I have, as well as simple_fsm, the update_state(),
next_state(), etc. functions and member variables are all duplicated. There is
no reason why this couldn't be part of base_fsm and inherited (overridable if
needed).

enh/20-er_server-should-allow-module-attachment

For large numbers of the same object, the server should allow you to attached to
a single uuid, so that the module list doesn't get littered with 1000s of ids
for different instances of the same object.

The attachment function should search by name, not by uuid, so I couldn't use
the find() function on the list itself--iterator needed.

bugfix/38-cannot-change-parent-of-hfsm-state-across-instances

What this means is if I have an explore_fsm that I need to change
explore_fsm.ST_explore to two DIFFERENT states for two different classes that
each contain an explore_fsm instance, then because a global variable/table is
used to track this, whichever object updates the parent of a state in the table
last is the winner.

This should be changed so it works as expected.

feature/39-FSMs-should-enforce-state-data-passing-at-compile-time

Previously, due to event_data being typedefed to no_event_data, there was no
compiler warning if there was a mismatch between the declaration of a
state/state_entry/etc., and its implementation. OR, if a class inherited a state
from another class, but declared it with a mismatched declaration. This should
be fixed so that errors result if things do not match.

feature/14-add-last-state-to-FSMs

Right now you have no way of knowing if the last state you were in is the same
as the current state you are in, which I need for debugging purposes, to turn
down the verbosity of logging. This is distinct from previous_state(), which is
the previous state you were in, (i.e. that "last" state that was different than
the one you are currently in).

bugfix/43-task_executive-segfaults

Now that I'm starting to use my simple task executive, it is segfaulting
horribly and just not working. Need to do some basic debugging so that it at
least does not crash.

feature/21-create-decomposable-task-class

This class would be capable of being decomposed into subtasks (i.e. it would be
a node in some sort of tree). Each subtask would be another decomposable task,
or NULL/some sentinel value if the task was considered atomic (not
decomposable).

It should have:

  • Tracking for estimating its execution time, as well as that of its children.
  • A name.

feature/44-modify-visitable-to-work-with-polymorphism

Right now if the calling object is polymorphic you get a bunch of cryptic
compiler errors.

Also, if possible visitable classes should be able to specific a specific set of
classes that they will accept visitors from, rather than any class.

feature/16-create-reusable-modules-from-fordyca

Will pull as much as I can from fordyca (everything that is not ARGoS-specific). Things to include:

  • task abort probability calculator
  • task time estimate tracker
  • task partition probability
  • pheromone density

feature/25-create-task-hierarchy

At the top, logical tasks. Each logical task corresponds to a task sequence of
other logical tasks that execute it. Each has a unique name.

  • Atomic tasks are not decomposable, and have an associated FSM. The task sequence
    to execute atomic tasks is the task itself.

  • Decomposable tasks do not have an FSM. They return an ordered list of the
    tasks that must be accomplished in order to execute them. They take 2 template
    arguments: the 2 subtasks that the task can be decomposed into.

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.