admin管理员组文章数量:1605045
文章索引:
1.开发中遇到的bug记录、bug分析
px4开发bug记录_r135792uuuu的博客-CSDN博客
2.基础知识,学习笔记记录
https://blog.csdn/weixin_45754151/article/details/128241956?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128241956%22%2C%22source%22%3A%22weixin_45754151%22%7D
F330启动(视觉VINS)经验:
按顺序搞
1.端口先开权限 sudo chmod 777 /dev/ttyACM0
2.开地面站,把消息的mavlink速率改了
这两个消息要开高一点,不然没法启动,而且不满足香农定理
mavlink -d /dev/ttyACM0 -s ATTITUDE_QUATERNION -r 200
mavlink -d /dev/ttyACM0 -s HIGHRES_IMU -r 200
开电调回传
mavlink -d /dev/ttyACM0 -s ATTITUDE_QUATERNION -r 70
mavlink -d /dev/ttyACM0 -s ATTITUDE_QUATERNION -r 70
3.遥控器解锁,等电机转完,567通道打到对应的位置PX4——指令——桨叶正常,然后油门杆推到中间
4.ego的指令看说明,如果只悬停就开启:
T1:source!!一定要source不然就没有什么msg
sh shfiles/rspx4.sh
T2:校准vins,我一般是没有校准的
rostopic echo vins的imu,看看飘的大不大
T3:source
roslaunch px4ctrl run.launch(啥名字不记得了,Tab补全)
T4:source
sh takeoff.sh
这个时候,如果想让飞机悬停,就把6通道打到上面“悬停”的地方
那么此时降落就只能这样:
油门遥感向下打一点,别打完了,慢慢降落到地上,关闭T1和T2,然后油门杆打到0
如果没有切入悬停状态,那就
T5:sh land.sh
F330ros控制节点:悬停部分右边的是集群的节点,我用不上。
mocap动捕的使用说明:(12.5日补充)
发现f330的起飞必须依赖于vins,才能做视觉融合,才能正常起飞。要是设置注释掉起飞节点文件里面的vins的部分就无法正常起飞。(因为后面想用mocap的数据填充到/mavros/vision_pose/pose里面去,而vins占据了这个话题,所以先把它禁掉。后来发现其实不用,见12月5日的日志原因)
vins启动(视觉启动)参数设置:
px4+vins+ego单机鲁棒飞行二(外部位姿估计篇)_Nankel Li的博客-CSDN博客_ekf估计风速
330镇楼:
12.1
一上午——下午三点:
1.开始想要进一步缩小偏差,所以整个rviz看看力的偏差到底在哪里。
终端打印没什么太大的偏差,当前是悬停时候的误差,还是比较小的:
完成了在rviz中显示wrench和force的marker。是整体的marker。
红色的是wrench,绿色的是marker。测试了几组,比较准确,发现终端打印的force有偏差,原来是我力的方向没有平衡。本来设计水平力,结果歪了,难怪有偏差
红色的是rviz自带的wrench显示,有点难看,但是比较简单,发布一下wrench要求的那个话题即可。(但是当时发布了没有即时显示出来,好像刷了很久之后才能看到)
绿色的marker比较自由,可以根据自己的设置修改显示。但是有点费事,写法看代码复用。
2.下午四点-晚上:
matlab进一步分析数据,滤波。整理了一些关于滤波,数据处理的文档。
数据处理和滤波理论,部分的代码复用
12.2
9.00-10.30:
修改了一下昨天的遗留bug,增加了关于单独显示三轴force的marker,更加精确的看到力的变化。
10.50-11.10
检查了一下代码,简单优化了,该用引用的用引用,重构结构。
写日志。
下午2.00-4.10
原来的代码估计的force都不对了,很离谱,一直在debug找是哪的问题。结果发现,换了电池,重启之后又对了??很离谱,所以尽量满电再上。
估计是因为用的330的VINS来起飞的,起飞和悬停的油门取决于电池电压,电池电压不够了,默认的0.35的悬停油门不够,可能会升至0.4几才能起来,但是飞得也没有原来那么高度,估计的力偏小。
4.30-5.10
重新在n10上测了y轴2N和z轴-3N的力。y轴验证可以,但是z轴的力估计,数值上是对的,有静差。有一个0.5N的力,向下加3N后变成了-2.5N。
晚上-8点开组会之前:开mocap捕获mocap下的话题飞行测试。用的是超导写好的节点。测了两组bag,结果没有成功传到U盘上...明天来重新弄。看看记载电脑上有没有,名字是"SHUOMING1""SHUOMING2"
动捕mocap(NOKOV)经验:
关于Mocap和VIO的学习记录看另外的博客。这个下面有一点问题, different params leads to different method
说明书里面的一些细节看说明书,只记录动捕和ROS的启动、开启校准的方法:
1.mocap软件windows启动:
1.1 先开mocap数据采集的软件,(形影那个),导入标定文件,按下方第一个按钮把摄像头打开。
输入文件的名称后按enter,然后在界面上方“增加/删除模型”选择之前标定好的rigid的mav格式的文件,用n10的rigid叫“n10”。注意:如果rigid模型导入之后界面上没有出现这样的效果:
那就说明飞机上放的反光点匹配不了你之前的模型。
使用vrpn_client_ros 获取动捕数据,例如
roslaunch vrpn_client_ros sample.launch server:=10.1.1.198
要不就重新建立一个新的rigid;要不就检查一下是不是飞机上哪有东西给他阻碍识别了(我中途因为飞机拿下去反光点掉了,重新安装了一个位置变了识别不出来,所以只能重新建立新的n10的rigid)
弄完之后开下方中间的那个黑色的钮。然后开始摄像(红色的那个按钮。这一步好像只会用在在windows里面分析,位置在桌面左上角第一个里面。导出看说明书。ros下分析不需要录制,但还是录上以后用)
打开桌面上的client,输入第五个地址:10.1.1.198,不要输入5,不要输入中括号!
2远程连接到机载电脑
连接到记载电脑后,cd到mocap文件夹下,运行(用的是超导写好的节点,一键连接,一键发布坐标转换后的数据很不错。不同的飞机只需要改变launch文件里一个参数)
先开
./preinitMocap.sh
再打开
./initMocap.sh
如果不用一键启动节点就只能这样,经常出问题:
使用vrpn_client_ros 获取动捕数据,例如
roslaunch vrpn_client_ros sample.launch server:=10.1.1.198
然后查看一下发布的话题:
这个是超导修改之后的,以飞机自身所处的位置为0起点的position
rostopic echo /rigidBodyInWorld
这个是vrpn默认发的,姿态和上面一样,位置以mocap的世界坐标系为起点
rostopic echo /vrpn_client_node/n10/pose
QGC监听14557串口(虽然我也不知道有什么用),每次开QGC都connect一下
ApplicationSettings -> 通讯连接 -> 添加新的连接
补充:在14557开放第二个MAVLink接口,将MAVROS连接到这个14557端口将会接收到实际飞行中发出的所有数据
3 用mocap补偿飞控
按照下面的步骤,设置一下QGC,然后打开运行启动脚本(脚本里面自带mavros)即可。必须要使用mavros来回传数据给PX4校准。
但是要注意当前飞机设定的姿态估计融合的算法是哪个:LPE、EKF2、Quat。不一样的。
我目前尝试过EKF2和LPE(LPE是LPE+Quat的方法,所以理论上来讲单Quat应该是一样的),因为F330使用单Quat校准起飞,EKF2无法解锁,所以我成功使用的是LPE来校准。
详细分析看12.5的Mocap使用经验。
3.1 EKF2融合
AID:勾选vision position fusion和vision yaw fusion。默认是GPS。
HGT:勾选VISION,默认是气压计
话题转发(假定待传输刚体名称为Tracker0),转发到mavros里面去
因为EKF2没有用到/mavros/mocap/pose这个话题,vision和mocap都是使用的同一个话题:mavros/vision_pose/pose,所以只能发这个
rosrun topic_tools relay /vrpn_client_node/Tracker0/pose /mavros/vision_pose/pose
启动MavRos
下面的地址要注意是不是自己的地址:
roslaunch mavros px4.launch gcs_url:="udp://@127.0.0.1:14557"
f330里面,启动脚本里面自带了启动的mavros节点,看看地址是什么
查看动捕数据(QGC和mavros冲突,看不到,只能在终端rostopic看)
AnalyzeTools -> MAVLINK Inspector -> VISION_POSITION_ESTIMATE
可以观察到刚体的位移以及旋转信息,xyz roll pitch yaw
3.1 LPE融合(LPE+Quat):必须使用attitude_quaternion启动时
修改滤波融合的参数:SYS_MC_EST_GROUP F330上修改为第一个:loacal position estimation
后面的参数设置看12.5号的日志。
话题转发。因为LPE融合算法各自用各自的。vision用vision_pose mocap用mocap,而ekf两个混到vision_pose一起用。
LPE需要发到/mavros/mocap/pose这个话题
rosrun topic_tools relay /vrpn_client_node/Tracker0/pose /mavros/mocap/pose
然后查看一下:
rostopic echo /mavros/imu/data
是否稳定,稳定就说明对了
TODO12.2 疑问:
我们知道vins的姿态和位置的数据,是以启动vins的节点开始计算的。也就是什么时候启动vins,vins就会把当前的姿态作为启动的初始状态(摄像头的第一帧)。
但mocap的姿态和位置如何确定?
12.4解决: 实验发现,mocap的姿态取决于摄像头拍摄到的在mocap世界坐标系下的姿态。
12.3
10.00 - 11.10
记录昨晚的内容和写日志。
常用指令列表和命令:
常用指令列表和命令
13.00 -14.50
写作业,水下机器人的综述。
15.00-16.00 分析
1.先是运行了几遍之前在n10上录好的rosbag,x轴的数据比较好,y轴也还行,就是z轴的数据数值上对的上,但是数据有偏差。(我在飞机上放了一块300g砝码,向下有个3N的力,z轴什么都不放估计的外力的offset的是+0.5大概,放上去之后变成了-2.5N)
猜想:z轴offset的来源可以有很多,但是综合考虑过x和y轴的估计情况的,没有太大的偏差x和y轴的偏差基本震荡区间【-0.1,+0.1】,y轴会稍微大一点,因为在静止地面上的时候,用QGC去看IMU的数据,y轴上始终有个0.2-0.3的y轴的加速度分量。
又是因为我算世界加速度是通过IMU数学模型解算的世界加速度,所以可能是这里导致的原因。
IMU的数学模型
问题:
1.加速度计这个确实没法解决,但是我又要得到世界坐标系下的飞机加速度,GPS没法用,mocap的加速度也是通过位置微分来的也不太准确(看下图,微分出来都好大百的都有)。这个只能保存到excel里面在windows分析。
而且mocap发送到ros的消息也没有加速度的值,所以加速度这个东西没法直接获取准确的数值。
话题名字:n15的有两个:
/rigidbodyInWorld 这个是超导修改之后的,绑定在world系,以自己的坐标为position的起点
/vrpn_client_ros/mav/pose 这个是vrpn标准的名字,需要rostopic list查看一下
2. 姿态的问题。姿态现在可用的有三种,IMU的姿态;mocap的姿态,vins_fusion的姿态。代码里的姿态目前用的是vins的姿态。因为mocap当时没有开,IMU的姿态没有做AHRS校正,它的yaw(w和z)是一直在稳定飘移,所以没法用。
左边是imu(未校正),右边是vins的。而且并不一样
解决办法:所以考虑就是就用mocap来补偿IMU。看看能不能得到补偿过后的IMU的数据,比如在代码中进行融合互补得到的加速度,角速度,姿态等信息。
要不就用校正之后的IMU数据,要不就不管它的校正,直接拿到mocap的姿态数据来用就行。
16.00-17.10 & 18.20 - 20.00
状态估计算法选择参数
开mocap 之后发现一个非常离谱的问题。
QGC里面没有对应的参数?很迷,一直在找是哪的问题。按照上面的动捕经验那一个参数设置qgc,没有找到ekf2 mask和ekf2 hid那两个参数。一直以为是哪的问题,最后发现是姿态估计融合滤波参数的选择,直接导致了没有这两个参数。如下图。
如果选择F330使用的融合方式:
是没有那么多EKF的参数的,只有零星几个。
但是F330在启动的时候必须要订阅这个/mavros/imu/data这个话题,而这个话题看mavros的源码可以发现是必须要来自于这个mavlink才行:
而这个mavlink话题的发布又涉及到了px4飞控中状态估计的选择,也就是如下图:
切换状态估计器 | PX4 自动驾驶用户指南
- EKF2 姿态、位置和风的状态估计器 - EKF2 是一个扩展卡尔曼过滤器,用于估计姿态、3D 位置/速度和风状态。
- LPE 位置估计器 - LPE 位置估计器是 3D 位置和速度状态的扩展卡尔曼滤波器。
- Q 姿态估计器 - 姿态Q估计器是一个非常简单、基于四元数的互补滤波器。
所以说必须启动LPE才能保证F330能起飞。目前只在LPE上能满足mocap补偿的方法并且在两台机子上都成功。 单四元数估计没法融合。
SYS_MC_EST_GROUP
,该参数可以指定飞控状态估计的算法,有单四元数互补滤波,四元数互补滤波加LPE,EKF2,默认采用EKF2
使用ekf2所需的最低传感器配置为加速度计、陀螺仪、磁力计、气压计。如果缺少任意一个,则EKF2无法运行,如果缺少磁力计和气压计(也就是说只有IMU 6050这种垃圾IMU),可以使用单四元数互补滤波进行姿态解算,如果有位置传感器(如GPS),可以采用四元数互补滤波加LPE进行位姿估计。
12.5
所有的尝试只是局限在F330上,可能和固件编译的版本有关,有的网上的方法不行
9.30 - 11.20
看了一些资料和经验,确认是状态估计的方式选择不对。所以QGC中没有出现对应的参数选择。
有三种状态估计(滤波)方式:经过尝试,能在F330上成功用mocap校正的只有第一个:local position estimator(LPE)
在QGC中修改几个参数:
0.before modify the params, first to save the default params and params after modified.
save button in GUI front-up corner TOOLs .
1.修改滤波融合的参数:SYS_MC_EST_GROUP F330上修改为第一个:loacal position estimation 才行 位置估计器
att_ext_hdg_m → motion capture 使用动补观测
att_w_ext_hdg → 1 完全相信外部姿态
屏蔽gps,方便使用动捕
在usb连接时,允许飞行,此设置是为了安装机载电脑。因为记载电脑要控制飞控是通过USB线连接的
14.00 - 17.20
终于调试好了QGC 的参数
参数参照:QGC的参数对照表和解释:
参数参照表 | PX4 自动驾驶用户指南
PX4从放弃到精通(十八):参数_超维空间科技的博客-CSDN博客_px4参数
然后通过话题转发完成mocap校准飞控:
发现只需要转发一个topic进去就行,就是/mavros/mocap/pose,发给vision的话会和vins冲突导致无法起飞。而且F330(或者说我的参数LPE的选择导致了)只需要/mavros/mocap/pose就能完成对IMU的校正,不需要/mavros/vision_pose/pose这个参数
只用这一个即可
rosrun topic_tools relay /rigidBodyInWorld /mavros/mocap/pose
我还发了这个
rosrun topic_tools relay /vrpn_client_node/mav/pose /mavros/vision_pose/pose
也没问题,但是起飞的时候,这个东西就会占用vins fusion的话题导致无法起飞,所以我没开
/rigidBodyInWorld和/vrpn_client_node/mav/pose 基本一样,有一个坐标转换,我一直用的是/rigidBodyInWorld
可以看到本来是一直飘逸的mavros的imu姿态,终于稳定了:
运行之后节点图:
total
一整个晚上:
研究超导的n15怎么起飞。超导的n15起飞有问题,炸了五次机,而且好像每次降落之后,油门打倒最低下了,关闭330的控制程序会突然起飞冲天...所以现在我n10的机子上,都是降落停稳之后先打急停,再关控制节点。(我估计是n15的vins没有搞好,很飘)
换成了我的n10,然后把n15上面的mocap启动节点cv过来修改了一下,然后正常运行了。
测试了z轴上放-3N的力的bag。
mocap校正的经验:关于一开始F330经验的问题解析
按照网上和官网的一部分教程,说需要使用EKF2滤波的方式,把mocap的参数传入到这个ros话题的/mavros/vision_pose/pose里面,再通过这个ros话题反传递会px4的mavlink,然后传递给飞控的uorb进行校准。
所以拿到数据的第一件事就是给他变成EKF2
然后按照12.2号的动捕经验修改那几个ekf的参数
然后转发:
rosrun topic_tools relay /rigidBodyInWorld /mavros/vision_pose/pose
然后我在开启f330的启动节点之后,发现这个东西和vins的这个话题冲突了,应该是vins解算的姿态也发布到这个里面来了(但不知道为什么,vins的pose并没有对IMU的姿态起到校准的作用?),所以冲突了,就没管他。
然后看官网说到了用LPE参数的设置
利用视觉或运动捕捉系统进行位置估计 | PX4 自动驾驶用户指南
突然反应过来:我这个是LPE融合,和EKF2不一样。
看这个参数使用对照:
LPE是都在用,而且各用各的,互不影响。所以我转发的vrpn的消息再LPE下只能取/mavros/mocap/pose里面,发到vision_pose里面是只对vision起作用(而我的参数又选择了att_ext_hdg_m → motion capture,所以在这套参数下根本没用vision这个玩意)
EKF2是只用到了vehicel_visual_odometry这个,对应上面的mavros是/mavros/vision/pose,所以之前发送过去的才会没有作用。
12.6
上午:
来了就开始录制新的bag,录制l在xyz三轴分别施加不同的力的bag,然后回来写日志。
2.00 - 17.10
完善代码,把mocap,imu校正之后的数据给放进来处理计算力。
还是那个问题:一直存在偏置。xyz三轴的偏置大概是:啥也没干时(-0.23,-0.55,0.67)-施加力之后悬停时(-0.3,-0.6,1.0)。
然后通过这些方法都没用:1.控制器消除静差——没有控制量,于是作废 2.修改重力加速度为深圳市的g-9.79——改完发现估计的力变小力 3.试错法——太慢了而且没有发现问题在哪。
估计是桨叶水平的问题导致悬停时候飞机倾斜;也可能飞机在悬停的时候控制器不稳定的;或者地面校准的时候地是歪的;
简单推导了一下数学关系(目前缺乏严格的数学关系)
晚上计划测试一组数据:1.飞机ground的时候;2.飞机stop悬停的时候;3.弹簧称末端连接皮筋,防止它的力跳变,然后再测一组xyz分别施加力的bag
18.10-19.30
完善日志,把之前细节的地方一个一个补上,简单整理了一下mocap的使用经验,过几天写个文档。
19.40- 21.40 计划测试
飞机应该是电池装的有点歪,飞起来直接朝右边冲过去。
飞机失控,震荡的原因:
1.vins飘了,定位失败,因为mocap会对vins造成影响,所以vins失误概率变大;
2.螺旋桨的问题,因为n10用很久了,炸过很多次,可能是导致了螺旋桨受损,升力不平衡;
3.单纯电池装歪了,一边伸出去比较多,重心不稳。
然后拆螺旋桨,重新换了一个,然后助教准备实验,没场地,就测试了1和2先回来分析。
工程经验
1.装配和拆卸:
螺旋桨太死了,最后采用力矩法(六角螺丝刀的把手上面有孔,找了个小改刀,穿进去六角螺丝刀的孔,然后旋转那个小改刀),能够提供一个很大的力矩,才能把那个螺丝拆下来。
2.弹簧称拉力不稳:
弹簧秤末端的挂钩连接一个橡皮筋,用橡皮筋再绑在要拉的物体上,这样会比较稳定。因为橡皮筋有韧度可以对抗形变,所以连接上再去拉橡皮筋不会有太大的变化。
12.7周三
上午:处理事情
14.00-17.20
一直在尝试解决force三轴的偏置问题。如果直接摆烂的话可以直接在结果处暴力加上偏置的值,但是为了考虑以后飞机的通用性,所以要想办法在不同的飞机上消除偏置的方法。考虑加上正态分布的影响。
各数据分析见word
加速度数据。静止在地面上时算出来的世界加速度的值的偏差。理论来讲应该是0 0 0
hover时估计的外力的数据
然后查看force,accel等数据的正态分布参数,均值和方差。看笔记的word里记录。
目前思路有以下四个:
- 直接对force加偏置和正态分布,其实之前试过了也行,可能就是不太具有通用性
- 对解算出来的accel_world世界加速度值做加偏置(是否需要滤波后再加偏置)
- 对IMU原始数据accel滤波之后加偏置(同样)
- 找到水平面之间的数学关系,然后校准纠正姿态
- 重新非常平稳的测试,可能测试时受力不是严格的沿着轴向,而是存在一定倾斜角度
18.40-8.30
飞机下午拿下去上课了,所以下午没有测试。于是晚上重新测试了新的rosbag数据。(昨天更换了桨之后z轴好像发生了变化,所以重新测试一下偏置的情况)
1.在x轴负半轴加2N的拉力,基本比较稳定在2N附近;2.在y轴负半轴加2N的拉力,这个情况下弹簧秤显示只有1.5N左右的力,飞机被我拉飞走了,应该是某个时候力气太大破坏平衡了;3.同理,但这次没有被拉走,但没有到2N,大概只有1.7N-2.0N的样子(我也记不清了);4.z轴放一个3N的砝码,比较稳定,可以拿来测试偏置的情况
第一个思路:
根据hover的force,matlab尝试了几组参数,前后的变化幅度基本都不大:
// offset if force
Eigen::Vector3d force_mean(-0.0976, -0.4005, 1.0474);
Eigen::Vector3d force_covariance(0.0859, 0.0947, 0.2483); //scale the variance
直接加上去之后,z轴的数据比较稳定:
y轴数据再-2N左右:
x轴:多了整整1N的力出来,而且我设置的x偏置很小不到0.1
可能这个方法有点问题。还是换一条路吧。
12.8
9.20-9.34
简单整理了一下最近的网络资料,弄了一点。
9.40-11.15
一直在用matlab分析数据,数据的正态分布,写到word里面,和老师讨论偏差一直存在的原因。
11.5-12.40
一直在排队,审核电瓶车,还排到一半不排了。太慢了,一个小时就处理了个位数。
14.20-15.20
把mocap的使用经验重新整理了更详细的版本,内容在上面。
15.30-16.20
还是去把电瓶车车牌审核什么的给办了。
16.20-17.10
对于偏置一直存在的情况,尝试用第四种解决思路,但是经过修改之后没有那么复杂:
原来的思路是:飞行在天上q_W_real一个姿态 ;静止在地上q_W_stable一个姿态。严格意义上来讲q_W_stable应该是0 0 0 1,但是因为摆放的误差,所以实际是类似:0.001 -0.032 0.012 0.9997
所以要给他补偿到0001。
也就是说看看效果:直接在姿态左乘一个矩阵,让结果能够等于0 0 0 1.所以逆矩阵就是所求。
不校准R之前:
force的偏置:x小于-0.1,y从-0.02—-0.5,z从0.6-1.0
世界加速度的偏置:x大震荡,-0.0几—0.5,y从0.0几——-0.5,z正负0.4
R校准:
只能说略有改善...还是存在一个稳定的偏差。
我怀疑是加速度计的问题,因为加速度计它就不是我理论上的0 0 g
静止在地面上时,xy误差可以接收,但是y轴的还是很大。
hover时它的值是:
这充分说明一点,IMU拿的源是数据在PX4里面就没有做好去噪和补偿,可能是QGC参数没搞好:HIGHRES_IMU.hpp
这里bias我觉得不太对
并且hover时IMU不稳且偏差大,我严重怀疑是振动的问题,要不就减震,要不就直接补偿offset
18.15-19.00
写日志,整理一下新的内容“PX4飞控内容”和其他的内容更新。
19.00-21.30
进入到Moblie SDK的开发,在windows上装了Java,Andorid 开发器,装了一晚上,跑通了第一个hello world。
有个bug,不知道是不是华为的原因。进入开发者模式后,我点击允许USB调试,但是android开发界面找不到华为手机。一直在解决这个问题。
不知道点了哪里,在手机上再次点击允许USB调试后出现了一个提示框里面是一串密码,之后就可以了。
12.9
9.20-10.00
完善了一下日志,换了几种补偿的方式,发现还是不行,有空再试其他的。
10.00-11.10
昨天晚上只跑了Hello World的Android的第一个案例。但是今天想要把大疆的moblie的SDK跑通,各种环境和版本的什么grabal包不匹配问题。又因为看不懂,debug都没发de。
14.00-16.00
终于还是debug出来了,我都不知道各种改才改出来,很迷,有空再看什么问题。
16.00-20.00
周报+出去聚餐
20.00-21.40
研究下java的Android的开发了,正好还有聪哥之前写的APP,研究一下结构和写法语句。
打算转Android的虚拟机环境,我的手机内存不够了,一直失败不知道为什么。
12.10
上午+中午:
一直在装Android虚拟机环境,主要的参考:官网甚至没有csdn靠谱
Android Studio安装常见问题详解——Android Emulator Hypervisor Driver for AMD Processors installation failed._wendy_ya的博客-CSDN博客_android emulator hypervisor driver for amd process
为 Android 模拟器配置硬件加速 | Android 开发者 | Android Developers
Android里面的SDK一直无法安装,最后总算成功了。我觉得应该是我文件夹名字的问题
之前不知道为什么后面有个-2,去掉之后就正常了。
什么重启,关闭虚拟化,重命名之后,才出现STATE 4才算正常
因为不安装Android 虚拟环境,无法在虚拟手机上下载程序,会一直报错。
14.20-15.20
研究代码结构,和我要实现的功能要怎么搞。
我的需求是:Onboard SDK需要拿到数据,用Moblie SDK发送到遥控器(Android系统)上。
15.30-16.00
帮助共轴开mocap,调试飞机。
16.10
TODO 数据的计算和流向
但问题就是,中间的计算过程我是在Onboard中(用ROS)拿数据又实现计算,传送结果到Moblie中就行。还是Onboard中只拿数据,数据发送到Moblie中计算,然后显示?
先学学看怎么简单可靠怎么来。
12.12 周一
一直在看b站学AS开发Android 同时看DJI的开发文档。
.2自学Android开发笔记和DJI moblie SDK1
12.13 周二
一直在看b站学AS开发Android 同时看DJI的开发文档。
同样见上面那个文档。
初步的研究了一下DJI的msdk的内容。
12.14
有两个版本的SDK,一个是V5也有sample code,一个是sample code。研究sampe code的结构,太复杂了,也没有很深入的java经验,看了一天整理了两张a4纸,太慢了。照这个进度明年都分析不完。(主要是教程的版本太落后了,不想看,但是后来没办法,还是只能看,一边修改)
官网上的教程就是nt,很多地方又不详细,还有版本更新之后错误的地方,一直在修。
比如官网给出的案例:build gradle中的dependencies
单纯这么写一是版本更新之后,这两个用法舍弃 ,编译会报错(网上说不会 也是nt)
最后发现直接改成他sample code里面的就行。
dependencies {
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:2.0.4'
testImplementation 'junit:junit:4.13.2'
//noinspection GradleCompatible
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
// 高版本AS已更换关键字compile为implementation,privided关键字也已经过时了,不进行替换编译时会发出警告,会影响程序使用
//compileOnly ('com.dji:dji-sdk:4.12')
//implementation('com.dji:dji-sdk-provided:4.12')
// 官方的sample用到这个
implementation 'androidx.multidex:multidex:2.0.0'
implementation 'com.squareup:otto:1.3.8'
implementation('com.dji:dji-sdk:4.16.4', {
/**
* Uncomment the "library-anti-distortion" if your app does not need Anti Distortion for Mavic 2 Pro and Mavic 2 Zoom.
* Uncomment the "fly-safe-database" if you need database for release, or we will download it when DJISDKManager.getInstance().registerApp
* is called.
* Both will greatly reducing the size of the APK.
*/
exclude module: 'library-anti-distortion'
//exclude module: 'fly-safe-database'
})
implementation 'com.google.android.material:material:1.4.0'
compileOnly 'com.dji:dji-sdk-provided:4.16.4'
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.core:core:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-rc01'
implementation 'androidx.annotation:annotation:1.0.0'
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
implementation "androidx.core:core-ktx:1.6.0"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.0.0-rc01"
//implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9"
implementation 'com.google.android.gms:play-services:11.8.0'
implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.1'
implementation 'androidx.lifecycle:lifecycle-runtime:2.3.1'
implementation 'androidx.lifecycle:lifecycle-process:2.3.1'
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1"
implementation 'com.google.guava:guava:29.0-android'
implementation 'org.apachemons:commons-math3:3.6.1'
implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.10.0'
implementation 'io.reactivex.rxjava2:rxjava:2.2.4'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
}
最后成功导入dji的SDK,没成功之前一直都是红色的
12.15
从上午到下午三点,跟着dji官方的老版本的demo进行,最后发现无法编译通过??但是代码中全都没有红色的报错,编译就这样:
第一个问题:发现他的gradle properties不对,有个报错,所以我直接把sample code里面的gradle properties cv过来
android.useAndroidX=true
android.enableJetifier=true
android.injected.testOnly=false
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
然后会有新的问题,错猜想可能是版本的问题。官方教程很老了,没有更新过,所以版本以及不行了。而我用的是新版本的,他就出现了版本问题,报错:
发现问题然后尝试修改:那个版本改成21(后来改成了23还是闪退)
其他地方因为版本发生变化,库也发生了变化,所以那你报错修改哪里就行:
闪退,安装一般就闪退无法打开。然后看了下sample code的,这里似乎有一个FFmpeg 防止版本高的闪退,加上去:
加上之后还是不对。
还在sample code中cv了很多东西过来,一直debug。
16.20 终于好了
去github上下载了dji编好的版本,本来想直接用这个的,但是回去发现了自己的问题在哪。运行成功。(虚拟机还是不行,手机上可以)
注释留下来,到时候总结。
在activity main.xml里面 修改 把xml文件的头改成这个类型
需要使用这个layout才行
</androidx.constraintlayout.widget.ConstraintLayout>
它默认的那个什么东西有问题
换成这个才可以
16.30-17.10
看了下一个文档,这个文档只管大概介绍下怎么使用,不管接下来的。下一个文档直接上sample code的解释。
我在12.26的日志里记录了直接下载dji官方写好的importsdk,可以看看,但是还是有问题。
晚上:
拿dji的mavic3 御3搞了一下,不知道为什么,一晚上都没连上手机的sapmle code。麻了,看看教程吧。
12.16
下午三点才开搞:上午团建去了
发现昨天辛苦写的笔记没保存...我裂开了,写入好多,一下回到解放前。心态有点炸,只能重新写了。
12.17
继续学习,分析djiV4版本的msdk的源代码。一边学一边看。
下午周报,晚上玩。
12.19
上午:整理笔记
下午-15。50
尝试分析报错在哪:
界面是这样的:我按Register APP for LDM是左边的;按蓝牙是中间,按Register APP是右边的
蓝牙和其他两个还不在一起。应该是哟独立的页面
按照代码的指示,第一个LDM那个,代码是
那串字符串就是:
后面的getDescription用log看:
第三个是:
蓝牙是:
解决:12.26
大意了,原来是key不对...12.26去dji开发者看到了这个app的key才发现,我那个package name写错了,改正之后,注册成功。Bluetooth也打开正确。但是LDM依旧注册失败。
12.20
不管了直接进入到V5的移植。V5和V4完全不兼容,而且V5还需要uxsdk,麻了。
直到下午16.40才解决的问题:我直接打开samplecodeV5的工程文件会一直找不到路径,每个地方全部报错。一直在解决没用。直到看到这个
大疆SDK-初识MSDK V5_merryV的博客-CSDN博客_大疆sdk
然后我发现原来需要打开下面的子文件作为导入,要打开蓝色背景条的那个子文件
然后就没有问题了。太坑了。
12.23&12.4
梳理V5的结构
ProcessOn思维导图、流程图-思维导图模板_思维导图软件免费下载_在线作图协作工具
以及开始研究uxsdk。因为我发现module common中没有测试工具左边的显示栏的布局文件,所以我猜想多半是在uxsdk中。
并且我发现:拥有这种从uxsdk导入的插件的头,全都没法加载:(虚拟摇杆的界面)
经验:AS无法显示布局界面预览图
碰到一个问题(其实一直都有):用as打开项目后,无法看到有一些xml的布局,和所有ux SDK的布局都无法看到:
但是有的能看到:
找了一圈说是style.xml的问题,去看uxsdk的xml,有两个小报错
debug网上的方法都没用。
方法1:改成这样(在styles.xml的229行),改下APPTheme的parent看看。还是没用
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
方法二:看到报错描述
Resource named '`AppTheme`' does not start with the
project's resource prefix '`uxsdk_`'; rename to '`UxsdkAppTheme`' ?
看到build.gradle里面
加上看看效果
没用。
是不是因为界面太复杂了,所以显示不出来?每次就是短暂的出现一下就消失,我怀疑是哪的问题。就default_layout那个打不开,其他的小组件到时可以看到。那不管这个问题了。重点研究为什么msdk中两个灰色没法点的为什么。
我发现不管是uxsdk里面还是common或者aircraft里面,只有是布局文件带了从ux里面导入的布局的全都无法打开:如下图。
所以我猜测,可能是因为没有成功导入uxsdk的包。检查一下:
版本问题:更新一下版本不知道好不好。还是没用
依赖导入:
这个只是引入uxsdk
common没有导入
uxsdk也没有,不知道是不是不需要还是什么
加上之后,还是没用。算了不管了,但是他能短暂的出现一下:
补充:dji android sdk开发(uxSDK开发文档)
uxsdk教程
大疆文档(1)-介绍-概念_世外大帝的博客-CSDN博客_大疆 extendeddata 属性
研究一下为什么这两个键没法点开。 我的遥控器打开没有任何的toast弹窗,默认演示页面和控件列表也是灰色的没法点亮。
官网的长这样:
我的遥控器打开没有任何的toast弹窗,默认演示页面和控件列表也是灰色的没法点亮。
代码中,应该是这个地方没有成功执行回调函数(因为我开遥控器,发现遥控器里面没有出现任何的消息提示)
12.26 周一
有点混乱了,打算重新整理一下目前的任务。弄一上午都是感觉无用功。
msdk开发任务梳理:
需求目标:
1 用msdkV5版本在M300RTK(不支持V4)的遥控器上进行开发。官网教程写的和答辩一样。
2 V5版本涉及到一些全新的东西:java+kotlin;单元模块化;ux sdk的使用。都得学
3 最后代码呈现出的效果应该是在这里吗?所以我需要搞明白这个东西到底是个怎么写出来的界面代码,然后把我的代码逻辑执行到里面去。加一个我的“风速估计栏”,然后点进去之后的界面点一个按钮直接可以弹出三轴的风速。
4 因为又是横屏,所以单纯的线性布局我感觉会乱(调试好了其实也不会),要不就约束布局画页面,要不就线性布局调整参数适应横屏。
问题:
1.目前没有开飞机,只启动了遥控器,显示这样 :
没办法打开默认演示(也就是ux sdk的页面)和控件列表;以及显示未注册(我已经登录dji的账号了的)
猜想:可能是没有连接飞机的原因,开启飞机连接上遥控器再试一试
2. 风速估计的执行:线程?
因为无法显示uxsdk的页面,我也不知道页面应该怎么写,逻辑应该怎么搭建。完不成需求3。所以要是能行,我需要在需求3里面的页面,加入一个我的风速估计栏。然后点进去这个栏后,大概是个这样的。
我是不是需要把这个程序按照dji msdk开发的逻辑,加入到它的线程中,然后什么调配。还是根本就不管,直接点个按钮就开始计算?
3. 代码中需要使用到一些飞控底层的量:
需要问dji的工程师,imu拿到的数据是不是校正之后的,还是校正之前,需要注意。
可不可以通过解算的方式,把imu变成世界系下的加速度?准不准确?
4. 代码结构混乱
官网写的太垃圾了。目前大的版本有的是:V4( DJI Mobile SDK V4)和V5(Mobile SDK V5)
小的分开的东西有:官网给的V5的初始入门教程(com.android.application);uxsdk的演示demo(大疆UX SDK);应用程序激活和飞机绑定(大疆msdk应用程序激活和飞机绑定);V4的入门教程演示代码
最终的目的还是需要在V5上的那个程序中实现的。一个个实现看一下。
ux sdk的demo:什么都没用,并且没法点击
sdk导入(见12.15的日志,就是这个,我没有注册它的dji的key所以这里报错)
应用程序激活和飞机绑定:
开始直接问我要了结果权限,然后就这样:和上面的那个不一样。
5. uxsdk的界面无法显示
但是他能快速的闪动一下,然后又黑掉。
我猜测应该不是uxsdk的问题。因为我在V4里面,也是同样的,就像这个:
猜测:造成这个的原因应该是布局文件xml中的头:不是常规的什么线性,约束。而是采用了java逻辑的方式,不是oncreate而是什么extends 布局,类似父布局,子布局什么的。
java:
12.27
上午:
修改估计代码的页面布局,改成约束的以适应横屏
任务:按照dji msdk开发笔记程序梳理的第二个,我直接把这个页面加载在这个里面去。放入到
AircraftFragmentPageInfoFactory().createPageInfo()这个里面,然后被加载。
也就是说:
任务目标拆分:
1. 首先加在这个里面需要有个fragment类型的页面,把我的约束布局的逻辑改成fragment?还是fragment拥有自己的属性,他的实现还是约束布局,但是封装成一个fragment?TODO
2. 按照这个添加string page那堆属性
3. 按照nav页面的fragment,我需要添加name一个实现逻辑;layout一个页面布局;
4.然后考虑适配的问题,起码先保证能运行起来,后面再考虑会不会崩,是否需要加入线程考虑并发问题。
12.28
上午:
循环执行任务,涉及到线程handler
几个网站参考
下午:完善代码 仿照其他几个fragment和什么VM文件实现主要逻辑
就完成了变量名的替代,还没有实现业务(估计)的逻辑
晚上:
太坑爹了,文件我加上去之后一直显示找不到,一直debug。直到八点,我重启了一下编辑器,然后就显示找的到了。浪费居多时间。我还以为是程序的问题,结果是玄学的编辑器。
20.15-晚上
弄好了框架,接下来就是风速估计的逻辑实现。目前会闪退,然后回到主界面activity上。应该是逻辑没有修复好,只要是能够正常的展示出来我的那个界面就算。
明天的任务:
成功debug修复好逻辑,打开风速估计能够不闪退。(参考其他的实现)
等dji工程师回复:精修逻辑的实现,从API拿到数据什么的
12.29
上午:
dji工程师没有回复,按照昨天回复我的,目前只有融合了xyz三轴的速度和欧拉角,没有我想要的数据。
中午回复了:
按照她说的看一下:
可以的2000多行
这是开放的API文档,是经过测试的,key里面有,文档里面没有的那就是未经测试的。
和老师商量了下,把中短期任务改一下:
中短期任务:
方案一:osdk全部计算完,把结果发给msdk,遥控器只显示结果
方案二:osdk处拿数据,在msdk计算并显示,等msdk可以直接拿到数据,直接去掉osdk的电脑,就是我们原来套路的形态
原则是能拿就拿,把接口预留出来,我想想把方案一和方案二能不能处理到一起,可以切换数据来源。如果处理不了我就整两个页面,需要哪个再更新就行
数据更新频率可以指定:msdk从服务器拉取数据有200多kb,然后向服务器发送不到10kb每秒。
看看有没有API可以指定通信速率的。因为要比较快的速度。
按照官网的数据通信带宽 传输速度:
补充:通道带宽 传输速率
- 可靠传输
- MSDK 上行(向服务器端发送数据)为3KB/S;下行(从服务器端接收数据)为250KB/S
- OSDK 与PSDK 间的数据传输速率为500KB/S
- 开发者可以通过SDK获得丰富的传感器数据。GPS位置,指南针,气压计,飞行速度和海拔高度都是通过Mobile SDK获取的一些传感器数据,频率最高可达10 Hz。
本文所指
- 客户端:根据指定的通道ID,发起通道连接的一端,如基于MSDK 开发的移动端APP。
- 服务器端:根据用户的实际需求,创建通道并指定通道类型和通道ID 的一端,如基于OSDK 开发的应用程序。
下午:
改进逻辑 测试页面布局效果:不断修改:
按停止获取按钮
调试的逻辑+界面大概设计好:
(应该学学单元测试的,不然每次修改个逻辑就得全部重新编译下载,怪麻烦的)
到晚上十点:分析key,manager等的用法。很迷惑,需要研究一下,这个类的定义在哪,为什么一个空的定义莫名其妙就能返回一个值。肯定是在哪重写了。
V5的API接口说明文档:
DJI Mobile SDK Documentation
12.30
处理私事 一上午
中午:搜寻co_j文件里面的2000多行的key,看哪个能用:
没有找到加速度的信息,但是可以间接的得到数据:V5的API中可以拿到的
DJI Mobile SDK Documentation
姿态可以拿到;通过位置和速度是不是可以卡尔曼滤波或者建模的方式拿到加速度。但是电机转速没有找到,只有控制电机启动锁住,ESC滴滴叫的功能。
所以要拿到motor转速的东西,还是需要osdk才行。
源文件中:涉及到motor的在API文档中没有写出来,应该是还没有测试,那就只有我来测试,看看能不能拿到对应数据。类似这样 keymotorescmstate这种key。
1.1-1.4
开题
1.5
14.00-
研究co_j文件下面的那些key。
如何使用key以及在哪使用
写笔记:mavros转换框图、mavros转换流程图、坐标变换公式
mavros转换框图、mavros转换流程图、坐标变换公式
飞控底层原理分析(北航+PX4 旋翼模型)飞控模型 飞控数学建模 数学模型:看这个
飞控底层原理分析(北航+PX4 旋翼模型):飞控模型:
2.4
找回年前的任务进度,回顾之前的任务。
终于高明白了MSDK V5开发上的一些问题,整理了2个A4纸的内容,搞清楚了MSDK中DJIKey,DJIManager和DJIValue那些东西的关系和用法。
但是windows电脑寄回去修了,等修好之后寄过来再开始直接写MOP的内容。
TODO:MOP互联互通内容写法
MOP部分的内容还需要进一步研究。因为DJI 的官方文档也没有把V5的MOP做好,写的非常细碎,所以还需要自己研究V5如何互联互通。
2.6 周一
上午:完善V5的风俗估计代码,写了一部分。中午11点反应过来还没有把电脑寄出,寄电脑去了。
下午:换了三个NUC,一个NUC装中文输入法装出错了,开机就死机,太迷了。
一个是只有windows系统。
第三台就是这台”NUC11 NUC#4“。
开始安装dji osdk的东西:(安装osdk)(onboard sdk)(dji osdk官网)
DJI Developer
晚上的进度:
按照官网的说明,这几步做完
这没有问题
目前:
但是有问题的是:
dmesg那里我没有找到任何acm的东西;ffmpeg安装显示如下:
我源码下载了ffmpeg,还没有进行下一步的安装。
opencv是4版本的不是3.x,不知道能不能行:
然后就是准备运行demo:
创建运行程序没有问题:
然后
但是我的版本是4.0,一川的版本是4.1。
TODO:明天来checkout一下,或者重新下载4.1版本的。
暂时先这样,明天在来抄川老师的设置,按照他的来
下面这一步估计是要连接线,连接飞机,所以我没有稿这一步骤 TODO
就做到了这里,而且随着明天切换osdk版本为4.1,这个build需要重新整一下
2.7
上午:发现剩下的那台电脑全是bug,巨多问题,所以还是把n10老伙计拿过来用了。安装输入法以及一些需要的依赖,各种问题,一直到下午五点才搞好。
安装opencv 3.4.5 这个版本比较稳定:这个博主的靠谱
Ubuntu安装OpenCV3.4.5(两种方法&&图文详解)_ubuntu 安装opencv_振华OPPO的博客-CSDN博客
Ubuntu安装中文输入法:
网上的教程全是错的,没有一个成功的。最终成功的方法:
1. 更换我的下载源:
Linux更新源 source.list 自定义第三方源_r135792uuuu的博客-CSDN博客
换成之后update和upgrade一下,upgrade没成功也无所谓,有一个成功就行。
2. 下载搜狗官方的才行,ibus系列的输入法我每一个成功
搜狗输入法linux-首页
Ubuntu的下载包是x86_64的,下载之后按照官方教程进行安装(果然还是官方管用,注意看指导的Ubuntu系统版本,我的是20.04从一半的位置开始的)
搜狗输入法linux-安装指导
3.最后这一步,官方也没有做好,需要把搜狗移动到最前面:不然没有效果
五点:继续安装dji osdk。按照官方的环境配置(大疆dji官方 osdk环境配置)
DJI Developer
吃饭前安装完。
晚上:
运行官方案例1和2。都需要连接飞机(再小一点是飞控)才能正常运行,不然就是只能make编译
1是linux代码,直接在linux里面直接运行bin文件:linux代码再Onboard-SDK文件里面
./djiosdk-flightcontrol-sample UserConfig.txt UserConfig.txt
2是ros代码,运行ros。ROS代码在Onboard-SDK-ROS文件里面。 这个vehicle node是4.0以上的,另外那个sdk node是3.9.
M300只适用4.1版本。
roslaunch dji_osdk_ros dji_vehicle_node.launch
DJI OSDK结构和命令:
dji onboard sdk:
编译:cd 到build文件夹里面camke ..然后make
运行:收到
dji onboard SDK ros:
编译:回到dji_osdk_ws工作文件夹下catkin_make(osdk编译命令 编译指令)
运行:
晚上:为了后续要是更换电脑太麻烦了,直接写了一个一键完成安装的脚本。
# DJI initialize settings
sudo usermod -a -G dialout $USER;
sudo echo "SUBSYSTEM=="usb", ATTRS{idVendor}=="2ca3", MODE="0666"" > /etc/udev/rules.d/DJIDevice.rules;
# need to restart make it avaliable
# install dependencies
sudo apt install libsdl2-dev;
sudo apt install ros-noetic-nmea-comms
sudo apt-get install libavcodec-dev libswresample-dev
sudo apt install ros-melodic-nmea-comms
sudo apt install libavcodec-dev libswresample-dev
sudo apt install ffmpeg
sudo apt install libusb-1.0-0-dev
sudo apt install libusb-dev
sudo apt install libsdl2-dev
sudo apt-get install unzip
sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff5-dev libopenexr-dev libtbb-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libgtk-3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev pkg-config
# install opencv
mkdir /home/$USER/opencv;
cd /home/$USER/opencv;
wget -d https://github/opencv/opencv/archive/3.4.5.zip
unzip 3.4.5.zip
cd /home/$USER/opencv/opencv-3.4.5;
mkdir build
cd /home/$USER/opencv/opencv-3.4.5/build;
cmake ..
sudo make -j4
sudo make install
# opencv enviroment settings
sudo echo "include /usr/local/lib" >> /etc/ld.so.conf
sudo ldconfig
# !!! you need to delete the space between "$" and "PKG_CONFIG_PATH", save it then moves on!!!
sudo echo "PKG_CONFIG_PATH=$ PKG_CONFIG_PATH:/usr/local/lib/pkgconfig" >> /etc/bash.bashrc
sudo echo "export PKG_CONFIG_PATH" >> /etc/bash.bashrc
source /etc/bash.bashrc
pkg-config opencv --modversion
# download dji OSDK from github
cd /home/$USER;
mkdir -p dji_osdk_ws/src;
catkin_init_workspace;
cd /home/$USER/dji_osdk_ws/src;
git clone -b 4.1.0 https://github/dji-sdk/Onboard-SDK.git;
sleep 10;
cd /home/$USER/dji_osdk_ws/src/Onboard-SDK
mkdir build
cd /home/$USER/dji_osdk_ws/src/Onboard-SDK/build
cmake .. -DADVANCED_SENSING=ON
sudo make -j7 install
sleep 10;
cp /home/$USER/dji_osdk_ws/src/Onboard-SDK/sample/platform/linux/common/UserConfig.txt /home/$USER/dji_osdk_ws/src/build/bin
# run the command to check out the program insallition:
#cd /home/$USER/dji_osdk_ws/src/build/bin
#./djiosdk-flightcontrol-sample UserConfig.txt UserConfig.txt
# download dji OSDK ROS from github
cd /home/$USER/dji_osdk_ws/src;
git clone -b 4.1.0 https://github/dji-sdk/Onboard-SDK-ROS.git;
sleep 10;
cd /home/$USER/dji_osdk_ws
catkin_make
source devel/setup.bash
2.8
上午:看到一个新的配置osdk的博客, 实际检验之后是错的,还是跟着官方来。
下午:开始写msdk的代码。经过了msdk流程的复盘,终于知道它在干嘛了。所以趁着手感写一下。笔记后面整理再发。
在这里报错了,明天问一问群里的人看看是不是这个用法。
2.9
没有问人,花了一天时间自己终于搞懂这些咋用。有bug再问。
把笔记整理一下发上来。主要是getValue和listen的用法。
2.10
上午:把笔记整理成电子版的发上来
DJI MSDK V5 开发流程,指南(Kotlin)、关键函数、类的写法流程、msdk教程
https://blog.csdn/weixin_45754151/article/details/128982765?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128982765%22%2C%22source%22%3A%22weixin_45754151%22%7D
版权声明:本文标题:日志记录+工程经验 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1728473301a1159798.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论