Z410-4B无人机使用教程目录
1.资料下载链接
-
missionplanner下载链接
-
ardupilot固件下载链接
-
PC端安装Ubuntu系统
2.Z410机型介绍
-
硬件接线图
-
硬件设备及用途简介
3.如何快速进行第一次解锁
4.如何进行第一次试飞
5.使用这台无人机需要具备的一些基础知识
6. 以后扩展开发方向
1.资料下载链接
-
1.1 Mission planner1.3.74地面站软件下载链接:
网盘下载链接https://pan.baidu.com/s/1ub2XQJ7YGztYZGEwaKLTjQ
提取码:x452
注意!
电脑最好是使用Win10系统,Win10以前的系统可能由于缺少必要的插件会导致启动失败。 -
1.2 Ardupilot(4.1.0)固件下载链接:
网盘下载链接https://pan.baidu.com/s/1P2wxKxNYV1nWzeKraLoVBg
提取码:a7cl
注意!
无人机发货前已经组装调试好,不需要再下载固件,此固件可留着备用。 -
1.3 PC端安装Ubuntu系统:
PC端安装Ubuntu系统的目的是搭建Ardupilot开发环境,从而使用SITL仿真。可参考以下教程安装虚拟机。
https://mp.weixin.qq.com/s/Z46JL7gTzF73DnIJeKLDsA
如果想自己熟悉搭建Ardupilot开发环境的流程,可以安装纯净版Ubuntu系统,以下是ubuntu18.04镜像下载链接:
https://pan.baidu.com/s/1vmkmHmBmPOP9F1inSW-nmg
提取码:cnlw
-
以下是搭建Ardupilot开发环境的教程,提供给大家作为参考:
https://mp.weixin.qq.com/s/btOL9U14Z_sW7k8frf_E9A
注意!
国内由于网络原因,搭建Ardupilot开发环境会遇到各种各样的不同问题,使用时建议先更换ubuntu源和PIP源。遇到问题更多的需要到官网,论坛或则利用搜索引擎来解决问题。
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. 如何进行第一次试飞
-
新手请先参考Z410基础版室外飞行基本操作视频,了解遥控器的基本使用后再进行飞行,盲目的飞行会导致飞行器损坏甚至人身伤害,请务必注意安全。
注意!
新手初次请勿在室内进行飞行。 -
4.1 Z410飞行前的准备:
-
4.2 遥控器介绍及自稳模式飞行:
-
4.3 定高,悬停,返航模式飞行:
-
4.4 降落,绕圈,有头无头及结束飞行操作:
5. 使用这台无人机需要具备的一些基础知识:
-
5.1 锂电池的正确使用方法和充电操作:
注意!
锂电池是易燃易爆品,短路、剧烈碰撞、针刺,高温等情况都有可能导致锂电池燃烧,使用时请务必注意安全,请置于阴凉干燥处存放。 -
5.2 BB响低电压报警器的使用
演示视频:
-
5.3 数传模块的使用(基础版机型配数传)
演示视频:
-
5.4 Pixhawk飞控的基本调试、地面站的使用参考教程:
第一课:https://mp.weixin.qq.com/s/OC10elPEhG5Ut0i44SAemw
第二课:https://mp.weixin.qq.com/s/ldYP71GftgAF9tEnrcgi4w
第三课:https://mp.weixin.qq.com/s/OvN6VtMtSChqy3H2gMlC3w
注意!
无人机发货前已经进行了调试和试飞。所以没有必要按照教程再做一遍。教程提供给大家学习。 -
5.5 飞行模式的含义和正确使用:
-
5.6 Pixhawk飞控不能解锁常见问题汇总(1)
-
5.7 Ubuntu系统的基本操作:
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开源无人机二次开发入门系列教程
-
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。
-
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访问树莓派:
-
在PC端安装PuTTY,下载链接:https://the.earth.li/~sgtatham/putty/latest/w64/putty-64bit-0.75-installer.msi
-
启动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的过程,可参考以下链接有详细介绍:
-
1.运行连接示例
使用Dronekit代码读取飞控当前状态,测试树莓派与飞控之间通讯是否正常:
1.无人机连接电池,笔记本开启一个终端窗口;
2.通过ssh命令,连接无人机上的树莓派;
3.将路径切换到test文件夹:
cd test
4.运行connect.py脚本:
python2 connect.py
成功运行后,会显示如下信息:
说明树莓派通过Dronekit读取到了目前飞控的数据:系统警报、固件版本、姿态数据、电池电量、解锁状态、当前飞行模式等等。这样就成功运行了第一个DroneKit-Python脚本。
注意!
如若出现连接异常超时警报,请检查物理连接(usb转TTL模块)是否连接好;或则打开connect.py程序查看连接端口是否为ttyUSB0;无人机通电后如果长时间没有使用串口,串口有可能关闭,无人机重新启动,再执行以上程序。
-
如果想查看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
论坛:https://github.com/dronekit/dronekit-python/issues
Gitter: https://gitter.im/dronekit/dronekit-python
-
Z410树莓派无人机机器视觉入门系列教程
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自由度姿势数据并跟踪置信度数据,pyrealesense2是librealsense的Python包装器;
b.执行必要的矩阵变换,以匹配Realsense T265和NED的框架以及其他处理步骤;
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