如何在Qualcomm机器人RB3开发平台上安装Docker
准备好开发板,以便从容器中取出机器人操作系统映像
利用Docker,很容易将应用程序封装到容器中,并在不同的开发环境中运行。使用容器可以简化制作机器人操作程序的过程;机器人操作程序是一种开源机器人元操作系统,可用于机器人RB3开发平台。(请注意,不需要Docker也可以安装机器人操作系统,但目前需要安装多个依赖项。)
如 将全新、完整的映像(从Linaro)闪存到板上所述,已经利用Docker以及机器人操作系统容器成功对来自Linaro的映像进行了测试。机器人操作系统不一定处于Docker容器中,但在目前是确保机器人操作系统在机器人RB3开发平台上工作的最简单程序。
更新RB3开发板
利用最新版本的Linaro Debian桌面映像对开发板进行闪存。
设置Docker
1. 如要从Docker中提取映像,首先要 创建一个Docker账户。
2. 卸载旧版本的Docker。
$ sudo apt-get remove docker docker-engine docker.io containerd runc
利用储存Docker仓库安装Docker
设置储存库
1. 更新apt程序包索引:
$ sudo apt-get update
2. 安装程序包,以确保超文本传输协议安全:
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
3. 添加Docker的官方GPG密钥:
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add
4. 利用指纹验证密钥
$ sudo apt-key fingerprint 0EBFCD88 pub 4096R/0EBFCD88 2017-02-22 Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid Docker Release (CE deb) docker@docker.com sub 4096R/F273FCD8 2017-02-22
5. 为arm64平台设置Stable储存库:
$ sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
• 人工智能用神经处理软件开发工具包
•安装Docker引擎 – 社区
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io
iptables故障排除
一旦您运行了上述命令,就可以发现提示故障的错误信息,如下图所示:
核对Docker版本:
$ sudo docker version
以下截图表明Docker引擎已经安装,但是守护进程并没有运行。e
启动Docker:
$ sudo service docker start
将会出现以下错误信息:2
问题在于Docker安装程序使用了iptable来进行网络地址转换(NAT)。但是,Debian使用了nftables的修改版本。其中一种选择是将条目转换为nftables。
或者,您也可以通过运行以下命令设置Debian,以便iptables-legacy:
$ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
$ sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
重新启动Docker:
$ sudo service docker start
一旦Docker开始运行,则拉取一个机器人操作系统映像:
docker pull ros
将Java安装在Qualcomm机器人RB3上的Docker容器中
1. 在终端中,输入以下命令,以便将乌班图映像拉动到Qualcomm机器人RB3上:
$ docker pull ubuntu:16.04
使用以下命令查看新创建的映像:
$ docker image list
2. 为新创建的乌班图映像创建一个容器,并运行该容器:
$ docker run -it –name=Ubuntu_container1 ubuntu:16.04
3. 只要处于乌班图容器内,就可以使用以下命令安装Java:
$ apt-get update && apt-get install -y openjdk-8-jdk && apt-get install -y ant && apt-get clean && rm -rf /var/lib/apt/lists/* && rm -rf /var/cache/oracle-jdk8-installer $ apt-get update && apt-get install -y ca-certificates-java && apt-get clean && update-ca-certificates -f && rm -rf /var/lib/apt/lists/* && rm -rf /var/cache/oracle-jdk8-installer
4. 设置JAVA_HOME环境变量。
$ export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/"
确保已经成功安装了java
$ java -version
将亚马逊云服务Greengrass安装到Qualcomm机器人RB3上的Docker容器中
在乌班图容器中启用符号链接和硬链接保护
1. 确保您已经按照上文说明在Qualcomm机器人RB3上安装了乌班图16.04 Docker映像。利用以下命令启动乌班图Docker容器:
$ docker container start
2. 利用各个选项创建sysctl配置文件,以启用保护项:
$ sudo sh -c 'echo "fs.protected_hardlinks = 1" >> /etc/sysctl.d/local-ggc.conf' $ sudo sh -c 'echo "fs.protected_symlinks = 1" >> /etc/sysctl.d/local-ggc.conf'
3.输入Exit命令或同时按下ctrl+d从容器中退出。使用“docker Stop
4. 进入乌班图容器后,您可以验证是否启用了保护项。 $ cat /proc/sys/fs/protected_{hardlinks,symlinks}
添加Greengrass用户。 $ adduser --system ggc_user $ addgroup --system ggc_group
6. 安装SQLite3。 $ apt-get update $ apt-get install sqlite3
7. 安装CMake。 $ apt-get install cmake
在乌班图容器中安装亚马逊云服务命令行界面
1. 在Docker容器的终端中,输入python –版本,以检查python语言的安装情况。如果未安装python语言,则输入以下命令: $ apt-get update && apt-get install python
2. 下载亚马逊云服务命令行界面捆绑安装程序 $ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
3. 解压程序包。 $ unzip awscli-bundle.zip
4. 运行安装程序。 $ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
创建亚马逊云服务Greengrass组以及亚马逊云服务Greengrass核心
采取以下步骤,您可以设置一个亚马逊云服务帐户。
1. 登录到亚马逊云服务管理控制台。
2. 在控制台中,搜索物流联网Greengrass。
3. 在亚马逊云服务Greengrass页面,选择“开始创建”并“管理”您的组群。
4. 在Greengrass组群页面,点击“创建组群”。
5. 在“设置您的Greengrass组群”页面,选择“使用默认创建”。
6. 为您的组群输入一个名称,然后选择“下一步”。
7. 使用亚马逊云服务Greengrass核心的默认名称,然后选择“下一步”。
8. 选择“创建组群与核心”
9. 单击该链接下载.tar文件,包括有关亚马逊云服务Greengrass核心的私钥、公钥和证书。
10. 点击“选择您的平台”。在下一页中,下载用于Armv8(AArch64)架构和Arch Linux发行版的Greengrass软件包。下载完成后,选择“完成”。
此时,将所有证书以及亚马逊云服务Greengrass软件拷贝到Qualcomm机器人RB3上。下一步,将其移动到乌班图容器中。
复制并将Greengrass软件包和安全资源提取到您的乌班图容器中
1. 首先,将下载的文件从Qualcomm机器人RB3复制到乌班图容器中。在Qualcomm机器人RB3上,打开终端窗口并输入以下命令:
$ docker cp /
2. 启动乌班图容器,并确认已经拷贝了文件。
3. 解压文件。 $ tar -zxvf greengrass-linux-aarch64-1.10.2.tar.gz -C / $ tar -zxvf 3e05e19e41-setup.tar.gz
将亚马逊云服务Greengrass证书安装到Qualcomm机器人RB3上的乌班图容器中
1. 在Qualcomm机器人RB3上,从亚马逊云服务物联网文档中的威瑞信3类公共主G5根CA证书链接下载亚马逊云服务物流网根CA证书。后者,在终端中输入以下命令: $ wget https://www.websecurity.digicert.com/content/dam/websitesecurity/digitalassets/desktop/pdfs/roots/VeriSign-Class 3-Public-Primary-Certification-Authority-G5.pem
2. 将下载的文件从Qualcomm机器人RB3复制到乌班图容器中。
$ docker cp /
3. 在乌班图容器中,将文件移动到/greengrass/certs目录中,并将其重命名为root-ca.pem,如下所示。
4. 在乌班图容器中,将亚马逊云服务Greengrass核心的私钥和证书复制到/ Greengrass /certs目录中。在复制文件时使用下表中提供的名称。
5. 将文件拷贝至/greengrass/certs。
配置Greengrass核心
通过以下步骤将亚马逊云服务Greengrass核心(乌班图容器)与为其创建的亚马逊云服务物联网事物关联起来。该过程使用该事物的高级远程节点对应的ARN (Amazon Resource Names),即在云中分配给亚马逊云服务Greengrass核心设备的唯一标识符。
1. 找到亚马逊云服务Greengrass核心的事物高级远程节点ARN。在亚马逊云服务Greengrass控制台中,从导航页中选择“组群”。
•手势和手部跟踪(VIO)
2. 选择组群,显示组群的详细信息。
3.在导航窗格中,选择“核心”和正确的亚马逊云服务Greengrass核心,以显示核心的详细信息。
4. 复制亚马逊云服务Greengrass核心的ARN
5. 在亚马逊云服务Greengrass核心设备(乌班图容器)上,打开一个终端窗口,并输入以下内容: $ vim /greengrass/config/config.json
6. config.json的内容最初与以下内容类似:
7. 对config.json修改如下:
下表描述了用于更新config.json的属性:
8. 启动亚马逊云服务Greengrass核心,将其连接到云。 $ cd /greengrass/ggc/core $ ./greengrassd start
当成功启动Greengrass进程后,界面显示如下:
Qualcomm 开发者专区是 Qualcomm 联合CSDN 共同打造的面向中国开发者的技术专区。致力于通过提供全球最新资讯和最多元的技术资源及支持,为开发者们打造全面一流的开发环境。本专区将以嵌入式、物联网、游戏开发、Qualcomm® 骁龙™处理器的软件优化等技术为核心,打造全面的开发者技术服务社区,为下一代高性能体验和设计带来更多的想法和灵感。
加入 Qualcomm 开发者专区