Z410-4B无人机使用教程目录

1.资料下载链接

  1. missionplanner下载链接

  2. ardupilot固件下载链接

  3. PC端安装Ubuntu系统

2.Z410机型介绍

  1. 硬件接线图

  2. 硬件设备及用途简介

3.如何快速进行第一次解锁

4.如何进行第一次试飞

5.使用这台无人机需要具备的一些基础知识

6. 以后扩展开发方向


1.资料下载链接

2. Z410机型介绍

  • Z410无人机是一款专为无人机二次开发入门设计的一款实验机型。

    基础版采用pixhawk2.4.8飞控和M8NGPS模块;

    单目版在基础板机型上安装了树莓派4B机载电脑,树莓派可通过Dronekit-python、ROS、Opencv编程实现对无人机的外部控制;

    视觉版在单目版基础上安装了intel T265双目相机,可实现在无GPS环境下的定位导航。

    树莓派系统基于ubuntu20.04打造,集成了多种功能模块:ROS、mavros、Dronekit-python、Opencv、Rpanion-server等。大家不用再花费时间安装编译这些功能包,参考例程可直接上手学习。

  • 2.1 硬件接线图

  • 2.2 硬件设备及用途简介

    飞控:pixhawk2.4.8-- 无人机正常飞行的必要硬件,控制无人机姿态;

    树莓派:raspberry pi 4B-- 运行外部控制程序及其他系统集成,给飞控发送外部控制命令,或则网络信号;(单目版和视觉版配置)

    电调:定制--接收飞控的输出信号,处理后驱动电机旋转;

    电机:T-motor2216--电机旋转带动桨叶,从而给无人机提供上升的动力;

    电池:3S 5200mah--无人机的动力来源;

    电流计:给飞控提供稳压电源;检测实时电压,当电池电压过低采取预设值的动作,自主降落或返航;

    UBEC:给树莓派提供稳定的电源;(单目版和视觉版配置)

    T265双目相机:用于视觉定位;(单目版和视觉版配置)

    单目摄像头:用于实时视频回传;(单目版和视觉版配置)

    接收机:与遥控器配套,接收遥控器的控制信号,从而控制无人机飞行;

3. 如何快速进行第一次解锁

  • 1.将无人机平放在地面上;

  • 2.电池插上BB响报警器,贴上魔术贴,绑扎在飞机底板上;

  • 3.打开遥控器,将油门摇杆拉倒最低,SWA~SWD开关均拨到1挡,解除遥控器报警;

  • 4.将无人机接上电池,等待飞控自检。自检时间大概30秒左右。此时飞控会闪黄灯,电机会发出“滴~滴~”声;

  • 5.长按安全开关,直到安全开关LED指示灯常亮。此时飞控LED会蓝灯闪烁,电机“滴~滴~”声停止;

  • 6.遥控器左边油门摇杆往右下角一直按住大概2秒左右,蜂蜜器会长鸣一声,表示飞控已解锁。此时飞控蓝灯长亮,电机会怠速旋转;

  • 7.推动油门超过50%,电机会加速;

  • 8.油门摇杆往左下角一直按住大概2秒左右,飞控会上锁。此时飞控蓝色指示灯闪烁;

    基本的解锁上锁操作完成。

    演示视频

4. 如何进行第一次试飞

5. 使用这台无人机需要具备的一些基础知识:

6. 以后扩展开发方向

  • 1.可测试扩展思岚A1,A2激光雷达避障(简单避障,不建图);

  • 2.可测试扩展4G/5G通讯,远距离图数传,从而实现4G/5G控制;

  • 3.可测试使用AprilTags进行的室内非GPS飞行(基于ROS);

  • 4.可测试使用ROS,Realsense T265相机和AprilTag进行精确着陆;

  • 5.可测试使用Apriltags进行室内导航;

  • 6.可测试在RVIZ里面查看T265轨迹;

  • 7.可测试将整套系统可移植到无人车或则无人船上

  • 8.未完待续。。。。。。

    以上教程是Z410的一些基本操作。大家可以利用ubuntu系统与ROS系统的开源特性,在此基础上进行扩展,比如避障,跟踪,导航等方面。大家也可以加入到Z410技术讨论微信群,分享自己在开发方面的心得、方法、示例和对遇到的问题进行讨论。

