目录
1 刷机
【参考NVIDIA Jetson AGX Xavier刷机Jetpack4.3】
1.1 什么是刷机
由于Xavier是嵌入式平台,使用的是AArch64架构,与我们平时使用的Intel架构电脑不一样,故开发环境搭建方式也不一样。为了简化环境搭建过程,让人们能更快的上手使用,Nvidia提供了一套SDK,叫做JetPack,包含有CUDA、cuDNN、TensorRT等常用深度学习库,只需要刷机即可直接安装到Xavier。所谓刷机就是利用另一台计算机作主机,将 OS 镜像下载好,然后烧录到 xavier 中并安装一些 SDK 组件的过程。
1.2 刷机
【参考 NVIDIA Jetson AGX Xavier刷机Jetpack4.3】
需要注意的是:
- 本人遇到了登陆界面卡住的问题,后来通过换浏览器解决了登陆问题
- xavier需要在开机的状态下与主机连接、以进行识别
- 若不能自动识别,则同时按住电源键旁边的两个按键、使xavier进入刷机模式
2 基本配置
根据我目前阶段的了解,xavier不需要像pc端ubuntu那样安装显卡驱动
2.1 开机启动风扇
首先安装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为系统盘】
要注意的是,选择“Ext4”格式前需要点击“+”号
3 配置anaconda虚拟环境、安装ROS
3.1 配置anaconda虚拟环境
安装anaconda
【参考NVIDIA AGX Xavier环境配置】
【参考Jetson AGX Xavier python虚拟环境+yolo配置+opencv】
创建虚拟环境
conda create -n py27 python=2.7
3.2 安装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.3 创建工作空间、编译
新开一个终端,输入
source activate py27
mkdir -p ~/auv_ws/src
cd ~/auv_ws/src
catkin_init_workspace
cd ~/auv_ws/
catkin_make
source devel/setup.bash
3.4 安装uuv-simulator
安装uuv-simulator
往src文件夹中导入uuv_simulator之后:
sudo apt install ros-melodic-uuv-simulator
完成之后进行编译:
cd ~/auv_ws/
catkin_make
source devel/setup.bash
遇到报错
报错截图
报错代码
[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