longer95479@home:~$

XI35 装机全过程


本篇记录 XI35 机体的组装过程,以及飞控、ORIN的配置,最终实现 fast-drone-250 的过程。

所有的 配件型号相关资料 可在 配件型号采购表 中找到。

总重 540g -> 780g(安装了相机和orin)

目录:

1 机体安装步骤

1.1 整体流程

  • 将电机安装到机架上,使用四个M2*6,注意机架的上下面,孔位有凹槽的为上面

  • 穿电池绑带

  • 将M3转M2橡胶减震柱穿过电驱和飞控的四角安装孔(技巧:橡皮筋技巧)

  • 使用M2*20安装电驱,8pin接口朝机头,接口贴着机架

  • 电机线修修剪(用剥线钳),焊接(加松香);电源线和滤波电容焊接

  • 连接飞控(见下面QCG版本问题),连接电池,更改电机序号映射和转向

  • 连接接收机(遥传一体模块中靠近LED的是RC接口)到飞控的 RC 端口,数传(遥传一体模块中的另一个接口)到 TELEM1 端口,GPS模块连接 到 GPS 端口

  • 线穿过镂空部分把这几个模块都放到机架顶部

  • (略)M2*12固定摄像头座,M2*16固定图传天空端

  • M3*6安装前六个铝柱的上部,第七个在尾部的立柱先不装(b站视频说错了,应该看三维动图)

  • (略)M2*12安装配重打印件

  • 3d打印天线座安装,大的套在机架尾部,小的套在涵道圈,打印件有弹性,孔偏小,需要M3螺丝旋转 着才能穿过

  • 把各个数据线的飞控端都装上(tele2(连接到orin的),gps,接收机)
  • 机架,七个铝柱,涵道圈,菱形底架,从上至下叠起来后从下往上安装M3*14

  • 调试完成后安装桨叶,使用M2*10安装

  • 打印相机和orin的安装连接件,使用M2*>=8的螺丝将其固定到机架上,螺母锁上

  • 安装orin:orin载板安装孔是M3,若使用M2立柱,导致只能用M2螺丝,螺帽太小会穿过,因此要在螺丝上加两个螺母
    • 或者直接使用 M3*>=25 立柱
    • 先将螺丝都穿过打印件后,再将其安装到机架上,降低安装难度
  • 安装 d435,使用 M6 螺丝

  • 飞控上的 uart4(/dev/ttyS3) 连接到 ORIN 的 uart1(/dev/ttyTHS0)(左侧端口)

参考:NxtPX4v2开源飞控装机和配置全流程教程

1.2 px4 与 orin 串口连接线的线序与焊接

由于 nxt-px4 和 orin 载板上的串口端口型号不同,需要将各自配套的线材剪断,并按照串口正确的线序进行焊接,线序对应关系如下:

nxt-px4 黑(GND) 红(5V) 黄(Tx) 绿(Rx)
orin 3(GND) x(5V) 1(Rx) 2(Tx)

2 飞控配置

2.1 基本配置

  • 测试电机转向

  • 遥控器和接收机对频,并在地面站校准

  • 配置通道功能,用于飞行模式切换、紧急停止等(注意:有三档的前两档一致)详见 px4ctrl
    • 5通道2档:自稳和offboard
    • 6通道3档:是否接受命令
    • 7通道3档:急停
    • 8通道2档:px4ctrl对px4的重启
  • 电压电流采样设置,电池节数为6

  • 传感器校准
    • 飞控与罗盘方向设置:ROTATION_ROLL_180
    • 陀螺仪与加速度计校准
    • 校准地平线

细节参考 NxtPX4v2开源飞控装机和配置全流程教程

2.2 与 ORIN 通信相关的配置

主要参考 Nxt-FC,github 上的 readme 进行设置,不要按照商家给的安装教程里的进行设置。主要是配置 MAV_0 的参数

  • MAV_0_CONFIG: TELE2 (Serial Configuration for MAVLink (instance 0))
  • MAV_0_FLOW_CTRL: Auto-detected
  • MAV_0_FORWARD: Enabled
  • MAV_0_MODE: External Vision
  • MAV_0_RADIO_CTL: Enabled
  • MAV_0_RATE: 92160 B/s

2.3 获得高分辨率和高频率的 IMU 数据所需的配置

create file in your tf-card /etc/extras.txt

mavlink stream -d /dev/ttyS3 -s ATTITUDE -r 200

mavlink stream -d /dev/ttyS3 -s HIGHRES_IMU -r 1000

then using the following settings:

  • IMU_GYRO_RATEMAX: 2000Hz
  • IMU_INTEG_RATE: 400Hz
  • MAV_0_MODE: External vision
  • Set Uart4(SER_TELE2) to 921600
  • MAV_0_RATE 92160B/s

