Atlas智能小车部署

Atlas智能小车部署

制卡

硬件准备

SD卡(建议64G)、读卡器、已在虚拟机中安装ubuntu-18.04桌面操作系统的PC机

软件准备

Ubuntu服务器操作系统镜像包

ubuntu-18.04.xx-server-arm64.iso

开发者板驱动包

A200dk-npu-driver-{software version}-ubuntu18.04-aarch64-minirc.tar.gz

操作步骤

  1. 将装入SD卡的读卡器与用户PC机的USB接口连接。

  2. 在用户PC机中执行如下命令安装qemu-user-static、binfmt-support、yaml、squashfs-tools与交叉编译器。

    切换为root用户

    su - root

    执行如下命令更新源

    apt-get update

    执行如下命令安装相关python依赖

    pip3 install pyyaml

    apt-get install qemu-user-static binfmt-support python3-yaml squashfs-tools gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

  3. 在用户PC机中以root用户执行如下命令创建制卡工作目录。

    mkdir $HOME/mksd

  4. 将软件包准备中的Ubuntu服务器操作系统镜像包、开发者板驱动包上传到制卡工作目录中(“$HOME/mksd”)。

  5. 在制卡工作目录下(“$HOME/mksd”)执行如下命令获取制卡脚本。

    • 下载制卡入口脚本“make_sd_card.py”

      wget https://gitee.com/ascend/tools/raw/master/makesd/generic_script/make_sd_card.py

    • 下载制作SD卡操作系统的脚本“make_ubuntu_sd.sh”

      wget https://gitee.com/ascend/tools/raw/master/makesd/generic_script/make_ubuntu_sd.sh

  6. 执行制卡脚本。

    1. 以root用户执行如下命令查找SD卡所在的USB设备名称。

      fdisk -l

      例如,SD卡所在USB设备名称为“/dev/sda”,可通过插拔SD卡的方式确定设备名称。

    2. 运行SD制卡脚本“make_sd_card.py”

      python3 make_sd_card.py local /dev/sda

      • “local”表示使用本地方式制作SD卡。
      • “/dev/sda”为SD卡所在的USB设备名称。

      如图1所示表示制卡成功。

      图1 SD制卡回显信息示例
      img

  7. 制卡成功后,将SD卡从读卡器取出并插入Atlas 200 DK开发者板卡槽。待开发板四个灯亮起后开发板正常启动。(注:首次启动开发板的灯可能会闪烁,这是可能是开发板在升级系统,等待一会儿四个灯就常亮了)

配置网络(网络共享方式)

共享PC机网络方式配置示例
img

  1. 分别使用USB连接线及网线将Atlas 200 DK与PC机连接。

    PC机中的“网络连接”显示如下图所示:

    图3 网络连接图示
    img

    • “Local connection(本地连接) ”:USB虚拟网卡,此连接为基本连接,用于从PC侧SSH登录到Atlas 200 DK。
    • “Ethernet2(以太网2)”:通过网线连接Atlas 200 DK的NIC网卡,后续将使用此网卡作为网关,用于Atlas 200 DK接入互联网。

    说明:以上名字仅为示例,您可以通过拔插网口的方式查看连接Atlas 200 DK的是哪一个网卡。

  2. 在PC机上配置USB虚拟网卡,使其可以通过SSH方式登录Atlas 200 DK。

    配置USB虚拟网卡的IP地址,IP地址需要与Atlas 200 DK的USB网卡的默认IP地址在同一网段。

    Atlas 200 DK的USB网卡默认IP为“192.168.1.2”,例如配置PC机的USB虚拟网卡的IP地址为“192.168.1.101”,如下图所示:

    图4 修改PC机侧USB虚拟网卡IP地址示例
    img

    配置完成后,执行如下命令测试下是否能够登录到Atlas 200 DK:

    ssh HwHiAiUser@192.168.1.2

  3. 配置Atlas 200 DK的eth0网卡的网关。

    Atlas 200 DK中eth0网卡的网关与eth0 IP地址在同一网段即可,例如Atlas 200 DK的eth0的默认IP地址为“192.168.0.2”,则此处可以配置eth0的网关为“192.168.0.101”。

    **说明:**Atlas 200 DK通过网络共享接入网络的方式,数据走eth0,然后通过网关访问网络,所以需要确保eth0的IP地址能够访问网关。

    配置方式如下:

    1. 在PC机上以SSH方式登录Atlas 200 DK。

      ssh HwHiAiUser@192.168.1.2

    2. 切换到root用户。

      su - root

    3. 配置eth0的网关地址。

      vi /etc/netplan/01-netcfg.yaml

      配置示例如下图所示:

      Atlas 200 DK eth0网关配置
      img

      保存退出。按 esc

      :wq!

      注:域名服务器可以配置为公共DNS“114.114.114.114”或者“8.8.8.8”,请根据实际环境进行选择配置。

  4. 在PC侧进行网络配置,将网络共享给Atlas 200 DK。

    1. 将PC机上能够接入互联网的网卡进行网络共享配置,共享给连接Atlas 200 DK的网卡。

      如[图3](javascript:;)所示,能够接入互联网的网卡为“Ethernet”,连接Atlas 200 DK的网卡为“Ethernet2”。

      右键单击网卡“Ethernet”,然后选择“Properties > Sharing”,按照下图所示进行配置。

      图6 共享网络配置
      img

    2. 单击“OK”,保存配置。

    3. 修改“Ethernet2”的IP地址为Atlas 200 DK eth0网关的IP地址(例如,

      图5

      中配置的“192.168.0.101”)。

      修改方法如下图所示,至此,您的Atlas 200 DK已可以接入互联网。

      Ethernet2 IP地址修改
      img

