jrl-umi3218 / mc_naoqi_dcm

Local DCM module for SoftBankRobotics robots designed to be used with mc_naoqi interface
BSD 2-Clause "Simplified" License
1 stars 2 forks source link

Cross-compiling this module for NAO6 #1

Open zyc1155 opened 2 years ago

zyc1155 commented 2 years ago

Hi, I'm currently in the process of controlling the whole-body motion of the NAO6 robot in real-time based on the mc_rtc framework. The mc_rtc and mc_naoqi are successfully installed on my computer running Ubuntu 18.04. The mc_naoqi works without any problem when it only runs the simulation of NAO. However, when I try to apply it to the real robot according to the instruction, the following error occurred:

[info] MCControlNAOqi: Connecting to nao robot on address naomdl.local:9559
[info] Connecting to naomdl.local:9559
[success] Connected to naomdl.local
terminate called after throwing an instance of 'qi::FutureUserException'
  what():  Cannot find service 'MCNAOqiDCM' in index
Aborted (core dumped)

This error comes when the module is cross-compiled by the Cross Toolchain of Pepper. And when I use the Cross Toolchain of NAO, another error occurred at configuring time:

  CMake Error at /home/kiriki/.local/share/cmake/qibuild/internal/uselib.cmake:79 (find_package):
    By not providing "FindALCOMMON.cmake" in CMAKE_MODULE_PATH this project has
    asked CMake to find a package configuration file provided by "ALCOMMON",
    but CMake did not find one.
    Could not find a package configuration file provided by "ALCOMMON" with any
    of the following names:
      ALCOMMONConfig.cmake
      alcommon-config.cmake
    Add the installation prefix of "ALCOMMON" to CMAKE_PREFIX_PATH or set
    "ALCOMMON_DIR" to a directory containing one of the above files.  If
    "ALCOMMON" provides a separate development package or SDK, be sure it has
    been installed.
  Call Stack (most recent call first):
    /home/kiriki/.local/share/cmake/qibuild/internal/uselib.cmake:196 (_qi_use_lib_get_deps)
    /home/kiriki/.local/share/cmake/qibuild/stage.cmake:247 (_qi_use_lib_internal)
    src/CMakeLists.txt:10 (qi_use_lib)
  -- Configuring incomplete, errors occurred!
  See also "/home/kiriki/qiBuild_wt/mc_naoqi_dcm/build-ctc-naoqi-config/CMakeFiles/CMakeOutput.log".
  [ERROR]: ConfigureFailed 

Please give me some advice for this issue.

Thank you.

arntanguy commented 2 years ago

Hi, Thanks for reporting an issue.

Unfortunately I haven't used, nor am aware of anyone that has used recent versions of NAO with mc_rtc. From a quick look at the API, it seems it has significantly changed since when mc_naoqi_dcm was first introduced for NAO.

The current implementation relies on what Softbank refers to as the Former NAOqi framework. The framework has been significantly updated since. In particular it seems that the alcommon library no longer exists.

This means that the implementation of both mc_naoqi_dcm and mc_naoqi needs to be upgraded to accomodate the new API.

zyc1155 commented 2 years ago

In fact, I noticed the significant changes in NAOqi, especially the replacement of DCM by LoLA. Since there are no APIs for real-time control (i.e. control cycle of 12ms) in the official documentation, I try to use the mc_naoqi interface. It seems that I have to contact SoftBank Robotics.

Anyway, thanks for your advice.

arntanguy commented 2 years ago

mc_naoqi_dcm is a custom module that we developped for integration of mc_rtc on NAO/Pepper, originally based on the fastgetsetdcm module example.

So we need to:

If you feel that this is something you can do, then PR are most welcome, and I will try to help. Otherwise I will try and take a look at it myself, but I can't guarantee when ;)

zyc1155 commented 2 years ago

Although I am not familiar with both the frameworks of mc_rtc and NAOqi, I'm glad to help update the mc_naoqi_dcm module. In my opinion, the main challenge is that there is no introduction to APIs of LoLA in the official documentation. In addition, the availability of ALMemoryFastAccess also need to be checked. I already sent an email about APIs of LoLA to SoftBank Robotics. If I have any progress, I'll report here. I would appreciate it if you could let me know about your progress.

kheddar commented 2 years ago

The problem we have is that SoftBank Robotics is not willing to produce Pepper any longer and we are wondering if this is worth spending efforts on this, maybe @anastasiabolotnikova can provide an opinion. @arntanguy does this have any consequence on Carole's work?

anastasiabolotnikova commented 2 years ago

Dear all, Thank you for contributing to this discussion.

It is true that Pepper robots production has stopped. Nevertheless, many Peppers are still around and used by researchers. And NAO robots (being produced) are still a popular option of an affordable small scale humanoid platform.

As long as the robot is running NaoQi version that is DCM based, mc_naoqi should work with it (e.g., for Carole's work).

I wonder if NAO6 can be flashed with a downgraded NaoQi version that uses DCM instead of LoLA. That is one thing to look into @zyc1155 Obviously, not the best solution, but might be the easiest and fastest to get mc_rtc to work with your NAO.

A more elegant solution, as @arntanguy already outlined, is to make mc_naoqi compatible with LoLA. That will require significantly more work.

zyc1155 commented 2 years ago

Thank you so much for all your advice. I already sent an email about LoLA to SoftBank Robotics, but they haven't responded to me yet. And today I found the following instructions

"For Nao v6, OS 2.8, and later LoLA is Aldebaran’s communications bridge to Aldebaran’s proprietary NaoQi SDK. lola is a process separate to naoqi. Access is only available on special RoboCup versions of the OS." and "Due to software licensing between Softbank and RoboCup SPL, teams can’t publicly release the Naoqi OS provided by Softbank."

from the documentation of rUNSWift, which is one of the teams of The RoboCup Standard Platform League. According to this documentation, each NAO6 need a permission file, which is a *NAO operating system image file (.opn), to enable the access to LoLA or flash a downgraded NaoQi** version.

Due to the policy mentioned above, I'm afraid that mc_naoqi_dcm cannot correspond to LoLA (of NAO6). And I look forward to obtaining permission from SoftBank Robotics for academic purposes ;)

arntanguy commented 1 year ago

@zyc1155 Did you get any response from Softbank on this issue? Since pepper is now managed by United Robotics, I guess the licencing considerations wouldn't be of much relevance.