请输入
菜单

微空无人机视觉导航教程3-机载电脑环境配置(树莓派4B+T265)

微空科技无人机视觉导航教程系列包含:

  1. 飞行平台搭建

  2. 飞控基础设置(Ardupilot及PX4)

  3. 机载电脑环境配置(树莓派4B+T265)

  4. 树莓派镜像迁移使用

  5. 视觉导航设置与飞行实践(Ardupilot及PX4)

  6. 双目VIO算法实现与应用(树莓派5+D435i)

  7. 拓展应用案例

《机载电脑环境配置(树莓派4B+T265)》以 微空MVD35(T265 版)飞行平台为例,视觉传感器采用 T265,机载电脑采用 树莓派4B,介绍机载电脑的配置过程;MVD35飞行平台支持 Ardupilot 及 PX4 固件,本篇统一进行介绍,配置过程 Ardupilot 和 PX4 的不同之处会分别指出;关于 MVD35(D435i 版)飞行平台的机载电脑配置过程,参考《双目VIO算法实现与应用(树莓派5+D435i)》

MVD35 套件购买

微空科技官方淘宝店

0. 准备内容

  1. 硬件准备

    • T265 及 USB A - Micro USB 3.0 数据线

    • 树莓派 4B (4GB RAM 版本)

    • 32G TF 存储卡及读卡器

    • WIFI 网络条件(无需科学上网)

  2. 软件准备

  3. 使用技巧

    • MobaXterm,鼠标右键为粘贴快捷键

    • Ctrl + C 结束进程;或在需要输入密码处取消 sudo 指令

    • vim 编辑器 iinsert 键进入编辑,ESC 键进入命令模式 :wq 命令保存并退出

1. 烧录镜像

工具:Raspberry Pi Imager,官方下载链接:https://www.raspberrypi.com/software/

  1. 将 TF 卡通过读卡器接入电脑,安装并打开 Raspberry Pi Imager

    • Raspberry Pi Device 选择 RASPBERRY PI 4

    • 操作系统选择 Other general-purpose OS -> Ubuntu -> Ubuntu Server 20.04.5 LTS (64-bit)

    • 储存卡选择插入的 TF 卡;

  2. 点击 NEXT,在弹出的窗口中选择 编辑设置

    • 设置账号及密码(微空MVD35 飞行平台统一账号:micoair 密码:12345678)

    • 配置 WIFI 名称及密码

  3. 点击 保存 ,并按照默认提示选择 写入镜像

2. 连接树莓派