安装OS依赖

将用户添加到sudo组

方法一(临时有效):

usermod -a -G sudo HwHiAiUser

方法二(永久有效):

修改 /etc/sudoers 文件

cd /etc/sudoers 目录下

由于sudoers文件为只读权限,所以需要添加写入权限

chmod u+w sudoers

vim sudoers

找到 root ALL = (ALL) ALL 这一行,在其下一行加入 HwHiAiUser ALL = (ALL) ALL

保存退出

:wq!

把sudoers文件的权限修改回来

chmod u-w sudoers

更换开发板镜像源

执行以下换源操作

sudo wget -O /etc/apt/sources.list https://repo.huaweicloud.com/repository/conf/Ubuntu-Ports-bionic.list --no-check-certificate

更新源

sudo apt-get update

安装依赖

  1. 执行

    sudo apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev unzip pciutils net-tools libblas-dev gfortran libblas3 libopenblas-dev

  2. 检查系统是否安装满足版本要求的python开发环境。

    在当前安装用户下执行命令 python3 --version

    • 如果返回信息满足python版本要求(3.7.0~ 3.7.11),则直接进入步骤3。
    • 如果返回信息不满足满足python版本要求(3.7.0~ 3.7.11):
      • 当环境上root用户下已安装满足要求的python版本(3.7.0~ 3.7.11)时,如果当前安装用户需要复用该python,则可以直接参考[设置python3.7.5环境变量](javascript:;)配置环境变量。
      • 当环境上未安装满足要求的python版本(3.7.0~ 3.7.11)时,则可以参考如下步骤安装python。
    1. 使用wget下载python3.7.5源码包,可以下载到安装环境的任意目录,命令为:

      wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
      
    2. 进入下载后的目录,解压源码包,命令为:

      tar -zxvf Python-3.7.5.tgz
      
    3. 进入解压后的文件夹,执行配置、编译和安装命令:

      cd Python-3.7.5
      ./configure --prefix=/usr/local/python3.7.5 --enable-loadable-sqlite-extensions --enable-shared
      make
      sudo make install
      

      其中“–prefix”参数用于指定python安装路径,用户根据实际情况进行修改。“–enable-shared”参数用于编译出libpython3.7m.so.1.0动态库。“–enable-loadable-sqlite-extensions”参数用于加载libsqlite3-dev依赖。

      本手册以–prefix=/usr/local/python3.7.5路径为例进行说明。执行配置、编译和安装命令后,安装包在/usr/local/python3.7.5路径,libpython3.7m.so.1.0动态库在/usr/local/python3.7.5/lib/libpython3.7m.so.1.0路径。

    4. 设置python3.7.5环境变量。

      #用于设置python3.7.5库文件路径
      export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH
      #如果用户环境存在多个python3版本,则指定使用python3.7.5版本
      export PATH=/usr/local/python3.7.5/bin:$PATH
      

      通过以上export方式设置环境变量,该种方式设置的环境变量只在当前窗口有效。您也可以通过将以上命令写入~/.bashrc文件中,然后执行**source /.bashrc**命令,使上述环境变量永久生效。注意如果后续您有使用环境上其他python版本的需求,则不建议将以上命令写入到/.bashrc文件中。

    5. 安装完成之后,执行如下命令查看安装版本,如果返回相关版本信息,则说明安装成功。

      python3 --version
      pip3 --version
      
  3. 安装前请先使用 pip3 list 命令检查是否安装相关依赖,若已经安装,则请跳过该步骤;若未安装,则安装命令如下(如果只有部分软件未安装,则如下命令修改为只安装还未安装的软件即可)。

    • 请在安装前配置好pip源,具体可参考配置pip源
    • 安装前,建议执行命令pip3 install --upgrade pip进行升级,避免因pip版本过低导致安装失败。
    • 如下命令如果使用非root用户安装,需要在安装命令后加上**–user**,例如:pip3 install attrs **–user,**安装命令可在任意路径下执行。
    • 要求numpy版本大于等于1.14.3,如下命令以安装numpy 1.17.2为例。
    pip3 install attrs
    pip3 install numpy==1.17.2
    pip3 install decorator
    pip3 install sympy
    pip3 install cffi
    pip3 install pyyaml
    pip3 install pathlib2
    pip3 install psutil
    pip3 install protobuf
    pip3 install scipy
    pip3 install requests
    

    如果执行上述命令时报错“subprocess.CalledProcessError:Command ‘(‘lsb_release’, ‘-a’)’ return non-zero exit status 1”,请参见pip3 install报错“subprocess.CalledProcessError:Command ‘(‘lsb_release’, ‘-a’)’ return non-zero exit status 1”

