之前在感知这里主要是考传统的算法,但是遇到了瓶颈,计算效率提不上来,所以尝试一下其他的方法。目前看到pointpillar这种方法效果比较好,就打算尝试一下,跑通测试一下效果。
1做了一些尝试:在xavier上
需要nvidai驱动,cuda10.X+cudnn7.6.以及sensort。
实验条件:我手上有一台Xavier 和 一台联想拯救者Y7000(GTX1050),均安装了ubuntu18.04+ros meldic,其中Xavier已经安装了nvidai驱动+CUDA10+cudnn7.6。
在联想拯救者Y7000(GTX1050)安装nvidai驱动,查看显卡型号和对应的驱动型号。
1联想拯救者Y7000(GTX1050)安装nvidai驱动,查看显卡型号和对应的驱动型号。
主要参照的了Ubuntu 18.04 安装NVIDIA显卡驱动教程
首先卸载原有驱动,更改系统配置文件,然后下载nvidai驱动,重启。
注意:
1.系统文件要先备份再更改。
2.安装完之后,会出现黑屏、卡在登陆界面循环登陆的问题。可以参照上面连接。
3.记录好自己电脑的IP,保证可以有方法远程登陆(ssh\telnet),这样可以修改文件,下载驱动。
我补充一下,nvidia驱动的获取:
ubuntu-drivers devices
可以看出型号为GTX1050,推荐安装(recommended)的驱动型号是nvidai495.
下面我们使用ppa方式安装495版本驱动,在terminal run, sudo apt-get install nvidia-495
驱动安装完毕之后,重启reboot,如果系统可以启动,并且nvidai-smi有结果
恭喜你,成功了。我的出现了cuda11.4,不知为什么,我觉得没有安装呀。 这里的意思是能支持的最高版本是11.4
本来打算继续安装CUDA10,但是官方网站怎么都打不开,在百度云盘上面也没有找到资源,索性就找了一个docker,这部分内容可以参照:autoware docker方式安装和配置(1)
我这里补充一些我的做法和遇到的问题
这里要安装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 "$@"
这里主要参照了,利用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来解决,但是对于文章中提到的更换源,从来没有更换过。
$ 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的报错可以参考:
也可以试一下 bash run.sh -s
补充:出现了错误 Unknown CMake command “AW_CHECK_CUDA”.把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,需要更改
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包,这样才解决了问题.
1.没有用到TensorRT,现在的GPU版本 推理速度是56ms
2.模型只有车的,没有其他模型:墙,地面等
3.模型训练还没有研究
4.跟踪效果还没有加入,怎么把跟踪效果加入,这个需要考虑一下。可以把产生的数据点直接传到跟踪模块吗?
5.换激光雷达之后,模型还有效吗?