NAOqi C++ 개발 환경의 동작 확인
소개
전회, 「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 수정
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
미해결
감상
Reference
이 문제에 관하여(NAOqi C++ 개발 환경의 동작 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Suna/items/e8c694253f8c01b817c0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)