安装CANN软件(开发环境与运行环境合设)

  1. 准备软件包。

    请参见下载链接下载配套驱动版本的开发套件包“Ascend-cann-toolkit_{version}_linux-aarch64.run”。

    驱动与CANN版本的配套关系请参见版本配套说明(Gitee)

  2. 安装开发套件包。

    1. 以HwHiAiUser用户将开发套件包上传到开发板 /home/HwHiAiUser 目录,进入该目录。

    2. 执行如下命令为安装包增加可执行权限。

      chmod +x \*.run

    3. 执行如下校验安装包的一致性和完整性。

      ./Ascend-cann-toolkit_\*{version}\*_linux-aarch64.run --check

    4. 执行如下命令进行Toolkit软件包的安装。

      ./Ascend-cann-toolkit_\*{version}\*_linux-aarch64.run --install --chip=Ascend310-minirc

      以上命令为使用默认路径进行安装的示例,默认安装路径为“$HOME/Ascend”。

  3. 配置环境变量

    1. 配置环境变量。

      CANN软件提供进程级环境变量设置脚本,供用户在进程中引用,以自动完成环境变量设置。用户进程结束后自动失效。示例如下(以HwHiAiUser用户默认安装路径为例):

      . /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh    
      

      用户也可以通过修改~/.bashrc文件方式设置永久环境变量,操作如下:

      1. 以运行用户在任意目录下执行 vi ~/.bashrc 命令,打开 .bashrc 文件,在文件最后一行后面添加上述内容。
      2. 执行 :wq! 命令保存文件并退出。
      3. 执行 source ~/.bashrc 命令使其立即生效。

安装ROS

  1. 设置源文件

    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

  2. 设置密钥

    sudo apt install curl # 如果你没有安装 curl 执行这一步

    curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

  3. 安装步骤

    更新源

    sudo apt update

    安装ROS

    sudo apt install ros-melodic-desktop-full

  4. 环境设置

    echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    
  5. 构建包的依赖

    sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

    初始化 rosdep

    sudo apt install python-rosdep
    sudo rosdep init
    rosdep update
    

