1 刷机
1.1 什么是刷机
由于Xavier是嵌入式平台,使用的是AArch64架构,与我们平时使用的Intel架构电脑不一样,故开发环境搭建方式也不一样。为了简化环境搭建过程,让人们能更快的上手使用,Nvidia提供了一套SDK,叫做JetPack,包含有CUDA、cuDNN、TensorRT等常用深度学习库,只需要刷机即可直接安装到Xavier。所谓刷机就是利用另一台计算机作主机,将 OS 镜像下载好,然后烧录到 xavier 中并安装一些 SDK 组件的过程。
1.2 xavier刷机前要了解的事情
xavier刷机版本
刷机给xavier的jetpack版本有区别,部分jetpack版本可能没有对应的tensorflow,此时需要给xavier刷机成特定的jetpack版本,本文选择的是jetpack 4.5 (而不是天杀的jetpack 4.5.1)
下面网址可以查询能够安装tensorflow的jet pack版本
https://developer.nvidia.com/zh-cn/embedded/downloads
SDK manager版本
SDK manager是用来给xavier刷机的工具,高版本的SDK manager可以安装多个版本jetpack(包括低版本的jetpack),而低版本的SDK manager(最初与低版本的jetpack对应)直接不能安装任何版本的jetpack了(包括低版本的jetpack)。
参考【NVIDIA Jetson AGX Xavier刷机Jetpack4.3】
1.3 刷机
参考【 NVIDIA Jetson AGX Xavier刷机Jetpack4.3】
需要注意的是:
【前期探索】
- 本人遇到了登陆界面卡住的问题,后来通过换浏览器解决了登陆问题
- xavier需要在开机的状态下与主机连接、以进行识别
- 若不能自动识别,则同时按住电源键旁边的两个按键、使xavier进入刷机模式
【本次探索】
- 网络状态良好时,主机能够直接识别xavier,并进行后续的下载和安装
2 基本配置
根据我目前阶段的了解,xavier不需要像pc端ubuntu那样安装显卡驱动
2.1 开机启动风扇
临时设置风扇以应急
sudo gedit /sys/devices/pwm-fan/target_pwm
设置开机启动风扇
首先安装pip
sudo apt install python-pip
其余参考【Xavier(Xavier,NX, Nano, AGX Xavier, TX1, TX2)开机启动风扇】
2.2 安装拼音
参考【在Jetson Xavier NX安装中文输入法(googlepinyin中文输入法)】
2.3 xavier扩容
参考【Jetson Xavier/NX 采用M.2 Key M SSD为系统盘】
https://www.jianshu.com/p/045df333042e
要注意的是
- 选择“Ext4”格式前需要点击“+”号
- 结束后重启一下
3 配置conda虚拟环境、安装ROS
3.1 配置conda虚拟环境
同样是实现anaconda的基本功能,但是与之前方式不同,本文不再使用archiconda,改用miniforge
下载miniforge
https://github.com/conda-forge/miniforge/
本文选择py3.7对应的aarch64版本
安装miniforge
参考【Xavier(arrch64架构)安装anaconda】
创建虚拟环境
conda create -n py27 python=2.7
conda create -n py36 python=3.6
conda create -n py37 python=3.7
无法创建py35环境,会报错
3.2 安装Tensorflow
参考
参考优快云博客
Xavier(arrch64架构)安装Tensorflow
参考NVIDIA官网
https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html
安装过程
基于py36虚拟环境
Install system packages required by TensorFlow:
sudo apt-get update
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
Install and upgrade pip3.
sudo apt-get install python3-pip
sudo pip3 install -U pip testresources setuptools==49.6.0
Install the Python package dependencies.
sudo pip3 install -U numpy==1.19.4 future==0.18.2 mock==3.0.5 h5py==2.10.0 keras_preprocessing==1.1.1 keras_applications==1.0.8 gast==0.2.2 futures protobuf pybind11
根据对应版本安装Tensorflow
pip install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v45 tensorflow-gpu==1.15.5+nv21.2
需要去掉上面的[–gpu]!即:
pip install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v45 tensorflow==1.15.5+nv21.2
能够启动并进行,但是过程中发生了报错
ERROR: Failed building wheel for h5py
Running setup.py clean for h5py
测试
python
import tensorflow as tf
print(tf.__version__)
sess = tf.Session()
a = tf.constant(1)
b = tf.constant(2)
print(sess.run(a+b))
同样一套流程,在py37虚拟环境里面无法安装最后一步
3.3 安装ROS
安装ROS
参考【Nvidia Jetson AGX Xavier安装ROS、Anaconda、PyTorch及其它依赖库】
source activate py27
git clone https://github.com/jetsonhacks/installROSXavier.git
cd installROSXavier
./installROS.sh -p ros-melodic-desktop-full
安装好后在终端输入roscore检查能否正常启动,如果不能,则打开.bashrc文件
sudo gedit ~/.bashrc
在后边加入如下两行即可
export LD_LIBRARY_PATH=/opt/ros/melodic/lib
export LC_ALL="C"
测试ROS
装完ROS测试龟龟是必须的仪式感,分别开三个终端输入
source activate py27
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
3.4 配置ros,搭建uuv-simulator
创建工作空间、编译
新开一个终端,输入
source activate py27
mkdir -p ~/auv_ws/src
cd ~/auv_ws/src
catkin_init_workspace
cd ~/auv_ws/
catkin_make
source devel/setup.bash
安装uuv-simulator
往src文件夹中导入uuv_simulator之后:
sudo apt install ros-melodic-uuv-simulator
完成之后进行编译:
cd ~/auv_ws/
catkin_make
source devel/setup.bash
遇到报错
报错1:ModuleNotFoundError: No module named 'em'
解决方法:
pip uninstall em
pip install empy
报错2:
报错代码
[100%] Building CXX object uuv_simulator/uuv_sensor_plugins/uuv_sensor_ros_plugins/CMakeFiles/uuv_gazebo_ros_gps_plugin.dir/src/ROSBaseSensorPlugin.cc.o
/home/fyo/auv_ws/src/uuv_simulator/uuv_sensor_plugins/uuv_sensor_ros_plugins/src/gazebo_ros_image_sonar.cpp: In member function 'cv::Mat gazebo::GazeboRosImageSonar::ConstructVisualScanImage(cv::Mat&)':
/home/fyo/auv_ws/src/uuv_simulator/uuv_sensor_plugins/uuv_sensor_ros_plugins/src/gazebo_ros_image_sonar.cpp:945:71: error: 'CV_AA' was not declared in this scope
cv::ellipse(scan, center, axes, -90, -fov/2.-0.5, fov/2., white, 1, CV_AA); //, int lineType=LINE_8, 0);
^~~~~
/home/fyo/auv_ws/src/uuv_simulator/uuv_sensor_plugins/uuv_sensor_ros_plugins/src/gazebo_ros_image_sonar.cpp:945:71: note: suggested alternative: 'CV_AVX'
cv::ellipse(scan, center, axes, -90, -fov/2.-0.5, fov/2., white, 1, CV_AA); //, int lineType=LINE_8, 0);
^~~~~
CV_AVX
uuv_simulator/uuv_sensor_plugins/uuv_sensor_ros_plugins/CMakeFiles/image_sonar_ros_plugin.dir/build.make:62: recipe for target 'uuv_simulator/uuv_sensor_plugins/uuv_sensor_ros_plugins/CMakeFiles/image_sonar_ros_plugin.dir/src/gazebo_ros_image_sonar.cpp.o' failed
make[2]: *** [uuv_simulator/uuv_sensor_plugins/uuv_sensor_ros_plugins/CMakeFiles/image_sonar_ros_plugin.dir/src/gazebo_ros_image_sonar.cpp.o] Error 1
CMakeFiles/Makefile2:12110: recipe for target 'uuv_simulator/uuv_sensor_plugins/uuv_sensor_ros_plugins/CMakeFiles/image_sonar_ros_plugin.dir/all' failed
make[1]: *** [uuv_simulator/uuv_sensor_plugins/uuv_sensor_ros_plugins/CMakeFiles/image_sonar_ros_plugin.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[100%] Linking CXX shared library /home/fyo/auv_ws/devel/lib/libuuv_gazebo_ros_camera_plugin.so
[100%] Built target uuv_gazebo_ros_camera_plugin
[100%] Linking CXX shared library /home/fyo/auv_ws/devel/lib/libuuv_gazebo_ros_gps_plugin.so
[100%] Built target uuv_gazebo_ros_gps_plugin
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j4 -l4" failed
解决办法:
将对应文本里的全部CV_AA替换成CV_AVX
导入eca之后再次进行编译:
cd ~/auv_ws/
catkin_make
source devel/setup.bash
测试uuv-simulator
在终端1中打开gazebo环境:
source activate py27
cd auv_ws/
source devel/setup.bash
roslaunch uuv_gazebo_worlds ocean_waves.launch
在终端2中打开eca:
source activate py27
cd auv_ws/
source devel/setup.bash
roslaunch eca_a9_gazebo start_demo_teleop.launch joy_id:=0
报错3:substitution args not supported: No module named defusedxml.xmlrpc
解决办法:
pip install defusedxml
pip install numpy
3.5 安装pycharm
解压后,进入bin文件夹,执行安装命令:
sh ./pycharm.sh