Giter VIP home page Giter VIP logo

ocra-recipes / ocra-wbi-plugins Goto Github PK

View Code? Open in Web Editor NEW
3.0 18.0 3.0 72.21 MB

Controller implementations and plugins for communicating between the whole body controller libraries developed at ISIR, ocra-recipes, and the iCub Whole Body Interface, WBI, libraries.

License: GNU General Public License v3.0

CMake 11.55% C++ 86.21% C 0.47% Python 1.57% MATLAB 0.20%
robotics icub kuka control humanoids whole-body-control yarp

ocra-wbi-plugins's Introduction

ocra-recipes

DOI

Build Status

master dev
Build Status Build Status

Installation instructions

Code Structure

Give a description...

  • ocra
  • wocra
  • gocra
  • hocra (coming soon)
  • solvers
    • quadprog
    • qpoases

ocra

(O.C.R.A.) Optimization-based Control for Robotics Applications

wocra

(W.O.C.R.A.) Weighted Optimization-based Control for Robotics Applications

hocra

(H.O.C.R.A.) Hierarchical Optimization-based Control for Robotics Applications

solvers

Ultimately our goal is to implement the most recent convex solvers so we can mix and match control problem formulations with different solver algorithms. Right now we have only implemented a slightly modified version of QuadProg.

quadprog