工具:MobaXterm,官方下载链接:https://mobaxterm.mobatek.net/download-home-edition.html

  1. 获取树莓派 IP

    • 将烧录好镜像的 TF 卡插入树莓派,接入电源即启动树莓派(启动树莓派后 30 秒内,树莓派会自动搜索并连接到步骤 1. 中配置的 WIFI

    • 进入 WIFI 管理后台找到并复制名称为 raspberrypi 设备的 IP 地址

  2. 局域网登录树莓派

    • 安装并打开 MobaXterm

    • 在上方工具栏点击 Session,弹出的界面选择 SSH,在 Remote host 填入树莓派的 IP 地址,勾选 Specify username 并填入步骤 1. 中设置的用户名(MicoAir3.5'视觉版 飞行平台统一账号:micoair 密码:12345678),点击 OK 进行连接

    • 输入密码登录到树莓派(微空MVD35 飞行平台统一账号:micoair 密码:12345678)

  3. 更新库文件

    复制代码
    sudo apt-get update
    sudo apt-get upgrade -y

3. 编译安装 librealsense SDK

官方安装文档:https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md

librealsense SDK 没有树莓派的预编译安装包,需要通过板上编译源代码进行安装

  1. 安装依赖库、编译工具

    复制代码
    sudo apt-get install -y libssl-dev libusb-1.0-0-dev libudev-dev pkg-config libgtk-3-dev
    sudo apt-get install -y git wget cmake build-essential
    sudo apt-get install -y libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev at
  2. 下载 librealsense2 源代码

    复制代码
    git clone https://github.com/IntelRealSense/librealsense.git
  3. 切换到支持 T265 的分支

    复制代码
    cd librealsense
    git checkout v2.53.1
  4. 运行权限配置脚本

    复制代码
    ./scripts/setup_udev_rules.sh

    按照提示断开 T265 并按下任意键运行配置脚本

  5. 编译 librealsense2 SDK

    复制代码
    mkdir build && cd build
    cmake ../

    下面开始编译 librealsense SDK,编译过程耗时较长,本教程中使用的树莓派是 4G RAM 版本,可直接进行编译;若使用的树莓派是 2G RAM 版本,需要设置交换空间以避免编译过程内存不足而卡死,设置 2G 大小的交换空间,设置过程可参考:https://www.myfreax.com/how-to-add-swap-space-on-ubuntu-20-04/

    复制代码
    make -j4
  6. 安装及测试

    复制代码
    sudo make install
    realsense-viewer

    安装完成后,realsense-viewer 指令会打开软件窗口(软件运行在树莓派上,并通过 SSH 连接将软件界面传回,并非运行于本地电脑,所以操作灵敏度不高)。注意:启动 Intel RealSense Viewer 后才能将 T265 插入树莓派 USB3.0 接口;

    软件会检测 T265 设备并在左侧边栏显示识别到的设备:

    将识别到的 T265 Tracking Module 滑块由 off 切换到 on

    2D 界面显示 T265 鱼眼图像,IMU 和姿态数据;3D 界面显示设备实时姿态及轨迹;可通过右上角按键切换 2D3D 界面;

    软件正确识别到 T265 设备且数据显示正常,则 librealsense SDK 安装成功

4. 安装 ROS

官方安装文档:https://wiki.ros.org/noetic/Installation/Ubuntu

  1. 添加 sources.list 和 keys

    复制代码
    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
  2. 安装桌面完整版

    复制代码
    sudo apt update
    sudo apt install -y ros-noetic-desktop-full
  3. 更新环境配置

    复制代码
    source /opt/ros/noetic/setup.bash
    echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
    source ~/.bashrc
  4. 安装 rosdep

    复制代码
    sudo apt-get install -y python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
    sudo apt install python3-rosdep
    sudo rosdep init
    rosdep update

    执行 sudo rosdep init 时,若显示连接不上 githubusercontent,可通过手动添加 host 解决,方法如下:

    复制代码
    sudo vim /etc/hosts

    在文档最后添加新行

    复制代码
    151.101.84.133 raw.githubusercontent.com

    保存并退出后,从 sudo rosdep init 处继续执行安装过程

  5. 启动 ros 验证是否成功安装

    复制代码
    roscore

    显示以下信息则说明成功安装

5. 安装 Realsense-ros

官方安装文档:https://github.com/IntelRealSense/realsense-ros/blob/ros1-legacy/README.md

参考官方安装文档,采用 Method 2: The RealSense distribution,需要先安装好上文步骤 3. 中的 librealsense SDK 及步骤 4. 中的 ROS

  1. 创建 catkin 工作环境

    复制代码
    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/src/
  2. 下载 Intel RealSense ROS 源代码并切换分支

    复制代码
    git clone https://github.com/IntelRealSense/realsense-ros.git
    git clone https://github.com/pal-robotics/ddynamic_reconfigure
    cd realsense-ros/
    git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1`
    cd ..
  3. 编译并安装

    复制代码
    catkin_init_workspace
    cd ..
    catkin_make clean
    catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
    catkin_make install
  4. 配置环境变量

    复制代码
    echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
    source ~/.bashrc

6. 安装 Mavros

官方安装文档:https://github.com/mavlink/mavros/tree/master/mavros#installation

参考官方安装文档,官方提供了预编译文件,可使用二进制安装,需要先安装好上文步骤 4. 中的 ROS

  1. 下载脚本并通过脚本安装

    复制代码
    cd ~
    sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras
    wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
    sudo chmod a+x install_geographiclib_datasets.sh
    sudo bash ./install_geographiclib_datasets.sh

    wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh 指令提示连接不上 githubusercontent,参考上文步骤 4. 中安装 ROS rosdep 的解决方法;

    安装过程没有详细日志输出且耗时不稳定,若长时间没有进展,尝试结束进程并重新执行 sudo bash ./install_geographiclib_datasets.sh

  2. 修改连接波特率

  • Ardupilot 固件,修改 apm.launch

    复制代码
    sudo vim /opt/ros/noetic/share/mavros/launch/apm.launch

    将文档中第五行波特率由 57600 改为 230400 (为保证飞控与树莓派通信带宽充足,推荐波特率为 115200 以上,根据实际使用需求确定,微空MVD35 飞行平台采用 230400

  • PX4 固件,修改 px4.launch

    复制代码
    sudo vim /opt/ros/noetic/share/mavros/launch/px4.launch

    将文档中第五行波特率由 57600 改为 460800 (为保证飞控与树莓派通信带宽充足,推荐波特率为 115200 以上,根据实际使用需求确定,微空MVD35 飞行平台采用 460800

  1. 启动 mavros 连接飞控
  • Ardupilot 固件

    复制代码
    roslaunch mavros apm.launch

    树莓派能接收到飞控状态信息,则连接成功

    也可通过查看 mavros 连接状态,确定是否连接成功,在另一终端输入下面指令查看连接状态,回传飞控状态则连接成功

    复制代码
    rostopic echo /mavros/state
  • PX4 固件

    复制代码
    roslaunch mavros px4.launch

    树莓派能接收到飞控状态信息,则连接成功

    也可通过查看 mavros 连接状态,确定是否连接成功,在另一终端输入下面指令查看连接状态,回传飞控状态则连接成功

    复制代码
    rostopic echo /mavros/state

7. 配置 vision_to_mavros 坐标转化包

坐标系及 mavros 发布主题参考:https://github.com/thien94/vision_to_mavros

  1. 创建 catkin 工作环境

    复制代码
    mkdir -p ~/vision_ws/src
    cd vision_ws/src
  2. 下载坐标转化包源码

    复制代码
    git clone https://github.com/thien94/vision_to_mavros.git
  3. 编译工作环境

    复制代码
    catkin_init_workspace
    cd ..
    catkin_make
  4. 配置环境变量

    复制代码
    echo "source ~/vision_ws/devel/setup.bash" >> ~/.bashrc
    source ~/.bashrc

8. 安装 uhubctl (选装)

参考博客:https://blog.csdn.net/qq_51491920/article/details/123361881

T265 连接状态下树莓派开机会导致设备识别和数据读取异常,需要重新拔插 T265 以恢复正常,或通过安装 uhubctl (软件重启 USB 口)以解决 T265 需要硬件插拔的问题

微空MVD35 飞行平台已安装 uhubctl,且配置了开机自动初始化脚本,开机自动重启 USB 口,可直接使用 T265(见下文 方法三)

  1. 安装依赖库

    复制代码
    sudo apt-get install libusb-1.0-0-dev
  2. 下载源代码

    复制代码
    cd ~
    git clone https://github.com/mvp/uhubctl
  3. 编译与安装

    复制代码
    cd uhubctl
    make
    sudo make install
  4. 重启 USB

    • 方法一:通过指令直接重启 USB 口

      复制代码
      sudo uhubctl -l 2 -a cycle -p 1-4
    • 方法二:设置启动终端时自动重启 USB ;打开多个终端时,只需重启 USB 一次

      复制代码
      sudo vim /etc/profile

      在文档最后添加新行

      复制代码
      sudo uhubctl -l 2 -a cycle -p 1-4

      保存并退出,重新连接终端时生效

    • 方法三:通过开机自动化脚本重启 USB 口,开机即可直接使用 T265

      复制代码
      sudo vim /etc/rc.local

      输入开机启动脚本

      复制代码
      #!/bin/bash -e
      
      sleep 1
      sudo uhubctl -l 2 -a cycle -p 1-4
      
      exit 0

      保存并退出,重新启动树莓派生效

官方安装文档:https://github.com/ArduPilot/pymavlink

Pymavlink 通过 Python 语言实现 MAVLink 协议,可用于实现 python 脚本进行飞控通信控制等功能

MicoAir3.5'视觉版 飞行平台已安装 pymavlink,支持扩展 Python 应用

  1. 创建 python 软连接

    复制代码
    sudo ln -s /usr/bin/python3 /usr/bin/python
  2. 安装 python pip

    复制代码
    sudo apt-get install -y python3-pip
  3. 使用 pip 安装依赖库

    复制代码
    sudo python -m pip install --upgrade future lxml
  4. 使用 pip 安装 pymavlink

    复制代码
    sudo python -m pip install --upgrade pymavlink

10. 节点测试

MobaXterm 上打开四个终端,连接到树莓派,分别在四个终端中测试不同节点

  1. T265 节点

    复制代码
    roslaunch realsense2_camera rs_t265.launch
  2. mavros 节点

  • Ardupilot 固件

    复制代码
    roslaunch mavros apm.launch
  • PX4 固件

    复制代码
    roslaunch mavros px4.launch
  1. vision_to_mavros 节点

    复制代码
    roslaunch vision_to_mavros t265_tf_to_mavros.launch
  2. 查看数据及状态

    • 位置与方向数据

      复制代码
      rostopic echo /mavros/vision_pose/pose
    • 数据帧频率

      复制代码
      rostopic hz /mavros/vision_pose/pose
    • 飞控连接状态

      复制代码
      rostopic echo /mavros/state
  3. 一次启动所有节点

  • Ardupilot 固件

    • t265_all_nodes.launch 脚本可同时启动 T265, mavros, vision_to_mavros 节点,默认启动 mavros 节点为 apm.launch

    • 确认 t265_all_nodes.launch 脚本 mavros 节点为 apm.launch

      复制代码
      vim vision_ws/src/vision_to_mavros/launch/t265_all_nodes.launch
    • 启动 t265_all_nodes.launch 脚本

      复制代码
      roslaunch vision_to_mavros t265_all_nodes.launch
  • PX4 固件

    • t265_all_nodes.launch 脚本可同时启动 T265, mavros, vision_to_mavros 节点,默认启动 mavros 节点为 apm.launch

    • 修改 t265_all_nodes.launch 脚本 mavros 节点为 px4.launch

      复制代码
      vim vision_ws/src/vision_to_mavros/launch/t265_all_nodes.launch
    • 启动 t265_all_nodes.launch 脚本

      复制代码
      roslaunch vision_to_mavros t265_all_nodes.launch

11. 姿态轨迹可视化

通过 rviz 机器人可视化工具,可以实时监测无人机飞行姿态与轨迹等

  1. 启动 T265,mavros,vision_to_mavros 节点

    复制代码
    roslaunch vision_to_mavros t265_all_nodes.launch
  2. 在 rviz 中查看姿态与轨迹

    • 启动 rviz (此时 rviz 运行于树莓派上,并通过 SSH 连接将软件界面传回,并非运行于本地电脑,所以操作灵敏度不高)

      复制代码
      rosrun rviz rviz
    • Fixed Frame 设置为 camera_odom_frame,添加想要查看的数据,常见有 Axes Path Pose

    • 在添加的 Axes 中,将 Reference Frame 设置为 camera_odom_frameLengthRadius 可根据空间场景设置大小

    • 在添加的 Pose 中,将 Topic 设置为 /mavros/vision_pose/poseQueue Size 设置为 1Shape 设置为 AxesAxes LengthAxes Radius 可根据机架大小设置

    • 在添加的 Path 中,将 Topic 设置为 /body_frame/pathQueue Size 设置为 1

  3. 移动无人机或控制飞行过程中,rviz 将会实时显示无人机姿态和轨迹

树莓派4B+T265 机载电脑环境配置完成,后续内容请参考微空科技无人机视觉导航教程系列《镜像迁移使用篇》

上一个
微空无人机视觉导航教程2-飞控基础设置(Ardupilot及PX4)
下一个
微空无人机视觉导航教程4-树莓派镜像迁移使用
最近修改: 2024-11-26Powered by