GT1050 PointPillar成功运行

目的

之前在感知这里主要是考传统的算法,但是遇到了瓶颈,计算效率提不上来,所以尝试一下其他的方法。目前看到pointpillar这种方法效果比较好,就打算尝试一下,跑通测试一下效果。

piontpillar 需要的环境

1做了一些尝试:在xavier上
需要nvidai驱动,cuda10.X+cudnn7.6.以及sensort。
实验条件:我手上有一台Xavier 和 一台联想拯救者Y7000(GTX1050),均安装了ubuntu18.04+ros meldic,其中Xavier已经安装了nvidai驱动+CUDA10+cudnn7.6。
在联想拯救者Y7000(GTX1050)安装nvidai驱动,查看显卡型号和对应的驱动型号。

安装nvidia驱动

卸载原有驱动

1联想拯救者Y7000(GTX1050)安装nvidai驱动,查看显卡型号和对应的驱动型号。
主要参照的了Ubuntu 18.04 安装NVIDIA显卡驱动教程
首先卸载原有驱动,更改系统配置文件,然后下载nvidai驱动,重启。
注意:
1.系统文件要先备份再更改。
2.安装完之后,会出现黑屏、卡在登陆界面循环登陆的问题。可以参照上面连接。
3.记录好自己电脑的IP,保证可以有方法远程登陆(ssh\telnet),这样可以修改文件,下载驱动。
我补充一下,nvidia驱动的获取:

ubuntu-drivers devices

GT1050 PointPillar成功运行_第1张图片
可以看出型号为GTX1050,推荐安装(recommended)的驱动型号是nvidai495.
下面我们使用ppa方式安装495版本驱动,在terminal run, sudo apt-get install nvidia-495
驱动安装完毕之后,重启reboot,如果系统可以启动,并且nvidai-smi有结果
GT1050 PointPillar成功运行_第2张图片恭喜你,成功了。我的出现了cuda11.4,不知为什么,我觉得没有安装呀。 这里的意思是能支持的最高版本是11.4

autoware docker

本来打算继续安装CUDA10,但是官方网站怎么都打不开,在百度云盘上面也没有找到资源,索性就找了一个docker,这部分内容可以参照:autoware docker方式安装和配置(1)
我这里补充一些我的做法和遇到的问题

百度apollo 安装docker脚本

这里要安装docker,为了懒省事,我直接用百度apollo中给出的脚本install_docker.sh去安装的。
#!/usr/bin/env bash

###############################################################################
# Copyright 2018 The Apollo Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
###############################################################################

ARCH="$(uname -m)"

##==============================================================##
## Note(storypku): DRY broken for this self-contained script.
##==============================================================##
BOLD='\033[1m'
RED='\033[0;31m'
WHITE='\033[34m'
NO_COLOR='\033[0m'

function info() {
  (echo >&2 -e "[${WHITE}${BOLD}INFO${NO_COLOR}] $*")
}

function error() {
  (echo >&2 -e "[${RED}ERROR${NO_COLOR}] $*")
}
##==============================================================##

function install_filesystem_support() {
  local kernel_version="$(uname -r)"
  if [ "$kernel_version" == "4.4.32-apollo-2-RT" ]; then
    info "Apollo realtime kernel ${kernel_version} found."
    sudo modprobe overlay
  else
    local kernel_version_major=${kernel_version:0:1}
    local overlay_ko_path="/lib/modules/$kernel_version/kernel/fs/overlayfs/overlay.ko"
    if [ "${kernel_version_major}" -ge 4 ] && [ -f "${overlay_ko_path}" ] ; then
      info "Linux kernel ${kernel_version} has builtin overlay2 support."
      sudo modprobe overlay
    elif [ ${kernel_version_major} -ge 4 ]; then
      error "Overlay kernel module not found at ${overlay_ko_path}." \
            "Are you running on a customized Linux kernel? "
      exit 1
    else
      error "Linux kernel version >= 4 expected. Got ${kernel_version}"
      exit 1
    fi
  fi
}

function install_prereq_packages() {
  sudo apt-get -y update
  sudo apt-get -y install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
}


function setup_docker_repo_and_install() {
  local issues_link="https://github.com/ApolloAuto/apollo/issues"
  local arch_alias=
  if [ "${ARCH}" == "x86_64" ]; then
    arch_alias="amd64"
  elif [ "${ARCH}" == "aarch64" ]; then
    arch_alias="arm64"
  else
    error "Currently, ${ARCH} support has not been implemented yet." \
          "You can create an issue at ${issues_link}."
    exit 1
  fi

  curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | sudo apt-key add -
  sudo add-apt-repository \
    "deb [arch=${arch_alias}] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
  sudo apt-get update
  sudo apt-get install -y docker-ce \
    docker-ce-cli \
    containerd.io
}

function post_install_settings() {
  sudo usermod -aG docker $USER
  sudo systemctl restart docker
  # sudo groupadd docker
  # sudo gpasswd -a $USER docker
  # newgrp docker
}