This library is a QP (Quadratic Program) based on the QuadProg++ project (http://quadprog.sourceforge.net/) which has been slightly modified. In this version, vector and matrix classes are replaced by Eigen classes, in order to use the same definitions as the ocra libraries.

qpoases

Exploits the open-source C++ library qpOASES, which is an implementation of the recently proposed online active set strategy, which was inspired by important observations from the field of parametric quadratic programming (QP). It has several theoretical features that make it particularly suited for model predictive control (MPC) applications but also as a QP solver. (ref)

Dependencies

  • Boost (filesystem)
  • Eigen 3.2.0 (note: We have issues with later versions of eigen so please do not use the current build - install via apt-get.)
  • EigenLgsm
  • TinyXML
  • YARP

Boost, Eigen 3.2.0 & TinyXML

sudo apt-get install libboost-dev libtinyxml-dev libeigen3-dev

EigenLgsm

git clone https://github.com/ocra-recipes/eigen_lgsm.git
cd eigen_lgsm
mkdir build
cd build
cmake ..
sudo make install

YARP

Please follow the instructions here: http://www.yarp.it/install_yarp_linux.html

Installation

WARNING This is an experimental set of libs and there are no guarantees that they will not do damage to your computer. We take no responsibility for what happens if you install them. That being said, if you follow these instructions you should be fine.

Okay that's out of the way... phew!

Install to /usr/local

git clone https://github.com/ocra-recipes/ocra-recipes.git
cd ocra-recipes
mkdir build
cd build
cmake ..
sudo make install

Install to custom location (example: /home/user/Install)

git clone https://github.com/ocra-recipes/ocra-recipes.git
cd ocra-recipes
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=home/user/Install ..
make install

Note: If you do the install this way then you must update your environment variables in your .bashrc file.

In .bashrc

# ocra-recipes install
export OCRA_INSTALL=/home/user/Install
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${OCRA_INSTALL}/lib
export LIBRARY_PATH=${LIBRARY_PATH}:${OCRA_INSTALL}/lib
export PATH=${PATH}:${OCRA_INSTALL}/bin

Tested OS's

  • Ubuntu 12.04
  • Ubuntu 14.04
  • Debian 7
  • OS X

In theory any linux distro should work if the dependencies are met and don't conflict with any system libs/headers. If you manage to build, install and use OCRA in any other platform please let us know and we can add it to the list with any helpful notes you provide along with it.

Enjoying your OCRA...

Well now that you have ocra-core up and running, you probably want to try it out n'est pas? Well mosey on over to the ocra-wbi-plugins repo and follow the instructions.

Want to contribute? Maybe build a plugin or two? Read the Contributing section for details on how to interface with OCRA and use it for world domination.

Notes about OS X

⚠️ As a recent feature we added rpath support, therefore, by default the flag OCRA_ICUB_ENABLE_RPATH is OFF. Change it by configuring ocra-wbi-plugins as: cmake -DOCRA_ICUB_ENABLE_PATH=ON ./. Once we're sure this ''always'' works it will be ON by default. Therefore, if you encounter error messages such as:

dyld library not loaded @rpath/libYarpMath.dylib

Most likely this variable is still OFF.

⚠️ When using XCode to debug your code, make sure you change your LLVM C++ Language settings manually to C++11, by heading to the Build Settings of your project, searching for C++ Language Dialect and changing it to C++11 [-std=c++11]

Contributing

Give a description...

Generating the documentation

To build the documentation for orca-recipes you will need doxygen. To install doxygen on linux run sudo apt-get install doxygen.

In your build/ directory (if you have already run cmake .. simply run:

make doc

** If you run this right now you must ignore the latex errors due to the missing .sty files by just holding down enter until they are past. **

HTML and LaTeX files will be generated in the build/docs/ directory. Open the file, index.html.

###Authors

####current developers

####past developers

ocra-wbi-plugins's People

Contributors

ahoarau avatar darwinlau avatar jeljaik avatar rlober avatar traversaro avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ocra-wbi-plugins's Issues

Import jtsCalibration and jtsCalibrationGUI in the codyco-superbuild

I guess that for simplifying software maintenance we should integrate the joint torque calibration modules [1] [2] developed by @ghamon88 in the codyco-superbuild .

There are two ways of doing it:

  • Add them to an existing repository (for example codyco-isir)
  • Add them as independent repositories

I would go for the first option, because for each subproject added to the superbuild there is a fixed overhead related to each to the checkout/update time.

cc @rlober @darwinlau @vpadois

[1] : https://github.com/ghamon88/jtsCalibration
[2] : https://github.com/ghamon88/jtsCalibrationGUI

Bug Hunt Fridays - 3 March 2017

First ever Bug Hunt Friday!

BHF! TGIBHF!

bug_hunt

How it works

We are going to set aside a few fridays to work on persistant problems or features that we want. There will be sister issues in ocra-wbi-plugins and ocra-recipes with each having its own list of issues to resolve. The list will be updated until the day before. This issue is for tracking the changes and whys.

Sister issue: ocra-recipes/ocra-recipes#35

Bugs:

  1. getVelocity() for the CoM task creates sporadic latency in control loop. We need to determine why and how to avoid it.
  2. Merge changes made in iit_experiments branch.
  3. Merge MiQP work.

Features:

Synchronize gazebo clock with icub-controller-server clock

When running the controller in debug mode the thread rate is about 150ms and this is too slow for "real-time". In this case it would be good to sync the gazebo physics stepping to the controller loop, so each time the loop is complete the physics steps 10ms (which corresponds to the expected controller looping speed).

Impossible to launch server and client on different machines

Here's an example of the resulting log:

macbook:~ jorhabibeljaik$ walking-client
[INFO]Resource finder stuff
||| clearing context
||| adding context [walking-client]
||| configuring
||| default config file specified as walking-client.ini
||| checking [/Users/jorhabibeljaik/walking-client.ini] (pwd)
||| checking [/Users/jorhabibeljaik/Library/Application Support/yarp/config/robots/icubGazeboSim] (robot YARP_CONFIG_HOME)
||| checking [/Users/jorhabibeljaik/Library/Application Support/yarp/robots/icubGazeboSim] (robot YARP_DATA_HOME)
||| checking [/Library/Preferences/yarp/robots/icubGazeboSim] (robot YARP_CONFIG_DIRS)
||| checking [/etc/yarp/robots/icubGazeboSim] (robot YARP_CONFIG_DIRS)
||| checking [/Users/jorhabibeljaik/Code/yarp/build/share/yarp/robots/icubGazeboSim] (robot YARP_DATA_DIRS)
||| checking [/Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/robots/icubGazeboSim] (robot YARP_DATA_DIRS)
||| found /Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/robots/icubGazeboSim
||| checking [/Users/jorhabibeljaik/Code/yarp/build/share/yarp/config/path.d] (robot path.d YARP_DATA_DIRS)
||| checking [/Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/config/path.d] (robot path.d YARP_DATA_DIRS)
||| checking [/Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/robots/icubGazeboSim/walking-client.ini] (robot)
||| found /Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/robots/icubGazeboSim/walking-client.ini
[INFO]Making model initializer
yarp: Port /tmpClientPort active at tcp://134.157.19.235:10104
yarp: Sending output from /tmpClientPort to /ocra-icub-server/info/rpc:i using tcp
[INFO]Found WBI config file here:  /home/jorhabib/code/codyco-superbuild/build/install/share/codyco/robots/icubSim/yarpWholeBodyInterface.ini
[INFO]Robot name is:  icubSim
[INFO]Robot has floating base:  true
yarp: Removing output from /tmpClientPort to /ocra-icub-server/info/rpc:i
yarp: cannot read from /home/jorhabib/code/codyco-superbuild/build/install/share/codyco/robots/icubSim/yarpWholeBodyInterface.ini
[ERROR]Impossible to load wbiId joint list with name:  ROBOT_MAIN_JOINTS
[INFO]Making controller client
[FATAL]Model is not empty.
2   walking-client                      0x00000001085de5fa _ZN4yarp2os9LogStreamD2Ev + 250
3   walking-client                      0x00000001085ddd40 main + 1232
4   libdyld.dylib                       0x00007fff970a5235 start + 1
macbook:~ jorhabibeljaik$ walking-client
[INFO]Resource finder stuff
||| clearing context
||| adding context [walking-client]
||| configuring
||| default config file specified as walking-client.ini
||| checking [/Users/jorhabibeljaik/walking-client.ini] (pwd)
||| checking [/Users/jorhabibeljaik/Library/Application Support/yarp/config/robots/icubGazeboSim] (robot YARP_CONFIG_HOME)
||| checking [/Users/jorhabibeljaik/Library/Application Support/yarp/robots/icubGazeboSim] (robot YARP_DATA_HOME)
||| checking [/Library/Preferences/yarp/robots/icubGazeboSim] (robot YARP_CONFIG_DIRS)
||| checking [/etc/yarp/robots/icubGazeboSim] (robot YARP_CONFIG_DIRS)
||| checking [/Users/jorhabibeljaik/Code/yarp/build/share/yarp/robots/icubGazeboSim] (robot YARP_DATA_DIRS)
||| checking [/Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/robots/icubGazeboSim] (robot YARP_DATA_DIRS)
||| found /Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/robots/icubGazeboSim
||| checking [/Users/jorhabibeljaik/Code/yarp/build/share/yarp/config/path.d] (robot path.d YARP_DATA_DIRS)
||| checking [/Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/config/path.d] (robot path.d YARP_DATA_DIRS)
||| checking [/Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/robots/icubGazeboSim/walking-client.ini] (robot)
||| found /Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/robots/icubGazeboSim/walking-client.ini
[INFO]Making model initializer
yarp: Port /tmpClientPort active at tcp://134.157.19.235:10104
yarp: Sending output from /tmpClientPort to /ocra-icub-server/info/rpc:i using tcp
[INFO]Found WBI config file here:  /home/jorhabib/code/codyco-superbuild/build/install/share/codyco/robots/icubSim/yarpWholeBodyInterface.ini
[INFO]Robot name is:  icubSim
[INFO]Robot has floating base:  true
yarp: Removing output from /tmpClientPort to /ocra-icub-server/info/rpc:i
yarp: cannot read from /home/jorhabib/code/codyco-superbuild/build/install/share/codyco/robots/icubSim/yarpWholeBodyInterface.ini
[ERROR]Impossible to load wbiId joint list with name:  ROBOT_MAIN_JOINTS
[INFO]Making controller client
[FATAL]Model is not empty.
2   walking-client                      0x00000001004035fa _ZN4yarp2os9LogStreamD2Ev + 250
3   walking-client                      0x0000000100402d40 main + 1232
4   libdyld.dylib                       0x00007fff970a5235 start + 1
macbook:~ jorhabibeljaik$ reset && walking-client

[INFO]Resource finder stuff
||| clearing context
||| adding context [walking-client]
||| configuring
||| default config file specified as walking-client.ini
||| checking [/Users/jorhabibeljaik/walking-client.ini] (pwd)
||| checking [/Users/jorhabibeljaik/Library/Application Support/yarp/config/robots/icubGazeboSim] (robot YARP_CONFIG_HOME)
||| checking [/Users/jorhabibeljaik/Library/Application Support/yarp/robots/icubGazeboSim] (robot YARP_DATA_HOME)
||| checking [/Library/Preferences/yarp/robots/icubGazeboSim] (robot YARP_CONFIG_DIRS)
||| checking [/etc/yarp/robots/icubGazeboSim] (robot YARP_CONFIG_DIRS)
||| checking [/Users/jorhabibeljaik/Code/yarp/build/share/yarp/robots/icubGazeboSim] (robot YARP_DATA_DIRS)
||| checking [/Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/robots/icubGazeboSim] (robot YARP_DATA_DIRS)
||| found /Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/robots/icubGazeboSim
||| checking [/Users/jorhabibeljaik/Code/yarp/build/share/yarp/config/path.d] (robot path.d YARP_DATA_DIRS)
||| checking [/Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/config/path.d] (robot path.d YARP_DATA_DIRS)
||| checking [/Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/robots/icubGazeboSim/walking-client.ini] (robot)
||| found /Users/jorhabibeljaik/Code/codyco-superbuild/build/install/share/codyco/robots/icubGazeboSim/walking-client.ini
[INFO]Making model initializer
yarp: Port /tmpClientPort active at tcp://134.157.19.235:10104
yarp: Sending output from /tmpClientPort to /ocra-icub-server/info/rpc:i using tcp
[INFO]Found WBI config file here:  /home/jorhabib/code/codyco-superbuild/build/install/share/codyco/robots/icubSim/yarpWholeBodyInterface.ini
[INFO]Robot name is:  icubSim
[INFO]Robot has floating base:  true
yarp: Removing output from /tmpClientPort to /ocra-icub-server/info/rpc:i
yarp: cannot read from /home/jorhabib/code/codyco-superbuild/build/install/share/codyco/robots/icubSim/yarpWholeBodyInterface.ini
[ERROR]Impossible to load wbiId joint list with name:  ROBOT_MAIN_JOINTS
[INFO]Making controller client
[FATAL]Model is not empty.
2   walking-client                      0x00000001048305fa _ZN4yarp2os9LogStreamD2Ev + 250
3   walking-client                      0x000000010482fd40 main + 1232
4   libdyld.dylib                       0x00007fff970a5235 start + 1

Compilation errors in codyco-superbuild with eigen

I am porting an email chain to this issue:

ISSUE 1

Hi Guys,

As Vincent mentioned in his email this morning, we (at INRIA) plan to use the OCRA ISIR controller (probably Joseph's version, I think it is "wocra"). I installed ocra-recipes following the recommendations on github, it works fine. However, when I try to use it, I have issues with TinyXML.

In order to use OCRA, I put "find_package(OcraRecipes REQUIRED)" in the CMakeLists.txt of my project. I'm not even sure it's the way I should do, so please correct me if I'm wrong.

Assuming I did the correct thing to use OCRA, when I try to compile my project, I get the following error:

CMake Error at /usr/local/lib/cmake/OcraRecipes/OcraRecipesConfig.cmake:25 (find_package):
By not providing "FindTinyXML.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "TinyXML", but
CMake did not find one.

Could not find a package configuration file provided by "TinyXML" with any
of the following names:

TinyXMLConfig.cmake
tinyxml-config.cmake

Add the installation prefix of "TinyXML" to CMAKE_PREFIX_PATH or set
"TinyXML_DIR" to a directory containing one of the above files. If
"TinyXML" provides a separate development package or SDK, be sure it has
been installed.

Yet, I followed all the instruction on the github page. In particular I installed libtinyxml-dev.

I don't know if this is me doing something wrong (I'm not really gifted with compilation ^^), or is there is an issue that is not explained on the github. I am using Ubuntu 16.04.

Otherwise, I tried to install OCRA through the codyco-superbuild by setting the "OCRA" option ON, but I have compilation errors. So I dropped that and installed OCRA directly (which is when I have the problem above).

Thanks in advance for any help,

Pauline

ISSUE 2

Hi again,

Actually I think I more or less figure out how to use OCRA in my project (though some clarifications on my previous question would be appreciated), but I have 2 other questions.

The 1st one is about ocra-wbi-plugins. I'd like to install it, but when I try with the codyco-superbuild (as suggested on github) by setting the CODYCO_BUILD_OCRA_MODULES option ON, I have compilation errors, which seemed related to Eigen. I'm wondering whether this is a "normal" current issue (and if there is a fix to it), or if I'm just doing something wrong (though I followed all the codyco-superbuild instructions). In particular, can you tell me what Eigen version I should use? The codyco-superbuild page says that Eigen 3.3 is required, but the ocra page says it's 3.2, so I'm lost...

The 2nd question is more applied. Have you used the whole controller/simulation with a robot other than iCub? Basically, I'm wondering whether there is somewhere in the codyco packages a tool to import a URDF and build a model suitable for ocra controllers from the URDF. I saw that ocra-wbi-plugins implement an interface class for the "Model" abstract class from ocra, based on WholeBodyInterface. But it is unclear to me if WBI works only for iCub, or for any kind of models. Specifically, it seems that WBI is only abstract classes, so I'm wondering whether there is a tool to use interface it with URDFs or whether I have to do the job myself! (just trying to avoid re-doing something that was already done).

Thanks a lot for your help,

Pauline

Compilation of codyco-superbuild failing with CODYCO_BUILD_OCRA_MODULES set to ON

[ 87%] Performing configure step for 'ocra-wbi-plugins'
Not searching for unused variables given on the command line.
loading initial cache file /home/traversaro/src/codyco-superbuild/build/main/ocra-wbi-plugins/CMakeFiles/YCMTmp/ocra-wbi-plugins-cache.cmake
-- Using iCub from install
-- Found YCM: /home/traversaro/src/codyco-superbuild/build/install/share/YCM (found version "0.2.0~20151028.4+gitaae056b")
-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   system
--   filesystem
-- Eigen found (include: /usr/include/eigen3)
-- Setting up installation of codyco.ini to /home/traversaro/src/codyco-superbuild/build/install/share/yarp/config/path.d folder.
-- SMLT lib NOT found. Removing TaskOptimization sequence from source list.
-- SMLT lib NOT found. Removing TaskOptimization sequence from source list.
-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   system
--   filesystem
-- SMLT lib NOT found. Removing TaskOptimization sequence from source list.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/traversaro/src/codyco-superbuild/build/main/ocra-wbi-plugins
[ 89%] Performing build step for 'ocra-wbi-plugins'
[  5%] Built target ocraWbiPlugins
[  8%] Building CXX object libs/taskSequences/CMakeFiles/taskSequences.dir/src/sequences/Experiment.cpp.o
In file included from /home/traversaro/src/codyco-superbuild/main/ocra-wbi-plugins/libs/taskSequences/include/taskSequences/sequences/Experiment.h:8:0,
                 from /home/traversaro/src/codyco-superbuild/main/ocra-wbi-plugins/libs/taskSequences/src/sequences/Experiment.cpp:2:
/home/traversaro/src/codyco-superbuild/build/install/include/wocra/Trajectory/wOcraGaussianProcessTrajectory.h:6:36: fatal error: smlt/gaussianProcess.hpp: No such file or directory
compilation terminated.
libs/taskSequences/CMakeFiles/taskSequences.dir/build.make:422: recipe for target 'libs/taskSequences/CMakeFiles/taskSequences.dir/src/sequences/Experiment.cpp.o' failed
make[5]: *** [libs/taskSequences/CMakeFiles/taskSequences.dir/src/sequences/Experiment.cpp.o] Error 1
CMakeFiles/Makefile2:180: recipe for target 'libs/taskSequences/CMakeFiles/taskSequences.dir/all' failed
make[4]: *** [libs/taskSequences/CMakeFiles/taskSequences.dir/all] Error 2
Makefile:116: recipe for target 'all' failed
make[3]: *** [all] Error 2
CMakeFiles/ocra-wbi-plugins.dir/build.make:110: recipe for target 'main/ocra-wbi-plugins/CMakeFiles/YCMStamp/ocra-wbi-plugins-build' failed
make[2]: *** [main/ocra-wbi-plugins/CMakeFiles/YCMStamp/ocra-wbi-plugins-build] Error 2
CMakeFiles/Makefile2:1536: recipe for target 'CMakeFiles/ocra-wbi-plugins.dir/all' failed
make[1]: *** [CMakeFiles/ocra-wbi-plugins.dir/all] Error 2
Makefile:85: recipe for target 'all' failed
make: *** [all] Error 2

OS: Ubuntu 15.10 , compiler GCC 5.2.1 20151010, CMake 3.2.2 .

Use of integer absolute value in place of floating point one

Compiling the repo in clang I got this interesting warning:

/home/pegua/isir-tests/codyco-superbuild/main/ocra-wbi-plugins/libs/taskSequences/src/sequences/JointTest.cpp:44:19: warning: using integer absolute value function
      'abs' when argument is of floating point type [-Wabsolute-value]
        taskErr = abs(taskErrorVector(jIndex));
                  ^
/home/pegua/isir-tests/codyco-superbuild/main/ocra-wbi-plugins/libs/taskSequences/src/sequences/JointTest.cpp:44:19: note: use function 'std::abs' instead
        taskErr = abs(taskErrorVector(jIndex));
                  ^~~
                  std::abs
/home/pegua/isir-tests/codyco-superbuild/main/ocra-wbi-plugins/libs/taskSequences/src/sequences/Exploration.cpp:159:11: warning: using integer absolute value function
      'abs' when argument is of floating point type [-Wabsolute-value]
    if ( (abs(time - resetTimeLeft) >= TIME_LIMIT) || (attainedGoal(state, lHandIndex)) )
          ^
/home/pegua/isir-tests/codyco-superbuild/main/ocra-wbi-plugins/libs/taskSequences/src/sequences/Exploration.cpp:159:11: note: use function 'std::abs' instead
    if ( (abs(time - resetTimeLeft) >= TIME_LIMIT) || (attainedGoal(state, lHandIndex)) )
          ^~~
          std::abs
/home/pegua/isir-tests/codyco-superbuild/main/ocra-wbi-plugins/libs/taskSequences/src/sequences/Exploration.cpp:175:11: warning: using integer absolute value function
      'abs' when argument is of floating point type [-Wabsolute-value]
    if ( (abs(time - resetTimeRight) >= TIME_LIMIT) || (attainedGoal(state, rHandIndex)) )
          ^
/home/pegua/isir-tests/codyco-superbuild/main/ocra-wbi-plugins/libs/taskSequences/src/sequences/Exploration.cpp:175:11: note: use function 'std::abs' instead
    if ( (abs(time - resetTimeRight) >= TIME_LIMIT) || (attainedGoal(state, rHandIndex)) )
          ^~~
          std::abs
/home/pegua/isir-tests/codyco-superbuild/main/ocra-wbi-plugins/modules/gocraController/src/gOcraSequenceCollection.cpp:1240:15: warning: using integer absolute value
      function 'abs' when argument is of floating point type [-Wabsolute-value]
    taskErr = abs(taskErrorVector(jIndex));
              ^
/home/pegua/isir-tests/codyco-superbuild/main/ocra-wbi-plugins/modules/gocraController/src/gOcraSequenceCollection.cpp:1240:15: note: use function 'std::abs' instead
    taskErr = abs(taskErrorVector(jIndex));
              ^~~
              std::abs

Given that using the integer abs would approximate (I think) all error values between -0.5 and 0.5 to 0.0, this could cause some strange (but potentially difficult to notice) behaviors.

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.