在镜像制作之前我们需要更改一下源码的一些配置文件的内容,包括团队编号、球衣颜色、IP等等。

一、Setting Up the NAO

在SPL中,每支球队赛前都会被分配一个唯一的球队号码。

这个号码用于在 GameController 中标识团队,同时避免 IP 地址和 UDP 端口的冲突。

在B-Human系统代码中,必须将团队编号输入到配置文件中。该文件位于 BHumanCodeRelease/Config/settings.cfg

由于今年(2024年)SPL为我们学校队伍分配的编号是103,所以将文件内容改为以下即可

teamNumber = 103;
fieldPlayerColor = black;
goalkeeperColor = blue;
playerNumber = 3;
location = Default;
scenario = Default;
magicNumber = 103;

二、IP Configuration

所有Nao机器人都被规定采用指定的子网地址进行有线和无线通信。

在 BHumanCodeRelease/Install/createRobot 中配置,格式为 192.168.<team>.<robot>(用于有线通信)和 10.0.<team>.<robot>(用于无线通信,通常在RoboCup赛事中使用)。

这里无需修改。

三、Wireless Network Configuration

无线配置存储在 BHumanCodeRelease/Install/Profiles 中,包括 NONE、SPL_A、SPL_B、SPL_C、SPL_D 和 SPL_E。除了 NONE 为空之外,其余配置文件格式如下:

"SPL_E":
  password: "Nao?!Nao?!"

无线配置是用来上传到Nao机器人上,以供其连接无线网的。

在待会儿用deploy指令创建镜像时,会用-w 选项设置刷机后激活的配置文件的名称。

如果选择空配置文件 NONE,将关闭无线功能。选择其他文件,则连接对应的无线网络。

这个配置文件不仅可以在制作镜像时下载到镜像文件中刷写到NAO上,而且在后续命令行使用deploy部署软件时也可以用-w选项来更新,这意味着Nao机器人连接的网络可以在以后通过不用重新刷镜像的方式进行更改。

四、Creating a Robot Configuration

以下两种方法任选其一即可,推荐方法二:

方法一:适用于NAO必须处于开机状态并正在运行Robocup基镜像(NAO -2.8.5.11 _robocup_only_with_root.opn)。

到Install目录下打开终端运行以下命令:

./createRobot [-t <team>] -r <robot> -i <ip> <name>

下面是选项的详细解释:

  • <team>是参赛队的编号(最终作为有线和无线的IP地址的第三个数)。如果省略不写,则默认使用 Config/settings.cfg 文件中的队号。
  • <robot>是机器人的编号,自己定(最终作为它有线和无线的IP地址的第四个数字)。
  • <ip>是机器人当前的IP地址。
  • <name>是给这台Nao起的名称,将来用这个名称来引用NAO,随便起名字,例如:Naofour。
  • 这个脚本会在目录 BHumanCodeRelease/Config/Robots/<name> 中创建文件,并更新一些现有的配置文件。

方法二:适用于所有场景

到Install目录下打开终端运行以下命令:

./createRobot [-t <team>] -r <robot> -s <head> -b <body> <name>

其中<head>和<body>分别是 headId 和 bodyId 的序列号(以P开头的20个字符的字符串)。这些信息可以在机器人身上找到。

五、Creating a Root Image

在终端运行以下命令安装所需软件包:

sudo apt install bzip2 debootstrap patchelf

到Install目录下运行下面的命令创建根映像,它将下载很多包,可能需要几分钟:

sudo Install/createRootImage <path to original Aldebaran OPN>

这会在Install目录下生成root.ext3文件 。

六、Flashing the Robot

接下来使用上面创建的根镜像,制作bhuman.opn镜像,请参阅下一节中对 -i 选项的红字描述。

在Make/Common目录下运行以下命令即可在Build/image目录下生成bhuman.opn镜像文件:

./deploy Develop -i -nc -v 50 -w SPL_E

将生成好的opn文件刷到U盘上,再给机器人刷机即可:
U盘镜像刷写工具——NaoFlasher(Windows版,Linux版)详细教程:点击此处

七、Deploying the Software

所有配置以及代码的修改都要通过deploy命令来部署更新到机器人上。

通过执行Make/Common目录下的deploy命令来部署软件,该脚本也从 Make 下的其他子目录链接:

usage: deploy [Release|Develop|Debug] [<ipaddress>|(-r <playernumber> <ipaddress>)*] {options}
  options:
    -b                       重启bhuman系统
    -c <field player color>  设置球员的颜色为 blue, red, yellow, black, white, orange, purple, brown, or gray
    -d                       删除日志或向镜像添加时间戳
    -g <goalkeeper color>    设置守门员的颜色为 blue, red, yellow, black, white, orange, purple, brown, or gray
    -h | --help | /h | /?    打印帮助信息
    -i                       创建镜像而不是部署
    -k                       保留远程连接的IP地址
    -l <location>            设置位置
    -m <magic number>        set magic number for teamcomm (0-255). Set -1 for random.
    -nc                      不编译
    -nr                      不检查目标是否可达
    -p <player number>       设置球员编号
    -r <n> <ip>              指定目标机器人。<n>为机器人编号<ip>为机器人有线/无线IP(每个机器人一个 -r)
    -s <scenario>            设置场景
    -t <team number>         设置队伍编号
    -u                       在启动bhuman之前检查USB驱动器(仅在创建镜像时)
    -v <volume percent>      设置Nao机器人的音量
    -w <wireless profile>    设置无线配置文件
  示例指令:
    ./deploy Develop 192.168.103.104 -p 1
    ./deploy Develop -r 104 10.0.103.104 -r 102 10.0.103.102
    ./deploy Develop -i -nc -v 50 -w SPL_E

如果没有 -nc 选项,deploy 将在部署之前重新构建代码。

使用选项 -i,会创建一个安装镜像(.opn),而不是将软件直接部署到机器人中。

在这种情况下,不需要指定IP地址。

该镜像将存储在 BHumanCodeRelease/Build/image/<configuration>/ 目录中,这个镜像即为bhuman镜像。

在刷这个镜像之前,NAO必须提前刷过基镜像 NAO -2.8.5.11 _robocup_only_with_root.opn。

将软件部署到NAO的标准方法是使用 Deploy Dialog,这个后续再说。它是用于部署的图形化前端,具有许多附加功能。