1.ROS安装
鱼香ROS一键安装
wget http://fishros.com/install -O fishros && . fishros
安装ROS和Linux下的QQ
问题
1.QQ使用遇到后台没有图标找不到的问题
快捷键
Ctrl +Alt+x
切出后台
2. jeston xavier nx下输入法安装(谷歌输入法)
参考链接(包括一些系统设置)
2.realsense驱动安装
按照高飞课程的readme.pdf里执行的
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
问题
1.执行完
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
第一个链接忽略了
2.无法定位软件包 librealsense2-dkms ,但是测试没有问题
sudo apt-get install librealsense2-dkms
出现 E: 无法定位软件包 librealsense2-dkms 的问题 ,但是我插上双目可以有深度和RGB图像
测试
测试: realsense-viewer
3.安装mavros
sudo apt-get install ros-melodic-mavros
cd /opt/ros/melodic/lib/mavros
sudo ./install_geographiclib_datasets.sh
4.Cuda 10.2的安装
sudo apt-get update
sudo apt-get install cuda-toolkit-10-2
安装好之后,在 .bashrc中配置环境变量。 source ~/.bashrc //使环境变量立即生效
之后,nvcc -- version
即可查看cuda版本。
export PATH=/usr/local/cuda-10.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
export CUDA_ROOT=/usr/local/cuda
5.Eigen安装
卸载掉ROS自带的Eigen,安装3.3.7版本
# Remove pre-built Eigen
sudo apt-get remove libeigen3-dev
cd ~/Downloads/
wget -O eigen.zip https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.zip #check version
unzip eigen.zip
mkdir eigen-build && cd eigen-build
cmake ../eigen-3.3.7/ && sudo make install
pkg-config --modversion eigen3 # Check Eigen Version
6.安装ceres与glog与ddyanmic-reconfigure
解压 3rd_party.zip 压缩包,这个压缩包在fast-drone-250
1.安装glog
进入glog文件夹打开终端
./autogen.sh && ./configure && make && sudo make install
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev
glog安装遇到bash: ./autogen.sh: 权限不够
输入
chmod +777 autogen.sh
2.安装ddyanmic-reconfigure
sudo apt-get install ros-noetic-ddynamic-reconfigure
2.安装求解器ceres
进入ceres文件夹打开终端
mkdir build
cd build
cmake ..//以上一级的目录的cmaelist为编译的主文件
make -j$(nproc)//读取到可以用的核心数进行编译
sudo make install
问题
(1) 可能是nvidia的本身硬件设置造成的(解决)
解决方法:sudo gedit /etc/security/limits.conf 在末尾加入
nvidia hard stack 8192
nvidia soft stack 8192
ubuntu hard stack 8192
ubuntu soft stack 8192
root hard stack 8192
root soft stack 8192
nvidia hard nofile 65535
nvidia soft nofile 65535
root hard nofile 65535
root soft nofile 65535
ubuntu hard nofile 65535
ubuntu soft nofile
然后重启
make 成功
其中nofile这个命令并没有起作用 ,使用参看命令
ulimit -a
其中的openfile还是1024,stack size变成了8192
使用
sudo -s //进入root权限
ulimit -n 65535//更改open file 的值
再次查看
open file值已经更改
(2) 可能是内存不足造成的(未解决)
方法一:
sudo dd if=/dev/zero of=/swapfile bs=64M count=32
#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count=2048MB
sudo mkswap /swapfile
#把刚才空间格式化成swap格式
sudo chmod 0600 /swapfile
sudo swapon /swapfile
#使用刚才创建的swap空间
swapoff -a//工作做完可以把临时空间关闭
(3) 可能是nvidia的模式低功耗造成的(未解决)
(4) 可能是nvidia的版本不对造成的(未解决)
github地址
尝试编译了几个不同的版本,都是一个错误
(5)增加虚拟内存(未解决)
virt是虚拟内存,res是物理内存,shr是共享内存
增加虚拟内存:
查看交换分区:
free -m
创建交换分区(这里创建4G swap分区):
sudo fallocate -l 4G /swapfile
ls -h /swapfile
启用分区:
sudo chmod 600 /swapfile
标记文件为swap空间:
sudo mkswap /swapfile
启用swap文件:
sudo swapon /swapfile
查看交换空间是否可用:
sudo swapon --show
7.安装opencv
关于Opencv 的安装需要特别谨慎,不建议频繁删除以前的库,因为多个项目使用的版本可能不同,所以可以将常用的版本安装在/usr/local下,将其余版本安装在自己Download或者home下。
(1)安装依赖
sudo apt-get install -y cmake libavcodec-dev libavformat-dev libavutil-dev \
libglew-dev libgtk2.0-dev libgtk-3-dev libjpeg-dev libpng-dev libpostproc-dev \
libswscale-dev libtbb-dev libtiff5-dev libv4l-dev libxvidcore-dev \
libx264-dev qt5-default zlib1g-dev libgl1 libglvnd-dev pkg-config \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev mesa-utils
(2)下载opencv源码
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.1.zip # check version
unzip opencv.zip
(3)编译GPU版本的opencv
我编译的路径为:/home/nvidia/opencv-3.4.1,我的安装路径为/home/nvidia/opencv_3.4,也就是说上一步解压的源码文件路径在/home/nvidia/opencv-3.4.1,安装路径/home/nvidia/opencv_3.4
cd opencv-3.4.1/ && mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/home/nvidia/opencv_3.4\ #设置安装路径
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN=7.2 \ #对于NX和AGX,选7.2,Nano,TX2选6.2
-D CUDA_ARCH_PTX="" \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUBLAS=ON \
-D WITH_LIBV4L=ON \
-D WITH_GSTREAMER=ON \
-D WITH_GSTREAMER_0_10=OFF \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" \
-D WITH_TBB=ON \
../
make -j$(nproc)
建议不要install,避免不同版本的opencv文件覆盖了,以后要使用该cv就设置路径到build文件夹中
sudo make install //安装到/home/nvidia/opencv_3.4
问题
opencv 安装不正确导致的编译问题(解决)
当时直接粘贴的如下命令导致安装不正确,需要把斜杠删除整成一行,重新安装,并设置安装路径
cmake
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/home/nvidia/opencv_3.4 \ //在这里重新设置了安装路径
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN=7.2 \
-D CUDA_ARCH_PTX="" \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUBLAS=ON \
-D WITH_LIBV4L=ON \
-D WITH_GSTREAMER=ON \
-D WITH_GSTREAMER_0_10=OFF \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" \
-D WITH_TBB=ON \
../
opencv 环境配置
1 添加 opencv 库:
打开或创建 opencv.conf 文件, 并添加 opencv 安装路径:
sudo gedit /etc/ld.so.conf.d/opencv.conf //打开或创建opencv.conf文件, 添加以下内容:
/home/nvidia/opencv_3.4/lib //opencv安装路径
注意: /home/nvidia/opencv_3.4/lib 这个路径,大家要根据自己的实际情况修改。
2 使 opencv 配置文件生效:
sudo ldconfig
3 配置 bash 环境变量:
sudo gedit ~/.bashrc //在文件末尾添加如下内容:
export PKG_CONFIG_PATH=/home/nvidia/opencv_3.4/lib/pkgconfig
source ~/.bashrc //使环境变量立即生效
4 验证 opencv 环境配置是否成功:
pkg-config --cflags --libs opencv
8.安装对应的CV-Bridge
我们需要自己源码编译一个CV-Bridge,且指定opencv为刚才安装的GPU版本的CV
(1)下载源码
点击进入官网,选择自己ROS的版本下载:
(2)修改为自己的opencv
gedit vision_opencv/cv_bridge/CMakeLists.txt
#在find_package(OpenCV 3 REQUIRED前面添加自己的cv路径:
set(OpenCV_DIR "/home/nvidia/opencv-3.4/build")
(3)编译源码
cd vision_opencv/cv_bridge
mkdir build
cd build
cmake ..
make
sudo make install
9.编译安装Vin-fusion GPU
(1)下载源码
cd ~/catkin_ws/src
git clone https://github.com/pjrambo/VINS-Fusion-gpu
(2)修改CMakeLists.txt,指定为GPU版本的CV和CV-Bridge
其实就是以后编译ROS包,只要有包导入了opencv,就自行指定opencv和cv bridge的路径为自己前面安装的路径
gedit VINS-Fusion-gpu/camera_models/CMakeLists.txt
# 在最前面添加
set(OpenCV_DIR "/home/nvidia/opencv/opencv-3.4/build")
gedit VINS-Fusion-gpu/loop_fusion/CMakeLists.txt
# 在最前面添加
set(OpenCV_DIR "/home/nvidia/opencv/opencv-3.4/build")
set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake)
gedit VINS-Fusion-gpu/vins_estimator/CMakeLists.txt
# 在最前面添加
set(OpenCV_DIR "/home/nvidia/opencv/opencv-3.4/build")
set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake)
(3)编译源码
先在单独的工作空间测试以下,没有错误再导入到fast-drone-250
cd ~/catkin_ws
# 由于其他库会依赖camera_models,所以用catkin build编译得先单独编译该模块
catkin build camera_models
catkin build
1.遇到错误
解决办法:出现上面的错误是由于你的编译环境没有找到ros,catkin config --extend 就是指定ros环境路径.
catkin config --extend /opt/ros/melodic
2.遇到错误/opencv.hpp,fatal error: opencv2/cudaoptflow.hpp: No such file or directory
解决办法:在opencv编译的路径(/home/nvidia/opencv/opencv-3.4/build)里的这个文件复制到user/include/opencv4/opencv2
里面
10.配置 D435相机文件
1.在vins-fusion-gpu中新建文件夹realsense_d435i, 并创建如下文件
其中 left.yaml 和right.yaml 文件配置相对于 VINS-Fuison 未做修改
在realsense_stereo_imu_config.yaml 文件中添加
use_gpu: 1
use_gpu_acc_flow: 1
从而调用 GPU 加速算法运行
2.添加launch文件
对比vins-fusion和vins-fusion-gpu将fast_drone_250.launch粘贴到
/home/nvidia/catkin_ws/src/VINS-Fusion-gpu/vins_estimator/launch
下
并更改这里面的路径为vins-fusion-gpu中新建文件夹realsense_d435i
<launch>
<node name="vins_fusion" pkg="vins" type="vins_node" output="screen" args="$(find vins)/../config/realsense_d435i/realsense_stereo_imu_config.yaml"/>
<!-- <node name="loop_fusion" pkg="loop_fusion" type="loop_fusion_node" args="$(find vins)/../config/realsense_d435i/realsense_stereo_imu_config.yaml" output="screen"/> -->
</launch>
3.更改使用的imu话题为/mavros/imu/data_raw
4.更改ego中所有用到cvbridge的Cmakelists文件
加入
set(OpenCV_DIR "/home/nvidia/opencv-3.4/build")
set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake)
编译 ego_planner
解决办法:
sudo apt-get install libvtk6-jni
sudo apt-get install libvtk6-java
sudo apt-get install libvtk6-dev
sudo apt-get install libvtk6-qt-dev
sudo apt-get install libpcl-dev
sudo apt-get install ros-melodic-pcl-conversions
sudo apt-get install ros-melodic-pcl-ros
sudo apt-get install ros-melodic-navigation