Coder Social home page Coder Social logo

icub-firmware-shared's Introduction

icub-firmware-shared

This file contains instructions about how to use this repository. Created by "Marco Accame [email protected]" on 29 October 2015.

A. What the repository contains

This repository contains source code and include files which are commonly used by icub-main and icub-firmware repositories.

B. How to use the repository

The way this repository is used depends whether one wants to compile for icub-firmware or for icub-main. Here are the two cases.

B.1 Case of use with icub-firmware

The repositories icub-firmware and icub-firmware-shared must be placed in the same folder as in the following tree structure:

<folder> ---
            |--<icub-firmware>
            |
            |--<icub-firmware-shared>

Nothing else is required because projects inside icub-firmware will directly refer to source files using a relative path (which contains the string icub-firmware/../icub-firmware-shared/).

B.2 Case of use with icub-main

So far, the repository icub-firmware-shared is used to compile only on the pc104. to do so, one must:

  • Create a build subfolder into icub-firmware-shared: mkdir build-pc104
  • cd inside the build-pc104 folder: cd build-pc104
  • Call ccmake ..
  • Digit c as many times are required and then g to generate the makefile.
  • Run make to generate the correct dependencies required by icub-main (actually this step is not strictly required).

At this point a run of ccmake ../ in icub-main build folder will be able to find the suitable dependencies for icub-firmware-shared.

Maintainers

This repository is maintained by:

@marcoaccame

icub-firmware-shared's People

Contributors

ale-git avatar alexantn avatar davege89 avatar davidetome avatar drdanz avatar lornat75 avatar marcoaccame avatar mbrunettini avatar mfussi66 avatar msecode avatar nicogene avatar pattacini avatar randaz81 avatar sgiraz avatar traversaro avatar triccyx avatar valegagge avatar yeshasvitirupachuri avatar

Stargazers

 avatar  avatar  avatar

Watchers

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

icub-firmware-shared's Issues

warning C4103: alignment changed after including header

While compiling another project, I noticed a lot of warnings of this form on MSVC:

2022-06-21T21:12:53.8896867Z D:\a\icub-firmware-shared\icub-firmware-shared\eth\embobj\core\core\EoCommon.h(76,1): warning C4103: alignment changed after including header, may be due to missing #pragma pack(pop) [D:\a\icub-firmware-shared\icub-firmware-shared\build\eth\embobj.vcxproj]

Indeed, this seems to be related to https://github.com/robotology/icub-firmware-shared/blob/v1.25.1/eth/embobj/core/core/embOBJporting.h#L145 . Perhaps the absence of pack(pop) is intendend, but anyhow I preferred to report this warning just in case, as this may lead to tricky ABI-related bugs.

Create a README

A lot of users got confused on the purpose of this repo, see for example : robotology/community#72 ( I also see people confused by this when doing remote assistance to European partners).

CMake math(EXPR) syntax error when checking if 32 or 64 bits

On iCubLisboa01's pc104 we are running "Debian GNU/Linux 6.0.7 (squeeze) + iCub-oc 3.2" and CMake 2.8.7.

Today we tried to update yarp, icub-main and the recently required icub-firmware-shared, following the pc104 manual page at http://wiki.icub.org/wiki/Compilation_on_the_pc104

We generated icub-firmware-shared correctly (with its environment variables set). Then, when trying to build icub-main we got this:

 CMake Error at /usr/local/src/robot/icub-firmware-shared/build/icub_firmware_shared-config-version.cmake:23 (math):
   math cannot parse the expression: " * 8": syntax error, unexpected
   exp_TIMES, expecting exp_OPENPARENT or exp_NUMBER (2)
 Call Stack (most recent call first):
   conf/iCubFindDependencies.cmake:30 (find_package)
   CMakeLists.txt:74 (include)

 ERROR canBusMotionControl: cannot find icub_firmware_shared library, turn off device
   embObj library can now be found in the icub-firmware-shared package that
   can be downloaded from here:
   .
        https://github.com/robotology/icub-firmware-shared
   .

We managed to fix the problem by editing icub-firmware-shared/build/icub_firmware_shared-config-version.cmake and changing the offending line from

  math(EXPR installedBits " * 8")

to

  math(EXPR installedBits "${CMAKE_SIZEOF_VOID_P} * 8")

More control input modes in 2FOC boards.

The purpose of this issue is to keep track of the icub-firmware-shared parts touched by the improvements in the low level motor control. The new EMS board firmware will be able to exploit features already present in the 2FOC motor board. In particular, we'll be able to control the iCub motors by velocity and current closed control loops in addition to the pwm open loop now available.

https://github.com/robotology/icub-firmware-shared/tree/fmi
PR: #29

@nunoguedelha

Build error during latest CI

Hi @marcoaccame