2. 二次开发入门教程

  • Ardupilot开源无人机二次开发入门系列教程

    教程视频:https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzkyNzI1MDUyNw==&action=getalbum&album_id=2014808821755379715&scene=173&from_msgid=2247485616&from_itemidx=1&count=3&nolastread=1#wechat_redirect

  • Z410-4B单目版教程

    Z410单目版在基础版配置上,扩展了树莓派4B机载电脑。目前该系统集成了数据遥测转发,高清视频回传,ROS,mavros,Dronekit-python等。我们需要先配置好网络,通过PC远程连接到树莓派,进而实现对无人机的操作。

  • 树莓派能做什么,为什么要扩展树莓派?

    树莓派是一款基于ARM的微型电脑主板,英文名:Raspberry Pi。是一款入门及的机载电脑。它能够通过串口连接使用 MAVLink 协议与飞控进行通信。这可用于执行额外的任务,例如:通过python、ROS编程实现对无人机的飞行控制;通过安装单目相机实现图像识别,由于存储图像的内存要求,单靠飞控根本无法完成这些任务。

  • 如何对无人机的树莓派进行操作?

  • 2.1 建立网络连接:

  • 将电池插上BB响报警器,绑扎在底板上。无人机连接电池插口,即可启动。启动后先不要挪动无人机,等待飞控和树莓派启动系统,大概2分钟左右。系统启动后自动启动WIFI热点。

    WIFI****名称:ACopter

    密码:12345678

    将笔记本WIFI连接到树莓派热点。

    注意!

    WIFI信号范围最大30米左右。
  • 2.2 使用树莓派遥测转发功能,将无人机与地面站进行连接

  • 树莓派集成了飞控数据遥测转发的功能,相当于一个路由器。这样我们可以通过WIFI网络远程连接飞控和PC端地面站软件。

    演示视频:

    注意!

    如果不能通过UDP连接,请先关闭windows防火墙。

  • 2.3 使用树莓派的图传功能,可实时回传视频到地面站

  • 树莓派集成了高清图传回传功能,可以将USB摄像头拍摄的实时高清信号图像回传到PC端地面站软件、或则图像播放软件,如:VLC media player。

    下载链接:https://www.videolan.org/

  • MP地面站软件显示高清视频需要先安装GStreamer。

    下载链接及教程: https://pan.baidu.com/s/1AyvQNj2m4E4fMHS6JYnpJA

    提取码:f7c3

  • 安装好GStreamer以后,视频回传操作参考以下视频:

  • 2.4 PC访问树莓派的3种方式:

  • 方法1:windows系统下通过远程桌面访问树莓派:

    1.打开windows远程桌面;

    2.填入树莓派IP:10.42.0.10,点 连接;

    3.在终端输入用户名:ubuntu,密码:123456abc;

    4.确认后即可连接到树莓派桌面(注意:远程桌面连接占用带宽比较大,速度略有卡顿是正常的。

  • 参考视频:

    方法1优点:有桌面系统,直观可看。对初学者来说比较容易接受;

    方法1缺点:远程桌面会占用很多资源,导致卡顿;

  • 方法2:windows系统下通过PUTTY访问树莓派:

    1. 在PC端安装PuTTY,下载链接:https://the.earth.li/~sgtatham/putty/latest/w64/putty-64bit-0.75-installer.msi

    2. 启动PuTTY,填写树莓派IP:10.42.0.10,密码:123456abc

  • 参考视频:

    方法2优点:访问执行速度快,需要同时使用MP地面站和终端命令行比较方便;

    方法2缺点:命令行显示,对初学者来说不直观;需要远程调用ubuntu系统下的窗口不能用这个方法。

  • 方法3:ubuntu系统下远程访问树莓派:

    1.笔记本打开一个终端,使用下面的命令修改笔记本上的hosts文件:

    sudo vim /etc/hosts
    

    将树莓派4b的IP地址(10.42.0.10)加入到hosts文件中,并保存退出。

    参考视频:

    关于vim编辑器的使用,可以参考以下教程的部分内容:

    https://mp.weixin.qq.com/s/BEIZ9fa09WYrImbKcRT7NA

    方法3优点:执行速度快,ubuntu系统下可以做更多的开发

    方法3缺点:不能同时使用MP地面站

  • 2.5 树莓派的关机操作

    注意!

    树莓派是机载电脑,突然断电有可能造成系统损坏无法开机。建议大家使用以下2种方式进行正常的关机操作。
  • 方法1: 在命令行终端,输入关机命令

    sudo halt
    
  • 方法2:通过web管理界面关机

  • 参考视频:

    注意!

    树莓派关机以后,等待大概1分钟左右,树莓派电源指示灯熄灭,再断开无人机电池。
  • 2.6 使用Dronekit测试连接飞控并读取状态数据

  • Dronekit介绍:

    Dronekit也叫DroneKit-Python,是一个用于控制无人机的Python库。有了它你就可以在机载电脑上通过Python编程实现对无人机的控制。它可以显着增强自动驾驶性能,为飞行器增加更多智能,以及执行计算密集或时间敏感的任务(例如,计算机视觉,路径规划或3D建模)。除了DroneKit-Python以外,还有DroneKit-Android以及DroneKit-Cloud的API供不同的开发者使用。API通过MAVLink与飞控通信。它提供对连接飞控的遥测,状态和参数信息的编程访问,并实现任务管理和对飞行器运动和操作的直接控制。

    相比之下,Dronekit比搭建ros来控制无人机更容易上手一些。

    对于Dronekit,PX4(原生固件)被支持的较少,目前不可以进行模式切换。而对Ardupilot(APM固件)支持的比较多,可调用的函数也比较多。

    单目版机型我们已经在树莓派上安装好Dronekit,并且在根目录下有一个test文件夹,存放了几个演示示例,大家可以根据下面的教程操作。

  • 如果想了解树莓派与pixhawk飞控具体如何连接,以及如何安装dronekit的过程,可参考以下链接有详细介绍:

    第一节:https://mp.weixin.qq.com/s/lNzoFQqN9q4wPaaZBy5fYg

    第二节:https://mp.weixin.qq.com/s/QXWT8NOLXToO6n0zwFZoRA

  • 1.运行连接示例

    使用Dronekit代码读取飞控当前状态,测试树莓派与飞控之间通讯是否正常:

    1.无人机连接电池,笔记本开启一个终端窗口;

    2.通过ssh命令,连接无人机上的树莓派;

    3.将路径切换到test文件夹:

    cd test
    

    4.运行connect.py脚本:

    python2 connect.py
    

    成功运行后,会显示如下信息:

    说明树莓派通过Dronekit读取到了目前飞控的数据:系统警报、固件版本、姿态数据、电池电量、解锁状态、当前飞行模式等等。这样就成功运行了第一个DroneKit-Python脚本。

    注意!

    如若出现连接异常超时警报,请检查物理连接(usb转TTL模块)是否连接好;或则打开connect.py程序查看连接端口是否为ttyUSB0;无人机通电后如果长时间没有使用串口,串口有可能关闭,无人机重新启动,再执行以上程序。
  1. 如果想查看connect.py脚本,可通过vim编辑器查看,执行如下命令:

    sudo vim connect.py
    

    其中脚本注释如下:

  • 飞控软件版本

    print "Autopilot Firmware version:%s"% vehicle.version
    
  • 全球定位信息(经纬度,高度相对于平均海平面)

    print "Global Location:%s"% vehicle.location.global_frame
    
  • 全球定位信息(经纬度,高度相对于home点)

    print "Global Location (relative alttud):%s"%vehicle.location.global_relative_frame
    
  • 相对home点的位置信息(向北、向东、向下);解锁之前返回None

    print "Local Location:%s"%vehicle.location.local_frame
    
  • 无人机朝向(欧拉角:roll,pitch,yaw,单位为rad,范围-π到+π)

    print "Attitude:%s"% vehicle.attitude
    
  • 三维速度(m/s)

    print "Velocity:%s"% vehicle.velocity
    
  • GPS信息

    print "GPS:%s"% vehicle.gps_0
    
  • 地速(m/s)

    print "Groundspeed:%s"% vehicle.groundspeed
    
  • 空速(m/s)

    print "Airspeed:%s"% vehicle.airspeed
    
  • 云台信息(得到的为当前目标的roll, pitch, yaw,而非测量值。单位为度)

    print "Gimbal status:%s"% vehicle.gimbal
    
  • 电池信息

    print "Battery:%s"% vehicle.battery
    
  • EKF(拓展卡曼滤波器)状态

    print "EKF OK?:%S"% vehicle.ekf_ok
    
  • 超声波或激光雷达传感器状态

    print "Rangefinder:%s"% vehicle.rangefinder
    
  • 无人机朝向(度)

    print "Heading:%s"% vehicle.heading
    
  • 是否可以解锁

    print "Is Armable?:%s"% vehicle.is_armable
    
  • 系统状态

    print "System status:%s"% vehicle.system_status.state
    
  • 当前飞行模式

    print "Mode:%s"% vehicle.mode.name
    
  • 解锁状态

    print "Armed:%s"% vehicle.armed
    
  • 2.7 启动SITL仿真环境并运行python示例

    在test文件夹下我们有几个演示脚本,如果单纯的运行脚本新手没有直观的感受。我们可以结合无人机仿真环境,来学习脚本具体的执行过程。

    前面笔记本上安装好ubuntu系统镜像,里面已经搭建好了Ardupilot开发环境。SITL仿真也就包含其中。

    需要注意:DroneKit-SITL目前仅为Mac,Linux和Windows提供x86二进制文件。不能在树莓派这样的ARM平台上运行它。

    我们执行的python脚本是在树莓派系统上,而 SITL仿真环境是搭建在笔记本系统上的。

  • 1.树莓派端,进入test目录

    cd test
    
  • 2.编辑example2.py

    sudo vim example2.py
    

    将其中连接端口改为connection_string = '10.42.0.10:14550' 为树莓派IP端口。

    脚本里面都配有详细注解,大家可根据注解来理解 dronekit的基本使用。

  • 3.笔记本端,首先要进入需要仿真的多旋翼无人机的目录下:

    cd ardupilot/Arducopter
    

    第一次运行,需要执行下面的命令对仿真环境进行初始化

    sim_vehicle.py -w
    

    或则是仿真参数被改的乱七八糟的时候,也可用这个命令恢复初始参数。

    启动完毕,使用 Ctrl+C 终止正在运行的sim_vehicle.py -w

  • 4.接下来就可以启动模拟器了:

    sim_vehicle.py --console --map
    

    正常启动后,就会看到三个窗口:Terminal, Console, Map,这样最基本的软件在环仿真程序就运行起来了。

  • 5.启动后通过output命令列出MAVProxy转发数据的接口,如下所示:

  • 6.使用output add命令增加树莓派IP接口:

    output add 10.42.0.10:14550
    

    与example2.py代码中端口地址一致。

  • 7.树莓派端执行:

    运行example2.py代码

    python2 example2.py
    

    参考视频:

  • 8.我们还可以将航点文件导入SITL进行演示,具体参考如下视频

  • 2.8 SITL仿真结合MP地面站运行python示例

    首先,将树莓派无人机接上电池,确保 ubuntu电脑,MP地面站电脑都连接到树莓派WIFI热点。

  • MP地面站电脑:

    要在MP上显示仿真,遥测连接务必断开。因为遥测连接的是实际的飞控,做仿真需要连接仿真数据。

    ubuntu笔记本端:

    启动SITL仿真

    cd ~/ardupilot/Arducopter
    sim_vehicle.py --console --map
    

    使用output add命令,增加树莓派的IP:

    output add 10.42.0.10:14550
    

    再使用output add命令,增加MP地面站的IP,MP地面站IP地址在遥测页面查看:

    output add 10.42.0.170:14551
    
  • 树莓派端:

    运行示例代码:

    cd test
    python2 example2.py
    

    以下视频演示SITL仿真如何结合MP地面站运行

    SITL与MP地面站结合运行,那么我们可以直接在MP地面站的全部参数列表里,查找需要修改的参数进行修改。

    有关SITL仿真的详细介绍,可查看以下链接:

    https://ardupilot.org/dev/docs/using-sitl-for-ardupilot-testing.html

  • 2.9 使用Python脚本控制无人机飞行

    根据dronekit的官方示例,我们编写了几个简单的程序控制无人机飞行。

    编写完以后先在SITL仿真环境下运行看看是否和预想的一致。没有问题后,再连接无人机实地飞行。

    example5.py控制无人机起飞到3米高度,然后悬停5秒,再自动降落;

    大家可根据我们提供的示例,结合自己的实际情况,编写控制程序。

  • Dronekit室外控制无人机起飞降落演示:

    example4.py在室外空旷处,此脚本控制无人机起飞到3米高度,然后飞出一个2米*2米的正方形,再自动降落。

    Dronekit室外控制无人机飞出一个正方形演示:

    还有值得注意的是,python脚本中设置属性:

    少数的属性变量可以被设置,通过设置这些属性变量,可以控制无人机的运行状态。可设置的属性变量如下:

    vehicle.home_location
    vehicle.gimbal
    vehicle.airspeed
    vehicle.groundspeed
    vehicle.mode
    vehicle.armed
    vehicle.disarmed
    
  • 设置示例:

    1.锁定无人机:

    vehicle.disarmed = False
    

    2.切换到GUIDED模式:

    vehicle.mode = VehicleMode("GUIDED")
    

    3.设置航点模式下,无人机飞行的地速为3.2m/s(注意:读、写groundspeed的意义不同)

    print "Param:%s"% vehicle.parameters['THR_MIN']
    vehicle.groundspeed = 3.2
    
  • 读取参数

    参数以字典(dictionary)的形式,存储在vehicle.parameters变量中。具体参数的名称即为相应的键值(key)。

    例如,在屏幕上显示THR_MIN参数(THR_MIN代表油门处于最低时的电机怠速,以PWM值表示):

    print "Param:%s"% vehicle.parameters['THR_MIN']
    
  • 显示全部参数:

    print "\nPrint all parameters (iterate`vehicle.parameters`):"
    for key, value in vehicle.parameters.iteritems():
    point " Key:%s Value:%s"%(key,value)
    
  • 设置参数

    使用读取参数类似的方法,即可设置参数:

    vehicle.parameters['THR_MIN']=100
    

    以上只是截取了部分使用较多的知识点进行介绍,完整的教程可以到官网查看。

  • 关于dronekit的一些参考资料:

    有关项目文档,请访问https://readthedocs.org/projects/dronekit-python/ 。这包括指南,示例和API参考资料。

    示例源代码托管在Github上,作为/ dronekit-python / examples 的子文件夹。

    DroneKit论坛 是寻求有关如何使用该库的技术支持的最佳场所。 也可以查看Gitter channel

    说明文件:https://dronekit-python.readthedocs.io/en/latest/about/index.html

    指南:https://dronekit-python.readthedocs.io/en/latest/guide/index.html

    API参考:https://dronekit-python.readthedocs.io/en/latest/automodule.html

    例子:/dronekit-python/examples

    论坛:https://github.com/dronekit/dronekit-python/issues

    Gitter: https://gitter.im/dronekit/dronekit-python

  • Z410树莓派无人机机器视觉入门系列教程

    https://mp.weixin.qq.com/s/g3utWpZIenJYKK7lpG5xKQ

3. Z410-4B-T265视觉版教程

  • 为什么要使用双目相机?

    我们在室外飞行的时候,无人机定位是依靠GPS全球定位系统。GPS导航现已十分普及,但GPS的精度目前限制在大约10米。另外,更新速率比较慢,大约是10Hz,并且只能支持户外,因为它们需要接收来自GPS卫星的电子三角测量信号,同时山脉和建筑物的反射会造成多径干扰。所以在高大建筑周边,建筑物室内和隧道等地方就没有GPS信号,我们就需要使用其他方法进行定位导航。

    视觉版机型在单目版基础上增加了intel T265双目相机,可以通过v-slam(视觉惯性测距即时定位与地图构建)技术,让无人机进行室内定位导航。英特尔实感追踪摄像头T265是一个完整的嵌入式SLAM解决方案。它根据VIO(视觉惯性里程计)并利用最新的算法来输出6自由度追踪**。**通过对6自由度姿态数据(位置和方向)的处理,发送给无人机定位。

    双目定位后,如果室内空间足够,就可以进行悬停飞行,一键返航,航点飞行等。从而为以后室内测试更复杂的避障,导航规划等项目奠定基础。

  • 3.1 一些常用的T265命令

    在安装有ubuntu系统的PC端,输入以下命令来实时查看T265视频:

    演示视频:

    realsense-viewer: RealSense Viewer 是旗舰工具,通过简单的跨平台 UI 提供对大多数相机功能的访问。 注意:由于树莓派WIFI带宽有限,通过ssh访问树莓派开启realsense-viewer是有卡顿的。如果要观察T265视频画面,建议使用rs-capture命令。

    https://github.com/IntelRealSense/librealsense/tree/master/tools/realsense-viewer

    rs-capture:将深度和 RGB 数据流式传输和渲染到屏幕

    https://dev.intelrealsense.com/docs/rs-capture

    rs-pose: 应用程序将打开一个窗口,在该窗口中打印设备位置相对于初始位置的当前 x、y、z 值。

    https://dev.intelrealsense.com/docs/rs-pose

    rs-pose-predict: 应用程序应打开一个窗口,在该窗口中打印设备位置相对于其初始位置的预测 x、y、z 值。

    https://dev.intelrealsense.com/docs/rs-pose-predict

    rs-enumerate-devices:T265在出厂前就对相机进行了标定,每个相机内部都带有相机的内参和外参。在终端中输入此命令,即可读取到T265的配置信息

    rs-enumerate-devices -c:如果需要读取到相机内参和外参,以及IMU的参数则可以使用此命令(添加-c参数)

  • 3.2 启用T265定位的飞控参数设置

    默认情况下,无人机发货前设置pixhawk飞控使用GPS在室外定位导航。如果要使用T265双目相机进行室内定位,飞控参数需要进行如下设置:

    把飞控连接地面站,点击 配置/调试 菜单---全部参数列表:

    先检查以下参数:

    AHRS_EKF_TYPE = 3 (EKF类型=EKF3)

    EK3_ENABLE = 1 (EKF3启用)

    EK2_ENABLE = 0 (EKF2停用)

    将第一组定位源参数按照以下设置

    EK3_SRC1_POSXY = 6 (水平位置使用外部导航)

    EK3_SRC1_POSZ = 1 (垂直位置使用气压计定高)

    EK3_SRC1_VELXY = 6 (水平速度使用外部导航)

    EK3_SRC1_VELZ = 6 (垂直速度使用外部导航)

    EK3_SRC1_YAW = 1 (偏航使用外置罗盘)

    COMPASS_USE = 1 (使用外置罗盘)

    GPS_TYPE = 0 (禁用GPS)

    VISO_TYPE = 2 (IntelT265)

    禁用所有速度融合

    EK3_SRC_OPTIONS = 0

    RTL_ALT=0****室内测试请将返航高度设置为0,让飞行器一当前高度返航。默认是1.5米。

    (以下是飞控默认数据,要使用GPS定位改回来就可以了。)

    以下是第一组定位源设置,默认情况下不变,使用GPS定位

    EK3_SRC1_POSXY = 3(主要水平位置使用GPS)

    EK3_SRC1_POSZ = 1(主要垂直位置使用气压计)

    EK3_SRC1_VELXY = 3(主要水平速度使用GPS)

    EK3_SRC1_VELZ = 3(主要垂直速度使用GPS)

    EK3_SRC1_YAW = 1(主要偏航/指南针航向)

    GPS_TYPE = 1 (GPS类型 自动)

    VISO_TYPE = 0

    本机搭载Intel T265双目相机,在室内没有GPS信号的情况下,代替GPS导航定位。双目定位后,如果室内空间足够,就可以进行悬停飞行,一键返航,失控返航,航点飞行。从而为以后室内测试更复杂的避障,导航规划等项目奠定基础。

  • 3.3 使用T265定位导航的2种方法

  • 3.3.1 使用pyrealsense2启动双目相机

    使用pyrealsense2定位原理:将从Realsense T265获得的6自由度姿态数据(位置和方向)和置信度数据交由python脚本处理(该脚本位于vision_to_mavros/scripts/t265_to_mavlink.py),处理后的结果通过MAVLink发送到ArduPilot无人机,从而实现定位。

    该脚本将执行以下任务:

    a.使用pyrealsense2的相关API获取6自由度姿势数据并跟踪置信度数据,pyrealesense2librealsensePython包装器;

    b.执行必要的矩阵变换,以匹配Realsense T265NED的框架以及其他处理步骤;

    c.将姿态数据打包到MAVLink消息VISION_POSITION_ESTIMATE中,并将置信度数据打包到虚拟消息中,然后将它们以预定频率发送到ArduPilot,以免输入数据淹没飞控;

    d.自动设置EKF home点,让设置和飞行都更为简单;

    飞行器机载电脑已经安装好librealsense和pyrealsense2,根据以下步骤即可启动T265

    1.无人机接上电池,打开missionplanner地面站,使用数传连接地面站和飞控;

    2.使用ssh远程连接树莓派,操作和之前一样;

    3.打开终端,切换路径到脚本所在目录:

    cd ~/vision_to_mavros/catkin_ws/src/vision_to_mavros/scripts
    

    4.执行下面脚本:

    python3 t265_to_mavlink.py
    

    5.地面站软件,快捷键_CTR+F_,点击_Mavlink Inspector_,能看到数据已经上传到飞控了。

    同时usb转ttl模块上的rx和tx指示灯会快速闪烁,表示有数据传输;

    脚本正常个运行后,并且FCU开始接收VISION_POSITION_ESTIMATE消息,就看到地面站会消息框会显示“ GPS Glitch**”和“ GPS Glitch cleared”****,确认系统已识别了外部本地化数据。**

    6.使用Mission Planner: 右键单击地图上的任意点> Set Home Here > Set EKF Origin Here.

    稍等片刻直到四轴飞行器图标出现在Mission Planner的地图上;

    7.拿起无人机并四处走动,检查地图上是否显示了无人机的位置运动。 地图上显示的无人机的轨迹应该反映真实的运动,而不会产生过多的失真或超调。 以下是在2m x 2m的正方形中行走的示例。

    8.如果外部定位导航数据由于任何原因丢失(跟踪丢失,脚本中断等),重新运行脚本也不会成功定位,需要重新启动无人机(重新上电)并执行之前的操作。

    9.飞行测试:(请有无人机操作经验的人操作)

    a.在自稳或则定高模式下解锁起飞,检查无人机飞行是否平稳;

    b.使用遥控器操作无人机四处移动,并观察Mission Planner上的位置是否稳定;

    c.以上没有问题,保持无人机在0.8~1米左右高度,油门50%左右**,切换到Loiter模式,但是如果出现任何问题,请随时准备切换回Stabilize (自稳)/ Alt-Hold(定高);**

    d.正常情况下,无人机应该稳定悬停在空中;

    e.遥控器操作无人机四处缓慢缓慢移动,查看无人机稳定状态。测试时注意始终准备切换回“稳定/保持”状态;

    f.如果一切正常,下次就可以在Loiter模式下解锁和起飞。

    注意!

    请确保双目相机水平向前安装,测试环境光照充足,双目前方特征明显的视觉范围测试。

    10.数据查看:

    a. 视觉测距信息将出现在VISO 数据闪存日志消息中。

    b. EKF的视觉测距信息将显示在XKFD消息中。

    11.参考视频:

  • 3.3.2 ROS系统下启用T265

    这是第二种使用双目相机定位的方法。

    ROS下 双目相机T265的定位原理:从realsense-ros节点获得的位置数据由vision_to_mavros节点处理,并通过主题/ mavros / vision_pose / pose发送到mavros节点。 mavros将负责ENU-NED帧转换,并通过MAVLink将其发送到ArduPilot无人机,从而实现室内定位。

    **本机已经安装好 librealsense、realsense-ros、mavros、vision_to_mavros 等必要的组件,根据以下教程即可启动 T265 定位。

  • 1.主从机设置完成

  • 2.无人机接上电池,打开 missionplanner地面站,使用数传连接地面站和飞控;

  • 3.使用ssh远程连接树莓派;

  • 4.开启一个终端,运行 realsense-ros节点

    roslaunch realsense2_camera rs_t265.launch
    

    /camera/odom/sample//tf主题将以200Hz频率发布。

  • 5.开启另一个终端,运行 mavros节点

    roslaunch mavros apm.launch
    

    rostopic echo /mavros/vision_pose/pose未发布。

  • 6.开启第三个终端,运行 vision_to_mavros节点

    roslaunch vision_to_mavros t265_tf_to_mavros.launch
    

    rostopic echo /mavros/vision_pose/pose现在应该显示来自T265的姿态数据。

    rostopic hz /mavros/vision_pose/pose应该显示该主题以30Hz的频率发布。

    以上3个节点运行成功,并且FCU开始接收VISION_POSITION_ESTIMATE消息,就看到地面站会消息框会显示“ GPS Glitch”和“ GPS Glitch cleared”,确认系统已识别了外部本地化数据。

  • 7.设置 EKF HOME

    a. 使用Mission Planner: 右键单击地图上的任意点> Set Home Here > Set EKF Origin Here.

    b. 使用脚本设置EKF HOME点,开启第四个终端,运行:

    rosrun vision_ to_mavros set_origin.py
    
  • 8.打开地面站软件,快捷键CTR+F,点击Mavlink Inspector,能看到数据已经上传到飞控了。室内定位运行成功,切换到loiter悬停模式,指示灯是蓝色,表示可以解锁;如果切换到loiter变成黄灯,表示室内定位运行失败,请重新检查再启动。

    同时usb转ttl模块上的rx和tx指示灯会快速闪烁,表示有数据传输;

  • 9.稍等片刻直到四轴飞行器图标出现在 Mission Planner 的地图上

  • 10.拿起无人机并四处走动,检查地图上是否显示了无人机的位置运动。 地图上显示的无人机的轨迹应该反映真实的运动,而不会产生过多的失真或超调。 以下是在2m * 2m的正方形中行走的示例

  • 11.飞行测试:(请有无人机操作经验的人操作)

    a.在自稳或则定高模式下解锁起飞,检查无人机飞行是否平稳;

    b.使用遥控器操作无人机四处移动,并观察Mission Planner和rviz上的位置,以查看跟踪是否稳定;

    c.以上没有问题,保持无人机在0.8~1米左右高度,油门50%左右,切换到Loiter,但是如果出现任何问题,请随时准备切换回Stabilize / Alt-Hold。

    d.正常情况下,无人机应稳定悬停并能够保持其位置。 使用遥控器缓慢移动无人机2-3米,验证比例(便于在rviz上查看)

    e.如果一切正常,下次就可以在Loiter模式下解锁和起飞。

    注意:在切换到 Loiter 模式之前,请始终确认位置反馈运行正常。 注意环境中的工作边界,即由于缺少功能,请勿快速移动或旋转运动,可能丢失跟踪定位。

    f.如果外部定位导航数据由于任何原因丢失(跟踪丢失,脚本中断等),重新运行脚本也不会成功定位,需要重新启动无人机(重新上电)并执行之前的操作。

  • 12.数据查看:

    视觉测距信息将出现在VISO 数据闪存日志消息中。

  • 演示视频:

  • 13.成功运行以上节点,下次可以只需要开启一个终端,使用下面这个命令一次启动所有节点:

    roslaunch vision_to_mavros t265_all_nodes.launch
    

    此命令一次执行3个launch:

    rs_t265.launch

    apm.launch

    t265_tf_to_mavros.launch

    这样可避免开启多个终端,简化操作,方便飞行。

    再使用脚本设置EKF HOME点:

    rosrun vision_to_mavros set_origin.py