基于C++的NAO机器人开发01:配置C++环境

基于C++的NAO机器人开发01:配置C++环境

  NAOdocument提供了官方的配置说明文档,官方文档,本博客也是基于这篇文档配置的。本博客基于Windows平台建立,其他平台可参考官方文档。

所需软件

  1. 操作系统:windows10 64位
  2. 编译器:Visual Studio 2010
  3. qiBuild:生成交叉编译工程(具体见后面解释)
  4. CMake:跨平台编译软件,生成qiBuild所需的工程
  5. python2 32位
  6. naoqi C++ SDK

安装Visual Studio 2010

  百度云:链接:https://pan.baidu.com/s/1W58DQagcEN-AWlgNchaVUw
提取码:0gey。下载解压后正常安装即可。软件大小约6.8G。
  只能是2010版的!官方文档说的2013版本装了编译不了,太坑了,可能是还没有C++SDK的vs2013版的。

为什么要装qibuild和CMake

  编译一共分2种:本地编译和交叉编译。本地编译:在当前编译平台下,编译出来的程序放到当前平台下运行。交叉编译:在当前编译平台下,编译出来的程序运行在体系结构不同的另一种目标平台上。因为我们是在本地计算机上面编译代码,然后要运行在NAO的操作系统里面,两者系统结构并不一样,所以需要使用交叉编译。
  qiBuild就是一个可以产生交叉编译工程文件的工具。
  CMake是一个跨平台的编译工具,可以用简单的语句来描述所有平台的编译过程。他能够输出各种各样的makefile或者project文件,包括Windows, Mac, Linux 和NAOqi OS。所以我们使用CMake来编译qiBuild产生的交叉编译工程文件,并写入NAO操作系统中。
  也就是说我们首先使用qiBuild生成一个可以交叉编译的文件,然后用CMake去编译,从而生成visual studio的工程文件,这样我们下次再去编写代码时,只需要在visual studio里面修改了,而且CMake编译的文件可以跨平台使用,可以直接传给NAO的操作系统使用。 (以上均个人理解)

安装CMake和python2

  CMake需要2.8.3以上的版本,网址。 尽量选择32位版本的,且是.msi的文件。
data
  注:安装时选择添加环境变量至所有用户,安装路径不要有中文。
data
  检查是否安装成功:进入cmd命令行:输入cmake,显示信息则安装正确。
  python的安装参考另一篇博客:基于python的NAO机器人开发01

qiBuild的安装与配置

  qiBuild使用python的pip包管理来安装,进入cmd命令行,输入pip install qibuild即可。(如果安装了python2和3,一定要先切换到python2再安装。)
  安装完首先初始化设置,继续输入qibuild config --wizard并按照提示完成相应配置(选择visual studio 2010),当然也可以再次输入重新配置。这一步相当于指定编译器类型。
data
  新建一个文件夹myWorktree(可以是其他名字)作为工作路径(不能放在中文文件夹下),然后用cd命令切换到该文件夹下,初始化工作路径,输入命令:qibuild init。完成后会生成一个.qi的文件夹。
data

安装C++ SDK并配置

  进入NAO社区网站并下载windows版本的naoqi C++ SDK,网址
链接:https://pan.baidu.com/s/1Cic_8saHFx_uo_ge_sGDag
提取码:o2qe,下载并解压重命名为naoqi-sdk,和之前的工作路径文件夹myWorktree放在同级目录。
  创建一个工具链,即建立一个交叉编译环境,输入命令:qitoolchain create mytoolchain /.../naoqi-sdk/toolchain.xml。mytoolchain为工具链的名字,/…/naoqi-sdk/toolchain.xml为naoqi的文件路径(可以先进入naoqi所在盘符名,在输入该命令,如qitoolchain create mytoolchain /NAO/naoqi-sdk/toolchain.xml),最后cd进入工作路径文件夹myWorktree,生成配置文件qibuild add-config myconfig -t mytoolchain --default
data
  注:我之前配置过,所以显示already exists

新建qiBuild工程并测试

hello world

  首先建立一个不涉及NAOqi库的工程。具体步骤见官方文档:官方文档
  cd命令进入工作路径文件夹myWorktree,然后新建一个工程文件:

1
qisrc create myFirstExample

  cd命令进入该工程文件:

1
cd myFirstExample

  然后使用qibuild配置该文件

1
qibuild configure

  最后使用qibuild生成编译文件

1
qibuild make

  在生成的build-myconfig文件夹中可以找到visual studio的工程文件(后缀为.sln的文件)。
  打开后会发现一个有5个工程文件,其中只有my_first_example文件包含main.cpp,其余4个可以移除。并右击设置该文件夹为启动项。
  打开并编译运行main.cpp,可以看到输出的hello world。当然也可以用cd命令行找到其exe可执行文件直接运行,在build-myconfig/sdk/bin中。

1
2
cd build-myconfig/sdk/bin
myfirstexample_d.exe

moveHead

  下面建立一个包含naoqi库的一个案例,可以参考旧版的官方文档。官方文档
  首先要建立一个工程文件movehead(即qisrc create movehead),此时会生成一些文件,具体含义见官方文档说明。
  其次就是修改其中的main.cppCMakeLists.txt文件。我们采用官方文档的一个例子:movehead
  将main.cpp里面的内容替换成movehead.cpp的内容(文件名也要修改为movehead.cpp),CMakeLists.txt的内容替换成该例子中CMakeLists的内容。

CMakeLists.txt文件说明

  该文件一共有5行命令。具体含义见官方文档注释。比较重要的一行是最后一行,其含义为编译文件所需要包含的naoqi库文件,且均大写,也就是你编写的NAO代码需要用到哪些库,比如movehead这个例子,其头文件为

1
2
#include <alerror/alerror.h>
#include <alproxies/almotionproxy.h>

  那么就需要将相应的的库放在最后一行。

编译工程文件

  编译方法有2种,一种是之前的命令行编译,还有一种是使用CMake软件编译,其原理是一样的。下面介绍CMake编译(编译之前要先建立工程文件夹):
  打开CMake软件,在最上面的Source中选择工程文件夹,Build中选择工程文件夹中的Build文件夹(需要自己新建,和main.cpp位于同级目录)。
data
  然后点击下面的configure,选择VS2010编译器和交叉编译,在选择toolchain,在之前的naoqi-sdk文件夹下的toolchain-pc.cmake。
data
data
data
  等待一会,会全部红色高亮,再次点击CongfigureGenerate。此时打开build文件夹,找到vs2010的工程文件,打开编译执行即可。
  如果报错检查CMakeLists.txt中的项目文件夹名,.cpp文件名和相应的库名是否正确。
  注:如果不是第一次configure,需要清除缓存。file->Delete Cache

Choregraphe调试

  打开Choregraphe软件,连接一个虚拟机器人,并在movehead.cpp中输入相应的ip地址和端口号,(删除main()中的if判断,并修改其中一行改为:AL::ALMotionProxy motion("127.0.0.1", 60770);,具体IP和端口号查看Choregraphe软件。)编译执行即可在机器人视图中看到效果。其实现方法和python类似,可参考另一篇博客基于python的NAO机器人开发01

谢谢老板!