function install_docker() {
  # Architecture support, currently: x86_64, aarch64
  install_filesystem_support
  install_prereq_packages
  setup_docker_repo_and_install
  post_install_settings
}

function uninstall_docker() {
  sudo apt-get -y remove docker docker-engine docker.io
  sudo apt-get purge docker-ce

  sudo sed -i '/download.docker.com/d' /etc/apt/sources.list
  sudo apt-key del 0EBFCD88
}

function main() {
  case $1 in
    install)
      install_docker
      ;;
    uninstall)
      uninstall_docker
      ;;
    *)
      install_docker
      ;;
  esac
}

main "$@"

安装nvidia-docker2

这里主要参照了,利用docker安装autoware。

一开始看介绍说docker 19.03及以上版本不需要安装nvidia-docker的,但后续运行autoware时候报错:docker: Error response from daemon: Unknown runtime specified nvidia.安装之后才解决。
注意:每次如果卸载过显卡驱动,都要重新安装一次nvidia-docker2
安装步骤如下:

sudo apt-get install -y nvidia-docker2
#重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker

出现无法定位问题,参考:https://www.cnblogs.com/l-hh/p/13451639.html

在安装过程中,还会出现其他的问题,一般都是通过搜索 安装nvidia-docker2来解决,但是对于文章中提到的更换源,从来没有更换过。

获取autoware docker

$ git clone https://gitlab.com/autowarefoundation/autoware.ai/docker.git
或者

 docker pull autoware/autoware:1.14.0-kinetic-cuda

注意

1.docker image占有的内存还比较大,这个时候呢,就需要更改镜像放置的位置。可以通过建立软链接的方式,也可以更改docker的默认安装路径:

sudo vim /etc/systemd/system/multi-user.target.wants/docker.service
**将ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock修改以下内容:**
ExecStart=/usr/bin/dockerd --graph=/home/data/docker --storage-driver=overlay2

参考:ubuntu docker更改默认镜像和容器存储位置

代码部署

进入docker文件夹,并运行进入容器;

$ cd docker/generic
$  ./run.sh #如果没有autoware镜像的话,会重新下载docker.

这里也会报错,uid的报错可以参考:
GT1050 PointPillar成功运行_第3张图片
也可以试一下 bash run.sh -s

本地会有一个名为shared_dir的共享文件夹,与docker进行文件共享。这里我把代码放到本地的shared_dir中,既可以在docker里面看到了。
GT1050 PointPillar成功运行_第4张图片
这里还需要把cudnn7.6和TensorRT放进去,然后按照https://blog.csdn.net/xingtianyao/article/details/109309822 来操作。我这里没有安装TensorRT。
代码部署可以参照:autoware pointpillars 不装autoware版
Autoware 1.14 源码编译+感知SSD+YOLOv3+Point Pillar模块运行(步骤+报错+解决方法记录)
但是对于我们这里来讲,已经具备了autoware的环境,那么就只需要建一个工作空间,然后把需要的src文件放进去,catkin_make 就可以了。

补充:出现了错误 Unknown CMake command “AW_CHECK_CUDA”.GT1050 PointPillar成功运行_第5张图片把Autoware 源码里的autoware_build_flags代码拿出来,重新编译了一下 没有问题了
├── autoware_build_flags
├── autoware_msgs
├── CMakeLists.txt -> /opt/ros/melodic/share/catkin/cmake/toplevel.cmake
├── detected_objects_visualizer
└── lidar_point_pillars

可能是因为AUTOWARE没有编译,先编译
AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release


autoware@~:/home/autoware/Autoware$ AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release


然后运行

```bash
roslaunch lidar_point_pillars a.launch

rosbag play test.bag

rviz rviz

注意

1.要运行 roslaunch lidar_point_pillars a.launch,因为 lidar_point_pillars.launch会运行autoware中的执行程序。并且要使用cuda,需要更改
GT1050 PointPillar成功运行_第6张图片

2.运行的时候要加载训练模型,并给出训练模型的地址
roslaunch lidar_point_pillars a.launch pfe_onnx_file:=/home/autoware/shared_dir/pointpillar/model/pfe.onnx rpn_onnx_file:=/home/autoware/shared_dir/pointpillar/model/rpn.onnx input_topic:=/kitti/velo/pointcloud 模型会在我给的链接里面。

数据集

运行的时候,用自己的数据集遇到了tf变换不存在的问题,无奈去找kitti的数据集,下载了一大圈,发现要这个转换,那个转换的,最后找了个kitti的bag包,这样才解决了问题.
GT1050 PointPillar成功运行_第7张图片

后续

1.没有用到TensorRT,现在的GPU版本 推理速度是56ms
2.模型只有车的,没有其他模型:墙,地面等
3.模型训练还没有研究
4.跟踪效果还没有加入,怎么把跟踪效果加入,这个需要考虑一下。可以把产生的数据点直接传到跟踪模块吗?
5.换激光雷达之后,模型还有效吗?

你可能感兴趣的:(笔记,ros,r语言,ubuntu,开发语言)