Just spotted this build error during icub-main CI (see https://github.com/robotology/icub-main/actions/runs/1776034784):

[ 10%] Building CXX object embot/CMakeFiles/embot.dir/prot/eth/embot_prot_eth_diagnostic_Node.cpp.o
2022-02-01T02:35:42.3193101Z In file included from /home/runner/work/icub-main/icub-main/icub-firmware-shared/embot/prot/eth/embot_prot_eth_diagnostic_Node.h:17,
2022-02-01T02:35:42.3195229Z                  from /home/runner/work/icub-main/icub-main/icub-firmware-shared/embot/prot/eth/embot_prot_eth_diagnostic_Node.cpp:13:
2022-02-01T02:35:42.3197451Z /home/runner/work/icub-main/icub-main/icub-firmware-shared/embot/core/embot_core.h: In member function ‘bool embot::prot::eth::diagnostic::Node::Impl::init(const embot::prot::eth::diagnostic::Node::Config&)’:
2022-02-01T02:35:42.3200548Z /home/runner/work/icub-main/icub-main/icub-firmware-shared/embot/prot/eth/embot_prot_eth_diagnostic_Node.cpp:153:9:   in ‘constexpr’ expansion of ‘embot::core::Data(0, ((size_t)((uint16_t)embot::prot::eth::diagnostic::InfoBasic::sizeofobject)))’
2022-02-01T02:35:42.3201660Z /home/runner/work/icub-main/icub-main/icub-firmware-shared/embot/core/embot_core.h:130:59: error: conversion of ‘const void*’ null pointer to ‘void*’ is not a constant expression
2022-02-01T02:35:42.3202256Z   130 |         constexpr Data(const void *p, size_t s) : pointer(const_cast<void*>(p)), capacity(s) {}
2022-02-01T02:35:42.3202623Z       |                                                           ^~~~~~~~~~~~~~~~~~~~
2022-02-01T02:35:42.3203630Z /home/runner/work/icub-main/icub-main/icub-firmware-shared/embot/prot/eth/embot_prot_eth_diagnostic_Node.cpp:165:9:   in ‘constexpr’ expansion of ‘embot::core::Data(0, ((size_t)((uint16_t)embot::prot::eth::diagnostic::Info::sizeofobject)))’
2022-02-01T02:35:42.3204626Z /home/runner/work/icub-main/icub-main/icub-firmware-shared/embot/core/embot_core.h:130:59: error: conversion of ‘const void*’ null pointer to ‘void*’ is not a constant expression
2022-02-01T02:35:42.3249625Z /home/runner/work/icub-main/icub-main/icub-firmware-shared/embot/prot/eth/embot_prot_eth_diagnostic_Node.cpp:176:9:   in ‘constexpr’ expansion of ‘embot::core::Data(0, ((size_t)((uint16_t)embot::prot::eth::diagnostic::InfoLarge::sizeofobject)))’
2022-02-01T02:35:42.3250724Z /home/runner/work/icub-main/icub-main/icub-firmware-shared/embot/core/embot_core.h:130:59: error: conversion of ‘const void*’ null pointer to ‘void*’ is not a constant expression
2022-02-01T02:35:42.3594102Z make[2]: *** [embot/CMakeFiles/embot.dir/build.make:160: embot/CMakeFiles/embot.dir/prot/eth/embot_prot_eth_diagnostic_Node.cpp.o] Error 1
2022-02-01T02:35:42.3597373Z make[1]: *** [CMakeFiles/Makefile2:161: embot/CMakeFiles/embot.dir/all] Error 2
2022-02-01T02:35:42.3597789Z make: *** [Makefile:136: all] Error 2
2022-02-01T02:35:42.3622006Z ##[error]Process completed with exit code 2.

Could you please have a look at it?

Macro definition of snprintf conflicts with Standard Library function declaration

While following the installation for FT Shoes related software on a windows laptop, the following error occurs while building icub-firmware-shared :

fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration

A quick solution is documented in the installation notes. It is to comment out the following line in eth/embobj/core/core/embOBJporting.h header file.

// #define snprintf sprintf_s

A permanent solution is presented here suggesting to use the following lines instead:

#if _MSC_VER < 1900 
#define snprintf _snprintf
#endif

Add short description of icub-firmware-shared

Suggestion: add a short explanation of this repository (one sentence), to prevent confusion with icub-firmware and icub-firmware-build (those two repos already have a description).

icub-firmware-shared_no_description

float32_t definition conflicts

The file embOBJporting.h contains some defines of float32_t. This causes issues with this PR in YARP, where we have a typedef for yarp::conf::float32_t, and as a consequence icub-main compilation fails

Questions on new inertial3 sensor types and configuration

Hi @marcoaccame , I was setting the device/remapper/wrapper configuration files for using the new Multiple Analog Sensors interfaces, and for that I went through the recent changes in icub-firmware-shared as well as the new template iCubTemplates/iCubTemplateV4_0/hardware/inertials/body_part-ebX-IMU.xml. I would have a few questions on the configuration parameters :

  • is the enum type eOas_inertial3_type_t to be deprecated or will it be eOas_sensor_t instead?
  • is the new board type eobrd_mtb4 for the future MTB boards integrating IMUs instead of accelerometers, or do we use it with the current hardware, instead of the eobrd_mtb type?

CC @valegagge @traversaro

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.