Giter VIP home page Giter VIP logo

Comments (9)

S-Dafarra avatar S-Dafarra commented on September 13, 2024 1

Regarding the parameters, we could think about a separate class containing all the fields you need inside the controller. Then you can fill this struct in a different way depending on the application. In this way, the single components don't depend neither on yarp nor on libconfig, but the application that merges them all will.

from walking-controllers.

GiulioRomualdi avatar GiulioRomualdi commented on September 13, 2024 1

Probably, it is easier to have a F2F meeting for defining the desiderata @traversaro @S-Dafarra @prashanthr05

from walking-controllers.

traversaro avatar traversaro commented on September 13, 2024 1

Ideally, some blocks (e.g. RobotHelper) will depend on yarp. Other such that WalkingQPIK will be yarp-free

I totally agree, I just wanted to make sure that we properly separate the problems.

from walking-controllers.

GiulioRomualdi avatar GiulioRomualdi commented on September 13, 2024 1

Since we moved our effort into bipedal-locomotion-framework we can close this issue.

from walking-controllers.

traversaro avatar traversaro commented on September 13, 2024

Regarding parameters, a possible alternative approach (that could be made compatible with what proposed by @S-Dafarra) is to declare which parameters a blocksubmodule has, and just have a single function/class to load this parameters from a YARP .ini group/json file/yaml file or whatever format you prefer.
Example of this pattern:

from walking-controllers.

traversaro avatar traversaro commented on September 13, 2024

the submodules of the walking (i.e. the inverse kinematics) should not depend upon yarp. This independence could be useful if someone wants to use our libraries in a yarp-free architecture. Currently, the main dependence of yarp are: the resource finder and the minJerkTraj.
For the former, we could use a standard library for loading parameters from configuration files — for instance libconfig which is compatible with Linux MacOs and Windows. For the latter, we could port the minJerkTraj into iDynTree.

Note that I would not mix the concern of "refactor walking-controllers as libraries" and "remove yarp dependencies". These are two important and useful improvements, but it is important to make clear that they do not depend too much on each other. Even if we move to something non-YARP for dealing with parameters (the biggest part that depend on YARP), I think it would make sense to still have ã few blocks submodules that depend on YARP, similarly to the situation in WB-Toolbox. Then the compilation for those blocks submodules can be disabled if necessary.

from walking-controllers.

prashanthr05 avatar prashanthr05 commented on September 13, 2024

Usually, people with ROS background develop their algorithms as stand-alone classes and then additionally create a ROS wrapper in order to do the configuration step.

Getting inspired also from the BlockFactory workflow and also ROS wrappers, I refactored the base estimators like this,
https://github.com/dic-iit/element_floating-base-estimation/issues/85#issue-493520220
image

Where, the Estimator API is basically the algorithms in a BlockFactory view. (configure, set input, get output and dynamic reconfigure (idea from ROS)).

The central block is the YARP wrapper, where I run the YARP device using a Periodic thread, that instantiates objects of classes RobotInterface and BaseEstimatorInterface. RobotInterface is a YARP bridge to get the measurements from the robot and BaseEstimatorInterface is basically the parameter bridge used to configure the Estimator algorithm from the Estimators API and run the algorithm by passing the measurements.

However, the Estimators API is completely a spin-off iDynTree library (sole dependency). SO, it would be worth identifying the core part of the walking-controller algorithm and thinning it into a separate interface-free API as first step.

Maybe this could be of some help

from walking-controllers.

GiulioRomualdi avatar GiulioRomualdi commented on September 13, 2024

@traversaro

Note that I would not mix the concern of "refactor walking-controllers as libraries" and "remove yarp dependencies". These are two important and useful improvements, but it is important to make clear that they do not depend too much on each other. Even if we move to something non-YARP for dealing with parameters (the biggest part that depend on YARP), I think it would make sense to still have ã few blocks submodules that depend on YARP, similarly to the situation in WB-Toolbox. Then the compilation for those blocks submodules can be disabled if necessary.

Ideally, some blocks (e.g. RobotHelper) will depend on yarp. Other such that WalkingQPIK will be yarp-free

from walking-controllers.

traversaro avatar traversaro commented on September 13, 2024

Probably, it is easier to have a F2F meeting for defining the desiderata @traversaro @S-Dafarra @prashanthr05

Great idea. As my availability is quite variable, feel free to do that without me. I would be happy to provide feedback directly on more issues and to the code.

from walking-controllers.

Related Issues (20)

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.