Coder Social home page Coder Social logo

ariac2021ws's People

Contributors

glpuga avatar

Watchers

 avatar  avatar

ariac2021ws's Issues

Create BehaviorTreeManager class.

Create BehaviorTreeManager class that fully wraps a BT,

  • It gets created from the BT::BehaviorTree object.
  • It must provide a simple run() method to run-to-completion the tree (until the root returns either Success or Failure).
  • The class must take care of ticking and threading internally.

Linked to: #65

Correct BT fork to account for mocks returning RUNNING

The current version of the mocking feature for BT inherits the mocking node from SyncActionNode, which prevents the mock from returning RUNNING because SyncActionNode tests for that value and throws if an attempt is made to return it.

This can be improved by inheriting directly from BaseActionNode instead.

Launching the sample_environment takes a long time

Running roslaunch nist_gear sample_environment takes several minutes to actually launch the simulation, but eventually succeeds.

This impairs our ability to iterate solutions and code quickly.

At least part of the time seems to be due to gazebo downloading models to .gazebo/models . This however, does not seem to substantially reduce the time it takes to launch the simulation a second time on the same container.

This ticket is about looking for ways to reduce the load time, preferably to tenths of seconds.

Add github configuration to run ros Industrial CI

There's a test branch testing Industrial CI to this repo.

  • Research a bit more industrial CI
  • Setup code to a workable standard for use with ICI.
  • Setup or discard GA as CI
  • Measure consumption, to determine what the best settings for running CI is (2000 minutes monthly limit)

Requires:

  • #25 to prepare the codebase, which was never properly prepared for this during the competition.

Limit the number of cores used by Industrial CI

Currently Inductrial CI in the self-hosted runner is configured to use whatever number of cores is available, but that causes peaks of memory use when building the repository.

This ticket is about limiting the number of cores to about half. The build time will not be too affected, since most of the process is executed sequentially anyway.

Enable Ccache in the devel environment

Documentation

It was also necessary to set CC and CXX so that catkin_make could find ccache.

Configurations needed

  • Install ccache in ubuntu docker image.
  • Add /usr/lib/ccache to the start of the PATH so that calls to the compiler go through ccache.
  • Set CC="gcc" and CXX="g++" so that catkin_make go through ccache instead of using absolute paths to the compilers.

Replace Industrial CI with devel docker to improve CI speed

As great as it is, Industrial CI takes a long time to run, most of which it spends installing the dependencies.

For PRs it would be great to have something faster, like just building the devel docker image and using it to build and run the tests. This would be much faster with my setups, because It will be faster, my self-hosted runner will cache docker image layers and make both building the image and running the tests very fast in the average case.

Pro:

  • That's exactly the devel environment I'm using. ICI is bulding one from the dependencies, but that does not mean my docker image is correct since it does not install the dependencies.
  • Much faster.

Con

  • Dependencies should be sufficient to install the system, and testing from the docker does not ensure that that's the case because it redundantly lists the required ROS packages instead of using rosdep to generate the list.

Proposal:

  • Build and run from the docker for PRs. Build and run from industrial CI for pushes to devel/master.
  • Create separate runners, one for fast track (PRs) and another one for a slow track (Industrial CI). this will avoid slow builds to cause queueing for PRs.
  • Create a ticket to update docker image to install all dependencies using a list generated with rosdep.

Replace tijbt with a dependency on BehaviorTreeExtras

Most of the codein tijbt was moved to a separate repository for reusability within another project.

See https://github.com/glpuga/BehaviorTreeExtras for the new location of the code.

This ticket is about:

  • Remove the parts of tijbt that were relocated to the new dependency. This is mostly all, except what's related to the logger.
  • Add external repository as a subrepo in "external".
  • Refactor code to use the external project for the logger tests.

Create devel environment

Create a docker image to be able to run the simulation consistently using the VORC workspace dockerfiles as starters.

Remove/rename devutils folder

devutils is the first package that was created, following a file struture that was not completed later.

Remove or refactor into other folders.

Improve subtree mocking approach

The current subtree mocking approach works, but leaves a lot of boilerplate on the hands of the user to actually set the mocks, since the user needs to demultiplex the calls the SubtreeMock node in the node builder.

See example in tijbt/tests, in the factory class test, and tests in the behaviortree.cpp fork.

The current approach of creating a builder lambda that multiplexes at instantiation time based on the name of the subtree needs to be revised and/or simplified by providing a ready to user solution for this.

Get ManagedLocus to have members to return the model and the key separately

Ever since I used structured bindings in the ManangedLocus interface to return model info, I've regretted it. Most often than not the key part of the pair is often not used, and causes "variable declared but not used errors".

Update the inter

  • Update the interface to return the part id and the broken flag separately.
  • Update tests.

Reenable CreateTargetReturnsKnownLoci in fast_test_resource_manager.cpp

  • This test has been failing since the last push from ARIAC 2021, when it broke after adjusting the algoritm for the resource manager.
  • The resource manager is likely to be completely rewritten, so this ticket is about either deleting this test, or fixing it so that it passes.
  • For the time being it's disabled to get CI up and running.

HaltingATreeWorks seems to be flaky

The test measures execution time for the halt() command to take effect, but it seems to be taking longer than expected from time to time. Investigate and fix.

Decuople creating a BT logger from creating the logger

Decuople creating a BT logger from creating the logger, so that loggers can be attached to a tree at some point after creation, making possible injecting them.

  • Create an attachToTree() method in AbstractLogger.
  • Refactor BT code to attach to tree using the new method.
  • Update BT tests.
  • Update ariac2021 code to use the new addition.

Remove fix in dependency in ARIAC repository

#8 changed the commit the ARIAC submodule is pointing to, to address an error in a dependency in the ariac package in that repo.

This issue should remove that fix and restore the submodule to point to the master branch in the fork, which should in time be synced to the master branch of the official repo.

Tasks:

Add Readme.md file with indications to use repo

Add a Readme.md file with instructions to:

  • download the repo including submodules
  • build the container
  • launch the container
  • join the container
  • build the workspace
  • launch the sample environment

Temporary fix to walk around a dependency error in the upstream ARIAC repo

The ARIAC upstream repository seems to have wrong dependency declared, which gets caught by rosdep.

This issue will fix it until upstream gets fixed.

diff --git a/ariac/package.xml b/ariac/package.xml
index b77e085..0fc99ba 100644
--- a/ariac/package.xml
+++ b/ariac/package.xml
@@ -11,7 +11,7 @@
   <exec_depend>nist_gear</exec_depend>
   <exec_depend>test_ariac</exec_depend>
   <exec_depend>ariac_example</exec_depend>
-  <exec_depend>gantry_moveit_config</exec_depend>
+  <exec_depend>gantry2021_moveit_config</exec_depend>
   <buildtool_depend>catkin</buildtool_depend>
 
   <export>

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.