文章目录
安装OpenCV
在tx jetson开发板刷完机之后会自在一个Opencv,但是这个Opencv中是没有cmake文件的这会导致在后面编译D435i驱动时出现找不到Opencv的报错,并且自带的Opencv是没有CUDA加速,所以我们需要通过源码重新编译Opencv
1.安装jtop监控器
输入如下命令安装jtop
sudo apt install python3-pip
sudo -H pip3 install -U jetson-stats
sudo systemctl restart jetson_stats.service
然后重启开发板在终端输入jtop即可使用
jtop可以查看开发板的cpu,gpu以及内存和系统版本号,是一个很好用的工具相当于x86系统下的nvidia-msi,在这里下载主要是为了查看opencv的版本以及CUDA状态。
2.卸载旧版本opencv
sudo apt-get purge libopencv*
sudo apt autoremove
sudo apt-get update
运行命令后会将ros也一起删除(如果事先安装了ros)所以后面需再重新安装ros
3.安装相关依赖库
sudo apt install -y build-essential checkinstall cmake pkg-config yasm git gfortran
sudo apt update
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libjpeg8-dev libjasper-dev libpng12-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libv4l-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libtbb-dev libatlas-base-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev libopencore-amrnb-dev libopencore-amrwb-dev x264 v4l-utils
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
建议逐句复制运行
4.获取opencv 和 opencv_contrib源码并编译
- 从以下两个地址下载opencv opencv和opencv_contrib opencv_contrib并将opencv_contrib文件夹解压到opencv文件夹中(我下载的是4.5.3版本,两个文件版本需要对应)
- 完成后执行如下命令
cd opencv-4.5.3
mkdir build
cd build
- 使用代码
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_ENABLE_NONFREE=1 \
-DBUILD_opencv_python2=1 \
-DBUILD_opencv_python3=1 \
-DWITH_FFMPEG=1 \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-DCUDA_ARCH_BIN=6.2 \
-DCUDA_ARCH_PTX=6.2 \
-DWITH_CUDA=1 \
-DENABLE_FAST_MATH=1 \
-DCUDA_FAST_MATH=1 \
-DWITH_CUBLAS=1 \
-DOPENCV_GENERATE_PKGCONFIG=1 \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
..
注意DOPENCV_EXTRA_MODULES_PATH需要改成自己的路径,DCUDA_ARCH_BIN以及DCUDA_ARCH_PTX后面的数字如果是其他的tx2开发板需要改成对应的数字,在jtop面板中的INFO面板可以查看,6.2表示jetson tx2
- Make
sudo make -j4(四核编译)
sudo make -j6(六核编译)
- install
sudo make install
完成编译后可以通过jtop面板查看安装是否成功,若成功会在面板7INFO中显示opencv的版本并且后面CUDA以显示YES。或者通过python3检测是否安装成功在终端输入
python3
进入python3环境,再输入如下命令
import cv2
cv2.__version__
若显示对应版本号则说明下载成功
在此过程中本人并没有遇到很严重的问题,若出现了直接在网上搜索也应该很好解决
安装ROS
- 添加公钥
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
- 换源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
- 更新软件源
sudo apt update
- 安装
sudo apt install ros-melodic-desktop-full
此步一定要查看自己板子所支持的ros版本,本人的是ubuntu18.04所以下载的是melodic版本,在网上看到的说法是如果是ubuntu16.04则要下载kinetic。
- 添加环境变量,在终端输入如下命令
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
添加的环境变量一定要和自己的ros版本对应
- 安装构建功能包的依赖
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
- 初始化
sudo rosdep init
rosdep update
如果初始化报错希望这位大佬的博客对你有帮助 rosdep command not found
- 测试
启动ros
roscore
重新开一个终端,打开小海龟界面
rosrun turtlesim turtlesim_node
再开一个终端,开启键盘输入
rosrun turtlesim turtle_teleop_key
如果可以通过键盘控制小海龟移动则说明安装成功
安装D435i驱动(Realsense)
1.安装librealsense
(1)获取源码包
git clone https://github.com/IntelRealSense/librealsense.git
下载的版本一定要记住,在后续的安装中有用。如果通过命令下不下来建议直接去网页下载,也更方便选择版本,本人下载的是2.50.0版本
(2)构建和修补Jetson L4T的内核模块
cd librealsense2
./scripts/patch-realsense-ubuntu-L4T.sh
(3)编译lebrealsense2 SDK
sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev -y
./scripts/setup_udev_rules.sh
mkdir build && cd build
cmake .. -DBUILD_EXAMPLES=true -DCMAKE_BUILD_TYPE=release -DFORCE_RSUSB_BACKEND=false -DBUILD_WITH_CUDA=true && make -j$(($(nproc)-1)) && sudo make install
(4)检查是否安装成功
终端输入
realsense-viewer
若出现界面则说明安装成功
2.realsense-ros
(1)安装以来
sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev
(2)先创建一个ros工作环境
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
catkin_init_workspace
在后面的yolov5-ros的安装也会用到此工作空间
(3)然后在~/catkin_ws/src/中获取源码
git clone https://github.com/IntelRealSense/realsense-ros.git
git clone https://github.com/pal-robotics/ddynamic_reconfigure.git
建议直接去网页上下载,版本一定要和你安装的libreasense2版本对应。下载完解压完之后需要更改一些内容。
cd ~/catkin_ws/src/realsense-ros/realsense2_camera
gedit CMakeLists.txt
修改如下内容
在这里就需要上文中安装的opencv,将划线部分安装为自己的opencv安装路径。将realsense的版本更改为自己的。
(4)make
完成如上操作后即可开始编译
cd ~/catkin_ws
catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
检查安装
在终端输入
roslaunch realsense2_camera rs_camera.launch
若没有报错则安装成功,提示警告是正常的。
安装archiconda
因为jetson tx2 是aarch架构所以Anaconda在tx2上使用不了,只能使用archiconda
进入网址直接下载.sh文件
将此文件出入到tx2开发板中执行以下命令
sudo chmod 777 Archiconda3-0.2.3-Linux-aarch64.sh
./Archiconda3-0.2.3-Linux-aarch64.sh
添加环境变量
gedit ~/.bashrc
export PATH=~/home/anaconda3/bin:$PATH ####加在最后一行
source ~/.bashrc
在终端输入
conda activate base
如果能进入base环境则安装成功。archiconda的用法和anaconda的用法类似。
在此申明一下,我的环境变量有所不同,因为真的踩了很多坑,archiconda卸了又装了很多次。然后有一次下载之后他没有自动给我配置环境变量(正常应该是下载之后会在环境变量中增加一段关于archiconda的函数),而是给我增加如下的一个环境变量。
不知道为啥这样反而更好,因为如果正确安装后它会将把最外面的python3的环境改为3.7,这样不利于我们。如果像我这样,外面的环境不会变,conda也能照常使用。完美!!!!!
安装GPU版本的pytorch(重点)
在这一步中我踩了很多坑,卡了我两个多星期硬是没有完成。首先是版本问题,安装archiconda之后base环境的python是3.7但是我们在安装torch时需要3.6的环境。但是创建的3.6环境会一直报一个错(下面会说)。我们继续
- 先创建一个python3.6的环境(建议为3.6.9)因为在pytorch的官网教程中只给出了支持py36的安装包。
conda create -n yolov5 python==3.6.9
- 创建好之后进入yolov5环境是无法使用pip以及pip3的会一直
conda activate yolov5
会一直报这个错误,这是因为1:pip的版本不对建议安装pip19.1.1.但是pip和pip3是使用不了的所以选用conda安装
conda install pip=19.1.1
安装完成后pip还是用不来,但是pip3可以使用,但是pip3好像并没有链接到我们创建的环境中来。看了很多教程和资料后发现是pip使用不来可能是因为numpy的版本不对。可以通过这个网址下载。但是需要注意几个点,首先一定要选用支持linux-aarch64结构的,第二选用的numpy要大于1.18.5版本。
安装后就可以使用pip了。完美!!!!!
- 然后进入NVIDIA的官网下载torch的文件。这里也有坑,在教程中说的是CUDA10.2是支持torch1.8的但是我下载完成后始终无法激活。尝试了很多方法都没有成功,最后没办法了,想着试一下torch1.7能不能行,没想到还真的成功了,检测的返回值是ture。教程就按官网的执行就行。
- 检查安装
python3
import torch
torch.cuda.is_available
如果返回的是Ture,则说明安装成功了。
但是有些坑需要注意
1.torchvision环境变量
在添加torchvision的环境变量时一定要加对,最好是进入到环境变量中去检查一下,因为它和后面下载的版本是对应的。
2.执行python3 setup.py install --user报错问题
参收这位大佬的教程pycuda安装 cuda.h文件找不到问题
3.pillow<7
教程中说的是要小于7,但是我后面执行时它又说要大于7.1.2所以我直接下载的7.1.2
4.import torch的报错
下载完成后在python3中测试,import torch时会报错GLIBC_2.28 not found。若遇到此问题参考这位大佬GLIBC_2.28 not found。这个错误最好还是多看些解决方法,并且不要删除.so文件,不然会导致系统崩溃。
安装Yolov5-Ros
如果以上内容多完成了,那接下来的任务就简单了。直接借用好人王诗龄这位大佬的教程。当然我们只需要运行他的工作包就行。环境就使用我们自己创建yolov5环境,下载他的yolov5-ros的包解压在我的工作环境中(就是上面创建的catkin_ws/src)然后我们需要改一下launch文件。
cd ~/catkin_ws/src/Yolov5_ros/yolov5_ros/yolov5_ros/launch
gedit yolo_v5.launch
用法以及效果展示
- 在一个终端中输入
roslaunch realsense2_camera rs_camera.launch
- 再打开一个终端输入
roslaunch yolov5_ros yolo_v5.launch
等待片刻即可出现图像
jetson tx2 yolov5实时检测
总结
本篇文章是在我完成之后才想起来写一篇技术文档,一是因为真的踩的坑太多了,前前后后差不多有一个月才完成,所以想记录下来,相当于是给自己这一个月的努力的总结。二是因为在完成过程中了,真的很少有完整的教程,想写一篇文章,对网友们有所帮助把。当然因为这篇文章是我在完成了任务之后才想起来写的,所以其中可能有很多没有记录下来的错误,如果下次碰见了还是应该先记录一下。如果文章中有什么问题欢迎指出。当然我这篇文章主要是记录,建议各位网友多看看其他的教程。一个月的努力总算是完成了。