knowledge_map/交接内容.md
2021-06-09 14:26:51 +08:00

6.1 KiB
Raw Blame History

交接内容

DJI MSDK 复飞

开发环境

  • Android studio最新版
  • Java 1.8
  • DJI SDK 4.14 DJI UXSDK 4.14
  • 开发平台Windows/Mac OS

功能要求

  • 可以记录保存航线到本地
  • 加载录制的航线可以自动复线记录航线的内容
  • 不同的无人机可以使用同一航点文件
  • 支持RTK
  • 支持各个大疆机型

实现方法

录制复飞流程图

image-20210608153932140

任务控制

具体代码参考reflywidgetactivity.java的missionctrl函数

image-20210608154218300

数据存储

在Mylatlng文件中自定义list 数组用于存储航点信息。需要存储的数据有无人机的GPS信息lat,lng,alt偏航角度uavYaw,航点模式waypointactiontype,相机焦距camera_length云台角度pitch。在Recordwidgetactivity文件中有个admission 函数用于往空的数组中添加航点数据开始录制时保持最大频率10hz记录数据持续调用admission函数。当停止录制时将list数组转成json格式并写入到txt文件文件存储路径由savePath参数决定。当读取航点时只需要把过程逆向即可读取txt文件内容转成list数组保存。

数据处理

  • 数据平滑:使用滑动平均法进行优化航点使之更加平滑
  • 航点数据插值:航点数据插值间接提高控制指令的发送频率

参数配置

具体代码在reflywidgetactivity.java的btn_start_drone.setOnClickListener这个按键监听事件中

  • 打开虚拟摇杆
  • 设置无人机坐标系为大地坐标系
  • 设置虚拟摇杆rollpitch控制为速度
  • 设置yaw控制为角度
  • 设置垂直方向throttle为速度

坐标系转换

由于GPS坐标系无法进行导航所以需要将GPS坐标系转成北东天坐标系。具体转换方法看GpstoEnu.java文件

后续改进

  • 添加了变焦功能但是还未验证
  • 大型飞机复飞时不太稳定如M300需要进行优化优化方向有两个使用waypoint V2进行M300的任务控制和优化控制器的设计对PID进行调参或者使用更有效的控制器。

DJI MSDK 自主降落

功能要求

  • 使用机载相机检测停机坪,检测到后自动控制无人机降落到停机坪中。

实现方法

  • 将获取到的图传数据流转码成YUV数据供aruco模块使用,视频流转码参考代码https://github.com/DJI-Mobile-SDK-Tutorials/Android-VideoStreamDecodingSample
  • 使用opencv的aruco作为目标检测的方法
  • 将aruco检测计算的结果放入控制器计算得出结果发送给无人机
  • 高度还剩一米时调用DJI SDK一键降落的API进行降落
  • 对相机进行标定,将标定得到的相机内参传写入应用中。具体表达方法看标定方法那个文档。

实现难点

  • 问题:相机自动对焦会改变相机内参,导致标定得出的参数无法长时间使用。
  • 解决方案:设置自动对焦距离为一个固定的值。
  • 问题:使用打印机打印出来的标定板和检测板都不能满足标定和检测要求,原因是黑色不够黑。
  • 解决方案使用KT板打印制作标定板和检测板。

后续改进

  • 已经实现了降落的功能但是还只是demo阶段只能实施降落部分没有飞行界面没有任务管理。这部分的工作可以参考DJI MSDK复飞的代码来实现。
  • 紧急停机按键存在问题在使用紧急停机按键时可以夺回遥控器对无人机的控制但是app会闪退由于我手中没有飞机无法协助解决杭电同学也不清楚如解决。

phenix mini 无人车编队

功能要求

  • 使用phenix mini飞控控制麦克纳姆轮小车在lighthouse定位系统下实现可视化scratch编队编程。
  • phenix mini可以接收来自定位器的定位数据和控制指令
  • phenix mini可以对接收到的命令做出响应
  • phenix mini可以控制麦克纳姆轮小车移动
  • 定位器能够通过通过接收来自PC的控制信号转发给phenix mini 飞控

实现难点

  • 按照lighthouse文档配置飞控相关参数在无人机模式下phenix mini和pixhawk4都可以实现对定位数据的接收解码在无人车模式下两者都不可以
  • phenix mini 不支持无人车模式需要移植最新版的飞控到phenix mini相关工作已交给陈鹏华
  • 在使用pixhawk4 1.12版本固件的时候修改了编译配置文件和一些启动脚本重新编译PX4 1.12版本的固件使之在无人车模式下QGC能够显示LPE相关参数参数按照lighthouse文档进行设置进行测试时报错lpe:timeout.具体原因未知。
  • 根据官方文档在接入外部定位数据只提供给了多旋翼和垂直起降固定翼。 https://docs.px4.io/master/en/ros/external_position_estimation.html https://docs.px4.io/master/en/advanced/switching_state_estimators.html

lighthouse 室内定位系统使用和配置调参

  • 定位器使用电脑连接Wi-FiRSTSWARM2 密码RST12345678
  • 设置电脑IP为192.168.1.234。
  • 子网掩码为255.255.0.0
  • 网关为192.168.1.1
  • 启动scratch脚本和server IP即可实现对无人机的控制。

phenix mini 远程开发服务器

vnc

  • 安装VNC sudo apt install tigervncserver
  • 配置VNC

启动vnc

vncserver

第一次启动按照提示输入密码这个密码是用于登陆VNC的密码

后续想修改VNC密码可以使用如下命令实现

vncpasswd

修改xstartup文件内容

vi /home/用户名/.vnc/sxtartup

将内容替换为如下内容

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic 

重新启动VNC就可以使用VNC访问远程访问图形化界面了。

zerotier

  • 账号developers@robsense.com
  • 密码robsense2015
  • robsense是用于phenix远程开发的虚拟局域网。

gitlab

  • 账号root
  • 密码robsense2015
  • 访问地址处于zerotier虚拟局域网中192.168.195.106