after these settings you will have 250Hz /imu/data_raw /imu/data

3 ORIN NX 配置

3.1 安装 jetpack 5.1.3 linux for jetson orin nx modules:

  • 在 PC 上的 ubuntu 里安装 sdkmanager

  • 按住 REC 键并给 orin 上电,上电后可松开,之后将 typeC 插到 Recovery Port(在底板短边上的那个typec口,即 USB1),另一端连接到 PC

  • 按照 sdkmanager 的引导操作即可,可选择组件安装
    • 此时 opencv 可以不装,因为此阶段安装的 opencv 不支持 cuda 加速
  • 下载镜像

  • 安装镜像
    • 注意 username不能是大写字母,否则 sdkmanager 无法自动设置orin的用户名等后续的默认设置参数,进一步导致无法通过usb以太网连接orin
    • 一切安装完成后,忘记拔掉 usb 将导致板子一直无法正常启动,外接屏幕无画面,拔掉后就一切正常
  • 如果 PC 上的 ubuntu 硬盘空间不足,可外接移动硬盘,将 Download Folder 和 Target HW image folder 设置在移动硬盘(FAT)里
    • 注意:移动硬盘的文件系统不能是 windows 的 FAT,而应该是 EXT4,否则镜像将会安装错误

3.2 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://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

  • sudo apt update

  • sudo apt install ros-noetic-desktop-full

  • echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc

  • 建议没有ROS基础的同学先去B站学习古月老师的ROS入门教程

测试 ROS:

  • 打开三个终端,分别输入
    • roscore
    • rosrun turtlesim turtlesim_node
    • rosrun turtlesim turtle_teleop_key

3.3 realsense 驱动安装

  • 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

  • 测试:realsense-viewer

  • 注意测试时左上角显示的USB必须是3.x,如果是2.x,可能是USB线是2.0的,或者插在了2.0的USB口上(3.0的线和口都是蓝色的)
  • roslaunch realsense2_camera rs_camera.launch 无法正常工作,报符号错误,这是是手使用动编译的opencv4.5.4但没添加对应路径的问题

3.4 安装 mavros

  • sudo apt-get install ros-noetic-mavros
  • cd /opt/ros/noetic/lib/mavros
  • sudo ./install_geographiclib_datasets.sh

3.5 安装ceres与glog与ddyanmic-reconfigure

  • 解压3rd_party.zip压缩包

  • 进入glog文件夹打开终端

  • sudo chmod 777 autogen.sh && sudo chmod 777 configure

  • ./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

  • 进入ceres文件夹打开终端

  • mkdir build

  • cd build

  • cmake ..

  • sudo make -j4

  • sudo make install

  • sudo apt-get install ros-noetic-ddynamic-reconfigure

注意,安装的版本是 `ceres 2.0.0` 版本,编译需使用 `std=c++14` 及以上,后续需把 vinsfusiongpu 里的所有包都改成 c++14 标准

3.6 OpenCV 安装

如果我们在 sdkmanager 中勾选了安装 opencv 的选项,安装的版本将会是 OpenCV 4.5.4,但不支持 cuda 加速,此时我们下载相同版本的 opencv 源码,在 CMAKE 选项上打开支持 cuda 加速的选项,再进行编译。

安装过程参考 Jetson Orin NX 开发指南(5): 安装 OpenCV 4.6.0 并配置 CUDA 以支持 GPU 加速,注意版本的不同即可,我们安装的是 4.5.4

注意,编译支持cuda的 opencv时,cmake选项里 CUDA_ARCH_BIN=8.7,而不是 7.2

3.7 安装 cv_bridge 功能包

为什么需要自己下载 cv_bridge 源码并编译呢?

安装 noetic full版本时已经下载了 cv_bridge 的二进制文件,其编译时使用的是 opencv 4.2 的函数,因此链接时需要链接到opencv 4.2的 so 文件,但 orin 上新安装的支持 cuda 加速的 opencv 是 4.5.4 版本,因此该 cv_bridge 只能链接到 4.5 版本的 opencv 库,vins 在执行到 cv_bridge 相关的函数时就无法正常执行,最后报内存溢出的错。

解决办法:下载 cv_bridge 的源码,然后指定 4.5 版本的opencv进行编译,编译完成后将其路径添加到 ~/.bashrc 文件中,并刷新环境变量,具体参考 Jetson Orin NX 开发指南(5): 安装 OpenCV 4.6.0 并配置 CUDA 以支持 GPU 加速

3.8 下载并编译 Fast-drone-XI35

原本需要分成两部:

  • clone 浙大官方的 Fast-drone-250 的仓库
  • 将其中的 vins-fusion 替换成 fins-fusion-gpu 版本

为了简化操作:

  • 把替换成 gpu 版本的 fast-drone-250 push 到 Fast-Drone-XI35直接 clone 该仓库即可,之后进行编译

