NAOqi C++ 개발 환경의 동작 확인

10998 단어 C++NAOqiPepper

소개



전회, 「NAOqi C++ 개발 환경 설치(OS X 환경)

그 후, 여러가지 시험해 보고, 최저 레벨에서는 왠지 파악할 수 있었으므로 기록해 둡니다.

참고 : NAOqi Framework란?

무엇을 할까라고 하면, PC측에서 가상 로봇(Broker)에 접속하는 Proxy를 작성해, 로봇측의 모듈을 사용해 조작을 실시합니다.

프로젝트 만들기



병아리 생성


$ cd /path/to/project
$ qibuild init

.qi 디렉토리가 작성됩니다. 우선 보지 않아도 괜찮을 것 같기 때문에, 내용에는 밟지 않습니다.

그런 다음 다음 명령을 사용하여 프로젝트의 병아리를 만듭니다.
$ qisrc create HelloWorld

$ ls -la
total 0
drwxr-xr-x  4 suna  staff  136 12 24 02:14 .
drwxr-xr-x  4 suna  staff  136 12 24 02:08 ..
drwxr-xr-x  4 suna  staff  136 12 24 02:14 .qi
drwxr-xr-x  6 suna  staff  204 12 24 02:14 HelloWorld

$ cd HelloWorld
$ ls -la
total 32
drwxr-xr-x  6 suna  staff  204 12 24 02:14 .
drwxr-xr-x  4 suna  staff  136 12 24 02:14 ..
-rw-r--r--  1 suna  staff  271 12 24 02:14 CMakeLists.txt
-rw-r--r--  1 suna  staff  271 12 24 02:14 main.cpp
-rw-r--r--  1 suna  staff  283 12 24 02:14 qiproject.xml
-rw-r--r--  1 suna  staff  459 12 24 02:14 test.cpp

$ cat main.cpp
/*
 * Copyright (c) 2012-2014 Aldebaran Robotics. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the COPYING file.
 */
#include <iostream>

int main()
{
  std::cout << "Hello, world" << std::endl;
  return 0;
}

그냥 Hello World 같아요.

병아리 실행


$ qibuild configure
$ qibuild make
$ build-sys-darwin-x86_64/sdk/bin/HelloWorld
Hello, world

코드 수정



main.cpp 수정



main.cpp
/*
 * Copyright (c) 2012-2014 Aldebaran Robotics. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the COPYING file.
 */
#include <iostream>
#include <alcommon/alproxy.h>

int main()
{
  std::string ip = "127.0.0.1";
  int port = 9559;

  AL::ALProxy proxy("ALTextToSpeech", ip, port);

  proxy.callVoid("say", std::string("Hello World"));

  return 0;
}

CMakeLists.txt 수정


  • set 행 추가
  • qi_use_lib 행 추가

  • CMakeLists.txt
    cmake_minimum_required(VERSION 2.8)
    project(HelloWorld)
    
    set(CMAKE_CXX_FLAGS "-stdlib=libstdc++")
    
    find_package(qibuild)
    
    # Create a executable named HelloWorld
    # with the source file: main.cpp
    qi_create_bin(HelloWorld "main.cpp")
    
    qi_use_lib(HelloWorld ALCOMMON)
    
    # Add a simple test:
    enable_testing()
    qi_create_test(test_HelloWorld "test.cpp")
    

    configure & make


    $ qitoolchain create mytoolchain /path/to/sdk/toolchain.xml
    Updating toolchain mytoolchain with feed: /path/to/sdk/toolchain.xml
    Adding packages
    * (1/1) naoqi-sdk-mac64
    Now try using
      qibuild configure -c mytoolchain
      qibuild make -c mytoolchain
    
    $ qibuild configure -c mytoolchain
    Current build worktree: /path/to/project
    Using toolchain: mytoolchain
    Build type: Debug
    * (1/1) Configuring HelloWorld
    -- The C compiler identification is AppleClang 6.0.0.6000056
    -- The CXX compiler identification is AppleClang 6.0.0.6000056
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Using qibuild 3.7
    -- Binary: HelloWorld
    -- Binary: test_HelloWorld
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /path/to/project/HelloWorld/build-mytoolchain
    
    $ qibuild make -c mytoolchain
    Current build worktree: /path/to/project
    Using toolchain: mytoolchain
    Build type: Debug
    * (1/1) Building HelloWorld
    Scanning dependencies of target HelloWorld
    [ 50%] Building CXX object CMakeFiles/HelloWorld.dir/main.cpp.o
    Linking CXX executable sdk/bin/HelloWorld
    [ 50%] Built target HelloWorld
    Scanning dependencies of target test_HelloWorld
    [100%] Building CXX object CMakeFiles/test_HelloWorld.dir/test.cpp.o
    Linking CXX executable sdk/bin/test_HelloWorld
    [100%] Built target test_HelloWorld
    

    Choregraphe의 가상 로봇에서 실행



    Choregraphe를 시작하고 가상 로봇의 포트를 확인합니다.

    편집 > 설정 > 가상 로봇 탭

    실행 1(실패)


    $ build-mytoolchain/sdk/bin/HelloWorld
    dyld: Library not loaded: @executable_path/../lib/libalproxies.dylib
      Referenced from: /path/to/project/HelloWorld/build-mytoolchain/sdk/bin/HelloWorld
      Reason: image not found
    Trace/BPT trap: 5
    

    실행 2 (실패)



    실행 1에서 "dyld : Library not loaded"라고 말하기 때문에 DYLD_LIBRARY_PATH를 지정하고 다시 실행하십시오.
    $ export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/path/to/sdk/lib:/path/to/sdk/lib/naoqi
    
    $ build-mytoolchain/sdk/bin/HelloWorld
    [INFO ] Starting ALNetwork
    [INFO ] NAOqi is listening on 127.0.0.1:54010
    libc++abi.dylib: terminating with uncaught exception of type AL::ALNetworkError:    ALNetwork::getModuleByName
        failed to get module ALTextToSpeech http://127.0.0.1:52716
    Abort trap: 6
    

    뭔가 움직이기 시작한 오류처럼 보입니다.

    ... 많이 고민했지만 해결할 수 없었습니다.
    일단, Choregraphe의 가상 로봇에의 접속은 실적 있는 것 같습니다만.

    참고 : Pepper의 Python SDK로 가상 로봇을 만나십시오.

    Webots for NAO에서 실행



    참고 : Webots for NAO 설치

    외형을 Pepper에는 할 수 없는 것 같습니다만, 시도할 것 같은 느낌이었으므로 설치해 보았습니다.

    실행 3 (성공)


    $ build-mytoolchain/sdk/bin/HelloWorld
    [INFO ] Starting ALNetwork
    [INFO ] NAOqi is listening on 127.0.0.1:54011
    [INFO ] Stopping ALNetwork
    [INFO ] Exit
    



    미해결


  • SDK에서 Choregraphe의 가상 로봇 연결

  • 감상


  • 단지 흥미로운 C++ SDK를 시도했지만, Pepper의 프로그래밍이라면 우선 Choregraphe에서 열심히 노력하는 것이 올바른 길임을 인식했습니다. 네.
  • 좋은 웹페이지 즐겨찾기