安装其他第三方依赖

昇腾AI设备安装开发环境,同时作为运行环境场景下的第三方依赖安装

以下步骤以普通用户HwHiAiUser安装

安装准备

请执行以下命令进行安装准备

# 以安装用户在任意目录下执行以下命令,打开.bashrc文件。
vi ~/.bashrc  
# 在文件最后一行后面添加如下内容。
export CPU_ARCH=`arch`
export THIRDPART_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH}  #代码编译时链接第三方库
export LD_LIBRARY_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH}/lib:$LD_LIBRARY_PATH  #运行时链接库文件
export INSTALL_DIR=${HOME}/Ascend/ascend-toolkit/latest #CANN软件安装后文件存储路径
# 执行命令保存文件并退出。
:wq!  
# 执行命令使其立即生效。 
source ~/.bashrc 
# 创建第三方依赖文件夹
mkdir -p ${THIRDPART_PATH}
# 下载源码并安装git
cd ${HOME}
sudo apt-get install git
git clone https://gitee.com/ascend/samples.git
# 拷贝公共文件到第三方路径中
cp -r ${HOME}/samples/common ${THIRDPART_PATH}

如果是200DK场景还需要执行以下命令拷贝media_mini等so文件以及相关头文件,满足摄像头样例编译需要。

mkdir -p ${INSTALL_DIR}/driver
cp /usr/lib64/libmedia_mini.so ${INSTALL_DIR}/driver/
cp /usr/lib64/libslog.so ${INSTALL_DIR}/driver/
cp /usr/lib64/libc_sec.so ${INSTALL_DIR}/driver/
cp /usr/lib64/libmmpa.so ${INSTALL_DIR}/driver/
cp /usr/local/Ascend/include/peripheral_api.h ${INSTALL_DIR}/driver/
安装过程
安装opencv

执行以下命令安装opencv,如果代码中并没有使用opencv相关功能及函数,可以跳过此步骤。

sudo apt-get install libopencv-dev
安装ffmpeg+acllite库

执行以下命令源码安装ffmpeg(apt安装的ffmpeg版本较低,所以源码安装)并安装acllite。如果代码中并没有使用acllite库相关功能及函数,可以跳过此步骤。

# 下载ffmpeg
cd ${HOME}
wget http://www.ffmpeg.org/releases/ffmpeg-4.1.3.tar.gz --no-check-certificate
tar -zxvf ffmpeg-4.1.3.tar.gz
cd ffmpeg-4.1.3
# 安装ffmpeg
./configure --enable-shared --enable-pic --enable-static --disable-x86asm --prefix=${THIRDPART_PATH}
make -j8
make install
# 编译并安装acllite
cd ${HOME}/samples/cplusplus/common/acllite/
make
make install
安装presentagent

执行以下命令源码安装protobuf及presentagent。如果代码中并没有使用presentagent相关功能及函数,可以跳过此步骤。
开始安装protobuf及presentagent。

# 安装protobuf相关依赖
sudo apt-get install autoconf automake libtool
# 下载protobuf源码
cd ${HOME}
git clone -b 3.13.x https://gitee.com/mirrors/protobufsource.git protobuf
# 编译安装protobuf
cd protobuf
./autogen.sh
./configure --prefix=${THIRDPART_PATH}
make clean
make -j8
sudo make install
# 进入presentagent源码目录并编译
cd ${HOME}/samples/cplusplus/common/presenteragent/proto
${THIRDPART_PATH}/bin/protoc presenter_message.proto --cpp_out=./
# 开始编译presentagnet
cd ..
make -j8
make install

小车样例运行

前提条件

  • 已完成对应产品的开发环境和运行环境安装。(以上步骤都完成即可)
  • 完整的小车,包含各个小车部件,电池,路由器,显示屏,摄像头等都已经正确安装。

