硬件介绍
-
简介: Prometheus450(简称P450)是一款专为科研工作者及无人机开发者设计的无人机实验平台,适用于无人机专业应用研究和开发。本开发平台基于Prometheus开源项目,提供丰富的demo例程,涵盖控制模块、slam模块、规划模块以及目标检测模块等多个无人机及机器视觉相关研究方向,为无人机科研开发助力,致力于让研发更加高效。
注意!
下列展示的所有功能适配NX版的p450,Nano版的p450目前所支持的功能为室内外定点、指点、二维码降落、圆框跟踪和A星避障,操作、外观与NX版的均相同,只少搭载了D435i深度摄像机。 -
无人机介绍图
-
无人机正视图
-
无人机侧视图
-
无人机侧俯视图
-
无人机设计理念
开箱讲解
提示:
接下来主要说明飞机到手之后的开箱讲解以及脚架的安装。
-
1.检查产品外包装
注意!
首先先检查产品外包装有无明显的破损以及严重磕碰,如发现上述情况,请联系我们的售后客服进行相应的处理。
-
2.打开产品外包装
小技巧:
首先打开产品外包装,请将产品包装箱平放,印有标语的一面向上。然后打开侧面的箱盖,请注意在此处不宜使用较大的力气,以免损坏包装箱,后期可能影响产品相关的售后服务。打开包装箱后,我们可以看到黑色的内衬,这时您可一只手按住产品外箱,一只手轻轻将内衬抽出。 -
3.清点产品数量
注意!
清点产品数量,首先请对照发货清单检查飞机和附件数量,然后检查飞机和随机附件外观是否有破损及异常。
-
4.安装飞机脚架
注意!
安装飞机脚架,首先将脚架从内衬两侧取出,然后轻轻插入飞机两侧的脚架安装孔位,印有AMOV字样的一侧朝外。
注意!
从箱底取出附带的M1.5X8螺栓,使用随机附赠的螺丝刀将其拧紧,注意此处请适当用力,以免损坏螺栓。
-
5.开箱视频
详细可以观看开箱视频:
硬件设备说明及用途
-
遥控器的使用
遥控器使用左手油门,两个摇杆均自动回中.使用了遥控器6个通道,5通道设置为SWC三段开关用来控制飞行模式,飞行模式分别为自稳模式(stabilized)/定高(altitude),定点模式(position)和降落模式(land),6通道设置为SWD两段开关用来关闭/激活offboard模式。
注意!
遥控器开机前请确保所有拨杆拨到最上端,否则无法开机。
使用遥控器飞行前请熟悉预设飞行模式的含义、进入条件等,贸然飞行可能导致炸机!
具体请查阅PX4官方说明
-
充电器的使用
-
B4平衡充
-
PD60平衡充
充电:使用Type-C充电器(安卓手机同款)为平衡充供电,用平衡头转接线与xt60转接线将电池与充电器连接,选择电池类型为LiPo,充电电流为3A(具体数值需要看适配器支持的电流大小),开始充电即可。
注意!
电量充满后请及时拔出充电器!不要满电后长时间充电,以防电池过充!
-
电池的使用与保养
1.切勿过放:一般认为单片电芯的电压低于3.5V,就有可能对电池造成损伤,也就是常说的电池过放了,过放的电池会鼓包,这样的电池拿来继续充电是很危险的,可能会引起火灾,建议在电压降到 3.6V 的时候,就不要继续飞行了。因为地面空载测到3.6V,空中满油门飞行的时候,电压就远低于 3.6V,甚至低于 3V,很容易就过放了。
2.切勿过充:放电电压有下限,充电电压也有上限。上限是 4.2V,一节 3S电池,标称总电压11.1V,充满以后就是 12.6V,如果电压超 过了 4.2V,那就是过充,同样会损坏电池。现在的智能充电器会在 4.2V 时自动停充,但要小心有些航模充电器精度差,会过充,还有些充电器可以调节到高于4.2V 的电压,这是针对高压版电池的,普通电池不能用这个功能。充电的时候,模式要选平衡充电。电池长期保存时,电压是有要求的,单片电芯的电压保持在 3.85V 比较好。
3.电池存放:不要满电保存,满电保存对航模电池的放电能力会有 很大的影响,建议每次使用完电池后,都充放电到储存电压,特别是充满后没来得及使用的电池,一定要放电,长期满电存放,会损 坏电池,由于锂电池稳定性先天不足,正常存放也有一定起火概率。很多节锂电池堆放在一起不亚于一颗燃烧弹,平时存放时,电池应该避开易燃物单独保存,有条件的话,用防爆阻燃的容器存放。
-
BB响低压报警器的使用
该电压显示器用于1S~8S的锂电池检测,自动检测锂电池每个电芯的电压和总电压,支持反向连接保护。它可以让你随时随地的了解你的电池的工作状态,使你的电池不会因为过放或过充造成的伤害。
当电压低于设定值时,蜂鸣器会响起,红色LED灯会闪烁;出厂默认设定值为3.3V,按顶部按键可改变电压设定值,自动保存用户当前设定值。
BB响与电池的连接示意图:
-
P450硬件接线图
P450V2版本硬件连接图
P450V3 Allspark硬件连接图
P450V3 Allspark V6C硬件连接图
P450V3 Allspark-nano硬件连接图
视频介绍如下:
软件介绍
- 在板载计算机上面存在两套 ROS 包,一个是 Prometheus 功能包,另一个是实机启动 p450_experiment 功能包。
Prometheus软件框架及基本含义
-
Prometheus的软件框架如下图所示:
基本上分为以下几个模块:
-
控制模块(Prometheus/Modules/control)
控制模块主要与MAVROS进行信息交互,分为两个部分,一部分是输入,一部分是输出。
px4_pos_estimator.cpp :主要将板载计算机处理之后的位置数据传给飞控,读取飞控当前的状态信息。
px4_sender.cpp :主要将控制指令接口通过px4_sender发送给mavros,从而控制飞机进行相应的动作指令。
支持的板载计算机提供位置的数据来源有:动捕系统mocap,英特尔T265双目相机,激光雷达定位建图,仿真器gazebo提供模型位置数据,以及SLAM提供位置数据。
本项目提供的控制飞机的API包括:
-
Idle:怠速;意思就是飞机会进入offboard模式,但是在该模式下,没有对飞机进行任何指令的发送。飞机也不会有任何动作。这个指令一般也可以不用。
-
Takeoff:起飞;起飞点为当前点,起飞高度通过 yaml参数文档设置,单位是米,默认起飞高度是0.5m。
-
Hold:悬停;飞机正在飞行过程中如果接受到 2 指令,会在当前时刻进入悬停状态。
-
Land:降落;降落速度通过 yaml参数文档设置,单位是m/s ,默认降落速度为0.2m/s 。还有一个上锁高度,到达上锁高度之后飞机会进入飞控的本身降落模式进而缓缓着地,上锁高度通过 yaml 参数文档进行设置,单位是米,默认是 0.18m,即认为离地不到20cm的时候进入飞控本身的降落飞行模式。
-
Move模式:该模式就包含我们所称的指点飞行功能,在此模式下,又有5种子模式:
-
XYZ_POS:空间位置控制
-
XY_POS_Z_VEL:水平面位置控制高度速度控制
-
XY_VEL_Z_POS:水平面速度控制高度定高控制
-
XYZ_VEL:空间速度控制
-
TRAJECTORY:轨迹跟踪控制
-
-
规划模块(Prometheus/Modules/planning)
目前实际使用的规划模块是全局规划模块,使用的是A星算法(绿色框选部分)。
-
A_star.cpp :为A星算法的实现
-
global_planner.cpp :为全局规划策略主节点
-
occupy_map.cpp:栅格地图处理,根据膨胀系数,生成安全距离
-
SLAM模块(Prometheus/Modules/slam)
SLAM模块一块为建图模块,另一块为定位模块(绿色框选部分)。
建图模块(目前板载计算机所搭载的相机包括有D435i和T265,可以利用realsense-ros官方提供的功能包实现RTAB-Map建图):
-
pointcloud_to_octomap_node.cpp:订阅点云数据,发布八叉树栅格地图
-
elas_stereo_node.cpp:调用双目匹配算法,计算出稠密视差图,生成深度图,发布全局点云
-
定位模块目前是使用的是T265本身输出的slam结果,具体调用可查看控制模块中的px4_pos_estimator.cpp细节处理。
-
目标检测模块(Prometheus/Modules/object_detection)
目标检测模块比较多(绿色框选部分 ):
-
web_cam.cpp:USB相机发布ROS下话题
-
ellipse_det:椭圆检测处理节点
-
kcf_tracker.cpp:框选跟踪节点处理
-
landpad_det.cpp:降落板检测
-
color_det:颜色识别节点
-
digitnum_det:手写数字识别节点
目前常用就这些,还有很多其他的识别节点,更多请详细Prometheus开源项目仔细查看。
-
任务模块(Prometheus/Modules/mission)
任务模块属于上层应用模块,具体实现某一种功能(绿色框选部分)。
-
autonomous_landing:自主降落程序
-
circle_crossing:圆形穿框(在真实飞机中简单修改策略,实现圆形跟踪)
-
color_line_following:颜色巡线
-
number_detection:数字识别无人机跟踪
-
object_detection:无人机目标框选KCF跟踪
-
planning_mission:路径规划的航点处理(多航点,单航点,多机航点,qgc航点读取)
-
waypoint_tracking:航点跟踪节点(类似与走一个四边形,走其他航线图形)
还有很多具体的应用型节点,这些节点都是对control,object_detection,planning等等各个模块的结合使用,如果想学习如何调用API接口,可以参考其中的代码实现。
-
公用模块(Prometheus/Modules/common)
公用模块中比较核心的就是自定义的msg消息(绿色框选部分)。
-
ControlCommand.msg:控制无人机指令的msg格式,掌握API首先掌握msg定义
-
DetectionInfo.msg:目标检测模块的输出结果
-
DroneState.msg:无人机当下各个状态信息(与板载计算机是否通信连接,解锁或者上锁,当前飞行模式,当前的状态量位置速度加速度及姿态)
-
LogMessageControl.msg:控制端的日志打印信息记录
等等还有很多的自定义msg,规划模块,多机模块的,更多细节可以在板载计算机中查看Prometheus代码或者在Prometheus开源Github上查看。
下面附上在板载计算机中Prometheus的代码目录框架:
p450_experiment功能包使用及含义
-
p450_experiment功能包是适配prometheus开源代码的实机闭源功能包。
该文件位置:amovlab_ws/src/p450_experiment
此功能包主要包含
-
参数配置文件config
-
基本的launch文件launch_basic
-
控制相关的launch文件launch_control
-
目标检测相关的launch文件launch_detection
-
路径规划相关的launch文件launch_planning
-
飞控的固件和参数文件px4_firmware
接下来分别从上面各个文件阐述文件里面的内容
-
mavros_config:对mavros相关参数的配置(分为室内一组,室外一组)
-
室内
px4_config.yaml
px4_pluginlists.yaml
-
室外
px4_config_gps.yaml
px4_pluginlists_gps.yaml
-
launch_basic
p450_circle_det.launch: 圆框检测launch文件
p450_gps_onboard.launch: 室外GPS定点launch文件
p450_landpad_det.launch: 二维码检测launch文件
p450_vio_onboard.launch: 室内T265定点launch文件
rs_t265.launch: T265启动launch文件
-
launch_control
p450_gps_control.launch: 室外GPS指点launch文件
p450_vio_control.launch: 室内T265指点launch文件
-
launch_detection
p450_indoor_circle_tracking.launch: 室内圆框跟踪launch文件
p450_indoor_landing_static_target.launch: 室内二维码降落launch文件
p450_outdoor_circle_tracking.launch: 室外圆框跟踪launch文件
p450_outdoor_landing_static_target.launch: 室外二维码降落launch文件
-
launch_planning
-
室内避障launch文件:
astar_onboard.launch
astar_ground.launch
tf_transform.launch
-
室外避障launch文件:
astar_onboard_gps.launch
astar_ground_gps.launch
tf_transform_gps.launch
资源下载
首次飞行
-
本节主要讲解T265相机配置下无人机的首次飞行。
提示:
在室内外操作时,注意查看自己的位置源是否更改,即参数EKF2_AID_MASK,EKF2_HGT_MODE,后面介绍地面站安装教程时会详细介绍如何更改参数。
飞行环境
-
我们的飞行环境如下图所示。
提示:
1.使用T265进行定位的飞行环境需要特征点丰富,比如有二维码或其他特征点明显的物体。 2.vins视觉定位对测试环境(光照条件、视觉特征点等)依赖较大,非vins专业人士 建议测试场地做如下部署:地面采用颜色交错的地板、且四周墙面尽量张贴二维码A4纸(发货时赠送的二维码A4纸,最忌四面白墙),以此增加飞机视觉定位的稳定性、保障试验效果的理想,相反在视觉特征点不明显的环境下定位数据容易发散、炸机风险增高。提示:
二维码图片包可在百度网盘自主下载网盘链接 提取码: a6ow
电脑软件准备工作
-
准备一台笔记本电脑,电脑系统不做要求,可以是Windows7,Windows10或者是Ubuntu系统。需要安装QGroundControl(以下简称QGC)和nomachine。QGC的作用是连接到飞机,监控飞机本身的状态(传感器是否正常,参数配置是否正常);nomachine用作远程连接到板载计算机。
提示:
软件安装包请在百度网盘自主下载网盘链接 提取码: amov
从图中可以看到,有不同操作系统下的安装包,根据自己笔记本电脑系统安装相应的QGC和nomachine。
-
安装QGC地面站
正确安装上面安装包之后,打开QGC地面站:
注意!
最下方的版本是V4.0.8 -
安装nomachine
正常安装完成之后,打开nomachine:
硬件准备工作
-
P450无人机+富斯i6s遥控器
-
5300mah航模锂电池
-
遥控器电池
-
安全绳
QGC远程连接到飞机
-
首先连接到飞机的数传wifi:amov-uav#####。
密码为12345678
(注意:21年部分无人机密码为amov21+无人机SN码后三位)
-
电脑连上飞机的数传wifi后,打开QGC地面站,在通讯连接下面选择“添加”
-
类型选择“ TCP”,主机地址为“192.168.10.###”,“###”为wifi名字的后三位数字。端口号为“6000”。
-
然后点击“连接”,连接成功后如下图所示
注意!
如果做无人机室内测试,需要在地面站修改参数EKF2_AID_MASK,EKF2_HGT_MODE,详细操作如下 -
首先点击参数(Parameters)按钮,进入参数修改界面,如图所示:
-
在search栏输入aid,选择EKF2_AID_MASK参数
-
在窗口右上侧会弹出子页面,如图所示
一般默认选择第一项use GPS,由于我们室内飞行使用的是T265作为位置定位源,所以需将此参数改为4、5项,修改后保存。
-
在search栏输入hgt,选择EKF2_HGT_MODE参数栏
-
在窗口右上弹出的子页面上,点击下拉菜单,选择vision,如上图所示,最后保存退出。
nomachine远程无线连接
-
查看板载计算机ip
-
如果不清楚板载计算机ip(默认为192.168.10.101),则需要将板载计算机连接显示屏、键盘和鼠标,在终端输入ifconfig,查看wlan的IP,下图是板载的HDMI接口
-
有两种方法查看板载的ip地址,第一种方法是点击右上角“wifi信号”,选择“Connection Information”,在IPv4-IP Address下,用“红框”标记的就是板载计算机的ip地址。
-
第二种方法是点击右键,选择“Open Terminal”,输入“ifconfig”,在最下面wlan0下用“红框”标记的就是板载计算机的ip地址。
-
nomachine远程连接板载计算机
提示:
连接前请将地面站电脑和机载电脑同时连接至无人机wifi。 -
点击New
-
在Protocol下选择NX,点击Continue。
-
在“Host”下填写板载计算机的ip地址,板载计算机地址参考步骤2,“Port”下默认4000。
-
在Authentication下默认是Password,点击“Continue”。
-
在Proxy下默认是“Don’t use a proxy”,点击“Continue”。
-
在Save as下会生成默认的name,可以不做更改,点击“Done”。
-
按照上述步骤操作,会自动生成如下图所示用红框标起的链接,点击“Connect”。
-
在“Username”和“Password”下输入“amov”
-
Nomachine成功连接板载计算机后会显示如下界面
-
此时可同时连接qgc与板载计算机,方便后续实验操作。
单传感器检测
-
连接上机载电脑后,在桌面有一个sensor_inspect文件夹,里面存放的就是单传感器的检测脚本。
提示:
如若文件夹内没有脚本问可在百度网盘自主下载网盘链接 提取码: amov
-
其中四个脚本从左到右分别为单目、D435i、雷达、T265的检测脚本,打开一个新终端,将单目检测脚本拖进去,运行。
-
下面为单目启动成功的界面,将rqt可视化界面切换到/camera/rgb/image_raw界面。
-
rqt可视化界面显示了单目的画面,即表示单目正常。
-
运行D435i.sh脚本,等待各个终端起来后,查看是否与下图所示相同,并将rqt可视化界面切换到/d400/color/image_raw界面,如能检测到D435i摄像头的画面,即表示D435i正常工作。
-
运行Lidar.sh脚本,等待各个终端起来后,查看是否与下图所示相同,第一个终端是启动雷达节点的终端,第二个终端为实时打印的雷达数据的终端。
-
若各终端均无报错,且雷达有数据打印,即表示雷达正常工作。
-
运行T265.sh脚本,等待各个终端起来后,查看是否与下图所示相同,第一个终端是启动T265节点的终端,第二个终端是实时打印T265定位数据的终端。
-
若各终端均无报错,且T265有数据打印,即表示T265正常工作。
注意!
若运行脚本后有报错,可插拔对应传感器USB接口后,重启脚本。
视频演示
-
传感器检测演示视频如下
启动脚本
-
在启动脚本前,我们需要在QGC中先将飞控重启一下,操作如下
-
点击红框所圈出的图标,进入如下界面
-
选择MAVLink Console,进入MAVLink控制终端,输入reboot,回车,听到飞控重启的提示音,即重启飞控成功。
-
然后进入nomachine,在板载终端输入“rs-sensor-control”,查看有没有传感器连接,正常情况下如下图所示,会显示传感器的序列号。
rs-sensor-control
-
启动脚本在下图所示的目录下面
-
在终端输入如下命令,启动脚本
roslaunch p450_experiment p450_vio_onboard.launch
-
启动脚本后如下图所示
检查各项数据是否正常
-
在启动脚本后,首先查看地面站,地面站上会显示飞机的航向为正东,就是“E”。
-
第一个终端正常情况下如下图所示,各项数据均正常
-
第二个终端如下图所示,查看飞机的位置、速度、角度与角速度信息是否正常,移动飞机,查看飞机的位置信息是否正常,飞机向前为X轴正方向,向左为Y轴正方向,向上为Z轴正方向。
-
第三个终端如下图所示,显示“Program is running”即表示脚本正常运行。
遥控器定点模式飞行
-
如下图所示,将“SWC”开关拨到中间一档, 切到“定点模式”
-
然后左手“右下”解锁飞机,如下图所示。
-
起飞后如下图所示,进行定点模式飞行。
视频演示
-
首次飞行演示视频如下
常见问题处理
提示:
如遇到问题无法解决,请您到论坛专区进行提问。
常见问题
-
下面是标定板样张,注意打印出来粘在硬纸板上,一定要保证整个图片在一个平面上,否则会影响标定效果。标定效果好坏会直接影响到后面摄像头对二维码位置的估计进而影响到二维码降落,所以重视标定过程。棋盘格标定板下载地址:
首先启动相机节点,如下命令启动相机ID=0
-
USB单目相机命令
roslaunch prometheus_detection web_cam0.launch
然后利用ros自带的标定程序对相机进行标定
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.0245 image:=/prometheus/camera/rgb/image_raw
-
MIPI相机命令
roslaunch prometheus_detection mipi_cam_veye327.launch
然后利用ros自带的标定程序对相机进行标定
rosrun camera_calibration cameracalibrator.py --size 9x6 --square 0.0193 image:=/prometheus/camera/rgb/image_raw
其中:size为标点板尺寸(横纵向标点的个数),square为每个方格宽度(即两个标点之间的距离),注意单位是米,image:=相机话题如果是用我们给的标定图片并且用A4纸打印出来,则size后的值为9*6 ,square后面的值以自己打印出来的两个标点的实际量测距离为准,单位是米,一般大小在0.0200左右。
标定程序启动后,会出现如下界面在没有标定成功之前,右边的按键都为灰色,不能点击。为了提高标定的准确性,应该让标定板出现在摄像头视野范围内的各个区域,界面右上角会提示标定进度。标定过程标定板的移动可以参考此视频:
Calibrating a Monocular Camera with ROS
X:标定板在摄像头视野中的左右移动Y:标定板在摄像头视野中的上下移动Size:标定板在摄像头视野中的前后移动Skew:标定板在摄像头视野中的倾斜转动不断在视野中移动标定板,直到“CALIBRATE”按钮变色,表示标定程序的参数采集完成。为了提高标定的精度,建议在X,Y,Size,Skew四个进度条都变为绿色,数据采集足够后,再按下“CALIBRATE”按钮。此时可以在终端看见一共采集了多少个有效点,建议采集到80个点左右,以保证标定的精度。点击“CALIBRATE”按钮,标定程序开始自动计算摄像头的标定参数,这个过程需要等待一段时间,界面可能会变成灰色无响应状态,注意千万不要关闭。
等待几分钟后,计算出结果会自动在终端打印出来显示,这时dispaly方框又会由黑白恢复为彩色。如下图所示
将得到的参数写入如下文件(有关目标尺度的预定义也在这个文件中): amovlab_ws/src/p450_experiment/config/prometheus_detection_config/camera_param.yaml具体数字对应可参考下图
进阶功能-室内指点飞行
-
本节主要讲解P450系列无人机在室内的指点飞行演示。视频紧接上节内容 首次飞行 ,默认已经通过WiFi数传连接到QGC地面站和nomachine远程连接到板载计算机,主要分为一下几点进行讲解:启动指令,命令行控制终端详解,起飞,指点飞,以及最后的视频演示。
注意!
1.受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。 2.vins视觉定位对测试环境(光照条件、视觉特征点等)依赖较大,非vins专业人士 建议测试场地做如下部署:地面采用颜色交错的地板、且四周墙面尽量张贴二维码A4纸(发货时赠送的二维码A4纸,最忌四面白墙),以此增加飞机视觉定位的稳定性、保障试验效果的理想,相反在视觉特征点不明显的环境下定位数据容易发散、炸机风险增高。
启动指令
-
请按以下步骤执行
注意!
受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。 -
输入启动脚本前,先在QGC重启飞控,如下图所示:
-
选择MAVLink Console,进入MAVLink控制终端,输入reboot,回车,听到飞控重启的提示音,即重启飞控成功。
-
启动基本vio脚本 ,通过Nomachine访问板载终端,输入如下命令
roslaunch p450_experiment p450_vio_onboard.launch
-
然后重新打开一个终端,再启动控制脚本,命令如下
roslaunch p450_experiment p450_vio_control.launch
-
之后会出现终端控制界面,提示有两种控制的输入方式,第一种是通过命令输入控制方式,另外一种是通过键盘按键控制方式。
两种方式都可以控制无人机,一般在做实机实验过程中选择第一种通过命令输入控制方式;第二种键盘控制不太安全。接下来会详细讲解如何使用第一种命令输入控制方式实现指点飞行。
命令行控制终端详解
-
如下图所示
其中
0 表示的是 怠速;意思就是飞机会进入offboard模式,但是在该模式下,没有对飞机进行任何指令的发送。飞机也不会有任何动作。这个指令一般也可以不用。
1 表示的是 起飞;起飞点为当前点,起飞高度通过 yaml参数文档设置,单位是米,默认起飞高度是0.5m
2 表示的是 悬停;飞机正在飞行过程中如何接受到 2 指令,会在当前时刻进入悬停状态。
3 表示的是 降落;降落速度通过 yaml参数文档设置,单位是m/s ,默认降落速度为0.2m/s 。还有一个上锁高度,到达上锁高度之后飞机会进入飞控的本身降落模式进而缓缓着地,上锁高度通过 yaml 参数文档进行设置,单位是米,默认是 0.18m,即认为离地不到20cm的时候进入飞控本身的降落飞行模式。
4 表示的是 move模式;该模式就包含我们所称的指点飞行功能,在此模式下,又有5种子模式:
-
0对应XYZ_POS,空间位置控制;
-
1对应XY_POS_Z_VEL,水平面位置控制,高度速度控制;
-
2对应XY_VEL_Z_POS,水平面速度控制,高度定高控制;
-
3对应XYZ_VEL,空间速度控制;
-
5对应TRAJECTORY,轨迹跟踪控制。
常用的模式为0空间位置控制(指点飞行),接下来会讲讲实机过程中起飞的具体实现。
-
起飞
-
通过控制终端发送1起飞指令
这时候飞机通过板载计算机已经给飞机一直发送起飞指令,但是目前飞机还没有进入offboard模式和解锁,所以飞机是没有响应的。
然后遥控器切换到position模式,遥控器操作“内八”进行解锁,最后拨动offboard飞行模式开关。飞机就会慢慢起飞起来,保持在0.4m的高度。
可以看到飞机起飞已经完成,保持在0.4m高度,接下来进行指点操作,这时候就不需要遥控器操作了,只需要看好遥控器,防止意外事情发生;进入指点飞行过程。
指点飞
-
选择4 move 飞行模式,然后选择0空间位置控制,然后选择0 ENU_FRAME 惯性坐标系,最后输入期望的状态,空间位置xyz和航向角yaw。
这里我们发送的指令是x为0.5,y为0.5,z为0.5,yaw为0.让飞机往前x轴飞行0.5m,往左y轴飞行0.5m,往上z轴飞行到0.5m,航向角保持不变发送为0。
飞机开始移动到我们设定空间位置
上图可看飞机已经到达并且稳定到我们设定的空间位置。
注意!
1.受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。 2.vins视觉定位对测试环境(光照条件、视觉特征点等)依赖较大,非vins专业人士 建议测试场地做如下部署:地面采用颜色交错的地板、且四周墙面尽量张贴二维码A4纸(发货时赠送的二维码A4纸,最忌四面白墙),以此增加飞机视觉定位的稳定性、保障试验效果的理想,相反在视觉特征点不明显的环境下定位数据容易发散、炸机风险增高。
视频演示
-
前两段测试视频为v1版本,第三段测试视频为v2版本功能演示,预祝复现室内指点飞行成功。
v2版本功能演示
进阶功能-室内自主跟踪
-
本节主要讲解P450系列无人机在室内的自主跟踪。视频紧接上节内容 首次飞行 ,默认已经通过WiFi数传连接到QGC地面站和nomachine远程连接到板载计算机,主要分为一下几点进行讲解:启动指令,命令行控制终端详解,起飞,指点飞,以及最后的视频演示。
注意!
1.受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。 2.vins视觉定位对测试环境(光照条件、视觉特征点等)依赖较大,非vins专业人士 建议测试场地做如下部署:地面采用颜色交错的地板、且四周墙面尽量张贴二维码A4纸(发货时赠送的二维码A4纸,最忌四面白墙),以此增加飞机视觉定位的稳定性、保障试验效果的理想,相反在视觉特征点不明显的环境下定位数据容易发散、炸机风险增高。
启动指令
-
请按照以下步骤执行
注意!
在室内操作时,注意在QGC地面中查看自己的位置源是否更改,参数EKF2_AID_MASK设定如下图,EKF2_HGT_MODE设定为Vision。 -
输入启动脚本前,先在QGC重启飞控,如下图所示:
-
选择MAVLink Console,进入MAVLink控制终端,输入reboot,回车,听到飞控重启的提示音,即重启飞控成功。
-
启动基本vio脚本 ,通过Nomachine访问板载终端,输入如下命令
roslaunch p450_experiment p450_vio_onboard.launch
-
然后再开一个新终端,启动跟踪脚本
roslaunch p450_experiment p450_indoor_circle_tracking.launch
注意!
若终端出现以下警告,需重新插拔单目摄像头。 -
打开一个新的终端,将图像检测显示出来
rqt_image_view
稍微调整一下窗口显示位置,接下来就开始飞机起飞操作。
起飞
-
先将遥控器切换到position模式
然后通过控制终端发送1起飞指令,这时候飞机通过板载计算机已经给飞机一直发送起飞指令,但是目前飞机还没有进入offboard模式和解锁,所以飞机是没有响应的。
发送完起飞指令之后,接着遥控器操作“内八”进行解锁,最后拨动offboard飞行模式开关。飞机就会慢慢起飞起来,保持在1m高度。(我们在自主跟踪代码中设定的起飞高度为1m)
跟踪
-
等待飞机起飞完成之后,保持在1m左右之后,且视野内识别到目标圆,再进行输入 1 ,进行跟踪保持
-
与目标圆保持一定距离
-
此时可以移动目标圆,进而飞机进行相应的移动
结束实验
-
在想要结束室内自主跟踪实验时候,记得遥控器先退出offboard模式,
然后慢慢降低油门,直至飞机安全着地,进入怠速,自动上锁。
关闭所有终端,结束实验。
视频演示
-
该功能演示前两段视频为v1版本的功能演示视频,第三段视频是v2版本的功能演示视频,预祝复现室内自主跟踪实验成功完美。
进阶功能-室内自主降落
-
本节主要讲解P450系列无人机在室内的自主降落演示。视频紧接上节内容 首次飞行 ,默认已经通过WiFi数传连接到QGC地面站和nomachine远程连接到板载计算机,主要分为一下几点进行讲解:摄像头标定,二维码检测确认,坐标系确认,启动指令,起飞,降落,以及最后的视频演示。
注意!
1.受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。 2.vins视觉定位对测试环境(光照条件、视觉特征点等)依赖较大,非vins专业人士 建议测试场地做如下部署:地面采用颜色交错的地板、且四周墙面尽量张贴二维码A4纸(发货时赠送的二维码A4纸,最忌四面白墙),以此增加飞机视觉定位的稳定性、保障试验效果的理想,相反在视觉特征点不明显的环境下定位数据容易发散、炸机风险增高。
摄像头标定
- 具体步骤见常见问题处理中的摄像头标定
二维码检测确认
-
这里我们需要来确认摄像头对二维码的位置检测是否正确 我们所使用的二维码如下
提示:
可以右键保存二维码图片在本地再打印,打印尺寸为18.8cm*18.8cm。 -
通过Nomachine访问板载终端,输入如下命令,运行检测节点
roslaunch p450_experiment p450_landpad_det.launch
-
重新打开一个新终端,输入如下命令,查看检测效果(可视化)
rqt_image_view
-
弹出图形界面后,选择对应要显示的图像消息,选择下面红框内的这个消息可以既显示出图像又显示出二维码检测结果。
-
点击后在显示的消息列表里选择相应的图像消息。
-
再开一个终端,输入如下命令,打印二维码实时检测结果
rostopic echo /prometheus/object_detection/landpad_det
-
终端上打印出的消息如下图所示: position后面三个值分别代表摄像头检测到的二维码在摄像头坐标系下的坐标的X,Y,Z的值。我们可以移动二维码看所显示的位置值是否显示出真实实际二维码相对于摄像头的位置,如果有较大差距,需要更改摄像头配置参数文件里的参数。 yaw_error显示的是偏航,所以是可以检测出这个二维码的 X Y Z 以及偏航也就是转的角度。
如果有较大大差距
一.重新标定,修改相机参数和畸变参数;
二.确认参数文件中二维码边长的值为降落板边长实际的真实值(这个非常重要),如果不是,修改为真实值,否则直接影响到二维码位置估计。
坐标系确认
-
关于坐标系转换的说明:识别算法发布的目标位置位于相机坐标系(从相机往前看,物体在相机右方x为正,下方y为正,前方z为正)首先,从相机坐标系转换至机体坐标系(从机体往前看,物体在相机前方x为正,左方y为正,上方z为正):由于此demo相机朝下安装,且xy方向无偏移量
pos_body_frame[0] = - Detection_raw.position[1]; pos_body_frame[1] = - Detection_raw.position[0]; pos_body_frame[2] = - Detection_raw.position[2];
-
从机体坐标系转换至与机体固连的ENU系(原点位于质心,x轴指向yaw=0的方向,y轴指向yaw=90的方向,z轴指向上的坐标系):直接乘上机体系到惯性系的旋转矩阵即可
R_Body_to_ENU = get_rotation_matrix(_DroneState.attitude[0], _DroneState.attitude[1], _DroneState.attitude[2]); pos_body_enu_frame = R_Body_to_ENU * pos_body_frame;
-
从与机体固连的ENU系转换至ENU系(原点位于起飞点,x轴指向yaw=0的方向,y轴指向yaw=90的方向,z轴指向上的坐标系)
Detection_ENU.position[0] = drone_pos[0] + pos_body_enu_frame[0]; Detection_ENU.position[1] = drone_pos[1] + pos_body_enu_frame[1]; Detection_ENU.position[2] = drone_pos[2] + pos_body_enu_frame[2];
-
当二维码中心点位于摄像头图像右上方时,也就是处于第一象限时,终端打印的x坐标为正,y坐标为负,z坐标为正,代表相机坐标系正确。
安装相机到无人机机身上是,相机镜头朝向正下方,并且让相机图像上方方向(对着图像显示看,可以判断出相机哪个方向为上方)严格朝向机头方向。此时可以保证整个坐标系是正确的。 在确认摄像头坐标系正确的情况下将摄像头固定到机身上。
启动指令
-
请按照以下步骤操作
注意!
在室内操作时,注意在QGC地面中查看自己的位置源是否更改,参数EKF2_AID_MASK设定如下图,EKF2_HGT_MODE设定为Vision。
-
先将无人机摆放在降落二维码附近,可放在二维码的前后左右上等位置,注意不要距离太远,否则起飞后摄像头无法检测到二维码。且机头方向注意要和二维码正方向一致,二维码正方向如下图所示。说明一下,由于摄像头固定在无人机前方,所以无人机放在二维码前方的位置起飞效果会比较差,因为此时摄像头距离二维码距离较远,容易丢失二维码。
-
输入启动脚本前,先在QGC重启飞控,如下图所示:
-
选择MAVLink Console,进入MAVLink控制终端,输入reboot,回车,听到飞控重启的提示音,即重启飞控成功。
-
启动基本vio脚本 ,通过Nomachine访问板载终端,输入如下命令
roslaunch p450_experiment p450_vio_onboard.launch
-
然后再打开一个新终端,输入如下命令,启动自主降落脚本
roslaunch p450_experiment p450_indoor_landing_static_target.launch
注意!
若终端出现以下警告,需重新插拔单目摄像头。 -
打开一个新的终端,将图像检测显示出来
rqt_image_view
稍微调整一下窗口显示位置,接下来就开始飞机起飞操作。
起飞
-
先将遥控器切换到position模式,在运行自主降落脚本后板载计算机就一直在给飞机发送起飞指令,但是目前飞机还没有进入offboard模式和解锁,所以飞机是没有响应的。接着遥控器操作单杆内八进行解锁,最后拨动offboard飞行模式开关切入offboard模式,此时无人机会先起飞到起飞点上方0.8米高度(我们在自主降落代码中设定的高度为0.8m)
降落
-
飞到指定高度0.8米后,如果摄像头检测到二维码,无人机便会开始自主降落
-
降落完成后会无人机自动上锁
视频演示
-
室内自主降落功能演示视频如下:
前四个视频为v1 版本的飞行功能演示视频,最后一个视频为v2 版本的功能演示视频。
-
无人机在二维码上面起飞
-
无人机在二维码左边起飞
-
无人机在二维码右边起飞
-
无人机在二维码前面起飞
-
v2 版本降落演示视频
进阶功能-室内自主避障
-
本节主要讲解P450系列无人机在室内的自主避障演示。视频紧接上节内容 首次飞行 ,默认已经通过WiFi数传连接到QGC地面站和nomachine远程连接到板载计算机,主要分为一下几点进行讲解:启动指令,起飞,降落,以及最后的视频演示。
注意!
1.受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。 2.vins视觉定位对测试环境(光照条件、视觉特征点等)依赖较大,非vins专业人士 建议测试场地做如下部署:地面采用颜色交错的地板、且四周墙面尽量张贴二维码A4纸(发货时赠送的二维码A4纸,最忌四面白墙),以此增加飞机视觉定位的稳定性、保障试验效果的理想,相反在视觉特征点不明显的环境下定位数据容易发散、炸机风险增高。
启动指令
-
请按照以下步骤操作
注意!
在室内操作时,注意在QGC地面中查看自己的位置源是否更改,参数EKF2_AID_MASK设定如下图,EKF2_HGT_MODE设定为Vision。 -
输入启动脚本前,先在QGC重启飞控,如下图所示:
-
选择MAVLink Console,进入MAVLink控制终端,输入reboot,回车,听到飞控重启的提示音,即重启飞控成功。
-
启动第一个指令,通过Nomachine访问板载终端,输入如下命令
roslaunch p450_experiment astar_onboard.launch
-
打开一个新终端,再启动第二个指令
roslaunch p450_experiment astar_ground.launch
起飞
-
先输入起飞指令
在此终端先输入0选择命令输入控制
-
再输入1选择take off起飞指令,由于没有切入offboard模式,此时无人机还不会响应。
-
我们遥控器切定点,解锁,切offboard,这时无人机才会自动起飞。
-
等到无人机起飞到一个稳定高度,也即是我们设定的起飞高度后,回到rviz界面,点击选择3D Nav Goal
-
在rviz上点击一个点作为目标点
-
会自动生成一个绕开障碍物的路径
-
此时无人机会沿着这个生成的路径飞,绕开障碍物,且高度会保持不变。
注意!
如果中途无人机飞行不符合预期,及时通过遥控器切出offboard模式,转为position模式手动控制。
降落
-
无人机飞到目标点后,可以遥控器拨动offboard飞行模式开关切出offboard模式,并缓慢手动降落。
视频演示
-
v1版本功能演示
-
v2版本功能演示
首次飞行(室外)
- 本节主要讲解GPS配置下无人机室外的首次飞行。
电脑软件准备工作
-
准备一台笔记本电脑,电脑系统不做要求,可以是Windows7,Windows10或者是Ubuntu系统。需要安装QGroundControl(以下简称QGC)和nomachine。QGC的作用是连接到飞机,监控飞机本身的状态(传感器是否正常,参数配置是否正常);nomachine用作远程连接到板载计算机。
提示:
软件安装包请在百度网盘自主下载 网盘链接 提取码: amov从图中可以看到,有不同操作系统下的安装包,根据自己笔记本电脑系统安装相应的QGC和nomachine。
安装QGC地面站
-
正确安装上面安装包之后,打开QGC地面站:
注意!
最下方的版本是V4.0.8
安装nomachine
-
正常安装按完成之后,打开nomachine
硬件准备工作
-
P450无人机+富斯i6s遥控器
-
5300mah航模锂电池
-
遥控器电池
-
安全绳
QGC远程连接到飞机
-
首先连接到飞机的数传wifi,命名为amov-uav####。
密码为12345678
电脑连上飞机的数传wifi后,打开QGC地面站,在通讯连接下面选择“添加”
类型选择“ TCP”,主机地址为“192.168.10.###”,“###”为wifi名字的后三位数字。端口号为“6000”。
然后点击“连接”,连接成功后如下图所示
注意!
如果做无人机室外测试,需要在地面站修改参数EKF2_AID_MASK,EKF2_HGT_MODE,详细操作如下:
- 在启动脚本前,我们需要在QGC中先将飞控重启一下,操作如下,
- 选择MAVLink Console,进入MAVLink控制终端,输入reboot,回车,听到飞控重启的提示音,即重启飞控成功。
等待飞控重启完成后,无人机的航灯绿色慢闪且QGC上无人机的卫星数量在13颗及以上时,即可将遥控器切定点进行室外飞行。
警告!
在室外飞行一定要连接上QGC地面站,在拨到定点模式时查看GPS卫星数量,以防出现未拨进定点模式或者定点很差的情况。
视频演示
-
室外飞行演示视频如下
进阶功能-室外指点飞行
-
本节主要讲解P450系列无人机在室外的指点飞行演示。视频紧接上节内容 首次飞行 ,默认已经通过WiFi数传连接到QGC地面站和nomachine远程连接到板载计算机,主要分为一下几点进行讲解:摄像头标定,二维码检测确认,坐标系确认,启动指令,起飞,降落,以及最后的视频演示。
注意!
受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。
启动指令
-
请按照以下步骤操作
注意!
在室外操作时,注意在QGC地面中查看自己的位置源是否更改,参数EKF2_AID_MASK设定为use gps,EKF2_HGT_MODE设定为Barometric pressure。
- 在启动脚本前,我们需要在QGC中先将飞控重启一下,操作如下,
- 选择MAVLink Console,进入MAVLink控制终端,输入reboot,回车,听到飞控重启的提示音,即重启飞控成功。
-
首先启动基本gps脚本
roslaunch p450_experiment p450_gps_onboard.launch
-
然后再启动控制脚本
roslaunch p450_experiment p450_gps_control.launch
之后会出现终端控制界面,提示有两种控制的输入方式,第一种是通过命令输入控制方式,另外一种是通过键盘按键控制方式。 两种方式都可以控制无人机,一般在做实机实验过程中选择第一种通过命令输入控制方式;第二种键盘控制不太安全。接下来会详细讲解如何使用第一种命令输入控制方式实现指点飞行。
-
命令行控制终端详解
其中
0 表示的是 怠速;意思就是飞机会进入offboard模式,但是在该模式下,没有对飞机进行任何指令的发送。飞机也不会有任何动作。这个指令一般也可以不用。
1 表示的是 起飞;起飞点为当前点,起飞高度通过 yaml参数设置,单位是米,默认起飞高度是0.5m
2 表示的是 悬停;飞机正在飞行过程中如何接受到 2 指令,会在当前时刻进入悬停状态。
3 表示的是 降落;降落速度通过 yaml参数设置,单位是m/s ,默认降落速度为0.2m/s 。还有一个 上锁高度 到达上锁高度之后飞机会进入飞控的本身降落模式进而缓缓着地,上锁高度通过 yaml 参数进行设置,单位是米,默认是 0.18m,即认为离地不到20cm的时候进入飞控本身的降落飞行模式。
4 表示的是 move模式;该模式就包含我们所称的指点飞行功能,在此模式下,又有5种子模式:
-
0对应XYZ_POS,空间位置控制;
-
1对应XY_POS_Z_VEL,水平面位置控制,高度速度控制;
-
2对应XY_VEL_Z_POS,水平面速度控制,高度定高控制;
-
3对应XYZ_VEL,空间速度控制;
-
5对应TRAJECTORY,轨迹跟踪控制。
常用的模式为0空间位置控制(指点飞行),接下来会讲讲实机过程中起飞的具体实现。
-
-
指点飞
-
然后我们在此命令行控制终端,根据终端提示,首先输入4并敲回车 ,表示选择move模式;然后输入 0 并敲回车,表示选择空间位置控制;然后输入 0 并敲回车,表示选择ENU_FRAME惯性坐标系;然后依次输入期望的位置坐标值(即ENU_FRAME惯性坐标系下的坐标,单位为米)x,y,z和航向角yaw(一般为0)。
对坐标系做下说明:
-
ENU_FRAME惯性坐标系始终以无人机初始上电点为原点,且x轴指向无人机机头方向,y轴指向无人机正左方,z轴指向无人机正上方,单位为米。给无人机发送绝对期望位置选择这个坐标系。
-
BODY_FRAME机体坐标系始终以无人机本身为原点,无论无人机飞到哪里都是以无人机当前位置为原点,且x轴指向无人机机头方向,y轴指向无人机正左方,z轴指向无人机正上方,单位为米。给无人机发送相对期望位置选择这个坐标系。
-
这里我们发送的期望位置是BODY_FRAME机体坐标系下x为0,y为0,z为2的坐标点,偏航yaw为0,表示让无人机飞到相对于当前点往前(x轴)0m,往左(y轴)0m,往上(z轴)2m的期望位置,航向角保持不变。
在输完期望航向角并敲回车后,我们再遥控器定点模式(SWC拨杆切到中档)下解锁并切到offboard模式(SWD拨杆切到下档),无人机会自动起飞到发送给PX4飞控的期望位置点。
-
无人机飞到期望位置点之后,我们还可以继续在终端进行指点飞行操作,让无人机飞往下一个期望位置点。
需要降落时我们可以将遥控器SWD拨杆切至上档退出offboard模式,飞控会自动进入position模式(注意SWC拨杆是一直保持在中档,不需要动),然后我们可以手动操控无人机降落。
视频演示
-
室外指点飞行演示视频如下
进阶功能-室外自主降落
-
本节主要讲解P450系列无人机在室外的自主降落演示。视频紧接上节内容 首次飞行 ,默认已经通过WiFi数传连接到QGC地面站和nomachine远程连接到板载计算机,主要分为一下几点进行讲解:摄像头标定,二维码检测确认,坐标系确认,启动指令,起飞,降落,以及最后的视频演示。
注意!
受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。
摄像头标定
- 具体步骤见常见问题处理中的摄像头标定
二维码检测确认
-
这里我们需要来确认摄像头对二维码的位置检测是否正确 我们所使用的二维码如下
提示:
可以右键保存二维码图片在本地再打印,打印尺寸为18.8cm*18.8cm。 -
运行检测节点
roslaunch p450_experiment p450_landpad_det.launch
-
查看检测效果(可视化)
rqt_image_view
-
弹出图形界面后,选择对应要显示的图像消息,选择下面红框内的这个消息可以既显示出图像又显示出二维码检测结果。
-
点击后在显示的消息列表里选择相应的图像消息。
-
打印二维码实时检测结果
rostopic echo /prometheus/object_detection/landpad_det
-
终端上打印出的消息如下图所示: position后面三个值分别代表摄像头检测到的二维码在摄像头坐标系下的坐标的X,Y,Z的值。我们可以移动二维码看所显示的位置值是否显示出真实实际二维码相对于摄像头的位置,如果有较大差距,需要更改摄像头配置参数文件里的参数。 yaw_error显示的是偏航,所以是可以检测出这个二维码的 X Y Z 以及偏航也就是转的角度。
如果有较大大差距
一.重新标定,修改相机参数和畸变参数;
二.确认路径/home/amov/amovlab_ws/src/p450_experiment/config/prometheus_detection_config文件下camera_param.yaml参数文件中二维码边长为降落板边长的真实值(这个非常重要),如果不是,修改为真实值,否则直接影响到二维码位置估计。
坐标系确认
-
关于坐标系转换的说明:识别算法发布的目标位置位于相机坐标系(从相机往前看,物体在相机右方x为正,下方y为正,前方z为正)首先,从相机坐标系转换至机体坐标系(从机体往前看,物体在相机前方x为正,左方y为正,上方z为正):由于此demo相机朝下安装,且xy方向无偏移量
pos_body_frame[0] = - Detection_raw.position[1]; pos_body_frame[1] = - Detection_raw.position[0]; pos_body_frame[2] = - Detection_raw.position[2];
-
从机体坐标系转换至与机体固连的ENU系(原点位于质心,x轴指向yaw=0的方向,y轴指向yaw=90的方向,z轴指向上的坐标系):直接乘上机体系到惯性系的旋转矩阵即可
R_Body_to_ENU = get_rotation_matrix(_DroneState.attitude[0], _DroneState.attitude[1], _DroneState.attitude[2]); pos_body_enu_frame = R_Body_to_ENU * pos_body_frame;
-
从与机体固连的ENU系转换至ENU系(原点位于起飞点,x轴指向yaw=0的方向,y轴指向yaw=90的方向,z轴指向上的坐标系)
Detection_ENU.position[0] = drone_pos[0] + pos_body_enu_frame[0]; Detection_ENU.position[1] = drone_pos[1] + pos_body_enu_frame[1]; Detection_ENU.position[2] = drone_pos[2] + pos_body_enu_frame[2];
-
当二维码中心点位于摄像头图像右上方时,也就是处于第一象限时,终端打印的x坐标为正,y坐标为负,z坐标为正,代表相机坐标系正确。
安装相机到无人机机身上是,相机镜头朝向正下方,并且让相机图像上方方向(对着图像显示看,可以判断出相机哪个方向为上方)严格朝向机头方向。此时可以保证整个坐标系是正确的。 在确认摄像头坐标系正确的情况下将摄像头固定到机身上。
启动指令
-
请按照以下步骤操作
注意!
在室外操作时,注意在QGC地面中查看自己的位置源是否更改,参数EKF2_AID_MASK设定为use gps,EKF2_HGT_MODE设定为Barometric pressure。
- 在启动脚本前,我们需要在QGC中先将飞控重启一下,操作如下,
- 选择MAVLink Console,进入MAVLink控制终端,输入reboot,回车,听到飞控重启的提示音,即重启飞控成功。
-
首先启动基本gps脚本
roslaunch p450_experiment p450_gps_onboard.launch
-
然后再启动自主降落脚本
roslaunch p450_experiment p450_outdoor_landing_static_target.launch
注意!
若终端出现以下警告,需重新插拔单目摄像头。 -
打开一个新的终端,将图像检测显示出来
rqt_image_view
稍微调整一下窗口显示位置,接下来就开始飞机起飞操作。
起飞
-
室外无人机和二维码需要朝正东方向摆放。先将无人机摆放在二维码附近,可放在二维码的前后左右上等位置,注意不要距离太远,否则起飞后摄像头无法检测到二维码。且机头方向注意要和二维码正方向一致,二维码正方向如下图所示。说明一下,由于摄像头固定在无人机前方,所以无人机放在二维码前方的位置起飞效果会比较差,因为此时摄像头距离二维码距离较远,容易丢失二维码。
-
先将遥控器切换到position模式,在运行自主降落脚本后板载计算机就一直在给飞机发送起飞指令,但是目前飞机还没有进入offboard模式和解锁,所以飞机是没有响应的。接着遥控器操作“内八”进行解锁,然后在终端输入1并敲回车,最后拨动offboard飞行模式开关切入offboard模式,此时无人机会先起飞到起飞点上方0.8米高度(我们在自主降落代码中设定的高度为0.8m)
降落
-
飞到指定高度0.8米后,如果摄像头检测到二维码,无人机便会开始自主降落
-
降落完成后会无人机自动上锁
视频演示
-
室外自主降落功能演示视频如下:
进阶功能-室外自主跟踪
-
本节主要讲解P450系列无人机在室外的自主跟踪。视频紧接上节内容 首次飞行 ,默认已经通过WiFi数传连接到QGC地面站和nomachine远程连接到板载计算机,主要分为一下几点进行讲解:启动指令、命令行控制终端详解、起飞、指点飞、以及最后的视频演示。
注意!
受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。
启动指令
-
请按照以下步骤操作
注意!
在室外操作时,注意在QGC地面中查看自己的位置源是否更改,参数EKF2_AID_MASK设定为use gps,EKF2_HGT_MODE设定为Barometric pressure。
- 在启动脚本前,我们需要在QGC中先将飞控重启一下,操作如下,
- 选择MAVLink Console,进入MAVLink控制终端,输入reboot,回车,听到飞控重启的提示音,即重启飞控成功。
-
启动基本gps脚本
roslaunch p450_experiment p450_gps_onboard.launch
-
然后再启动跟踪脚本
roslaunch p450_experiment p450_outdoor_circle_tracking.launch
注意!
若终端出现以下警告,需重新插拔单目摄像头。 -
打开一个新的终端,输入以下命令,将图像检测显示出来
rqt_image_view
稍微调整一下窗口显示位置,接下来就开始飞机起飞操作。
起飞
-
室外需要将圆框朝正东方向摆放
先将遥控器切换到position模式
然后通过控制终端发送1起飞指令,这时候飞机通过板载计算机已经给飞机一直发送起飞指令,但是目前飞机还没有进入offboard模式和解锁,所以飞机是没有响应的。
发送完起飞指令之后,接着遥控器操作“内八”进行解锁,最后拨动offboard飞行模式开关。飞机就会慢慢起飞起来,保持在1m高度。(我们在自主跟踪代码中设定的起飞高度为1m)
跟踪
-
等待飞机起飞完成之后,保持在1m左右之后,且视野内识别到目标圆,再进行输入 1 ,进行圆框跟踪
-
与目标圆保持一定距离
-
此时可以移动目标圆,进而飞机进行相应的移动
结束实验
-
在想要结束室外自主跟踪实验时候,记得遥控器先退出offboard模式,
然后慢慢降低油门,直至飞机安全着地,进入怠速,自动上锁。
关闭所有终端,结束实验。
视频演示
-
室外自主跟踪演示视频如下
进阶功能-室外自主避障
-
本节主要讲解P450系列无人机在室外的自主避障演示。视频紧接上节内容 首次飞行 ,默认已经通过WiFi数传连接到QGC地面站和nomachine远程连接到板载计算机,主要分为一下几点进行讲解:启动指令,起飞,降落,以及最后的视频演示。
注意!
受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。无人机机头需朝正东方向摆放。
启动指令
-
请按照以下步骤操作
注意!
在室外操作时,注意在QGC地面中查看自己的位置源是否更改,参数EKF2_AID_MASK设定为use gps,EKF2_HGT_MODE设定为Barometric pressure。
- 在启动脚本前,我们需要在QGC中先将飞控重启一下,操作如下,
- 选择MAVLink Console,进入MAVLink控制终端,输入reboot,回车,听到飞控重启的提示音,即重启飞控成功。
-
启动第一个指令
roslaunch p450_experiment astar_onboard_gps.launch
-
再启动第二个指令
roslaunch p450_experiment astar_ground_gps.launch
起飞
-
先输入起飞指令
在此终端先输入0选择命令输入控制
根据终端提示,再依次输入4 move 、 0 XYZ_POS 、0 ENU_FRAME 、 x的坐标(需要和无人机当前本地x坐标一致,差不多即可) 、y的坐标(需要和无人机当前本地y坐标一致,差不多即可) 、 z的坐标为0.9,这个不需要根据当前无人机本地位置坐标来写
-
输完以上指令后,遥控器切定点解锁然后切offboard,无人机会自动起飞,等到无人机起飞到一个稳定高度,也即是我们设定的起飞高度后,回到rviz界面,点击选择3D Nav Goal
-
在rviz上点击一个点作为目标点,会自动生成一个绕开障碍物的路径
-
此时无人机会沿着这个生成的路径飞,绕开障碍物,且高度会保持不变。
注意!
如果中途无人机飞行不符合预期,及时通过遥控器切出offboard模式,转为position模式手动控制。
降落
-
无人机飞到目标点后,可以遥控器拨动offboard飞行模式开关切出offboard模式,并缓慢手动降落。
视频演示
-
室外自主避障演示视频如下
进阶功能-EGOPlanner
-
本节主要讲解P450系列无人机的EGOPlanner飞行演示。视频紧接上节内容 首次飞行 ,默认已经通过WiFi数传连接到QGC地面站和nomachine远程连接到板载计算机,主要分为一下几点进行讲解:传感器检查,操作,降落,以及最后的视频演示。
注意!
受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。
传感器检查
- 首先在终端输入下面命令,查看是否T265和D435i都已经被系统识别到
rs-sensor-control
操作
-
在启动脚本前,我们需要在QGC中先将飞控重启一下,操作如下
-
点击红框所圈出的图标,进入如下界面
-
选择MAVLink Console,进入MAVLink控制终端,输入reboot,回车,听到飞控重启的提示音,即重启飞控成功。
-
在终端输入下面命令启动
/home/amov/amovlab_ws/src/p450_experiment/ego_sh/ego.sh
-
依次查看每个终端是否有报错
-
会自动弹出rviz界面,并可以看到建图效果,里面可以看到障碍物
-
然后遥控器先切到定点模式,在此终端输入1并敲回车,使用遥控器解锁无人机,但是此时无人机还没有切入offboard模式,所以不会立马执行起飞,此时用遥控器切入offboard模式后,无人机会立马起飞。
-
等到无人机起飞到一个稳定高度,也即是我们设定的起飞高度后,回到rviz界面,点击选择2D Nav Goal
-
在rviz上点击一个点作为目标点,会自动生成一个绕开障碍物的路径
-
此时无人机会沿着这个生成的路径飞,绕开障碍物,且高度会保持不变。
降落
-
无人机飞到目标点后,可以遥控器拨动offboard飞行模式开关切出offboard模式,并缓慢手动降落。
-
视频演示
-
无人机EGOPlanner功能演示视频如下:
概述
-
欢迎大家使用查看本wiki,本wiki是关于P230系列飞机的详解。
简介: Prometheus230(简称P230)是一款专为科研工作者及无人机开发者设计的无人机实验平台,适用于无人机专业应用研究和开发。本开发平台基于Prometheus开源项目,实现室内定位和视觉避障等。Prometheus(P230)是阿木实验室专为科研工作者以及无人机开发者设计并打造的无人机飞行平台,适用于室内环境下的无人机避障算法验证。受到穿越机的灵感,机身全身采用了碳板结构,在保留上一代产品功能的同时,我们极大的减轻重量。P230作为Prometheus自主无人机开源项目的拓展型号,搭载开源飞控PX4 mini 及开源自主无人机平台Prometheus。在实现室内定位的同时,可以完成Ego_planner自主避障功能旨在为无人机的室内定位和自主飞行提供解决方案。
注意!
在室内外操作时,注意查看自己的位置源是否更改,即参数EKF2_AID_MASK,EKF2_HGT_MODE,后面介绍地面站安装教程时会详细介绍如何更改参数。
资源下载
技术参数
1. 特征
- P230基于Px4 mini开源飞控架构,通过自主设计的走线设计完成了高性能旋翼系统,使用者可轻易实现室内的飞行控制;同时搭载Nvidia Jeston XavierNX 机载计算机,内置ROS环境下的无人机控制程序,可一键启动定点模式和视觉避障功能。除此之外,我们还部署了港科大的VINS_FUSION 算法,可以取代T265用作视觉定位。但是考虑到每个人的机器差异,我们只部署了环境以及数据链路的打通,可以在P230上进行二次SLAM算法开发。
2. 规格
-
作为Prometheus系列的第四代无人机平台,P230采用了轻量化碳管机架和环外保护架的设计。在进一步压缩重量的同时,提高了传感器的使用率,提高了续航时间。
-
硬件接线图
3. 参数
-
参数表如下所示
快速入门
1. 使用前须知
-
使用者需要仔细阅读本wiki,避免炸机。
注意!
受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。
2. 开箱视频
3. 电脑设置
-
准备一台笔记本电脑,电脑系统不做要求,可以是Windows7,Windows10或者是Ubuntu系统。需要安装QGroundControl(以下简称QGC)和nomachine。QGC的作用是连接到飞机,监控飞机本身的状态(传感器是否正常,参数配置是否正常);nomachine用作远程连接到板载计算机。
提示:
软件安装包请在百度网盘自主下载网盘链接提取码:amov
从图中可以看到,有不同操作系统下的安装包,根据自己笔记本电脑系统安装相应的QGC和nomachine。
-
安装QGC地面站
-
正确安装上面安装包之后,打开QGC地面站:
注意!
最下方的版本是V4.0.8 -
安装nomachine
正常安装按完成之后,打开nomachine:
安装完软件后,我们就可以先给无人机上电了。上电之前我们需要先做些准备工作。
4. 使用前的检查和注意事项
飞行环境介绍
-
我们的飞行环境如下图所示。
提示:
1.使用T265进行定位的飞行环境需要特征点丰富,比如有二维码或其他特征点明显的物体。 2.vins视觉定位对测试环境(光照条件、视觉特征点等)依赖较大,非vins专业人士 建议测试场地做如下部署:地面采用颜色交错的地板、且四周墙面尽量张贴二维码A4纸(发货时赠送的二维码A4纸,最忌四面白墙),以此增加飞机视觉定位的稳定性、保障试验效果的理想,相反在视觉特征点不明显的环境下定位数据容易发散、炸机风险增高。提示:
二维码图片包可在百度网盘自主下载网盘链接 提取码: a6ow
4.使用前的检查和注意事项
使用前需要准备以下硬件
-
P230无人机+富斯i6s遥控器
-
4000mah航模锂电池
-
遥控器电池
-
安全绳
5. 组装及使用
-
遥控器的使用
遥控器使用左手油门,两个摇杆均自动回中.使用了遥控器6个通道,5通道设置为SWC三段开关用来控制飞行模式,飞行模式分别为自稳模式(stabilized)/定高(altitude),定点模式(position)和降落模式(land),6通道设置为SWD两段开关用来关闭/激活offboard模式。
注意!
遥控器开机前请确保所有拨杆拨到最上端,否则无法开机。
使用遥控器飞行前请熟悉预设飞行模式的含义、进入条件等,贸然飞行可能导致炸机!
具体请查阅PX4官方说明
-
充电器的使用
不同时期的的P230订单可能会收到两种不同的充电器,下面是两种充电器的使用说明:
-
A400平衡充
-
A3充电器
注意!
电量充满后请及时拔出充电器!不要满电后长时间充电,以防电池过充!
-
电池的使用与保养
-
切勿过放:一般认为单片电芯的电压低于3.5V,就有可能对电池造成损伤,也就是常说的电池过放了,过放的电池会鼓包,这样的电池拿来继续充电是很危险的,可能会引起火灾,建议在电压降到 3.6V 的时候,就不要继续飞行了。因为地面空载测到3.6V,空中满油门飞行的时候,电压就远低于 3.6V,甚至低于 3V,很容易就过放了。
-
切勿过充:放电电压有下限,充电电压也有上限。上限是 4.2V,一节 3S电池,标称总电压11.1V,充满以后就是 12.6V,如果电压超 过了 4.2V,那就是过充,同样会损坏电池。现在的智能充电器会在 4.2V 时自动停充,但要小心有些航模充电器精度差,会过充,还有些充电器可以调节到高于4.2V 的电压,这是针对高压版电池的,普通电池不能用这个功能。充电的时候,模式要选平衡充电。电池长期保存时,电压是有要求的,单片电芯的电压保持在 3.85V 比较好。
-
电池存放:不要满电保存,满电保存对航模电池的放电能力会有 很大的影响,建议每次使用完电池后,都充放电到储存电压,特别是充满后没来得及使用的电池,一定要放电,长期满电存放,会损 坏电池,由于锂电池稳定性先天不足,正常存放也有一定起火概率。很多节锂电池堆放在一起不亚于一颗燃烧弹,平时存放时,电池应该避开易燃物单独保存,有条件的话,用防爆阻燃的容器存放。
-
-
BB响低压报警器的使用
该电压显示器用于1S~8S的锂电池检测,自动检测锂电池每个电芯的电压和总电压,支持反向连接保护。它可以让你随时随地的了解你的电池的工作状态,使你的电池不会因为过放或过充造成的伤害。
当电压低于设定值时,蜂鸣器会响起,红色LED灯会闪烁;出厂默认设定值为3.3V,按顶部按键可改变电压设定值,自动保存用户当前设定值。
BB响与电池的连接示意图:
-
无人机电源上电如下图所示
需要检查下各个接口有没有因为运输造成的接口松动。
电机和遥控器接收机与飞控的连接。
飞控与板载电脑的连接。
需要检查下各个接口有没有因为运输造成的接口松动。
-
查看板载计算机ip
将配送的小米路由器上电后,再将飞机上电。用电脑连接到小米路由器的wifi,wifi名为P230_xxx(XXX为飞机编号)。
打开谷歌浏览器,进入小米路由器的Web设置页面,IP为192.168.32.1,点击终端设备,即可查看到连接到网络的终端和对应的IP地址。
-
nomachine远程连接板载计算机
点击New
在Protocol下选择NX,点击Continue。
在“Host”下填写板载计算机的ip地址,板载计算机地址参考步骤2,“Port”下默认4000。
在Proxy下默认是“Don’t use a proxy”,点击“Continue”。
在Save as下会生成默认的name,可以不做更改,点击“Done”。
按照上述步骤操作,会自动生成如下图所示用红框标起的链接,点击“Connect”。
在“Username”和“Password”下输入“amov”
Nomachine成功连接板载计算机后会显示如下界面
6. 校准
-
不同于P450的wifi数传,P230并不携带数传,我们需要通过UDP的方式连接到地面站。这里的IP地址是自己主机的IP地址,并且需要在一个局域网内。
然后修改p230_vio_onboard_vins.launch文件中的内容,把如下图所示的地址更改为使用者主机的ip地址:
在终端执行
roslaunch p230_experiment p230_vio_onboard_vins.launch
或者将桌面上的vio_control.sh文件拖入终端框
就可以连接到地面站。
需要校准的传感器如下:
-
如果做无人机室内测试,需要在地面站修改参数EKF2_AID_MASK,EKF2_HGT_MODE,详细操作如下:
首先点击参数(Parameters)按钮,进入参数修改界面,如下。
-
在search栏输入aid,选择EKF2_AID_MASK参数
在窗口右上侧会弹出子页面,如下图所示。
-
一般默认选择第一项use GPS,由于我们室内飞行使用的是T265作为位置定位源,所以需将此参数改为4、5项,修改后保存。
在search栏输入hgt,选择EKF2_HGT_MODE参数栏
-
在窗口右上弹出的子页面上,点击下拉菜单,选择vision,如下图所示
在执行飞行之前,都需要检查参数和检查飞机桨叶是否上紧,检查螺丝是否有松动。一般传感器参数我们都会调整好,但运输过程可能会对飞机产生影响。这时就需要自己调整参数。调整完,记得重启飞控。
最后保存退出,记得重启飞控。
至此 那么我们已经做完了飞行前的所有工作,接下来我们就可以进行定点和指点飞行。
使用手册
1. 基本准备
-
因为跟前文类似,这里就不在赘叙,需要的可以点击下面链接自行查看。
2. 初级功能
-
室内vins定点飞行
注意!
在室内操作时,注意在QGC地面中查看自己的位置源是否更改,参数EKF2_AID_MASK设定如下图,EKF2_HGT_MODE设定为Vision。 -
启动脚本
如机载电脑桌面上有vio_control.sh文件,则直接将此文件拖入终端框内回车,无需进行下面的操作,直接跳转至检查各项数据是否正常
如无则先启动D435i相机
roslaunch realsense2_camera rs_camera.launch
D435i相机正常启动的终端界面
再启动vins的节点
rosrun vins vins_node ~/VINS_FUSION/src/VINS-Fusion/config/realsense_d435i/realsense_stereo_imu_config.yaml
vins节点正常启动界面,红框部分为实时vins定位数据,分别为y、x、z 轴实时定位数据
vins正常启动,为p230提供准确的定位数据来源后,即可启动vio脚本
roslaunch p230_experiment p230_vio_onboard_vins.launch
启动脚本后如下图所示
然后遥控器定点模式下解锁飞机起飞即可。
-
检查各项数据是否正常
在启动脚本后,首先查看地面站,地面站上会显示飞机的航向为正东,就是“E”。
第一个终端正常情况下如下图所示,各项数据均正常
第二个终端如下图所示,显示“Program is running”即表示脚本正常运行。
第三个终端如下图所示,查看飞机的位置、速度、角度与角速度信息是否正常,移动飞机,查看飞机的位置信息是否正常,飞机向前为X轴正方向,向左为Y轴正方向,向上为Z轴正方向。飞机的定位数据应与vins终端的数据一致。
-
遥控器定点模式飞行
如下图所示,将“SWC”开关拨到中间一档, 切到“定点模式”
然后左手“右下”解锁飞机,如下图所示。
起飞后如下图所示,进行定点模式飞行。
-
降落
我们轻轻将油门杆推到最低,飞机降落后,等待飞机上锁即可。
-
视频演示
-
室内vins指点飞行
本节主要讲解P230系列无人机在室内的指点飞行演示。视频紧接上节内容 指点飞行 ,默认已经连接到QGC地面站和nomachine远程连接到板载计算机,主要分为一下几点进行讲解:启动指令,命令行控制终端详解,起飞,指点飞,以及最后的视频演示。
注意!
受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。 -
启动指令
注意!
在室内操作时,注意在QGC地面中查看自己的位置源是否更改,参数EKF2_AID_MASK设定如下图,EKF2_HGT_MODE设定为Vision。如机载电脑桌面上有vio_control.sh文件,则直接将此文件拖入终端框内回车,无需进行下面的操作,直接跳转至命令行控制终端详解
如无则先启动D435i相机
roslaunch realsense2_camera rs_camera.launch
D435i相机正常启动的终端界面
再启动vins的节点
rosrun vins vins_node ~/VINS_FUSION/src/VINS-Fusion/config/realsense_d435i/realsense_stereo_imu_config.yaml
vins节点正常启动界面,红框部分为实时vins定位数据,分别为y、x、z 轴实时定位数据
vins正常启动,为p230提供准确的定位数据来源后,即可启动vio脚本
roslaunch p230_experiment p230_vio_onboard_vins.launch
启动脚本后如下图所示
然后再启动控制脚本
roslaunch p230_experiment p230_vio_control.launch
之后会出现终端控制界面,提示有两种控制的输入方式,第一种是通过命令输入控制方式,另外一种是通过键盘按键控制方式。
两种方式都可以控制无人机,一般在做实机实验过程中选择第一种通过命令输入控制方式;第二种键盘控制不太安全。接下来会详细讲解如何使用第一种命令输入控制方式实现指点飞行。
-
命令行控制终端详解
其中
0 表示的是 怠速;意思就是飞机会进入offboard模式,但是在该模式下,没有对飞机进行任何指令的发送。飞机也不会有任何动作。这个指令一般也可以不用。
1 表示的是 起飞;起飞点为当前点,起飞高度通过 yaml参数文档设置,单位是米,默认起飞高度是0.5m
2 表示的是 悬停;飞机正在飞行过程中如何接受到 2 指令,会在当前时刻进入悬停状态。
3 表示的是 降落;降落速度通过 yaml参数文档设置,单位是m/s ,默认降落速度为0.2m/s 。还有一个上锁高度,到达上锁高度之后飞机会进入飞控的本身降落模式进而缓缓着地,上锁高度通过 yaml 参数文档进行设置,单位是米,默认是 0.18m,即认为离地不到20cm的时候进入飞控本身的降落飞行模式。
4 表示的是 move模式;该模式就包含我们所称的指点飞行功能,在此模式下,又有5种子模式:0对应XYZ_POS,空间位置控制;1对应XY_POS_Z_VEL,水平面位置控制,高度速度控制;2对应XY_VEL_Z_POS,水平面速度控制,高度定高控制;3对应XYZ_VEL,空间速度控制;5对应TRAJECTORY,轨迹跟踪控制。
常用的模式为0空间位置控制(指点飞行),接下来会讲讲实机过程中起飞的具体实现。
-
起飞
通过控制终端发送1起飞指令,这时候飞机通过板载计算机已经给飞机一直发送起飞指令,但是目前飞机还没有进入offboard模式和解锁,所以飞机是没有响应的。
发送完起飞指令之后,遥控器切换到position模式,然后遥控器操作“内八”进行解锁,最后拨动offboard飞行模式开关。飞机就会慢慢起飞起来,保持在0.5m的高度。
可以看到飞机起飞已经完成,保持在0.5m高度,接下来进行指点操作,这时候就不需要遥控器操作了,只需要看好遥控器,防止意外事情发生;进入指点飞行过程。
-
指点飞
选择 4 move飞行模式,然后选择 0 空间位置控制,然后选择 0 ENU_FRAME惯性坐标系,最后输入期望的状态,空间位置xyz和航向角yaw。
这里我们发送的指令是x为0,y为0,z为0.5,yaw为0。让飞机往前x轴飞行0m,往左y轴飞行0m,往上z轴飞行到0.5m,航向角保持不变发送为0.
飞机开始移动到我们设定空间位置
上图可看飞机已经到达并且稳定到我们设定的空间位置。
-
视频演示
拍摄一段测试视频,预祝复现室内指点飞行成功。
3. 中级功能
-
EGO-planner
本节主要讲解P230系列无人机的EgoPlanner飞行演示。视频紧接上节内容 首次飞行 ,默认已经通过UDP协议连接到QGC地面站和nomachine远程连接到板载计算机,主要分为一下几点进行讲解:传感器检查,操作,降落,以及最后的视频演示。
注意!
受限于开源飞控硬件性能,飞机在长时间不用后会出现位姿漂移,要求每次飞行前电池重新上电以重启飞控和板载计算机,并严格按照wiki规范操作,避免炸机风险。 -
传感器检查
首先在终端输入下面命令,查看是否D435i已经被系统识别到
rs-sensor-control
-
操作
根据P230的出厂版本不同,请根据文件所在目录,在终端输入下面命令启动
/home/amov/amovlab_ws/src/ego_sh/ego.sh
或
/home/amov/amovlab_ws/src/p230_experiment/ego_sh/ego.sh
等到程序完全启动后,依次查看每个终端是否有报错
会自动弹出rviz界面,并可以看到建图效果,里面可以看到障碍物
确认参数和设置没有问题后,在此终端输入1并敲回车,然后遥控器先切到定点模式,在此终端继续输入1并敲回车,解锁无人机
解锁完之后,我们切offboard模式,飞机会起飞到一个稳定高度。
等到无人机起飞到一个稳定高度,也即是我们设定的起飞高度后,回到rviz界面,点击选择2D Nav Goal
在rviz上点击一个点作为目标点,会自动生成一个绕开障碍物的路径
此时无人机会沿着这个生成的路径飞,绕开障碍物,完成壁障飞行功能。
-
降落
无人机飞到目标点后,可以遥控器拨动offboard飞行模式开关切出offboard模式,并缓慢手动降落。
-
视频演示
拍摄两段测试视频,预祝复现室内ego避障飞行成功。
4. 高级功能
-
VINS_FUSION
本节主要讲解P230系列无人机的VINS_FUSION。视频紧接上节内容 首次飞行 ,默认已经通过UDP协议连接到QGC地面站和nomachine远程连接到板载计算机,主要分为一下几点进行讲解:传感器检查,操作,降落,以及最后的视频演示。
注意!
在开始这个使用功能之前,需要仔细阅读本wiki,避免炸机。不同于携带T265鱼眼相机的视觉定位,我们考虑仅使用一种传感器来实现定位+避障的功能,定位方面我们使用了港科大开源的slam算法 VINS_FUSION。为极大地方便用户进行二次开发,我们打通了VINS和Prometheus之间的通信链路,用户仅需要在我们平台上进行算法的研究即可,而不需要考虑安装烦人的环境。考虑到个人的环境差异,我们仅部署了VINS_FUSION,具体的参数以及算法优化还需要自己修改。 -
环境部署
SLAM组成中,前端中的特征点提取以及匹配是最消耗CPU的过程,因此我们引入了GPU版本的VINS实现对OpenCV提取和匹配特征点的加速,极大的降低延时性。所以我们需要安装CUDA,这个过程可以自行百度解决,也可以直接购买我们的平台。这里默认你已经做好环境准备。
-
代码组成
在开始启动指令之前,我们需要先了解一下VINS的代码组成以及配置文件
config文件夹存放我们需要的配置文件,docker文件夹存放的是docker镜像,global_fusion文件夹存放的是全局位姿融合,loop_fusion是局部位姿融合,vins_setimator文件夹存放的是位姿估计,视觉惯性对齐,IMU预积分及初始化等。
-
标定环境
如果您已经购买我们的标定环境,就可以跳过以下安装步骤,只看标定环节。
我们需要使用Kalibr来标定IMU和相机的之间变换矩阵,这对VINS极为重要,变换精度如果小于1-2°,整体的精度就会大打折扣。标定的具体流程我们会单独放在wiki上,这里就不占用过多篇幅。如果用户想省去安装的麻烦,也可以直接购买我们的标定环境。这里默认你已经做好标定。
-
安装kalibr
- 依赖安装
sudo apt install python-setuptools sudo apt install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxyen sudo apt install ros-melodic-vision-opencv ros-melodic-image-transport-plugins ros-melodic-cmake-modules python-software-properties software-propertiessoftware-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin_tools libv4l-dev
- 下载源码
mkdir -p kalibr_ws/src git clone [https://github.com/ethz-asl/Kalibr.git](https://github.com/ethz-asl/Kalibr.git) cd ~/kalibr_ws catkin build -DCMAKE_BUILD_TYPE=Release -j4
- 依赖安装
-
安装IMU_Utils
首先是一些依赖的安装
-
ceres的安装
1.1 下面安装ceres的依赖
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev sudo apt-get install libgoogle-glog-dev libgtest-dev
1.2 下载编译ceres-solver
git clone [https://github.com/ceres-solver/ceres-solver.git](https://github.com/ceres-solver/ceres-solver.git) cd ceres-solver mkdir build cd build cmake .. make && sudo make install
-
安装code_utils
mkdir -p ~/kalibr_workspace/src cd ~/kalibr_workspace catkin_make sudo apt-get install libdw-dev cd kalibr_workspace/src git clone [https://github.com/gaowenliang/code_utils.git](https://github.com/gaowenliang/code_utils.git) cd .. catkin_make
-
安装IMU_Utils
cd kalibr_workspace/src git clone [https://github.com/gaowenliang/imu_utils.git](https://github.com/gaowenliang/imu_utils.git) cd .. catkin_make
到此为止如果没有问题,就代表IMU_utils已经安装好了
-
-
标定流程
imu的标定
-
录制imu的数据集
这里的话题名字需要自己根据自己的修改,建议录制两小时。
rosbag record /mavros/imu/data -O imu_D435i.bag
-
标定启动文件 imu.launch
<launch> <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen"> <param name="imu_topic" type="string" value= "/marvos/imu/data"/> <param name="imu_name" type="string" value= "imu_px4"/> <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/> <param name="max_time_min" type="int" value= "120"/> <param name="max_cluster" type="int" value= "100"/> </node> </launch>
-
随后启动imu_utils 标定IMU
roslaunch imu_utils imu.launch rosbag play -r 200 imu_D435I.bag
会在IMU的data文件夹下得到一个imu_px4的标定文件,我们只需要使用里面的一些参数。
-
新建一个imu.yaml文件,内容如下
-
-
相机标定
-
改变相机发布频率
话题名需要根据自己的话题名更改,降低发布频率主要是为了减小录制包的大小
rosrun topic_tools throttle messages /camera/infra1/image_raw 4.0 rosrun topic_tools throttle messages /camera/infra2/image_raw 4.0
-
录制bag包
rosbag record /cmaera/infra1/image_raw /camera/infra2/image_raw -O camera.bag
-
标定
我这里使用的标定板是官方提供的标定板,并不是常见的棋盘格。大小也需要根据自己的实际大小修改,不可直接粘贴复制!
kalibr_calibrate_cameras --target april_6x6_24x24mm.yaml --bag camera.bag --bag-from-to 5 30 --models pinhole-radtan pinhole-radtan --topics /camera/infra1/image_raw /camera/infra2/image_raw
之后会得到一个标定好的yaml文件,我的是camchain.yaml,具体看你自己。这个yaml文件是为我们联合标定做准备的。
-
-
校准相机和imu
把IMU和相机固定在一起录制bag 包,录制的时候需要充分激励IMU的各个轴,绕3个轴旋转和3个方向的平移。这里附上官方标定动作,需要挂梯子。
https://www.youtube.com/watch?app=desktop&v=puNXsnrYWTY
这里需要修改imu的发布频率,官方推荐为200HZ
rosrun topic_tools throttle messages /camera/imu 200.0 /imu
- 录制相机和IMU的bag包
rosbag record /camera/infra1/image_rect_raw /camera/infra2/image_rect_raw /imu -o camera_imu.bag
- 执行标定
得到了几个配置文件kalibr_calibrate_imu_camera --target april_6x6_24x24mm.yaml –bag camera_imu.bag --cam camchain.yaml --imu imu.yaml
- 录制相机和IMU的bag包
-
参数配置
我们需要将标定出来的参数配置到VINS中,主要是IMU和双目相机之间的变换矩阵,标定出来的结果对系统有着极为重要的影响,精度越高,系统的误差就越小。
我们需要更改的参数如下,当然我们已经都修改好,根据自己的实际情况适当修改。
首先需要更改自己实际订阅的IMU以及双目图像发布话题以及输出路径
下面的矩阵涉及IMU和相机的相对变换,可以由之前的联合标定得到
IMU的数据也是由之前的标定得到
下面参数的意思是在线估计IMU的相机之间的时间差,虽然Intel说D435i已经做好硬件同步,但是Kalibr标定出来还是会有0.06的时间偏差
-
接入Prometheus
我们需要在下面这个文件中修改内容。
以及在vio_onboard.launch文件中修改定位数据来源
到此为止,我们已经做好了所有的部署功能,下面就可以启动VINS了。
-
启动指令
先启动D435i相机节点,作为获取数据来源。
roslaunch realsense2_camera rs_camera.launch
在启动VINS节点,处理D435i获取到的数据,并发布出来。
rosrun vins vins_node /home/amov/vins_gpu/src/VINS-Fusion-gpu/config/realsense/realsense2.yaml
最后启动Prometheus节点,订阅VINS发布出来的数据,并发送给PX4以及地面站。
roslaunch p230_expriments p230_vio_onboard.launch
节点图已经正确发布出来
我们可以看到终端已经把VINS发布出来的数据正确打印出来,并且地面站上的航向角也是正确的
接下来我们我们可以先拿着飞机手动走一圈,看看数据精度是否能够满足飞行要求。
如果数据没有问题我们就可以进行定点飞行。
6002系统刷写
-
下载6002底板系统镜像解压至Ubuntu系统
链接:https://pan.baidu.com/s/1U6sVworbfDhRASzOzB-0SQ
提取码:amov
底板上有3个按钮,上电时长按中间的recovery按钮5s,进入recovery模式。
用USB先将底板连接到电脑,在/6002/Linux_for_Tegra目录下输入
sudo ./flash.sh -r rtso6002 mmcblk1p1
命令刷写系统。刷写成功的界面如下图所示。
2
PX4基础功能及配置
1. PX4基本介绍
- 简介:PX4是一款自动驾驶软件,可以驱动无人机或者无人车。它可以被烧写在某些硬件内,并与地面控制站一起组成一个完全独立的自动驾驶系统。
2. 连接飞控
-
p230不同于其他p系列无人机,由于自身不携带wifi数传,所以我们需要通过UDP的方式连接QGC。 首先需要一个局域网,可以用路由器,主机和板载计算机需要都连接上局域网
-
查看板载计算机ip
我们需要一个局域网,P230和我们的笔记本需要在同一个局域网内。
-
nomachine远程连接板载计算机
点击New
在Protocol下选择NX,点击Continue。
在“Host”下填写板载计算机的ip地址,板载计算机地址参考步骤2,“Port”下默认4000。
在Proxy下默认是“Don’t use a proxy”,点击“Continue”。
在Save as下会生成默认的name,可以不做更改,点击“Done”。
按照上述步骤操作,会自动生成如下图所示用红框标起的链接,点击“Connect”。
在“Username”和“Password”下输入“amov”
Nomachine成功连接板载计算机后会显示如下界面
-
QGC远程连接到飞机
不同于P450的wifi数传,P230并不携带数传,我们需要通过UDP的方式连接到地面站。这里的IP地址是自己主机的IP地址,并且需要在一个区域网内。
然后修改p230_vio_onboard.launch文件中的内容:
在终端执行roslaunch p230_experimentp230_vio_onboard.launch,就可以连接到地面站。
roslaunch p230_experimentp230_vio_onboard.launch
3. 固件编写
-
选择烧写固件
操作界面选择在三个齿轮下,在“固件”界面下,用usb线连接电脑与飞控。会弹出如图所示的界面,右方点击“高级设置”,选择标准版。点击确定。如果有自己的固件,可以选择“自定义固件”,找到自己的固件相应路径,点击确定即可烧写。
-
烧写过程
固件正在刷写中,最后一行显示为固件的版本。
-
烧写完成
固件烧写成功后入下图所示,会有升级完成的提示
4. 传感器自检和校准
-
磁力计校准
按照地面站界面所显示的相应摆放飞机的姿态,然后在水平面内朝一个方向旋转,直至下一个方向。
校准完成后如下图所示
-
陀螺仪校准
陀螺仪校准只需要把飞机平放即可,校准完成后会边框会显示为绿色。
-
加速度计校准
加速度计校准为6面校准,只需要将飞机按照6个面分别摆放即可,没校准的边框为红色,正在校准中边框为黄色,校准完成边框为绿色。
-
水平面校准
水平面校准只需要将飞机放平即可,校准完成后会有“calibration done”的字样,意为校准完成。
5. 遥控器连接与校准
-
点击校准,然后将油门拨到最低,如下图所示
-
然后按照界面右方的操作指示拨动摇杆
-
当全部操作校准完成后,会显示如下界面,此时将油门拨到最低,然后点击下一步。
-
当连续点击两次下一步后,会有如下界面,就表示此时校准已经完成。
6. 电池校准
-
用BB响(低压报警器)测出飞机实际电压,如下图所示
-
在电源界面下,选择“电压分压器”,点击计算
-
如图所示,在测量电压下输入已经测得的实际电压,然后点击“Calculate”
-
等到“测量电压”与“飞机电压”数字接近时,表面电压校准已经完成,此时点击关闭即可。
7. 电调校准
-
在电源设置界面下,点击如箭头所指的“校准”。
注意!
校准前不允许给飞机上电,把桨叶拆卸下来注意!
校准前不允许给飞机上电,把桨叶拆卸下来。 -
给飞机上电,飞机会自动进行电调校准,几秒钟后就会校准完成了。
8. 常用参数设置
-
在参数设置下面的搜索界面,搜索关键字即可调整参数。
-
常用参数:
aid_mask:位置估计来源选择
hgt_mode:高度估计来源选择
Mag_sides:传感器校准面数选择
Usb_chk:当用数据线调试飞机时,有时会显示“usb is not safe”,此时搜索“usb_chk”把数值调到197847最大值即可.
CBRK_I0_Safety:安全开关
当提示无法解锁飞机时,把CBRK_IO_SAFETY数值调到最大值22027,相当于禁用安全开关。
9. PID调参
-
PID调节图示
p为比例项、i为积分项、d为微分项。pid简单来说是一种传函,是在执行器机构传函确定好以后,期望值与观测值有误差,不符合期望值,所以使用pid作为一种调节手段使飞机的观测值达到期望值。pid调参可用如下一张图来解释说明。下图中的期望值为20纯比例P作用下在稳定后有静态误差,为了弥补静态误差,因此引入积分项I。PI作用下,虽然弥补了静态误差,但是因为引入了积分项,使得调节过程中峰值增加,调节周期增长,所以也有不足之处。PD作用下,加快了调节时间减小了调节幅度,但是当系统稳定时与输入有较大误差,D项作用过大的话会引起一定的震动。综合以上,PID作用下,调节的又快又好还没有误差,因此PID调节是理想的控制调节策略。
-
参数调节
在调节参数之前,应该了解px4的代码框架,了解位置控制与姿态控制的关系,内环与外环的关系。
-
姿态控制的角度环参数
-
姿态控制的角速度环参数
-
位置控制参数
10. 任务飞行
手动模式
-
ARCO:特技模式
遥控器输入被转换为横滚、俯仰和偏航速度,当摇杆回中时飞行器不会保持平衡,可以用于翻滚等特技飞行。
-
RATTITUDE:角速率模式
遥控器输入在极限区域被转换为横滚、俯仰的角度和偏航的速度,否则被转换为横滚、俯仰和偏航角度。
-
STABILIZED:稳定模式
遥控器输入被转换为横滚、俯仰的角度和偏航的速度,当摇杆回中后飞行器会保持平衡,之后会随风或其他因素漂移。
辅助模式
-
ALTITUDE CONTROL:高度模式横滚、俯仰和偏航的输入与手动模式一致;当摇杆在~50%油门左右,飞行器将保持当前高度;油门有一个很大的死区,超出后控制上升或下降速度。
参数:MPC_Z_VEL_MAX_UP:最大上升速度,默认3.0m/s;
MPZ_Z_VEL_MAX_DOWN:最大下降速度,默认1.0m/s;
RCX_DZ:X通道(油门通道,由RC_MAP_THROTTLE设定)的死区;
MPC_XXX:影响飞行表现的参数,例如MPC_THR_HOVER定义飞行器悬停的油门。
-
POSITION CONTROL:位置模式横滚控制左右移动速度、俯仰控制前后移动速度,当摇杆回中时飞行器会保持位置;偏航控制速度,与手动模式一致;油门控制上升或下降的速率,与ALTITUDE一致;
自动模式
-
HOLD:保持模式保持在当前位置和姿态(依赖GPS)。参数:MIS_LTRMIN_ALT:悬停最小高度(如果悬停高度低,飞行器会升高)。
-
RTL:返航模式返回HOME位置等待或降落(依赖GPS)。飞行器会首先上升到RTL_RETURN_ALT高度(默认60m,如果实际飞行高于此高度则保持),然后直线飞行HOME位置;到达HOME后,会快速降低到RTL_DESCEND_ALT高度(缓降或停止高度,默认30m),会悬停RTL_LAND_DELAY时间后降落(默认0s,设置为-1表示永远悬停);参数:RTL_MIN_DIST:触发上升的最小距离,如果水平位置离HOME很近,飞行器将直接降落到HOME而非升高到返回高度。
-
TAKE OFF:起飞模式起飞并等待下一步指令(依赖GPS)。该模式为自动模式,遥控器失效(除非切换模式),启动前必须先解锁;飞行器上升到MIS_TAKEOFF_ALT高度(默认2.5m)后等待,上升速度为MPC_TKO_SPEED(默认1.5m/s)。
-
LAND:降落模式在当前位置降落。该模式为自动模式(遥控器失效);飞行器在切换到该模式位置降落,下降速度为MPC_LAND_SPEED直至地面
-
MISSION:任务模式飞行器接受地面站的程序控制指令,如果未收到任务,在当前位置悬停(依赖GPS)。该模式为自动模式,遥控器失效,该模式工作前需解锁;任务通常在QGC创建,也可以通过开发者API,上传到飞控。如果任务已存储并且PX4在飞行,将从立即执行任务;如果任务已存储但PX4着陆,PX4将执行任务,如果任务没有TAKEOFF命令,PX4将在执行剩下任务前飞行至最小高度;如果任务未存储或PX4执行完所有任务命令,飞行状态飞行器会悬停,着陆状态飞行器会等待;可以在QGC手动修改当前任务;当飞行器锁定或新任务上传后,任务会重置;任务可以通过HOLD模式暂停,重新激活后会从继续执行当前任务;
飞行模式设置
-
可以在遥控器上设置通道,一般三挡开关对应飞行模式1、飞行模式4、飞行模式6。如图所示,此时通道5设置的三个模式分别为自稳模式、定点模式、降落模式。
如有需要板载计算机模式和返航模式,也可在开关设置下自行设置。如图所示,设置通道6为offboard模式,通道7为返航模式。
硬件介绍
-
简介: Prometheus600(简称P600)是一款中等大小的无人机开发平台,具有大载重、长续航、可扩展的特性。可搭载激光雷达、NX板载计算机、三轴光电吊舱(10倍光学变焦)、RTK等智能化设备。实现吊舱框选跟踪,激光雷达避障,无人机位置速度指点飞行。本开发平台基于Prometheus开源项目,提供丰富的demo例程,涵盖控制模块,slam模块,规划模块以及目标检测模块等多个无人机及机器视觉相关研究方向,为无人机科研开发助力,致力于让研发更加高效。
-
H16版配置图
-
H16版正俯视图
-
H16版侧俯视图
硬件平台优势及特色
参数指标
-
切勿过放:一般认为单片电芯的电压低于3.5V,就有可能对电池造成损伤,也就是常说的电池过放了,过放的电池会鼓包,这样的电池拿来继续充电是很危险的,可能会引起火灾,建议在电压降到 3.6V 的时候,就不要继续飞行了。因为地面空载测到3.6V,空中满油门飞行的时候,电压就远低于 3.6V,甚至低于 3V,很容易就过放了。
-
切勿过充:放电电压有下限,充电电压也有上限。上限是 4.2V,一节 3S电池,标称总电压11.1V,充满以后就是 12.6V,如果电压超 过了 4.2V,那就是过充,同样会损坏电池。现在的智能充电器会在 4.2V 时自动停充,但要小心有些航模充电器精度差,会过充,还有些充电器可以调节到高于4.2V 的电压,这是针对高压版电池的,普通电池不能用这个功能。充电的时候,模式要选平衡充电。电池长期保存时,电压是有要求的,单片电芯的电压保持在 3.85V 比较好。
-
电池存放:不要满电保存,满电保存对航模电池的放电能力会有 很大的影响,建议每次使用完电池后,都充放电到储存电压,特别是充满后没来得及使用的电池,一定要放电,长期满电存放,会损 坏电池,由于锂电池稳定性先天不足,正常存放也有一定起火概率。很多节锂电池堆放在一起不亚于一颗燃烧弹,平时存放时,电池应该避开易燃物单独保存,有条件的话,用防爆阻燃的容器存放。
开箱讲解
-
接下来主要说明飞机到手之后的开箱讲解
-
1.检查产品外包装
注意!
首先先检查产品外包装有无明显的破损以及严重磕碰,如发现上述情况,请联系我们的售后客服进行相应的处理。 -
2.打开产品外包装
小技巧:
打开产品外包装,注意请将产品包装箱平放,印有logo标语朝上,然后打开上面箱盖,打开包装箱,我们可以看到黑色的泡沫,需要轻轻将各个产品配件从中取出。 -
3.清点产品数量
注意!
清点产品数量,首先请对照发货清单检查飞机和附件数量,然后检查飞机和随机附件外观是否有破损及异常。 -
4.基本上电查看
重要!
注意查看其他清单内容 -
5.开箱视频
详细可以观看开箱视频:
硬件设备说明及用途
软件介绍
- 在板载计算机上面存在两套ROS包,一个是Prometheus功能包,另一个是实机启动p600_experiment功能包。
Prometheus软件框架及基本含义
-
Prometheus的软件框架如下图所示:
基本上分为以下几个模块:
-
控制模块(Prometheus/Modules/control)
控制模块主要与MAVROS进行信息交互,分为两个部分,一部分是输入,一部分是输出。
-
px4_pos_estimator.cpp:主要将板载计算机处理之后的位置数据传给飞控,读取飞控当前的状态信息。
-
px4_sender.cpp:主要将控制指令接口通过px4_sender发送给mavros,从而控制飞机进行相应的动作指令。
支持的为板载计算机提供位置的数据来源有:动捕系统mocap,英特尔T265双目相机,激光雷达定位建图,仿真器gazebo提供模型位置数据,以及SLAM提供位置数据。
提供的控制飞机的接口API(如图):
-
Idle(怠速):意思就是飞机会进入offboard模式,但是在该模式下,没有对飞机进行任何指令的发送。飞机也不会有任何动作。这个指令一般也可以不用。
-
Takeoff(起飞):起飞点为当前点,起飞高度通过 yaml参数设置,单位是米。默认起飞高度是0.5m。
-
Hold(悬停):飞机正在飞行过程中如果接受到 2 指令,会在当前时刻进入悬停状态。
-
Land(降落):降落速度通过 yaml参数设置,单位是m/s ,默认降落速度为0.2m/s 。还有一个 上锁高度到达上锁高度之后飞机会进入飞控的本身降落模式进而缓缓着地,上锁高度通过 yaml 参数进行设置,单位是米,默认是 0.18m,即认为离地不到20cm的时候进入降落飞行模式。
-
Move:该模式就包含我们所称的指点飞行功能,在此模式下,又有5种子模式:
-
XYZ_POS:空间位置控制
-
XY_POS_Z_VEL:水平面位置控制高度速度控制
-
XY_VEL_Z_POS:水平面速度控制高度定高控制
-
XYZ_VEL:空间速度控制
-
TRAJECTORY:轨迹跟踪控制
-
-
规划模块(Prometheus/Modules/planning)
目前实际使用的规划模块是全局规划模块,使用的是A星算法(绿色框选部分)。
-
A_star.cpp :为A星算法的实现
-
global_planner.cpp :为全局规划策略主节点
-
occupy_map.cpp:栅格地图处理,根据膨胀系数,生成安全距离
-
SLAM模块(Prometheus/Modules/slam)
SLAM模块一块为建图模块,另一块为定位模块。
绿色框选部分为建图模块:
-
pointcloud_to_octomap_node.cpp:订阅点云数据,发布八叉树栅格地图
-
elas_stereo_node.cpp:调用双目匹配算法,计算出稠密视差图,生成深度图,发布全局点云
目前板载计算机所搭载的相机包括有D435i和T265,可以利用realsense-ros官方提供的功能包实现RTAB-Map建图。
另外一部分为定位模块:
-
定位模块目前是使用的是T265本身输出的slam结果,具体调用可查看控制模块中的px4_pos_estimator.cpp细节处理。
-
目标检测模块(Prometheus/Modules/object_detection)
目标检测模块比较多(绿色框选部分)
-
web_cam.cpp:USB相机发布ROS话题
-
ellipse_det:椭圆检测处理节点
-
kcf_tracker.cpp:框选跟踪节点
-
landpad_det.cpp:降落板检测
-
color_det:颜色识别节点
-
digitnum_det:手写数字识别节点
目前常用就这些,还有很多其他的识别节点,更多请详细Prometheus开源项目仔细查看。
-
任务模块(Prometheus/Modules/mission)
该模块属于上层应用模块,具体实现哪一种功能。
-
autonomous_landing:自主降落程序
-
circle_crossing:圆形穿框(在真实飞机中简单修改策略,实现圆形跟踪
-
color_line_following:颜色巡线
-
number_detection:数字识别无人机跟踪
-
object_detection:无人机目标框选KCF跟踪
-
planning_mission:路径规划的航点处理(多航点,单航点,多机航点,qgc航点读取)
-
waypoint_tracking:航点跟踪节点(类似与走一个四边形,走其他航线图形)
还有很多具体的应用型节点,这些节点都是对control,object_detection,planning等等各个模块的结合使用,如果想学习如何调用API接口,可以参考其中的代码实现。
-
公用模块(Prometheus/Modules/common)
公用模块中比较核心的就是自定义的msg消息,定义的msg如上图绿色框选所示
-
ControlCommand.msg:控制无人机指令的msg格式,掌握API首先掌握msg定义
-
DetectionInfo.msg:目标检测模块的输出结果
-
DroneState.msg:无人机当下各个状态信息(与板载计算机是否通信连接,解锁或者上锁,当前飞行模式,当前的状态量位置速度加速度及姿态)
-
LogMessageControl.msg:控制端的日志打印信息记录
等等还有很多的自定义msg,规划模块,多机模块的,更多细节可以在板载计算机中查看Prometheus代码或者在Prometheus开源Github上查看。
-
下面附上在板载计算机中Prometheus的代码目录框架×
p600_experiment功能包使用及含义
-
p600_experiment功能包是适配prometheus开源代码的实机闭源功能包。
该文件位置:amovlab_ws/src/p600_experiment
此功能包主要包含
-
参数配置文件config
-
基本的launch文件launch_basic
-
控制相关的launch文件launch_control
-
目标检测相关的launch文件launch_detection
-
路径规划相关的launch文件launch_planning
-
飞控的固件和参数文件px4_firmware
接下来分别从上面各个文件阐述文件里面的内容
-
mavros_config:对mavros相关参数的配置(分为室内一组,室外一组)
-
室内:
-
px4_config.yaml
-
px4_pluginlists.yaml
-
-
室外:
-
px4_config_gps.yaml
-
px4_pluginlists_gps.yaml
-
-
-
launch_basic
p600_circle_det.launch: 圆框检测launch文件
p600_gps_onboard.launch: 室外GPS定点launch文件
p600_landpad_det.launch: 二维码检测launch文件
p600_vio_onboard.launch: 室内T265定点launch文件
rs_t265.launch: T265启动launch文件
-
launch_control
p600_gps_control.launch: 室外GPS指点launch文件
p600_vio_control.launch: 室内T265指点launch文件
-
launch_detection
p600_indoor_circle_tracking.launch: 室内圆框跟踪launch文件
p600_indoor_landing_static_target.launch: 室内二维码降落launch文件
p600_outdoor_circle_tracking.launch: 室外圆框跟踪launch文件
p600_outdoor_landing_static_target.launch: 室外二维码降落launch文件
-
launch_planning
-
室内避障launch文件:
astar_onboard.launch
astar_ground.launch
tf_transform.launch
-
室外避障launch文件:
astar_onboard_gps.launch
astar_ground_gps.launch
tf_transform_gps.launch
资源下载链接
-
软件
百度网盘:下载链接
提取码: amov
充电
需要的设备
-
充电线
-
转接线
-
无人机电源 6s
视频讲解(此版本没有4S电池)
-
演示视频如下:
开始充电
-
连接充电器与电源
-
根据相应的电池设置充电器.请确保相应电池使用相应的充电设置,否则可能导致电池报废
-
6s 10000mAh 无人机电源充电设置,如图
-
-
长按最右边start按键启动(长按时听到铃声则表示一开始充电)
-
如下图操作查看电池电量(BB响测量6S电池有时会显示异常)
平衡充说明书C1-XR平衡充使用说明书.pdf
首次飞行
-
本节主要讲解室外GPS下的P600Homer版首次飞行。
注意
使用室外GPS定位的飞行环境需要在空旷的区域,搜星数量在13颗以上,水平定位因子在1.0或以下时,等待gps尾灯闪烁绿灯的时候即可。
准备工作
-
软件准备
准备一台笔记本电脑,电脑系统不做要求,可以是Windows7,Windows10或者是Ubuntu系统。需要安装QGroundControl(以下简称QGC)和nomachine。QGC的作用是连接到飞机,监控飞机本身的状态(传感器是否正常,参数配置是否正常);nomachine用作远程连接到板载计算机。
提示
软件安装包请在百度网盘自主下载网盘链接提取码:amov
从图中可以看到,有不同操作系统下的安装包,根据自己笔记本电脑系统安装相应的QGC和nomachine。
-
安装QGC地面站
正确安装上面安装包之后,打开QGC地面站:
注意
最下方的版本是V4.0.8 -
安装nomachine
正常安装按完成之后,打开nomachine:
-
p600无人机Homer版,如下图所示
-
P600电池
-
遥控器电池
-
安全绳
飞行前准备
-
将螺旋桨展开,如下图所示,同时检查螺旋桨是否有松动,再检查下螺丝是否有松动,以及连接线是否对螺旋桨有影响
-
接着我们检查下电池是否有破损、漏液等情况
确保电池没问题后,将电池水平推入电池仓,确保电池不会松动。
打开遥控器,查看遥控器电量TX(在遥控器显示屏的右上角)
-
首次飞行用到遥控器的两个摇杆和一个拨杆:
左边的摇杆:上下控制无人机的高度,左右控制无人机的偏航;
右边的摇杆:上下控制无人机的前进与后退,左右控制无人机的向左与向右;
拨杆SWC:飞行模式切换开关,上位代表定高模式,中位代表定点模式,下位代表降落模式。
确保遥控器、飞机上的桨叶与螺丝没有松动的情况下,将电池沿着滑槽滑入并最后卡住,并且按下开机按钮
-
电源按钮灯亮以后证明开机成功
Homer无线连接飞控
-
连接Homer
警告!
请一定使用HOMER的供电线(上面红色标签:电源线12V那根)!请注意分别!RTK和HOMER供电线混用会导致HOMER烧坏! -
如下图,homer和供电口和供电线,使用蓝色马克笔标记,防止接错
- 正常使用,需要连接三个口,如下图
- POWER供电口
- LAN1网口
- 读取地面端RTK数据的UART2口
- 接口说明
- 地面端RTK供电口
- 地面端RTK供电线手写标签
- 地面端RTK供电输入口,接XT60电池
- 地面端RTK数据输出口(com1和com2都有RTCM定位数据输出,此处接com1)
- 地面端RTK的天线,ANT2口接蘑菇头天线
- 地面端Homer供电口
- 地面端Homer供电线手写标签
- 地面端Homer供电输入口,连接XT30转XT60,然后连接XT60电池
- 地面端Homer网口
- 连接电脑
- 地面端Homer的UART2串口输入(读取地面端RTK的RTCM数据)
- 配置操作端电脑IP,和Homer在同一个网段,且IP不冲突。
- 无线连接飞控
- 先打开QGC软件,点击图标打开通信连接
- 新建一个连接,名字任意,类型为TCP,主机地址为飞控的IP,端口为8080,然后点击确认
- 选择新建的连接,点击连接。
- 下图,3表示连接成功
在地面站查看无人机电池电量,降到22.2V时建议充电
-
查看无人机的姿态球,上图,3表示姿态球,4、表示无人机的高度,5表示航向角
查看控制模式,操作方式为控制遥控器SWC通道,分为上、中、下三通道,分别对应不同的模式
注意!
新手的话建议使用position定点模式
警告!
在室外飞行一定要连接上QGC地面站,在拨到定点模式时查看GPS卫星数量,以防出现未拨进定点模式或者定点很差的情况!进行室外飞行时保持遥控器处于开机状态!(短距离飞行也可以拴上安全绳)以防止无人机参数出错而飞行出错炸机或者无人机丢失!
也可以查看下安全模式,主要是看低电量保护、地理围栏、以及返航高度(需根据周围环境进行设置),如下图:
确认切到定点模式后,将左手摇杆向右下解锁无人机,然后缓慢往上推,将油门推过50%的时候电机会加快转速,无人机会缓慢起飞,然后缓慢拉低油门,降落下来后,等待电机处于怠速状态,左摇杆左下上锁,开始测试任务规划,首先我们需要清除上次规划的航点,然后设置起飞点
警告!
降落时请务必等待电机处于怠速状态再进行上锁操作,处于非怠速状态左摇杆左下上锁会使无人机倾斜倾倒甚至炸机!
清除航点
设置起飞点
设置航点,途中标记3的位置为航点距飞机的距离
可以设置飞机飞航点的高度与距离,设置完成后点击右上角的上传
滑动解锁任务
确认为定点模式,gps信号正常后即可解锁飞航点
注意!
若有异常,比如不按照航线去飞,则通过切到定高模式,再切回定点模式,会取消任务进行手动控制
飞完航点后,可进行一键返航,点飞行模式,然后选择return即可
之后飞机会回到其实起飞的高度并自动降落
降落后左摇杆左下上锁
上锁后,长按电源键五秒给无人机断电,电机灯熄灭后证明断电成功,然后拔掉电池,关闭遥控器
视频演示
首次飞行(H16遥控器版)
-
本节主要讲解室外GPS下的P600搭配H16遥控器的首次飞行。
注意!
使用室外GPS定位的飞行环境需要在空旷的区域,搜星数量在13颗以上,水平定位因子在1.0或以下时,等待gps尾灯闪烁绿灯的时候即可。
准备工作
-
p600无人机(H16满配版),如下图所示
-
P600电池
-
H16遥控器
-
安全绳
飞行前准备
- 将螺旋桨展开,如下图所示,同时检查螺旋桨是否有松动,再检查下螺丝是否有松动,以及连接线是否对螺旋桨有影响
- 接着我们检查下电池是否有破损、漏液等情况
确保电池没问题后,将电池水平推入电池仓,确保电池不会松动。
注意!
以下为H16版本的操作说明,使用Homer版本的请点击此处跳转。
-
为飞机上电,稍等一两分钟,确保飞机上的遥控器接收机指示灯亮起,如下图所示;
-
点开遥控器主页面上的H16小助手,如图所示;
-
进入如下界面,如下图所示,
-
点击对频,进入如下界面
这是正常连接的状态,H16遥控器已经正常连接,图数传均正常;如果显示未连接,请确保飞机接收端正常启动,指示灯亮起。如需重新对频,将接收机通电后等待10秒后长按接收机SET,白灯闪烁时松开SET。再进入H16助手,点击对频,点击对频(对频成功后会显示已连接)。
提示:
如无必要,请不要进行重新对频操作,无人机出厂时已进行过对频操作。
H16连接QGC
-
确认遥控器正常连接后,回到遥控器主页面,点开QGC进入通讯连接,如图所示;
[1] 点击通讯连接
[2] 点击添加
[3] 将类型更改为UDP
[4] 监听端口改为14551
[5] 点击确定进行保存
然后点击“连接”,连接成功后如下图所示;
地面站连接成功后,记得检查GPS搜星数量(至少保证搜星数量在10颗以上,即GPS指示灯变为绿色),如下图所示(图示中搜星17颗)
电脑QGC连接飞控
方法一:使用USB-type-c连接
[1] 使用USB转type数据线连接H16遥控器和笔记本电脑,然后打开H16遥控器的设置页面,打开无线与网络→网络共享与便携式热点。
[2] 如图所示打开USB网络共享和便携式WLAN热点。
注意!
使用USB共享网络时,需要先将数据线连接上电脑和遥控器,否则会出现USB共享网络选项无法点击的情况!
[3] 在终端ping一下192.168.144.11,如图下所示就是通路,可以继续下一步。
注意!
使用USB共享网络时,需要将电脑上的其他网络连接断掉。
提示:
如果ping不通可以检查一下USB网络共享和便携式WLAN热点是否都是打开状态,重新拔插一下。
[4] 打开电脑QGC软件,点击左上角Q图标,点击通讯连接,点击添加,如下图所示。
[5] 填写连接名字(可以不填),类型选择TCP连接,主机地址填入192.168.144.11,TCP端口填入5760,点击确认,如下图所示。
[6] 选择连接,点击连接,连接成功后状态栏会显示电量和飞行模式等信息。
方法二:使用网线连接
[1] 使用网线连接H16遥控器和笔记本电脑,然后打开H16遥控器的设置页面,打开无线与网络→网络共享与便携式热点。
[2] 如图所示打开以太网网络共享和便携式WLAN热点。
[3] 在终端ping一下192.168.45.1,如图下所示就是通路,可以继续下一步。
[4] 打开电脑QGC软件,点击左上角Q图标,点击通讯连接,点击添加,如下图所示。
[5] 填写连接名字(可以不填),类型选择TCP连接,主机地址填入192.168.45.1,TCP端口填入5760,点击确认,如下图所示。
[6] 选择连接,点击连接,连接成功后状态栏会显示电量和飞行模式等信息。
方法三:使用H16热点TCP连接
注意!
H16遥控器的热点只支持5G频段,
[1] 使用网线连接H16遥控器和笔记本电脑,然后打开H16遥控器的设置页面,打开无线与网络→网络共享与便携式热点。
[2] 如图所示打开以太网网络共享和便携式WLAN热点。
[3] 电脑搜索热点连接,wifi名称和密码可以自行设置。
[4] 打开电脑QGC软件,点击左上角Q图标,点击程序设置,如下图所示。
[5] 点击通讯连接,点击添加,如下图所示。
[6] 填写连接名字(可以不填),类型选择TCP连接,主机地址填入192.168.45.1或者192.168.144.11,TCP端口填入5760,点击确认,如下图所示。
[7] 也可以选择UDP连接,类型选择UDP连接,监听端口填14552,点击添加,写入IP地址192.168.45.1或者192.168.144.11,点击OK保存设置,如下图所示。
[8] 选择连接,点击连接,连接成功后状态栏会显示电量和飞行模式等信息。
图传连接
-
使用h16 本身的图传显示点开h16 助手,选择视频查看,如下图
进入界面后,点击屏面下方的摄像图标即可,出厂默认设置的为HDMI/MIPI模式,用来显示通过接收机端MIPI/HDMI传输的图像。 也可以通过设置查看其他的视频流,如下图所示
UART VIDEO模式,可以用来显示单轴云台、MINI摄像头图像(需另接转换板)
自定义模式,用来显示通过天空端的网口来传输图像
h16 本身的图传显示器界面可以自由的缩放,悬浮于主窗口上。
-
在QGC地面站显示图传
1.点击QGC中的系统设置标识
2.点击常规
3.将视频来源更改为RTSP Video Stresm
显示MIPI、HDMI 图像在RTSP URL中填入
rtsp://192.168.43.1:8554/fpv_stream
即可。
使用nomachine连接板载计算机
使用H16连接板载计算机
成功连接QGC后,回到H16主页面,打开主页面上的nomachine,输入板载电脑地址连接即可(出厂默认是192.168.144.60),H16可通过usb接口外接鼠标和键盘操作,机载电脑默认账号和密码为:amov,如图所示:
使用笔记本电脑连接板载计算机
[1] 先根据电脑QGC连接飞控章节,保证电脑能与空中端进行通信.
[2] 检查电脑能否与机载电脑进行通信,笔记打开cmd终端,使用命令ping 192.168.144.60
验证是否正确连接
[4] 设置完成后,我们就可以在外接电脑上打开nomachine,输入设置好的板载ip地址(无人机出厂默认ip为:192.168.144.60, 帐号密码为: amov),即可远程操作板载计算机。
正式飞行
-
首次飞行用到遥控器的两个摇杆和一个拨杆:
左边的摇杆:上下控制无人机的高度,左右控制无人机的偏航;
右边的摇杆:上下控制无人机的前进与后退,左右控制无人机的向左与向右;
拨杆SWC3(SWC):飞行模式切换开关,上位代表定高模式,中位代表定点模式,下位代表降落模式。
确保遥控器、飞机上的桨叶与螺丝没有松动的情况下,将电池沿着滑槽滑入并最后卡住,并且按下开机按钮
-
电源按钮灯亮以后证明开机成功
-
在地面站查看无人机电池电量,降到22.2V时建议充电
-
查看无人机的姿态球,上图,3表示姿态球,4、表示无人机的高度,5表示航向角
查看控制模式,操作方式为控制遥控器SWC3通道,分为上、中、下三通道,分别对应不同的模式
注意!
新手的话建议使用position定点模式警告!
在室外飞行一定要连接上QGC地面站,在拨到定点模式时查看GPS卫星数量,以防出现未拨进定点模式或者定点很差的情况!进行室外飞行时保持遥控器处于开机状态!(短距离飞行也可以拴上安全绳)以防止无人机参数出错而飞行出错炸机或者无人机丢失!也可以查看下安全模式,主要是看低电量保护、地理围栏、以及返航高度(需根据周围环境进行设置),如下图:
确认切到定点模式后,将左手摇杆向右下解锁无人机,然后缓慢往上推,将油门推过50%的时候电机会加快转速,无人机会缓慢起飞,然后缓慢拉低油门,降落下来后,等待电机处于怠速状态,左摇杆左下上锁,开始测试任务规划,首先我们需要清除上次规划的航点,然后设置起飞点
警告!
降落时请务必等待电机处于怠速状态再进行上锁操作,处于非怠速状态左摇杆左下上锁会使无人机倾斜倾倒甚至炸机!清除航点
设置起飞点
设置航点,途中标记3的位置为航点距飞机的距离
可以设置飞机飞航点的高度与距离,设置完成后点击右上角的上传
滑动解锁任务
确认为定点模式,gps信号正常后即可解锁飞航点
注意!
若有异常,比如不按照航线去飞,则通过切到定高模式,再切回定点模式,会取消任务进行手动控制飞完航点后,可进行一键返航,点飞行模式,然后选择return即可
之后飞机会回到其实起飞的高度并自动降落
降落后左摇杆左下上锁
上锁后,长按电源键五秒给无人机断电,电机灯熄灭后证明断电成功,然后拔掉电池,关闭遥控器
视频演示
-
Homer版首次飞行视频教程:
-
H16遥控器使用视频演示:
ttyUSB重命名规则
为了防止板载计算机同时插有吊舱控制线,激光雷达等串口线时,ttyUSB序号不断变化,导致程序数据读取错误情况。对系统的USB口作以下规则固定。
-
AllSpark机载计算机的插口说明
倒置状态下(无人机上倒置安装),左边为
/dev/right_down
,右边为/dev/right_up
ttyUSB重命名文件地址
/etc/udev/rules.d/amov.rules
吊舱: 右边(
/dev/right_down
) -
NX机载计算机的插口说明
example:
-
在插入左上角USB口时,实际应该读取
/dev/left_up
-
在插入右上角USB口时,实际应该读取
/dev/right_up
吊舱: 右下角(
/dev/right_down
)雷达: 右上角(
/dev/right_up
)
吊舱控制
- 本节介绍吊舱控制包的使用,仅适用于吊舱开发套件(TX板)和P600无人机(NX板)使用. 演示怎么单独运行吊舱的键盘控制和吊舱跟踪.
键盘控制
-
3轴控制, 缩放控制,变焦控制,视频拍摄(小吊舱无变焦缩放功能)
cd /home/amov/gimbal_control chmod +x *.sh chmod +x src/gimbal_control/scripts/control_server.py # 小吊舱G1 ./test_keyboard_control_g1.sh # 大吊舱Q10f ./test_keyboard_control_q10f.sh
吊舱跟踪
-
跟踪时自动缩放(小吊舱无变焦缩放功能)
cd /home/amov/gimbal_control chmod +x *.sh chmod +x src/gimbal_control/scripts/control_server.py # 小吊舱G1 ./test_kcf_g1.sh # 大吊舱Q10f ./test_kcf_q10f.sh
-
框选一个较小的目标
-
之后,自动放大
-
框选一个较大的目标
-
之后,自动缩小
常见问题
-
无法打开摄像头、摄像头不存在、OpenCV Error、Unable to open Serial Port ! Or Unable to open Camera
- 吊舱断电重启
- 拔插控制吊舱的USB线
-
检查吊舱控制线是否在正确位置,参见USB插口说明
-
关闭跟踪中自动缩放 在
test_kcf.sh
改_auto_zoom:=true
为_auto_zoom:=false
rosrun gimbal_track tracker_kcf _auto_zoom:=false _max_size:=0.3 _min_size:=0.1
功能
- 视频录制,图片拍摄
- 速度,角度3轴混合控制
- 基于面积反馈的自动缩放
- 视频推流
- 电机姿态,IMU姿态/速度,镜头倍速反馈
- 吊舱跟踪
RTK连接配置
我们需要准备好连接的工具,一块 3S 电池,一个 RTK 基站端,RTK 基站的蘑菇头天线,RTK 的供电线,Uart 转 USB 的 TTL,H16 遥控器,一根 Type-C 的线和一根安卓的数据线,一台 装有串口转发工具的 Windows 电脑。
警告!
请一定使用RTK的供电线(上面白色标签:RTK供电线那根)!请注意分别!RTK和HOMER供电线混用会导致设备烧坏!
- 如下图,RTK和供电口和供电线,使用红色马克笔标记,防止接错
- 正常使用,需要连接两个口,如下图
- POWER供电口
- 输出地面端RTK数据的com1口
- 接口说明
- 地面端RTK供电口
- 地面端RTK供电线手写标签
- 地面端RTK供电输入口,接XT60电池
- 地面端RTK数据输出口(com1和com2都有RTCM定位数据输出,此处接com1)
- 地面端RTK的天线,ANT2口接蘑菇头天线
- 地面端Homer供电口
- 地面端Homer供电线手写标签
- 地面端Homer供电输入口,连接XT30转XT60,然后连接XT60电池
- 地面端Homer网口
- 连接电脑
- 地面端Homer的UART2串口输入(读取地面端RTK的RTCM数据)
将 Uart 转 USB 接到 RTK 基站的 COM1 口,RTK 供电线接到 POWER 口,蘑菇头天线 拧到 RTK 的 ATN2 接线柱,然后连接到电脑。
将 H16 遥控器连接到电脑,方法参考首次飞行电脑链接nomechine
在 windows 电脑上打开我们的串口转发工具,它会自动检测到连接的串口,串口设置和图 上一样即可,然后在网络设置选择 UDP 模式,输入本机的 IP 地址和端口号,这里端口号默 认为 8000,然后输入目标 IP,即 H16 遥控器的 IP 为 192.168.144.11,目标端口为 13552,目 标 IP 和端口必须这样设置,因为这是 UDP 服务器上写好了的。
串口工具的输出框会实时打印接收的数据,因为,代码中并未对 RTCM 数据编解码转 换,所以显示的是乱码,但是并不影响使用,因为串口转发工具只会转发数据,而不会对数 据进行操作。
QGC 软件连接到飞控,方法参考首次飞行电脑链接nomechine。点击卫星标志,查看飞机进入 RTK 状态没有
进阶功能-室外指点飞行
- 本节主要讲解P600系列无人机在室外的指点飞行演示。视频紧接上节内容 首次飞行 ,默认已经通过home图数传连接到QGC地面站和nomachine远程连接到板载计算机,主要分为以下几点进行讲解:启动指令,命令行控制终端详解,指点飞,速度控制,绕圆飞行以及最后的视频演示。
启动指令
-
首先启动命令一:
roslaunch p600_experiment p600_gps_onboard.launch
-
再启动命令二:
roslaunch p600_experiment p600_gps_control.launch
命令行控制终端详解
-
命令行控制终端图如下:
其中
0 表示的是怠速:飞机会进入offboard模式,但是在该模式下,没有对飞机进行任何指令的发送。飞机也不会有任何动作,这个指令一般也可以不用。
1 表示的是起飞:起飞点为当前点,起飞高度通过 yaml参数设置,单位是米,默认起飞高度是0.5m。
2 表示的是悬停:飞机正在飞行过程中如果接受到 2 指令,会在当前时刻进入悬停状态。
3 表示的是降落:降落速度通过 yaml参数设置,单位是m/s ,默认降落速度为0.2m/s 。还有一个 上锁高度 到达上锁高度之后飞机会进入飞控的本身降落模式进而缓缓着地,上锁高度通过 yaml 参数进行设置,单位是米,默认是 0.18m,即认为离地不到20cm的时候进入飞控本身的降落飞行模式。
4 表示的是move模式:该模式就包含我们所称的指点飞行功能,在此模式下,又有5种子模式:0对应XYZ_POS,空间位置控制;1对应XY_POS_Z_VEL,水平面位置控制,高度速度控制;2对应XY_VEL_Z_POS,水平面速度控制,高度定高控制;3对应XYZ_VEL,空间速度控制;5对应TRAJECTORY,轨迹跟踪控制。
指点飞
-
先在此终端输入0选择命令输入控制
-
根据终端提示,选择 4 move飞行模式,然后选择 0 空间位置控制,然后选择 1 BODY_FRAME惯性坐标系,最后输入期望的状态,空间位置xyz和航向角yaw。这里我们发送的指令是x为0,y为0,z为3,yaw为0。让飞机往前x轴飞行0m,往左y轴飞行0m,往上z轴飞行到3m,航向角保持不变发送为0。即让无人机飞到当前高度上方三米的地方。
-
如图所示,无人机飞到了起飞点上方三米的位置处
速度控制
-
我们还可以继续输入命令进行速度控制和绕圆飞行。
以下依次输入4 选择move,输入2 选择xy速度控制z位置控制,输入0 选择ENU_FRAME,输入1 表示x方向速度为1m/s,输入0 表示y方向速度为0m/s,输入3 表示高度为3米。
输完之后无人机会以1m/s的速度向前方飞行。
在我们想停止速度控制的时候可以在终端输入2 选择Hold,无人机会停在当前位置。
-
绕圆飞行
然后我们可以开始绕圆飞行,我们依次输入4 选择move,输入5 选择TRAJECTORY,输入0 选择Circle也就是绕圆飞行,最后输入想进行绕圆飞行的时间,单位是秒。这里输入的100也就是100秒。
然后我们可以看到无人机开始绕圆飞行
视频演示
-
视频链接: https://www.bilibili.com/video/BV17V411j7Em?p=2
视频演示如下:
进阶功能-航点避障飞行
- 本节主要讲解P600系列无人机在室外的航点避障飞行演示。视频紧接上节内容 首次飞行 ,默认已经通过home图数传连接到QGC地面站和nomachine远程连接到板载计算机,主要分为以下几点进行讲解:启动指令,起飞,避障飞行,以及最后的视频演示。
启动指令
-
首先启动
roslaunch p600_experiment astar_onboard_gps.launch
-
再启动第二个指令
roslaunch p600_experiment astar_ground_gps.launch
起飞
-
接着在此终端依次输入指令让无人机起飞到1.4米高度。
先输入0
再输入4
再输入0
再输入0
再依据当前飞机的本地位置数据的x输入对应期望x
再对应输入y的位置
再输入高度z为1.4,这个不需要根据当前无人机本地位置来写
期望偏航为0
然后遥控器切定点解锁切offboard,无人机会自动起飞到1.4米高度。
避障飞行
-
先点击rviz里的3D Nav Goal
-
然后在rviz中点一个目标点
-
无人机会自动规划出绕开障碍物的路径
-
无人机到达目标点后,可以遥控器切出offboard,然后手动操控遥控器降落。
视频演示
-
演示视频如下:
常见问题
-
Q: 无法建图, 建图异常
A:
ls /dev
查看是否多个 ttyUSB, 如果有多个请将其他的拔掉,然后重新拔插激光雷达的串口线,具体原因见 吊舱无法控制 的常见问题1。
吊舱视觉追踪
1.启动指令
- 小吊舱G1启动指令
roslaunch p600_experiment p600_outdoor_target_tracking_g1.launch
- 大吊舱Q10f启动指令
roslaunch p600_experiment p600_outdoor_target_tracking_q10f.launch
Tip: simarpn模型文件由onnx文件在线转化为tensorrt engine,转化过错较慢,所以启动速度较慢,整个项目全部启动完成实测大约需要40秒左右,请耐心等待
2.跟踪实现
1.手动解锁起飞到一定高度,运行目标追踪launch文件(以小吊舱G1为例)
2.依次检查四个终端打印信息均正常、无报错后,在切换offboard模式前,重新对目标进行框选,观察终端打印数据是否正常(比如X_VELOCITY等速度值是否过快,防止产生意外,猛冲等情况;正常情况下,xyz轴方向的速度接近于0)
3.切换offboard模式,无人机进行追踪
3.终端讲解
1.launch文件运行的窗口可实时反映出px4_sender节点反馈的相关信息,例如速度信息,加速度信息,位姿信息等
2.左边第二个窗口可云台控制节点,实现吊舱角度控制,速度控制功能,发布图形等功能
3.左边第三个窗口基于SiamPRN的视觉追踪算法,获取图像数据,通过对吊舱发布控制误差量,对吊舱运动进行闭环控制,使吊舱对目标进行追踪
4.最后一个窗口发布control_command话题,提供给px4_sender节点数据,使px4_sender对无人机进行位置、速度等控制,实现追踪
吊舱跟踪视频演示
-
Q10f吊舱演示
-
G1吊舱演示
圆叉降落
注意
在高度数据不准时,有时候会出现降落后,无人机无法上锁的问题。针对这种情况,请手动切出OFFBOARD模式(遥控器最右边的打到最上方),手动上锁。此BUG正在修复,请等待通知。
1.启动指令
- 小吊舱G1启动指令
roslaunch p600_experiment p600_circlex_landing_g1.launch
- 大吊舱Q10f启动指令
roslaunch p600_experiment p600_circlex_landing_q10f.launch
2.圆叉降落实现
1.运行圆叉降落launch文件,然后手动解锁起飞到一定高度(以小吊舱G1为例)
2.依次检查六个终端打印信息均正常、无报错后,在最后一个端口输入1或2来选择吊舱控制模式(yaw+pitch 或 roll+pitch 区别在于控制的轴不同,yaw+pitch时吊舱只有yaw和pitch轴会运动,roll保持0度。同理roll+pitch时,yaw保持0度)
3.观察无人机是否检测到目标,观察终端数据是否异常(比如X_VELOCITY等速度值是否过快,防止产生意外)
4.切换offboard模式,无人机会向圆叉降落版移动,并完成降落
3.终端讲解
(第四、五窗口为数据接收窗口,不做讲解)
- launch文件运行的窗口可实时反映出px4_sender节点反馈的相关信息,例如速度信息,加速度信息,位姿信息等
2.左边第二个窗口可云台控制节点,实现吊舱角度控制,速度控制功能,发布图形等功能
- 左边第三个窗口订阅吊舱画面ros话题,对检测的圆叉目标数据进行解算,发布误差量发布给吊舱追踪话题
4.最后一个窗口选择吊舱追踪的控制模式,订阅吊舱信息及追踪信息,解算后发布信息给吊舱控制及无人机控制话题
仿真环境
-
提示:
如果您不想自己安装下面的仿真镜像且迫不及待想运行prometheus仿真,我们有prometheus仿真主机(到手就可以使用)淘宝链接笔记:
该仿真系统适配prometheus项目,可以实现功能如上图所示。如果你对prometheus项目感兴趣,不用为仿真环境问题而头疼脑大,让你1个小时跑通prometheus代码。让你快速掌握无人机仿真与无人机实机实验的完美契合;让研发更高效!注意!
本镜像提供了两种安装方式:虚拟机安装和单系统安装虚拟机安装不用制作启动盘,安装最简单
推荐配置:CPU:i7 6700HQ 内存:16G 硬盘:60G 以上
单系统安装需要制作启动盘,并且保证该电脑的硬盘数据备份
推荐配置:CPU:i7 6700HQ 内存:8G 硬盘:60G 以上
虚拟机使用
-
虚拟机中使用prometheus镜像,一种是Windows下面的vmware虚拟机使用,另外一种是Ubuntu下面的Oracle VM VirtualBox使用
-
VMware
默认已经安装好vmware虚拟机,如果没有安装过vmware虚拟机,请先下载安装,点击此处 下载地址 ,安装vmware问题,可自行百度搜索,在此不做详细说明。
-
新建虚拟机
小技巧:
最大磁盘大小:40GB勾选将虚拟磁盘拆分成为多个文件
-
点击自定义硬件按钮
小技巧:
推荐内存大小8G以上
处理器数量4个以上(根据自己电脑调节)
网络适配器:桥接模式
-
修改配置如下图所示
-
点击开启此虚拟机
-
点击Install AMOVOS V2
-
勾选正常安装,如下图所示
-
勾选Something else选项,如下图所示
点击New Partition Table 新建分区,如下图所示
分区 | 容量 | 挂载点mount point |
第一个分区 | 0.5G | boot |
第二个分区 | 8G | SWAP |
第三个分区 | 剩余大小 | / |
-
配置分区表,Device for boot loader installation 选项选择/boot挂载点所在的分区/dev/sda1,如下图所示
-
点击Contine按钮,如下图所示
-
输入您的账号和密码,如下图所示
-
点击Restart Now 按钮,如下图所示
-
系统安装完成!!!
Oracle VM VirtualBox
- 默认已经安装好Oracle VM VirtualBox虚拟机,如果没有安装过Oracle VM VirtualBox虚拟机,请先下载安装,点击此处 下载地址 ,相关安装问题,可自行百度搜索,在此不做详细说明。
单系统使用
所谓单系统使用,一般你有台崭新的电脑,想让该电脑完美无暇的跑通prometheus仿真功能demo,你可以参考prometheus镜像在单系统中使用。该系统一般都是在Windows下做好启动盘,进而给电脑装新的系统。大概需要一下几个步骤:
工具准备
-
Rufus软件:http://rufus.ie/zh/
-
U盘一个,推荐USB3.0的接口,容量16G以上:
-
prometheus 镜像文件
启动盘制作
-
格式化U盘
警告!
在格式U盘之前一定要备份好U盘中的数据!!!! -
使用Rufus软件
小技巧:
选择U盘设备
选择镜像文件
其他选项,请查看上图
点击开始
镜像写入到U盘后,拔下U盘,插入到需要装系统的电脑
演示视频
-
视频演示如下:
系统安装
-
不同电脑开机按启动菜单快捷键参考如图所示,注意有的笔记本电脑需要FN+Fx进行组合:
-
选中U盘启动选项如图所示:
-
开机启动选择U盘启动,选择Install AMOVOS选项如图所示:
-
点击继续,如下图所示
-
选择Normal installation 选项,如下图所示
-
选择Something else 选项,如下图所示
警告!
Device for boot loader installation 选项选择/boot挂载点所在的分区/dev/
引导分区的挂载点优先选 /boot/efi 没有 /boot 也可以的
分区 | 容量 | 挂载点mount point |
第一个分区 | 0.5G | boot |
第二个分区 | 8G | SWAP |
第三个分区 | 剩余大小 | / |
-
点击
Install Now
,开始安装系统,耐心等待安装完成 -
点击
Restart Now
,重启电脑 -
拔掉U盘,按下回车,系统安装成功啦!
Prometheus镜像快速使用
按照上述三种方式安装好prometheus系统镜像之后,你可以在桌面上看到prometheus镜像快速入门文档,或者参考该部分文档。
第一步、更新系统
-
打开一个终端,更新一下当前系统。
sudo apt-get update
第二步,下载编译
注意!注意!注意!
本章Prometheus仿真环境配置教程为Prometheus-v1版本的教程, 需要注意,由于Prometheus-v2版本更新,Prometheus-v1和Prometheus-v2相关项目分支存在差异
Prometheus-v2:Prometheus为main分支,prometheus_px4为1.12.3分支
也就是说如果你要配置Prometheus V1,那么在最开始不能直接git clone,那样会直接下载最新Prometheus 你需要指定分支v1.1下载 如下
git clone -b v1.1 https://gitee.com/amovlab/Prometheus.git
#进入目录检查一下分支
cd Prometheus
git branch
#显示* v1.1代表分支下载正确
Prometheus-v1:Prometheus为v1.1分支,prometheus_px4为1.11.1分支
这个和上面同理,下载时需要指定分支,如下
git clone -b Prometheus_PX4_1.11.1 https://gitee.com/amovlab/prometheus_px4.git
#进入目录检查一下分支
cd prometheus_px4/
git branch
#显示* Prometheus_PX4_1.11.1代表分支下载正确
如果需要搭建Prometheus-v2版本,需要前往 Prometheus V2 Wiki手册
-
下载prometheus_px4:
打开一个终端(ctrl+alt+t),执行如下的下载指令:
#前面下载好就可以不用下载了 git clone -b Prometheus_PX4_1.11.1 https://gitee.com/amovlab/prometheus_px4.git
-
编译prometheus_px4:
进入到 prometheus_px4 路径之下,先更新子模块,再编译软件在环代码,指令如下:
cd ~/ && ./install_requirements.sh
cd prometheus_px4/
make submodulesclean
更新子模块,时间稍微久一点(5 分钟)(或者使用
git submodules update --init-- recursive
make amovlab_sitl_default
编译指令
-
下载Prometheus代码:
打开一个新的终端(ctrl+alt+t),下载指令如下:
#前面下载好就可以不用下载了 git clone -b v1.1 https://gitee.com/amovlab/Prometheus.git
-
编译Prometheus代码:
进入到 Prometheus 代码目录之下,执行编译指令如下:
cd Prometheus/
./compile_all.sh
如果下载编译均正常执行完成,至此,恭喜你,下载编译执行非常好,所打开的终端也可以全部关闭。
第三步、测试系统是否正常
-
测试prometheus_px4
打开一个新的终端,进入到 prometheus_px4 路径之下,运行启动 gazebo 仿真,指令执行如下:
roscd px4/
make amovlab_sitl gazebo_p450
如果顺利打开了 gazebo,并有 p450 模型的加载,就表示正常,使用 ctrl+c 关闭终端。
随后打开一个新的终端,利用 roslaunch 启动启动 gazebo+mavros+prometheus_px4 仿真,运行指令如下:
roslaunch px4 mavros_posix_sitl.launch
如果顺利打开了 gazebo,并有 p450 模型的加载,就表示正常,使用 ctrl+c 关闭终端。
可以进行 Prometheus 的测试啦!
-
测试Prometheus
prometheus 的正常运行是依赖 prometheus_px4 的正常运行,打开一个新的终端,执行指令如下:
roslaunch prometheus_gazebo sitl_control.launch
等待 gazebo 和 rviz 全部正常启动之后,在终端中如果选择 0 进入终端指令操控,根据终端指令提示,可以进行 Prometheus 系统的仿真了。
如果都没有问题,恭喜你,prometheus 镜像的快速入门你已经掌握了,了解更多的功能吧。
小技巧:
Ubuntu下安装deb软件包的方式 输入sudo dpkg -i xxx.deb
仿真环境
-
提示:
如果您不想自己安装下面的仿真镜像且迫不及待想运行prometheus仿真,我们有prometheus仿真主机(到手就可以使用)淘宝链接笔记:
该仿真系统适配prometheus项目,可以实现功能如上图所示。如果你对prometheus项目感兴趣,不用为仿真环境问题而头疼脑大,让你1个小时跑通prometheus代码。让你快速掌握无人机仿真与无人机实机实验的完美契合;让研发更高效!注意!
本镜像提供了两种安装方式:虚拟机安装和单系统安装虚拟机安装不用制作启动盘,安装最简单
推荐配置:CPU:i7 6700HQ 内存:16G 硬盘:60G 以上
单系统安装需要制作启动盘,并且保证该电脑的硬盘数据备份
推荐配置:CPU:i7 6700HQ 内存:8G 硬盘:60G 以上
虚拟机使用
-
虚拟机中使用prometheus镜像,一种是Windows下面的vmware虚拟机使用,另外一种是Ubuntu下面的Oracle VM VirtualBox使用
-
VMware
默认已经安装好vmware虚拟机,如果没有安装过vmware虚拟机,请先下载安装,点击此处 下载地址 ,安装vmware问题,可自行百度搜索,在此不做详细说明。
-
新建虚拟机
小技巧:
最大磁盘大小:40GB勾选将虚拟磁盘拆分成为多个文件
-
点击自定义硬件按钮
小技巧:
推荐内存大小8G以上
处理器数量4个以上(根据自己电脑调节)
网络适配器:桥接模式
-
修改配置如下图所示
-
点击开启此虚拟机
-
点击Install AMOVOS V2
-
勾选正常安装,如下图所示
-
勾选Something else选项,如下图所示
点击New Partition Table 新建分区,如下图所示
分区 | 容量 | 挂载点mount point |
第一个分区 | 0.5G | boot |
第二个分区 | 8G | SWAP |
第三个分区 | 剩余大小 | / |
-
配置分区表,Device for boot loader installation 选项选择/boot挂载点所在的分区/dev/sda1,如下图所示
-
点击Contine按钮,如下图所示
-
输入您的账号和密码,如下图所示
-
点击Restart Now 按钮,如下图所示
-
系统安装完成!!!
Oracle VM VirtualBox
- 默认已经安装好Oracle VM VirtualBox虚拟机,如果没有安装过Oracle VM VirtualBox虚拟机,请先下载安装,点击此处 下载地址 ,相关安装问题,可自行百度搜索,在此不做详细说明。
单系统使用
所谓单系统使用,一般你有台崭新的电脑,想让该电脑完美无暇的跑通prometheus仿真功能demo,你可以参考prometheus镜像在单系统中使用。该系统一般都是在Windows下做好启动盘,进而给电脑装新的系统。大概需要一下几个步骤:
工具准备
-
Rufus软件:http://rufus.ie/zh/
-
U盘一个,推荐USB3.0的接口,容量16G以上:
-
prometheus 镜像文件
启动盘制作
-
格式化U盘
警告!
在格式U盘之前一定要备份好U盘中的数据!!!! -
使用Rufus软件
小技巧:
选择U盘设备
选择镜像文件
其他选项,请查看上图
点击开始
镜像写入到U盘后,拔下U盘,插入到需要装系统的电脑
演示视频
-
视频演示如下:
系统安装
-
不同电脑开机按启动菜单快捷键参考如图所示,注意有的笔记本电脑需要FN+Fx进行组合:
-
选中U盘启动选项如图所示:
-
开机启动选择U盘启动,选择Install AMOVOS选项如图所示:
-
点击继续,如下图所示
-
选择Normal installation 选项,如下图所示
-
选择Something else 选项,如下图所示
警告!
Device for boot loader installation 选项选择/boot挂载点所在的分区/dev/
引导分区的挂载点优先选 /boot/efi 没有 /boot 也可以的
分区 | 容量 | 挂载点mount point |
第一个分区 | 0.5G | boot |
第二个分区 | 8G | SWAP |
第三个分区 | 剩余大小 | / |
-
点击
Install Now
,开始安装系统,耐心等待安装完成 -
点击
Restart Now
,重启电脑 -
拔掉U盘,按下回车,系统安装成功啦!
Prometheus镜像快速使用
按照上述三种方式安装好prometheus系统镜像之后,你可以在桌面上看到prometheus镜像快速入门文档,或者参考该部分文档。
第一步、更新系统
-
打开一个终端,更新一下当前系统。
sudo apt-get update
第二步,下载编译
注意!注意!注意!
本章Prometheus仿真环境配置教程为Prometheus-v1版本的教程, 需要注意,由于Prometheus-v2版本更新,Prometheus-v1和Prometheus-v2相关项目分支存在差异
Prometheus-v2:Prometheus为main分支,prometheus_px4为1.12.3分支
也就是说如果你要配置Prometheus V1,那么在最开始不能直接git clone,那样会直接下载最新Prometheus 你需要指定分支v1.1下载 如下
git clone -b v1.1 https://gitee.com/amovlab/Prometheus.git
#进入目录检查一下分支
cd Prometheus
git branch
#显示* v1.1代表分支下载正确
Prometheus-v1:Prometheus为v1.1分支,prometheus_px4为1.11.1分支
这个和上面同理,下载时需要指定分支,如下
git clone -b Prometheus_PX4_1.11.1 https://gitee.com/amovlab/prometheus_px4.git
#进入目录检查一下分支
cd prometheus_px4/
git branch
#显示* Prometheus_PX4_1.11.1代表分支下载正确
如果需要搭建Prometheus-v2版本,需要前往 Prometheus V2 Wiki手册
-
下载prometheus_px4:
打开一个终端(ctrl+alt+t),执行如下的下载指令:
#前面下载好就可以不用下载了 git clone -b Prometheus_PX4_1.11.1 https://gitee.com/amovlab/prometheus_px4.git
-
编译prometheus_px4:
进入到 prometheus_px4 路径之下,先更新子模块,再编译软件在环代码,指令如下:
cd ~/ && ./install_requirements.sh
cd prometheus_px4/
make submodulesclean
更新子模块,时间稍微久一点(5 分钟)(或者使用
git submodules update --init-- recursive
make amovlab_sitl_default
编译指令
-
下载Prometheus代码:
打开一个新的终端(ctrl+alt+t),下载指令如下:
#前面下载好就可以不用下载了 git clone -b v1.1 https://gitee.com/amovlab/Prometheus.git
-
编译Prometheus代码:
进入到 Prometheus 代码目录之下,执行编译指令如下:
cd Prometheus/
./compile_all.sh
如果下载编译均正常执行完成,至此,恭喜你,下载编译执行非常好,所打开的终端也可以全部关闭。
第三步、测试系统是否正常
-
测试prometheus_px4
打开一个新的终端,进入到 prometheus_px4 路径之下,运行启动 gazebo 仿真,指令执行如下:
roscd px4/
make amovlab_sitl gazebo_p450
如果顺利打开了 gazebo,并有 p450 模型的加载,就表示正常,使用 ctrl+c 关闭终端。
随后打开一个新的终端,利用 roslaunch 启动启动 gazebo+mavros+prometheus_px4 仿真,运行指令如下:
roslaunch px4 mavros_posix_sitl.launch
如果顺利打开了 gazebo,并有 p450 模型的加载,就表示正常,使用 ctrl+c 关闭终端。
可以进行 Prometheus 的测试啦!
-
测试Prometheus
prometheus 的正常运行是依赖 prometheus_px4 的正常运行,打开一个新的终端,执行指令如下:
roslaunch prometheus_gazebo sitl_control.launch
等待 gazebo 和 rviz 全部正常启动之后,在终端中如果选择 0 进入终端指令操控,根据终端指令提示,可以进行 Prometheus 系统的仿真了。
如果都没有问题,恭喜你,prometheus 镜像的快速入门你已经掌握了,了解更多的功能吧。
小技巧:
Ubuntu下安装deb软件包的方式 输入sudo dpkg -i xxx.deb
飞行控制模块
-
请按以下步骤操作
注意!
估计器参数PX4_ESTIMATOR默认是ekf2_vision,估计器参数选择可选ekf2_vision和ekf2_gps,ekf2_gps 使用GPS作为定位来源,ekf2_vision 使用外部输入(gazebo真值、slam等)作为定位来源
1.室内仿真
-
在终端输入以下命令
roslaunch prometheus_gazebo sitl_control.launch</code>
注意!
此场景下的估计器参数PX4_ESTIMATOR是ekf2_vision,ekf2_vision 使用外部输入(gazebo真值、slam等)作为定位来源 -
重要
-
应用启动后如上图所示,其中被绿框圈中的是无人机地面站信息,被蓝框圈中的是控制终端(全自主的offboard控制)。运行之后需要在控制终端选择使用command input control(通过输入目标点的方式控制) 或者keyboard input control(通过键盘控制)两种方式
command input control 模式下,首先输入999解锁并切换至offboard模式,然后输入1起飞,然后再根据提示输入其他指令(悬停、降落、机体系移动、惯性系移动、轨迹追踪等等)
keyboard input control 模式下,1 for Arm, Space for Takeoff, L for Land, H for Hold, 0 for Disarm, 8/9 for Trajectory tracking Move mode is fixed (XYZ_VEL,BODY_FRAME): w/s for body_x, a/d for body_y, k/m for z, q/e for body_yaw
-
首先输入999解锁并切换至offboard模式
-
输入4选择移动模式
-
输入0选择XYZ_POS(发送坐标指令)
-
输入0选择ENU_FRAME
-
输入X轴的距离(m)
输入Y轴的距离(m)
输入Z轴的距离(m)
输入yaw角度(0-360°)
-
-
在ENU_FRAME下,无人机飞行到指定位置
-
输入4选择移动模式
-
输入0选择XYZ_POS(发送坐标指令)
-
输入1选择BODY_FRAME
-
输入X轴的距离(m)
输入Y轴的距离(m)
输入Z轴的距离(m)
输入yaw角度(0-360°)
-
-
在BODY_FRAME下,无人机飞行到指定位置
-
输入4选择移动模式
-
输入3选择XYZ_VEL(发送速度指令)
-
输入0选择ENU_FRAME
-
输入X轴的速度(m/s)
输入Y轴的距离(m/s)
输入Z轴的距离(m/s)
输入yaw角速度(rad/s)
-
-
在ENU_FRAME下,无人机按照指定速度飞行
-
输入4选择移动模式
-
输入3选择XYZ_VEL(发送速度指令)
-
输入1选择BODY_FRAME
-
输入X轴的速度(m/s)
输入Y轴的距离(m/s)
输入Z轴的距离(m/s)
输入yaw角速度(rad/s)
-
-
在BODY_FRAME下,无人机按照指定速度飞行
-
输入4选择移动模式
-
输入5选择TRAJECTORY
-
输入0选择Circle
-
输入运行时间(s)
-
输入1选择Eight Shape
-
输入运行时间(s)
-
输入2选择Step
-
输入运行时间(s)
-
-
-
演示视频
2.室外仿真
-
演示视频
注意!
此场景下的估计器参数PX4_ESTIMATOR是ekf2_gps,ekf2_gps 使用GPS作为定位来源注意!
控制方式与室内仿真一样
规划模块
全局规划 - Astar方法
-
请按以下步骤操作
注意!
估计器参数PX4_ESTIMATOR默认是ekf2_vision,估计器参数选择可选ekf2_vision和ekf2_gps,ekf2_gps 使用GPS作为定位来源,ekf2_vision 使用外部输入(gazebo真值、slam等)作为定位来源 -
1.室内仿真
注意!
此场景下的估计器参数PX4_ESTIMATOR是ekf2_vision,ekf2_vision 使用外部输入(gazebo真值、slam等)作为定位来源在终端输入以下命令
roslaunch prometheus_gazebo sitl_astar_2dlidar.launch
小技巧:
应用启动后如上图所示,其中被蓝框圈中的是控制终端。根据提示,输入1选择开始小技巧:
点击 **3D Nav Goal** 按钮(红圈),然后鼠标左键点击地图不放再点击右键往上下滑动(为了确定目标点高度),同时松开鼠标按键,无人机开始自动规划路径。 -
演示视频
-
2.室外仿真
注意!
此场景下的估计器参数PX4_ESTIMATOR是ekf2_gps,ekf2_gps 使用GPS作为定位来源注意!
控制方式与室内仿真一样
目标检测模块
自主降落(静止目标)
-
请按照以下步骤操作
注意!
估计器参数PX4_ESTIMATOR默认是ekf2_vision,估计器参数选择可选ekf2_vision和ekf2_gps,ekf2_gps 使用GPS作为定位来源,ekf2_vision 使用外部输入(gazebo真值、slam等)作为定位来源 -
1.室内仿真
注意!
此场景下的估计器参数PX4_ESTIMATOR是ekf2_vision,ekf2_vision 使用外部输入(gazebo真值、slam等)作为定位来源在终端输入以下命令
roslaunch prometheus_gazebo sitl_landing_static_target.launch
重要!
应用启动后如上图所示,其中被蓝框圈中的是控制终端。根据提示,输入1选择继续
重要!
输入1后如上图所示,其中被蓝框圈中的是显示的无人机位置信息等。
-
演示视频
-
2.室外仿真
注意!
此场景下的估计器参数PX4_ESTIMATOR是ekf2_gps,ekf2_gps 使用GPS作为定位来源注意!
控制方式与室内仿真一样
圆形识别与圆形穿越
-
请按以下步骤操作
注意!
估计器参数PX4_ESTIMATOR默认是ekf2_vision,估计器参数选择可选ekf2_vision和ekf2_gps,ekf2_gps 使用GPS作为定位来源,ekf2_vision 使用外部输入(gazebo真值、slam等)作为定位来源 -
1.室内仿真
注意!
此场景下的估计器参数PX4_ESTIMATOR是ekf2_vision,ekf2_vision 使用外部输入(gazebo真值、slam等)作为定位来源在终端输入以下命令
roslaunch prometheus_gazebo sitl_circle_crossing.launch
小技巧:
应用启动后如上图所示,其中被蓝框圈中的是控制终端。根据提示,输入1选择开始
演示视频
-
视频演示如下:
-
2.室外仿真
注意!
此场景下的估计器参数PX4_ESTIMATOR是ekf2_gps,ekf2_gps 使用GPS作为定位来源注意!
控制方式与室内仿真一样
演示视频
-
视频演示如下:
问题总结
-
问题总结
注意!
1、 如果你要跑仿真,安装按照prometheus wiki步骤执行即可,这个我们经过大量测试后的。我们推荐18.04系统,有人遇到子模块无法更新,它使用的是Ubuntu16.04。在真实板载计算机上面,realsense sdk 为2.36.0;realsense-ros 为2.2.15。opencv源码要完整安装3.3.1。不管你的板载计算机是arm,x86最好按照这个要求。
2、我们现在是集成的prometheus的板载计算机有Jetson-Xavier开发套件,Jetson-Xavier-NX开发套件,Jetson-Nano(B01)开发套件。如果各位不想装板载计算机上面的环境,可以联系我们,都是有集成的。(均为18.04系统,jetpack4.3/4.4)。对于飞机上面的Jetson-TX2,它本身是Ubuntu16.04的,只要下载prometheus,也能编译成功。目前还没有将该款板载计算机升级到18.04。
3、对于px4_command这个项目,在以下环境中运行(ubuntu18.04不行):ubuntu16.04 LTSFirmware v1.8.2ros kinetic v1.12.17gazebo v7.16.1QGC v3.3.2以后的同学学习px4_command项目的时候别把环境搞错了。
4、之前群里讨论了几次的 unsupport fcu问题,这是因为是由于PX4和mavros通信时 udp端口不匹配导致的,一定要使用专用的PX4固件,PX4官方在版本更迭的时候改了默认的udp端口,替换mavros版本的方法只是使用了旧的udp端口号,改一下px4中的rcs文件即可。
也可以外接一个硬盘。
-
Q1:二维码辅助降落的时候,不修改底层EKF2代码的话,那二维码不就只提供一个目标位置信息吗?无人机定位还是靠着gps和imu,这样不还是无法做到精准定位降落吗?
A:需要多精准?差分gps可以试一试,自身估计不准的话确实很难精准。
-
Q2:测试自主降落demo出现输入1时飞机炸上天,为什么啊?
A:初步判断是笔记本处理能力太渣以及起飞高度设定太高导致,可以降低起飞高度或者增加解锁后等待时间解决,我在台式机上并未遇到该问题,证明电脑cpu能力对仿真还是有很大帮助的,同样的代码也会跑出不通的效果。也可能重新装一遍ros就能解决。
-
Q3:px4固件通过视觉提供位置数据,用来定点,那么视觉需要提供的数据频率最低大概有多少?
A:gps信号是10HZ比它大就可以。
-
A:参数基本不需要调,一些重点细节可以看wiki,一飞冲天调一下平衡推力,调小;所有真实飞行的launch和参数我会同步更新到experiment文件夹。
-
A:不仅可以定高也可以定点,因为它本身就是提供位置信息的。
-
Q6:Jetson nano通过串口连接px4,启动了 control_onboard,用set_mode节点无法切换模式,如下图所示:
A:tx,rx反了或者线松了。
-
Q7:局域网配置里面,可不可以都用飞控热点,看推荐配置里面两种方案都要自备一个路由器,为什么吗?
A:不行,因为功率不够,但是可以尝试,估计nomachine勉强带的动,程序跑起来有些费劲。
-
A:重启上电,还不行就重新刷系统。
-
Q9:请问promethues代码,配什么版本的openCV比较好?
A:建议3.3.1,源码安装完整的3.3.1,安装完成了,opencv路径就有artuco动态链接库了。
-
Q10:这种aruco板识别的时候会出现上下翻转,导致数据直接错乱,有没有解决方案(仿真中)?
A:常遇到,一般都距离太近的时候。
-
A:可以打开qgc查看,也可以通过rosbag记录消息
-
A:安装nvidia的驱动
-
Q13:请问用mavros控制小车的话,一般用哪个消息比较好,我用了/mavros/setpoint_raw/ local下面的Vx与Vy不是很好用,好像因为速度小于零的时候,小车不能识别。
A:px4小车似乎有点问题,要在1.11以上的版本。
-
A:一新:删除掉报错的位置。
-
Q15:做最后一步编译的时候电脑整个卡住,鼠标都动不了的情况
A:内存爆了,我是i7 3770 配8G内存,编译会爆内存,加8G swap就可以了,或者搜下命令,只用两个核心进行编译,就是在编译命令前面加了taskset -c 0,1,2,3 就是前四个核心。
-
Q16:如果单纯使用动捕系统做定位的话,我可以直接用relay 工具,把vrpn_client_pose 变成mavros/vision_pose/pose 吗?
A:阿木_戚博:不一定坐标一致。
-
A:不影响,多运行几遍就好了。
-
A:之前出现过,换了个大空间硬盘解决了(不是分配空间,是你虚拟机目录所在硬盘的空间)
-
Q19:跟着wiki上步骤走,仿真飞行配置中在px4编译的时候出现这个问题,无法启动gazebo,有人知道是什么原因吗?
A:你可以运行gzclient和gzserver 看看有啥信息提示:gazebo最近调试可以遵循这样的流程,1.先关闭终端重试2.kill gzclient和kill gzsever3.关机重启再不行把error进行谷歌翻译,能解决70%的诡异问题
-
A:你看哪里订阅了这个话题就知道了,看哪里订阅了这个话题,不用看类型声明
-
Q21:想请教下,附图GAZEBO我已手动添加p450的模型,为什么还是报错呢,试了很多办法没法解决。 谢谢!
A:要用prometheus_px4。
-
Q22:大家好,用ssh 可以通过gnome-terminal 打开新的终端吗?
A:要在机载电脑开两个终端,那就需要连接两次ssh
-
Q23:输入指令999--->1---->2--->3、rviz显示如下(),各位大佬问一下我先启用roslaunch p450_experiment p450_vio_onboard.launch后用roslaunch p450_experiment p450_vio_control.launch,遥控器进入offboard模式,然后999解锁,1起飞,2定点后,为什么飞机这么漂啊? **
A: 盲猜可能是t265定位出问题了,我遇到过类似的情况,我之前拿起来晃一圈,轨迹闭环才敢飞 不然直接飘没了,先检查有没有用t265的yaw轴数据,那个velocity数据不要用,可能会炸机。
-
A:直接用camera trigger接单片机,电平捕获
-
Q25:那个vison velocity fusion是干嘛用的啊
A:速度融合
-
Q26:话说有没有稳定的降压模块给nx供电啊,我发现我这4s锂电池用12v降压模块,电池电量还有一半nx就关机了
A:用6s,但是比赛(全国大学生工程训练赛)要求17v电压以下只能4s。
-
Q27:单目相机得到的是像素点,怎样换算出它相对于无人机的x y位置呢?
A:结合超声波或者激光雷达模块,得到无人机对地高度,根据像素点流速公式得到无人机对地速度,这个速度和惯导进行积分融合,速度*单位时间就是单位位移xy方向
-
A:加了RTK会好一些
-
Q29:飞控惯导更精准一些相对自己的惯导,但是需要标定,关键问题是惯导数据和相机数据的同步怎样解决呢?
A:网上有类似的教程,可以搜索下,记得假如用飞控的imu的话频率调高一些,因为vins是两个数据读取一个,所以飞控imu调到200hz之后其实vins用的是100hz
-
A:nx或nuc,tx2的arm核比较菜,nuc比较稳,重量在600g左右,p200也带的动
-
A:按照source的顺序来,先全部注释,哪个解开注释后导致了有工作空间找不到的问题,就重新编译一次这个解开注释的工作空间因该就可以了
-
Q32:RGB-D相机推荐哪款啊?D435i和structure core比哪个比较好啊?
A:D435i吧,资料多一些
-
Q33:下载下来的px4代码版本过高怎么办?有办法降低代码版本吗?
A:git checkout v(低版本) 然后git submodule update –init --resur
-
A:安装pyseria
-
Q35:nano换源只有两个源,没有中国源,在终端添加也总失败
A:直接在source.list中改,参考教程:https://zhuanlan.zhihu.com/p/69849653
-
Q36:请问下飞控日志里能否读取无人机的位置信息啊?只有gps,gps会记录位置信息嘛?
A:日志里 本地NED位置信息可以搜索关键词local,全球位置信息可以搜索关键词global,gps精度几米左右,px4融合后精度0.5米左右
-
Q37:prometheus以后可能会兼容cv4,但是ROS melodic用cv4肯定是要改cv桥路径的,躲是躲不开了; 我把opencv3.3.1安到了/usr目录下,但是一直在找ros的opencv,是不是要安到/usr/local下,改prometheus的cmake里的opencv路径。还是卸载ros的opencv
A:直接把cmakelists里面的路径改了, find那里面改成 OpenCV 3 required, 原本是没有3的,Linux会通过系统环境变量优先找4的, Phill:安装路径没要求,别跟系统的东西混装,之后卸载麻烦,自己装的,塞到/usr/local里面
-
Q38:请问一下大家改过mavros输出的IMU频率吗,最高可以达到多少呢?
A: 试过200hz,实际180hz就不行了
-
Q39:为什么港科大的无人机路径规划飞得很平滑,而阿木的是一段一段飞的?
A: 如果只是发位置的话,那就是飞的一段一段飞,要是把轨迹的位置转化为无人机实时飞行的姿态环的话,那就是平滑飞
-
Q40:请问有人遇到同样的问题吗,编译Prometheus中的slam模块时cv_brige报错,如下图,我用的是xavier nx机载电脑,opencv版本是4.1.1
A:cv bridge里面把路径改了,默认支持的是3
-
A:波特率是设置的,端口号 ls /dev/tty*
-
Q42:我再详细解释一下哈~这里是三次飞行log数据;第一行第二行是融合之后的位置,第三行是uwb给的位置里程计。我在做定点飞行,飞行效果不好,飞机会漂移。但是观察数据发现,local position其实很稳,飞控觉得自己并没有漂移,如下图:
A: 怀疑是EKF2融合位置数据不够敏感,以至于飞机没感觉到自己飘走了,尽管uwb已经反映出来漂移情况了
-
Q43:prometheus里面的仿真运行时报错,飞机也没法起飞,是什么原因呢?MODE: Unsupported FCU [ WARN] [1615635403.059604673, 13328.328000000]: CMD: Command 400 -- wait ack timeout
A:需要打开src/Firmware/launch/mavros_posix_sitl.launch(如需使用其他launch文件修改方法类似)将这一行:<arg name="fcu_url" default="udp://:14540@localhost:14557"/>改成:<arg name="fcu_url" default="udp://:14540@127.0.0.1:14557"/>
-
Q44:问一下我的t265再rviz里显示正常,但在终端里一直报错是什么情况啊,报错如下图:
A:貌似是没找到设备,可以尝试t265拔了重插
-
Q45:请问一下,树莓派4B上可以运行promethes项目吗?
A:控制模块问题不大, opcv估计够呛
pixhawk4 接线图
USB port
Pin | Signal | Volt |
1(red) | VBUS | +5V |
2(black) | DM | +3.3V |
3(black) | DP | +3.3V |
4(black) | GND | GND |
POWER1 POWER2 port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2(black) | VCC | +5V |
3(black) | CURRENT | +3.3V |
4(black) | VOLTAGE | +3.3V |
5(black) | GND | GND |
6(black) | GND | GND |
TELEM1, TELEM2 ports
Pin | Signal | Volt |
1(red) | VCC | +5V |
2(black) | TX(out) | +3.3V |
3(black) | RX(in) | +3.3V |
4(black) | CTS(in) | +3.3V |
5(black) | RTS(out) | +3.3V |
6(black) | GND | GND |
UART & I2C B port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2(black) | TX(out) | +3.3V |
3(black) | RX(in) | +3.3V |
4(black) | SCL2 | +3.3V |
5(black) | SDA2 | +3.3V |
6(black) | GND | GND |
-
A spare port for connecting sensors supporting serial communication or I2C e.g. a second GPS module can be connected here.
-
用于连接支持串行通信或I2C的传感器的备用端口,例如,可以在此处连接第二个GPS模块。
CAN1, CAN2 ports
Pin | Signal | Volt |
1(red) | VCC | +5V |
2(black) | CANH | +3.3V |
3(black) | CANL | +3.3V |
4(black) | GND | GND |
DSM RC port
Pin | Signal | Volt |
1(null) | VDD_5V_SBUS_RC | +5V |
2(yellow) | SBUS * | +3.3V |
3(null) | RSSI * | +3.3V |
4(red) | VDD_3v3_SPEKTRUM | +3.3V |
5(black) | GND | GND |
-
Connect SBUS or DSM/Spektrum receiver’s signal wire connect here.
-
Sends the RC signal strength info to autopilot.
-
将SBU或DSM/Spektrum接收器的信号线连接到此处。
-
向自动驾驶仪发送RC信号强度信息。
SBUS RC port
Pin | Signal | Volt |
1(red) | VDD_5V_SBUS_RC | +5V |
2(yellow) | SBUS | +3.3V |
3(null) | RSSI | +3.3V |
4(null) | VDD_3V3_SPEKTRUM | +3.3V |
5(black) | GND | GND |
I2C A port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2(black) | SCL4 | +3.3V |
3(black) | SDA4 | +3.3V |
4(black) | GND | GND |
CAP & ADC IN port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2 black) | FMU_CAP1 | +3.3V |
3(black) | FMU_CAP2 | +3.3V |
4(black) | FMU_CAP3 | +3.3V |
5(black) | TIM5_SPARE_4 | +3.3V |
6(black) | ADC1_SPARE_1 | +3.3V* |
7(black) | ADC1_SPARE_2 | +6.6V* |
8(black) | GND | GND |
- WARNING: Sensors connected to this pin should not send a signal exceeding this voltage!
- 警告:连接到此引脚的传感器不应发送超过此电压的信号!
SBUS OUTport
Pin | Signal | Volt |
1(red) | ||
2(yellow) | SBUS_OUT | +3.3V |
3(black) | GND | GND |
PPM RC port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2(yellow) | PPM | +3.3V |
3(black) | GND | GND |
GPS MODULE port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2 black) | TX(out) | +3.3V |
3(black) | RX(in) | +3.3V |
4(black) | SCL1 | +3.3V |
5(black) | SDA1 | +3.3V |
6(black) | SAFETY_SWITCH | +3.3V |
7(black) | SAFETY_SWITCH_LED | +3.3V |
8(black) | VDD_3V3 | +3.3V |
9(black) | BUZZER- | 0V/5V |
10(black) | GND | GND |
SPI port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2 (black) | SCK | +3.3V |
3(black) | MISO | +3.3V |
4(black) | MOSI | +3.3V |
5(black) | CS1 | +3.3V |
6(black) | CS2 | +3.3V |
7(black) | GND | GND |
I/O PWM OUT port
Pin | Signal | Volt |
1(red) | VDD_SERVO | |
2 black) | IO_CH1 | +3.3V |
3(black) | IO_CH2 | +3.3V |
4(black) | IO_CH3 | +3.3V |
5(black) | IO_CH4 | +3.3V |
6(black) | IO_CH5 | +3.3V |
7(black) | IO_CH6 | +3.3V |
8(black) | IO_CH7 | +3.3V |
9(black) | IO_CH8 | +3.3V |
10(black) | GND | GND |
FMU PWM OUT port
Pin | Signal | Volt |
1(red) | VDD_SERVO | |
2 black) | FMU_CH1 | +3.3V |
3(black) | FMU_CH2 | +3.3V |
4(black) | FMU_CH3 | +3.3V |
5(black) | FMU_CH4 | +3.3V |
6(black) | FMU_CH5 | +3.3V |
7(black) | FMU_CH6 | +3.3V |
8(black) | FMU_CH7 | +3.3V |
9(black) | FMU_CH8 | +3.3V |
10(black) | GND | GND |
IO DEBUG PORT
Pin | Signal | Volt |
1(red) | VT | +3.3V |
2(black) | TX | +3.3V |
3(black) | NC | |
4(black) | SWDIO | +3.3V |
5(black) | SWCLK | +3.3V |
6(black) | GND | GND |
FMU DEBUG port
Pin | Signal | Volt |
1(red) | VT | +3.3V |
2(black) | TX | +3.3V |
3(black) | RX | +3.3V |
4(black) | SWDIO | +3.3V |
5(black) | SWCLK | +3.3V |
6(black) | GND | GND |
pixhawk4 接线图
USB port
Pin | Signal | Volt |
1(red) | VBUS | +5V |
2(black) | DM | +3.3V |
3(black) | DP | +3.3V |
4(black) | GND | GND |
POWER1 POWER2 port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2(black) | VCC | +5V |
3(black) | CURRENT | +3.3V |
4(black) | VOLTAGE | +3.3V |
5(black) | GND | GND |
6(black) | GND | GND |
TELEM1, TELEM2 ports
Pin | Signal | Volt |
1(red) | VCC | +5V |
2(black) | TX(out) | +3.3V |
3(black) | RX(in) | +3.3V |
4(black) | CTS(in) | +3.3V |
5(black) | RTS(out) | +3.3V |
6(black) | GND | GND |
UART & I2C B port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2(black) | TX(out) | +3.3V |
3(black) | RX(in) | +3.3V |
4(black) | SCL2 | +3.3V |
5(black) | SDA2 | +3.3V |
6(black) | GND | GND |
-
A spare port for connecting sensors supporting serial communication or I2C e.g. a second GPS module can be connected here.
-
用于连接支持串行通信或I2C的传感器的备用端口,例如,可以在此处连接第二个GPS模块。
CAN1, CAN2 ports
Pin | Signal | Volt |
1(red) | VCC | +5V |
2(black) | CANH | +3.3V |
3(black) | CANL | +3.3V |
4(black) | GND | GND |
DSM RC port
Pin | Signal | Volt |
1(null) | VDD_5V_SBUS_RC | +5V |
2(yellow) | SBUS * | +3.3V |
3(null) | RSSI * | +3.3V |
4(red) | VDD_3v3_SPEKTRUM | +3.3V |
5(black) | GND | GND |
-
Connect SBUS or DSM/Spektrum receiver’s signal wire connect here.
-
Sends the RC signal strength info to autopilot.
-
将SBU或DSM/Spektrum接收器的信号线连接到此处。
-
向自动驾驶仪发送RC信号强度信息。
SBUS RC port
Pin | Signal | Volt |
1(red) | VDD_5V_SBUS_RC | +5V |
2(yellow) | SBUS | +3.3V |
3(null) | RSSI | +3.3V |
4(null) | VDD_3V3_SPEKTRUM | +3.3V |
5(black) | GND | GND |
I2C A port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2(black) | SCL4 | +3.3V |
3(black) | SDA4 | +3.3V |
4(black) | GND | GND |
CAP & ADC IN port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2 black) | FMU_CAP1 | +3.3V |
3(black) | FMU_CAP2 | +3.3V |
4(black) | FMU_CAP3 | +3.3V |
5(black) | TIM5_SPARE_4 | +3.3V |
6(black) | ADC1_SPARE_1 | +3.3V* |
7(black) | ADC1_SPARE_2 | +6.6V* |
8(black) | GND | GND |
- WARNING: Sensors connected to this pin should not send a signal exceeding this voltage!
- 警告:连接到此引脚的传感器不应发送超过此电压的信号!
SBUS OUTport
Pin | Signal | Volt |
1(red) | ||
2(yellow) | SBUS_OUT | +3.3V |
3(black) | GND | GND |
PPM RC port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2(yellow) | PPM | +3.3V |
3(black) | GND | GND |
GPS MODULE port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2 black) | TX(out) | +3.3V |
3(black) | RX(in) | +3.3V |
4(black) | SCL1 | +3.3V |
5(black) | SDA1 | +3.3V |
6(black) | SAFETY_SWITCH | +3.3V |
7(black) | SAFETY_SWITCH_LED | +3.3V |
8(black) | VDD_3V3 | +3.3V |
9(black) | BUZZER- | 0V/5V |
10(black) | GND | GND |
SPI port
Pin | Signal | Volt |
1(red) | VCC | +5V |
2 (black) | SCK | +3.3V |
3(black) | MISO | +3.3V |
4(black) | MOSI | +3.3V |
5(black) | CS1 | +3.3V |
6(black) | CS2 | +3.3V |
7(black) | GND | GND |
I/O PWM OUT port
Pin | Signal | Volt |
1(red) | VDD_SERVO | |
2 black) | IO_CH1 | +3.3V |
3(black) | IO_CH2 | +3.3V |
4(black) | IO_CH3 | +3.3V |
5(black) | IO_CH4 | +3.3V |
6(black) | IO_CH5 | +3.3V |
7(black) | IO_CH6 | +3.3V |
8(black) | IO_CH7 | +3.3V |
9(black) | IO_CH8 | +3.3V |
10(black) | GND | GND |
FMU PWM OUT port
Pin | Signal | Volt |
1(red) | VDD_SERVO | |
2 black) | FMU_CH1 | +3.3V |
3(black) | FMU_CH2 | +3.3V |
4(black) | FMU_CH3 | +3.3V |
5(black) | FMU_CH4 | +3.3V |
6(black) | FMU_CH5 | +3.3V |
7(black) | FMU_CH6 | +3.3V |
8(black) | FMU_CH7 | +3.3V |
9(black) | FMU_CH8 | +3.3V |
10(black) | GND | GND |
IO DEBUG PORT
Pin | Signal | Volt |
1(red) | VT | +3.3V |
2(black) | TX | +3.3V |
3(black) | NC | |
4(black) | SWDIO | +3.3V |
5(black) | SWCLK | +3.3V |
6(black) | GND | GND |
FMU DEBUG port
Pin | Signal | Volt |
1(red) | VT | +3.3V |
2(black) | TX | +3.3V |
3(black) | RX | +3.3V |
4(black) | SWDIO | +3.3V |
5(black) | SWCLK | +3.3V |
6(black) | GND | GND |
Descriptions:
We empoldered this new GPS for you to work with PIXHAWK4. It has UBLOX M8N module on it, as well as IST8310 compass and tri-colored LED indicator. Also the Safety switch on it will make the connection more convenient and simple.
This module ships with a baud rate of 38400 5Hz
描述:
我们开发了这个新的全球定位系统,让你可以使用PIXHAWK4。它上面有UBLOX M8N模块,如图所示 以及IST8310指南针和三色LED指示灯。此外,它上的安全开关将使 连接更加方便和简单。
该模块的波特率为38400 5Hz。
Features and Specifications: (功能和规格)
-
Ublox Neo-M8N module Ublox (Neo-M8N模块)
-
Industry leading –167 dBm navigation sensitivity (行业领先–167 dBm导航灵敏度)
-
Cold starts: 26s (冷启动:26秒)
-
LNA MAX2659ELT+ (LNA MAX2659ELT+)
-
25 x 25 x 4 mm ceramic patch antenna (25 x 25 x 4毫米陶瓷贴片天线)
-
Rechargeable Farah capacitance (可充电法拉电容)
-
Low noise 3.3V regulator (低噪声3.3V稳压器)
-
Fix indicator LEDs (固定指示灯LED)
-
Protective case (保护壳)
-
26cm Pixhawk4 compatible 10-pin cable included (26cm Pixhawk4兼容10针电缆)
-
Diameter 50mm total size, 32 grams with case (直径50毫米总尺寸32克带外壳)
Package Included: (套餐包括)
-
NEO-M8 with compass module *1 (NEO-M8带指南针模块 *1)
-
‘X’ type folding pedestal mount *1 (“X”型折叠底座安装 *1)
-
Carbon rod 70mm & 140mm *1 (碳棒70mm和140mm *1)
*GPS Pin Map*
Holybro is a registered trademark of Holybro, registered in the U.S. and other countries.
©Copyright 2018 Holybro. All Rights Reserved.
Pixhawk and its logo are registered trademarks of Lorenz Meier. Used under license.
连接飞控
-
连接飞控有两种方式:一种是通过数据线连接。另一种是通过飞机的WiFi数传连接。
通过普通安卓micro-usb数据线连接
连接飞机与电脑,此时会自动连接QGC
通过WiFi数传连接
-
首先电脑选择WiFi名称并输入密码连接。WIFI的标签在飞机底部。
-
然后输入IP地址与端口号,点击连接即可。
-
演示视频
固件烧写
-
请按照以下步骤操作。
注意!
烧写固件时,应将飞控断电,仅用USB连接到电脑。若地面站为识别飞控,可多次插拔USB。 -
选择烧写固件
操作界面选择在三个齿轮下,在“固件”界面下,用usb线连接电脑与飞控。会弹出如图所示的界面,右方点击“高级设置”,选择标准版。点击确定。如果有自己的固件,可以选择“自定义固件”,找到自己的固件相应路径,点击确定即可烧写。
-
烧写过程
固件正在刷写中,最后一行显示为固件的版本。
-
烧写完成
固件烧写成功后入下图所示,会有升级完成的提示
-
演示视频
机架的选择
-
如图所示,在“机架”界面选择标准四旋翼机架,选择DJI F450,然后在右上角点击“应用并重启”
警告!
因P600系列无人机机架为定制机架,选择机架会导致无人机直接死机无法再开机,禁止P600系列无人机选择机架! -
演示视频
传感器校准
-
磁力计校准
-
按照地面站界面所显示的相应摆放飞机的姿态,然后在水平面内朝一个方向旋转,直至下一个方向。
-
校准完成后如下图所示
-
陀螺仪校准
陀螺仪校准只需要把飞机平放即可,校准完成后会边框会显示为绿色。
-
加速度计校准
加速度计校准为6面校准,只需要将飞机按照6个面分别摆放即可,没校准的边框为红色,正在校准中边框为黄色,校准完成边框为绿色。
-
水平面校准
水平面校准只需要将飞机放平即可,校准完成后会有“calibration done”的字样,意为校准完成。
-
演示视频
遥控器校准
-
请按照以下步骤操作
-
点击校准,然后将油门拨到最低,如下图所示
-
然后按照界面右方的操作指示拨动摇杆
-
当全部操作校准完成后,会显示如下界面,此时将油门拨到最低,然后点击下一步。
-
当连续点击两次下一步后,会有如下界面,就表示此时校准已经完成。
-
演示视频
飞行模式设置
飞行模式介绍
手动模式
-
ARCO:特技模式
遥控器输入被转换为横滚、俯仰和偏航速度,当摇杆回中时飞行器不会保持平衡,可以用于翻滚等特技飞行。
-
RATTITUDE:角速率模式
遥控器输入在极限区域被转换为横滚、俯仰的角度和偏航的速度,否则被转换为横滚、俯仰和偏航角度。
-
STABILIZED:稳定模式
遥控器输入被转换为横滚、俯仰的角度和偏航的速度,当摇杆回中后飞行器会保持平衡,之后会随风或其他因素漂移。
辅助模式
-
ALTITUDE CONTROL:高度模式横滚、俯仰和偏航的输入与手动模式一致;当摇杆在~50%油门左右,飞行器将保持当前高度;油门有一个很大的死区,超出后控制上升或下降速度。参数:MPC_Z_VEL_MAX_UP:最大上升速度,默认3.0m/s。MPZ_Z_VEL_MAX_DOWN:最大下降速度,默认1.0m/s。RCX_DZ:X通道(油门通道,由RC_MAP_THROTTLE设定)的死区;MPC_XXX:影响飞行表现的参数,例如MPC_THR_HOVER定义飞行器悬停的油门。
-
POSITION CONTROL:位置模式横滚控制左右移动速度、俯仰控制前后移动速度,当摇杆回中时飞行器会保持位置;偏航控制速度,与手动模式一致;油门控制上升或下降的速率,与ALTITUDE一致;
自动模式
-
HOLD:保持模式保持在当前位置和姿态(依赖GPS)。参数:MIS_LTRMIN_ALT:悬停最小高度(如果悬停高度低,飞行器会升高)。
-
RTL:返航模式返回HOME位置等待或降落(依赖GPS)。飞行器会首先上升到RTL_RETURN_ALT高度(默认60m,如果实际飞行高于此高度则保持),然后直线飞行HOME位置;到达HOME后,会快速降低到RTL_DESCEND_ALT高度(缓降或停止高度,默认30m),会悬停RTL_LAND_DELAY时间后降落(默认0s,设置为-1表示永远悬停);参数:RTL_MIN_DIST:触发上升的最小距离,如果水平位置离HOME很近,飞行器将直接降落到HOME而非升高到返回高度。
-
TAKE OFF:起飞模式起飞并等待下一步指令(依赖GPS)。该模式为自动模式,遥控器失效(除非切换模式),启动前必须先解锁;飞行器上升到MIS_TAKEOFF_ALT高度(默认2.5m)后等待,上升速度为MPC_TKO_SPEED(默认1.5m/s)。
-
LAND:降落模式在当前位置降落。该模式为自动模式(遥控器失效);飞行器在切换到该模式位置降落,下降速度为MPC_LAND_SPEED直至地面
-
MISSION:任务模式飞行器接受地面站的程序控制指令,如果未收到任务,在当前位置悬停(依赖GPS)。该模式为自动模式,遥控器失效,该模式工作前需解锁;任务通常在QGC创建,也可以通过开发者API,上传到飞控。如果任务已存储并且PX4在飞行,将从立即执行任务;如果任务已存储但PX4着陆,PX4将执行任务,如果任务没有TAKEOFF命令,PX4将在执行剩下任务前飞行至最小高度;如果任务未存储或PX4执行完所有任务命令,飞行状态飞行器会悬停,着陆状态飞行器会等待;可以在QGC手动修改当前任务;当飞行器锁定或新任务上传后,任务会重置;任务可以通过HOLD模式暂停,重新激活后会从继续执行当前任务;
飞行模式设置[ ](#id6
-
可以在遥控器上设置通道,一般三挡开关对应飞行模式1、飞行模式4、飞行模式6。如图所示,此时通道5设置的三个模式分别为自稳模式、定点模式、降落模式。
-
如有需要板载计算机模式和返航模式,也可在开关设置下自行设置。如图所示,设置通道6为offboard模式,通道7为返航模式。
注意!
遥控器设置通道时,无人机须处于断电状态。 -
演示视频
遥控器紧急开关设置
遥控器设置
-
打开FS-I6S遥控器,进入功能设置页面。
-
点击进入辅助通道设置。
-
将7通道开启,并设置为开关SWA,SWA对应的是左上角的两段开关。
QGC地面站软件映射
-
连接上QGC,进入设置界面的飞行模式设置将Emergency Kill switch channel映射为7通道。
-
拨动遥控器的SWA开关,会有7通道的响应。
急停操作演示及注意事项
-
急停开关是在飞机飞行过程中,进行紧急使用的,在急停开关启用的5s时间内,如果复位急停开关,那么电机又重新恢复旋转,所以在使用急停开关过程中建议至少超过5s时间再去复位急停开关。
急停开关启用之后,会qgc提示急停开关已启用,在5s以内,飞机目前仍处于解锁状态,只不过急停开关让电机停止旋转,等待五秒之后,飞机进入未解锁状态。
-
演示视频
电池校准
-
用BB响(低压报警器)测出飞机实际电压,如下图所示
-
在电源界面下,选择“电压分压器”,点击计算
-
如图所示,在测量电压下输入已经测得的实际电压,然后点击“Calculate”。
-
等到“测量电压”与“飞机电压”数字接近时,表面电压校准已经完成,此时点击关闭即可。
-
演示视频
电调校准
-
请按以下步骤操作
注意!
禁止将电池空电电压设置到3.6V以下,防止电池过放造成损坏。注意!
校准前不允许给飞机上电,把桨叶拆卸下来。在电源设置界面下,点击如箭头所指的“校准”。
给飞机上电,飞机会自动进行电调校准,几秒钟后就会校准完成了。
-
演示视频
常用的参数设置
-
在参数设置下面的搜索界面,搜索关键字即可调整参数。
常用参数:
-
aid_mask:位置估计来源选择
-
hgt_mode:高度估计来源选择
-
Mag_sides:传感器校准面数选择
-
Usb_chk:当用数据线调试飞机时,有时会显示“usb is not safe”,此时搜索“usb_chk”把数值调到197848最大值即可。
-
CBRK_I0_Safety:安全开关
当提示无法解锁飞机时,把CBRK_IO_SAFETY数值调到最大值22027,相当于禁用安全开关。
-
演示视频
PID调参
PID调节图示
-
p为比例项,i为积分项、d为微分项。pid简单来说是一种传函,是在执行器机构传函确定好以后,期望值与观测值有误差,不符合期望值,所以使用pid作为一种调节手段使飞机的观测值达到期望值。pid调参可用如下一张图来解释说明。下图中的期望值为20纯比例P作用下在稳定后有静态误差,为了弥补静态误差,因此引入积分项I。PI作用下,虽然弥补了静态误差,但是因为引入了积分项,使得调节过程中峰值增加,调节周期增长,所以也有不足之处。PD作用下,加快了调节时间减小了调节幅度,但是当系统稳定时与输入有较大误差,D项作用过大的话会引起一定的震动。综合以上,PID作用下,调节的又快又好还没有误差,因此PID调节是理想的控制调节策略。
参数调节
-
在调节参数之前,应该了解px4的代码框架,了解位置控制与姿态控制的关系,内环与外环的关系。
-
姿态控制的角度环参数
-
姿态控制的角速度环参数
-
位置控制参数
演示视频
-
视频演示如下:
演示视频
-
视频演示如下:
任务飞行
-
点击如下界面,进入航点规划界面
-
点击“文件”,选择“Survey”
-
进入航点规划界面,点击“航点”,即可设置若干个航点。
-
在右侧可以设置“高度”与“速度”。在“Mission Start”上可以统一设置每个航点的高度与速度。
-
在每个航点上也可以设置高度、速度、与停留时间。如图所示,设置航点高度为50m,速度为5m/s,停留时间为3s。
-
点击航点旁边的“倒三角”,可以设置航点的类型,分别为任务点、返航点、降落点、起飞点。
-
在最后一行,标有“测绘”字样的航点旁边,点击“删除”,删掉最后一个任务点,否则不能上传任务。
-
点击右上角“需要上传”,航点规划就完毕了。
演示视频
-
视频演示如下:
演示视频
-
视频演示如下:
日志导出
打开日志
-
如下图
注意!
时间可能与电脑上的时间不同,最下面的日志就是最新的日志,只有解锁后才会记录日志。 -
点击日志,将想下载的日志选为蓝色,点击下载。
-
最新的日志后缀为.ulg 可以使用 px4在线分析网站https://logs.px4.io来分析日志不需用特殊工具,多刷新几次就会出来
-
选择文件后点击upload就可以上传到网站分析也可以复制链接分享给分析人员
-
可以分析各项参数与姿态还有对应的模式可以看到现在是定点模式可以如果出现t265掉线的情况可能就会切到定高模式
-
演示视频
免责声明
注意!!!
-
为保护用户的合法权益,请您在使用本产品前务必仔细阅读本产品提供的使用文档 wiki 、免责声明和安全须知。阿木实验室保留对上述文档进行更新的权利。请您务必按照说明书和安全须知操作本产品。
-
本产品不适合未满 18 周岁及其他不具备完全民事行为能力的人士使用,请您避免上述人士接触本产品,在有上述人士出现的场合操作时请您格外注意。
-
本产品为科研教育性产品,源码开源支持二次开发,并非稳定的商业产品,使用时需有一定的基础,且稳定程度不能和商业产品相提并论。购买产品表示您知晓并理解此产品的特殊性。二次开发有一定门槛,需要使用者具备一定的开发能力、自主学习能力。
-
一旦开始使用本产品,即视为您已阅读、理解、认可和接受本产品的说明书、免责声明和安全须知的全部条款和内容。使用者承诺对自已的行为及因此而产生的所有后果负责。使用者承诺仅出于正当目的使用本产品,并且同意本条款及阿木实验室可能制定的任何相关政策或者准则。
-
在使用本产品的过程中,请您务必严格遵守并执行包括但不限于说明书和安全须知里的要求。对于违反安全须知所提示的使用行为或不可抗因素导致的一切人身伤害、事故、财产损失、法律纠纷,及其他一切造成利益冲突的不利事件,均由用户自己承担相关责任和损失,阿木实验室将不承担任何责任。
-
用户使用本产品直接或间接发生的任何违反法律规定的行为,阿木实验室将不承担任何责任。
-
在使用本产品前,请仔细阅读本文说明。一旦您开始使用本产品,表示您对本文全部内容的认可和接受。请严格遵守本文安装和使用说明。因用户不当使用、安装、私自改装等造成的任何结果和损失,阿木实验室将不承担法律责任。
安全指导手册
注意!!!
-
本产品不适合未满 18 周岁及其他不具备完全民事行为能力的人士使用
-
本产品具有较大的机身尺寸、高速旋转的螺旋桨和强大的飞行动力,在运行时具有一定的危险性。未按要求操作和使用本产品可能会发生危险和伤害
-
使用本产品时,请远离机场、铁路、高速公路、高层建筑、电线等危险环境。
-
使用本产品时,请远离手机基站,大功率发射设备等高电磁干扰的环境。
-
使用本产品时,请远离各种载人飞行器。
-
使用本产品时,请绑定安全绳操作,避免安全事故发生。
-
请勿在下雨、雷电、沙尘、雾气、下雪、大风、低温等恶劣环境使用本产品。
-
在高于 3000 米海拔以上飞行时,环境因素会导致飞行性能下降,请谨慎使用本产品。
-
本产品为非防水设计,请勿尝试在水面降落。
-
操作本产品在低空飞行时,请始终保持无人机和人或动物保持10米以上的安全距离。
-
在非人烟稀少的地区使用本产品时,请始终保持无人机在操作者目视范围内飞行。
-
不要将本产品悬停或飞越人群上空,请勿以惊吓他人为乐。
-
当有围观人群靠近时,请小心操控,尽快降落离开该场所,避免发生意外。
-
请勿在儿童嬉戏的场所附近操作本产品。
-
请勿使用本产品追逐交通工具或影响交通工具的正常运行。
-
非极其必要情况,请勿当本产品在空中飞行时关闭电机。
-
本产品不可在饮酒、疲劳、服用药物、身体不适等情况下使用。
-
请在每次使用前对本产品进行检查,包括但不限于零部件的牢固度、机体和螺旋桨的裂痕和磨损、电池电量、指示灯的有效性等。当发现异常时,请立即停止使用并更换相应配件。
-
工作状态异常的无人机可能会发生意外,切勿启动螺旋桨或勉强飞行。
-
请勿尝试阻止本产品工作中的任何运动部件。
-
请勿改装本产品,或将本产品用于非原设计用途。
-
本产品不包括载物功能,请勿用于运输用途。
-
请使用原厂配件进行维护和替换。
-
转借给其他人员操作,请确保操作人员理解和遵守本安全须知。
-
请访问阿木实验室官网获取最新的免责声明和安全须知。