其中所作的修改均是针对的 vins-fusion-gpu,包括:

  • 由于 ceres 2.0.0 需使用 std=c++14,因此把 vinsfusiongpu 里的所有包的 CMakeLists.txt 都改成 c++14 标准

  • 设置 OpenCV 路径为带有 GPU 加速的 opencv 4.5.4,opencv 可以指定到 编译的文件夹安装的文件夹

  • 由于 vins-fusion-gpu 原仓库使用的是 opencv 3,而现在安装的是 opencv 4,OpenCV 4 系列和 OpenCV 3 系列有一些变量的名称发生了改变,因此我们这里只要将相应的变量名称进行修正,就能顺利通过编译

  • 具体参考:Jetson Orin NX 开发指南(6): VINS-Fusion-gpu 的编译和运行

4 Docker 配置与使用

TODO

5 需要注意的问题

飞控相关

  • 安装好后typeC不好插

  • 小心滤波电容短路

  • QGC v4.0.11无法识别 px4 pro 1.14.0
    • QGC 4.3.0 可以识别
  • imu频率在地面站上看一直是50Hz,不知用NX板连接 SER_TELE2 时会不会达到250Hz
  • 智能充充电电流设置为1.3A会时不时自动停止充电,需要频繁人为重启,设置为1A则正常(电池充放电能力为0.5C,既 3000mAh*0.5h^-1 = 1500mA = 1.5A)

  • 电机线焊接方向没选择好,导致挤在一起,可能会影响散热
    • !!!加上电源线没焊好,会挡住飞控上的 TELE2 接口,不得不重新焊接

orin 相关

  • orin载板安装孔是M3,使用M2立柱,导致只能用M2螺丝,螺帽太小会穿过,因此要在螺丝上加两个螺母

  • orin和nxtpx4通过串口相连,但两端的接口不同,需要自己焊接线

  • px4的/dev/ttyS3 连接到 orin 的 /dev/ttyTHS0

  • 安装ceres与glog与ddyanmic-reconfigure时,执行 ./autogen.sh && ./configure && make && sudo make install 前要加两句 sudo chmod 777 autogen.sh && sudo chmod 777 configure

  • unable to locate package libcxsparse3.1.2
    • 使用sdkmanager预装的opencv不支持cuda,需要卸载,重新安装支持cuda加速的版本
    • 或者不卸载,直接安装支持 cuda 加速的版本,之后cmake文件里把路径指向编译所在的文件夹,因为卸载时用 autoremove会把 ros的full版本删掉一部分,需要重新下回来,并照着vinsfusiongpu的readme修改路径
    • 更好的操作是不要使用 sudo make uninstall 卸载 opencv,而是
      • 找到之前装opencv的build文件夹,进入后执行卸载指令 sudo make uninstall
      • 然后再把之前留在usr文件夹里的剩余文件都删掉
      • sudo rm -r /usr/local/include/opencv4 /usr/local/share/opencv4 /usr/local/lib/libopencv*
      • sudo rm -r /usr/include/opencv4 /usr/share/opencv4 /usr/lib/libopencv* `
  • roslaunch realsense2_camera rs_camera.launch 无法正常工作,报符号错误,这是是手使用动编译的opencv4.5.4但没添加对应路径的问题
  • VINS无法正常运行,原因有多个
    • 一个是是编译支持cuda的 opencv时, cmake选项里 CUDA_ARCH_BIN=8.7,填成了7.2
    • 另一个重要原因是,安装 noetic full版本时已经下载了 cv_bridge 的二进制文件,其编译时使用的是 opencv 4.2的函数,因此链接时需要链接到opencv 4.2的 so文件,但orin上新安装的支持cuda加速的opencv是 4.5.4 版本,因此该cv_bridge 只能链接到 4.5 版本的opencv库,vins在执行到cv_bridge 相关的函数时就无法正常执行,最后报内存溢出的错。解决办法:下载 cv_bridge 的源码,然后指定 4.5版本的opencv进行编译,编译完成后将其路径添加到 ~/.bashrc 文件中,并刷新环境变量
    • 参考 Jetson Orin NX 开发指南(6): VINS-Fusion-gpu 的编译和运行_jetson orin nx跑vins-CSDN博客
  • 设置好外参初始值后,里程计输出出现姿态较准确,但平移量反复波折,仿佛被约束在一点,不随实际运动而运动,且容易出现巨大漂移
    • 外参中旋转矩阵的符号错了,本来以为相机坐标系是z朝前y朝上,实际情况时z朝前y朝下,修改后里程计正常
  • 自动起飞后会超调一下

  • 飞行过程上下起伏,可能需要调一下PID参数

  • 起飞和飞行时机身倾斜,需要校准一下地平线

参考

Total views. cowboys. Hits