赞
踩
根据官方文档的介绍,在安装前检查操作系统环境。
验证GPU
lspci | grep -i nvidia
验证Linux版本信息
uname -m && cat /etc/release
验证是否安装gcc编译器(安装GPU驱动时会自动安装gcc)
gcc --version
如果没有安装,需要首先安装gcc
验证系统内核
uname -r
安装GPU驱动
#注意:请关闭BIOS设置中的安全启动,不然可能ubuntu检测不到显卡,也就是后面的ubuntu-drivers devices没有输出!!!
sudo nvidia-uninstall #删除旧的驱动
sudo add-apt-repository ppa:graphics-drivers/ppa && sudo apt update
sudo ubuntu-drivers devices
sudo ubuntu-drivers autoinstall 或者: sudo apt-get install nvidia-driver-450
cuda下载 10.0链接:
CUDA Toolkit 10.0 Download | NVIDIA Developer
或者(注意选择自己的版本)
CUDA Toolkit Archive | NVIDIA Developer
可以参考: http://t.csdn.cn/CNvJJ
运行:
sudo sh cuda_10.0.130_410.48_linux.run
注意:让选择安装显卡驱动的时候选择(n)如下,不然会把你现有的显卡驱动给卸载掉
- Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
- (y)es/(n)o/(q)uit:
安装完成后,打开 /home/username/.bashrc
文件,最后添加两行
- export PATH=$PATH:/usr/local/cuda/bin
- export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
或者
export PATH="/usr/local/cuda-10.0/bin:$PATH"
安装好CUDA并配置好环境变量后,重启终端或另打开一个终端输入:
nvcc -V
编译过程中ndt_gpu中CUDA报错:
修改文件为:
autoware.ai/src/autoware/common/autoware_build_flags/cmake/autoware_build_flags-extras.cmake
修改后的结果为:
将CUDA版本号检查由≤10.0修改为≤10.2,则可以编译通过生成NDT_GPU(根据自己的版本而定)
另外如果安装过程中包以下错误,也也可以安装高版本的CUDA,并且安上述修改(注:该方法没有测试过,因该可行。)
- 下列软件包有未满足的依赖关系:
- cuda : 依赖: cuda-10-0 (>= 10.0.130) 但是它将不会被安装
- E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
参考链接:
gedit /usr/include/eigen3/Eigen/src/Core/util/Macros.h
或者
gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h
显示上图中的结果,表示安装版本为:eigen3.3.7
- sudo updatedb
- locate eigen3
得到eigen库的位置
卸载:
-
- sudo rm -rf /usr/include/eigen3 /usr/lib/cmake/eigen3 /usr/share/doc/libeigen3-dev /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums
下载压缩包链接: https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz
安装步骤:
- # 解压
- sudo tar -xzvf eigen-3.3.7.tar.gz
-
- # 安装
- cd eigen-3.3.7
- mkdir build
- cd build
- sudo cmake ..
- sudo make install
-
- #安装后,头文件安装在/usr/local/include/eigen3/
-
- # 移动头文件:
-
- sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
-
- - - 在很多程序中include时经常使用#include <Eigen/Dense>;否则系统无法默认搜索到,build时会找不到;
- - - 或者直接修改CmakeLists.txt中eigen3库的路径,include_directories( "/usr/local/include/eigen3" ),但太麻烦!
- #删除系统自带的eigen版本,原版为3.3.4 (前面已经卸载了)
- sudo rm -rf /usr/local/include/eigen3
- sudo rm -rf /usr/local/include/Eigen
-
- #拷贝新版本3.3.7至系统默认目录
- sudo cp -r /usr/local/include/eigen3/Eigen /usr/include
- sudo cp -r /usr/local/include/eigen3 /usr/include
-
- #删除新版本3.3.7
- sudo rm -rf /usr/local/include/eigen3
- sudo rm -rf /usr/local/include/Eigen
-
- #在/usr/local/include目录创建新版本软连接
- sudo ln -s /usr/include/eigen3 /usr/local/include/eigen3
- sudo ln -s /usr/include/Eigen/ /usr/local/include/Eigen
-
- #更新cmake库链接
- cd /usr/lib/cmake/eigen3
-
- # 删除旧版cmake配置信息
- sudo rm ./*
- # 编译的eigen库安装路径为/usr/local/share/eigen3
- sudo cp /usr/local/share/eigen3/cmake/* ./
-
- #更新系统数据库
- sudo updatedb
touch eigen-test.cpp
gedit eigen-test.cpp
- #include <iostream>
- #include <Eigen/Dense>
-
- //using Eigen::MatrixXd;
- using namespace Eigen;
- using namespace Eigen::internal;
- using namespace Eigen::Architecture;
-
- using namespace std;
-
- int main()
- {
- cout<<"*******************1D-object****************"<<endl;
- Vector4d v1;
- v1<< 1,2,3,4;
- cout<<"v1=\n"<<v1<<endl;
-
- VectorXd v2(3);
- v2<<1,2,3;
- cout<<"v2=\n"<<v2<<endl;
-
- Array4i v3;
- v3<<1,2,3,4;
- cout<<"v3=\n"<<v3<<endl;
-
- ArrayXf v4(3);
- v4<<1,2,3;
- cout<<"v4=\n"<<v4<<endl;
- }
g++ eigen-test.cpp -o eigen-test
./eigen-test
参考链接:
系统:Ubuntu 18.04
ROS:Melodic
CUDA:10.0以上
Eigen:3.3.7以上
已经将我的显卡驱动以及CUDA上传到网盘:链接: https://pan.baidu.com/s/1xgPwZVVF18eoJesABWau7g 提取码: qsg9
- sudo apt update
- sudo apt install -y python-catkin-pkg python-rosdep ros-$ROS_DISTRO-catkin
- sudo apt install -y python3-pip python3-colcon-common-extensions python3-setuptools python3-vcstool
- pip3 install -U setuptools
- mkdir -p autoware.ai/src
- cd autoware.ai
- wget -O autoware.ai.repos "https://gitlab.com/autowarefoundation/autoware.ai/autoware/raw/1.13.0/autoware.ai.repos?inline=false"
- vcs import src < autoware.ai.repos
- rosdepc update
- rosdepc install --from-paths src --ignore-src --rosdistro=melodic -y
注:如果 rosdepc install --from-paths src --ignore-src --rosdistro=melodic -y报如下类似的错误
- ERROR: the following packages/stacks could not have their rosdep keys resolved
- to system dependencies:
- runtime_manager: Cannot locate rosdep definition for [velodyne]
- kitti_box_publisher: Cannot locate rosdep definition for [jsk_recognition_msgs]
- ymc: Cannot locate rosdep definition for [ds4_msgs]
- autoware_health_checker: Cannot locate rosdep definition for [jsk_rviz_plugins]
- lanelet_aisan_converter: Cannot locate rosdep definition for [lanelet2_traffic_rules]
- costmap_generator: Cannot locate rosdep definition for [grid_map_ros]
- sound_player: Cannot locate rosdep definition for [sound_play]
- xsens_driver: Cannot locate rosdep definition for [gps_common]
- road_occupancy_processor: Cannot locate rosdep definition for [grid_map_ros]
- gnss_localizer: Cannot locate rosdep definition for [nmea_msgs]
- lidar_euclidean_cluster_detect: Cannot locate rosdep definition for [jsk_rviz_plugins]
- decision_maker: Cannot locate rosdep definition for [jsk_rviz_plugins]
可手动安装依赖如下类似:
- sudo apt-get install ros-melodic-velodyne
- sudo apt-get install ros-melodic-jsk-recognition-msgs*
- sudo apt-get install ros-melodic-ds4-msgs*
- sudo apt-get install ros-melodic-jsk-rviz-plugins*
- sudo apt-get install ros-melodic-lanelet2-routing
- sudo apt-get install ros-melodic-jsk-rviz-plugins
- sudo apt-get install ros-melodic-gscam
- sudo apt-get install ros-melodic-lgsvl-msgs
- sudo apt-get install ros-melodic-velodyne-description
- sudo apt-get install ros-melodic-automotive-platform-msgs
- sudo apt-get install ros-melodic-gps-common
- sudo apt-get install ros-melodic-uvc-camera
- sudo apt-get install ros-melodic-imu-tools
- sudo apt-get install ros-melodic-nmea-msgs
- sudo apt-get install ros-melodic-nmea-navsat-driver
- sudo apt-get install ros-melodic-velodyne-gazebo-plugins
- sudo apt-get install ros-melodic-geodesy
- sudo apt-get install ros-melodic-automotive-navigation-msgs
- sudo apt-get install ros-melodic-rosbridge-server
- sudo apt-get install ros-melodic-image-view2
- sudo apt-get install ros-melodic-qpoases-vendor
- sudo apt-get install ros-melodic-velocity-controllers
编译cpu版本的autoware(注:如果更改了源码,即src文件夹,重新编译autoware工作区即可!)
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
或者:
编译工作空间(带CUDA)
AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
正常情况下,编译成功163个packages!)
- source install/setup.bash
- roslaunch runtime_manager runtime_manager.launch
-
至此,Autoware 1.13安装完成!恭喜你在自动驾驶道路上又前进了一步!!!
- Starting >>> op_utilities
- --- stderr: waypoint_maker
- /home/wust/autoware.ai/install/lanelet2_routing/lib/liblanelet2_routing.so:对‘lanelet::LaneletMap::LaneletMap()’未定义的引用
- /home/wust/autoware.ai/install/lanelet2_validation/lib/liblanelet2_validation.so:对‘lanelet::LaneletMap::~LaneletMap()’未定义的引用
- collect2: error: ld returned 1 exit status
- make[2]: *** [devel/lib/waypoint_maker/waypoint_clicker] Error 1
- make[1]: *** [CMakeFiles/waypoint_clicker.dir/all] Error 2
- make: *** [all] Error 2
-
- 这个错误提示表明链接(linking)阶段出现了问题,具体而言是在链接 waypoint_clicker 时发生了错误。错误信息中显示了对 lanelet::LaneletMap::LaneletMap() 和 lanelet::LaneletMap::~LaneletMap() 的未定义引用。
-
- 这可能是由于缺少某些依赖项或者编译过程中的配置问题引起的。以下是一些建议来排查和解决这个问题:
-
- 检查依赖项是否正确安装: 确保你的项目依赖的库和头文件都正确安装。在你的项目中,似乎涉及到了 lanelet2_routing 和 lanelet2_validation,因此确保这两个库正确安装,并且你的项目能够找到它们。
-
- 检查链接选项: 确保在编译和链接过程中正确指定了 lanelet2_routing 和 lanelet2_validation 库。这通常是通过 CMake 文件或 Makefile 中的链接选项实现的。确保这两个库的路径被正确添加。
-
- 检查编译顺序: 确保编译和链接的顺序正确。有时候,库的链接顺序可能会导致一些问题。你可能需要调整 CMakeLists.txt 文件或 Makefile 中的目标顺序。
-
- 检查库的版本: 确保你的项目使用的 lanelet2_routing 和 lanelet2_validation 版本与你系统中安装的版本兼容。不同版本之间的接口可能有所变化,可能导致链接错误。
-
- 查看链接命令: 如果你使用的是 Makefile,查看实际的链接命令,看看是否正确包含了所有必要的库。你可以在错误输出中找到链接命令,然后手动执行它进行调试。
-
- 如果你能提供更多的上下文或相关的 CMakeLists.txt 文件内容,我可能能够提供更具体的帮助。如果问题仍然存在,你可能需要查看项目的构建文档或联系项目的维护者以获取更详细的支持。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。