基于C++的NAO机器人开发01:配置C++环境
NAOdocument提供了官方的配置说明文档,官方文档,本博客也是基于这篇文档配置的。本博客基于Windows
平台建立,其他平台可参考官方文档。
所需软件
- 操作系统:windows10 64位
- 编译器:Visual Studio 2010
- qiBuild:生成交叉编译工程(具体见后面解释)
- CMake:跨平台编译软件,生成qiBuild所需的工程
- python2 32位
- 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的文件。
注:安装时选择添加环境变量至所有用户,安装路径不要有中文。
检查是否安装成功:进入cmd命令行:输入cmake,显示信息则安装正确。
python的安装参考另一篇博客:基于python的NAO机器人开发01。
qiBuild的安装与配置
qiBuild使用python的pip包管理来安装,进入cmd命令行,输入pip install qibuild
即可。(如果安装了python2和3,一定要先切换到python2再安装。)
安装完首先初始化设置,继续输入qibuild config --wizard
并按照提示完成相应配置(选择visual studio 2010),当然也可以再次输入重新配置。这一步相当于指定编译器类型。
新建一个文件夹myWorktree(可以是其他名字)作为工作路径(不能放在中文文件夹下),然后用cd
命令切换到该文件夹下,初始化工作路径,输入命令:qibuild init
。完成后会生成一个.qi
的文件夹。
安装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
。
注:我之前配置过,所以显示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
2cd build-myconfig/sdk/bin
myfirstexample_d.exe
moveHead
下面建立一个包含naoqi库的一个案例,可以参考旧版的官方文档。官方文档。
首先要建立一个工程文件movehead
(即qisrc create movehead
),此时会生成一些文件,具体含义见官方文档说明。
其次就是修改其中的main.cpp
和CMakeLists.txt
文件。我们采用官方文档的一个例子:movehead。
将main.cpp
里面的内容替换成movehead.cpp
的内容(文件名也要修改为movehead.cpp
),CMakeLists.txt
的内容替换成该例子中CMakeLists
的内容。
CMakeLists.txt文件说明
该文件一共有5行命令。具体含义见官方文档注释。比较重要的一行是最后一行,其含义为编译文件所需要包含的naoqi库文件,且均大写,也就是你编写的NAO代码需要用到哪些库,比如movehead这个例子,其头文件为1
2
那么就需要将相应的的库放在最后一行。
编译工程文件
编译方法有2种,一种是之前的命令行编译,还有一种是使用CMake软件编译,其原理是一样的。下面介绍CMake
编译(编译之前要先建立工程文件夹):
打开CMake
软件,在最上面的Source
中选择工程文件夹,Build
中选择工程文件夹中的Build
文件夹(需要自己新建,和main.cpp
位于同级目录)。
然后点击下面的configure,选择VS2010编译器和交叉编译,在选择toolchain,在之前的naoqi-sdk文件夹下的toolchain-pc.cmake。
等待一会,会全部红色高亮,再次点击Congfigure
和Generate
。此时打开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。