软件准备

  1. 获取源码包。(如果第一次使用这个方法要将开发板的密钥添加到你的 gitee 账号上)

    可以使用以下两种方式下载,请选择其中一种进行源码准备。

    • 命令行方式下载(下载时间较长,但步骤简单)。

      开发环境,非root用户命令行中执行以下命令下载源码仓。

      cd $HOME

      git clone https://gitee.com/ascend/samples.git

    • 压缩包方式下载(下载时间较短,但步骤稍微复杂)。

      1. samples仓右上角选择 克隆/下载 下拉框并选择 下载ZIP
      2. 将ZIP包上传到开发环境中的普通用户家目录中,例如 $HOME/ascend-samples-master.zip
      3. 开发环境中,执行以下命令,解压zip包。
cd $HOME
unzip ascend-samples-master.zip
  1. 获取此应用中所需要的原始网络模型。

    参考下表获取此应用中所用到的原始网络模型及其对应的权重文件,并将其存放到开发环境普通用户下目录:$HOME/samples/cplusplus/contrib/Ascbot。

    模型名称模型说明
    collision_avoidance_model检测小车前方是否有跌落危险
    road_following_model检测车道线,实现循道行驶
    road_object_detection_deploy检测小车前方物体
  2. 部署模型

    cd $HOME/samples/cplusplus/contrib/Ascbot/model

    获取 collision_avoidance_model 模型

    wget https://gitee.com/link?target=https%3A%2F%2Fmodelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com%2F003_Atc_Models%2FAE%2FATC%2520Model%2Fcar%2Fcollision%2Fcollision_avoidance_model.om

    获取 road_following_model 模型

    wget https://gitee.com/link?target=https%3A%2F%2Fmodelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com%2F003_Atc_Models%2FAE%2FATC%2520Model%2Fcar%2Ffollowing%2Froad_following_model.om

    获取 road_object_detection_deploy 模型

    wget https://gitee.com/link?target=https%3A%2F%2Fmodelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com%2F003_Atc_Models%2FAE%2FATC%2520Model%2Fcar%2Fobject_detection%2Froad_object_detection_deploy.om

    设置LD_LIBRARY_PATH环境变量。

    由于LD_LIBRARY_PATH环境变量在转使用atc工具和运行样例时会产生冲突,所以需要在命令行单独设置此环境变量,方便修改。

    export install_path=$HOME/Ascend/ascend-toolkit/latest
    export LD_LIBRARY_PATH=\\${install_path}/atc/lib64  
    

样例部署

  1. 开发环境命令行中设置编译依赖的环境变量。
export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest/arm64-linux:$DDK_PATH
export NPU_HOST_LIB=$DDK_PATH/acllib/lib64/stub:${install_path}/arm64-linux/acllib/lib64/stub:$NPU_HOST_LIB
  1. 切换到ascbot_c75目录,创建目录用于存放编译文件,例如,本文中,创建的目录为 build/intermediates/host。
cd $HOME/samples/cplusplus/contrib/Ascbot
mkdir -p build/intermediates/host
  1. 切换到 build/intermediates/host 目录,执行 cmake 生成编译文件。
cd build/intermediates/host
make clean        
cmake ../../../src -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SKIP_RPATH=TRUE**
  1. 执行make命令

    make

样例运行

  1. 设置环境

    切换为 root

    su - root

    执行如下命令

vim /etc/rc.local
添加以下指令
echo 504 >/sys/class/gpio/export
echo 444 >/sys/class/gpio/export
chown -R HwHiAiUser /sys/class/gpio/gpio444
chown -R HwHiAiUser /sys/class/gpio/gpio504
chown -R HwHiAiUser /sys/class/gpio/gpio444/direction
chown -R HwHiAiUser /sys/class/gpio/gpio504/direction
chown -R HwHiAiUser /sys/class/gpio/gpio444/value
chown -R HwHiAiUser /sys/class/gpio/gpio504/value
chown -R HwHiAiUser /dev/i2c-1
chown -R HwHiAiUser /dev/i2c-2
chown -R HwHiAiUser /dev/ttyAMA0
usermod -aG HwHiAiUser HwHiAiUser
  1. 运行可执行文件。

    cd $HOME/samples/cplusplus/contrib/Ascbot/out

    切换目录后,执行以下命令运行样例。

    ./main Channel-0

查看结果

运行完成后,可下载手机端应用控制小车运行。 手机端下载地址

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值