首页 > 其他分享 >用ardupilot 做无人船项目的总结

用ardupilot 做无人船项目的总结

时间:2022-10-14 09:33:40浏览次数:47  
标签:总结 ardupilot pixhawk 遥控器 主控 模块 无人 gps

转发:https://blog.csdn.net/W_nvshenglu/article/details/117168763?spm=1001.2014.3001.5502

用apm做无人船项目,前后一共两年,无人船主控的自动巡航精度与船的整体性能基本稳定,IPD小批量(业务量小,小批量足以)。下一代无人船系统框架刚讨论出来,项目成员由于各种原因,散了,还是挺怀念当初一起抬船去河边的时光的…不扯了。。。。。。

无人船项目的简介
目前市面上大多数的无人机公司采用px4或apm来做的。这几年水务场景的应用越来越广泛。总体来说,做无人船的公司不多。本人介绍无人船项目最初是用于测绘市场的,简单来说就是 用无人船代替以前的人工船测量水深,绘制地形图。该无人船还上过两次央视新闻,也算是不辜负这两年的付出,哈哈。 期间,还和某通信公司合作了一个用无人船水质检测的项目。也拓宽了无人船的应用场景。

ardupilot
无人船能找到的知识比较少,涉及到的路径规划,gps+惯导等等,如果从0开始写,工作量将无比巨大。还是用开源的项目来做,进度快一点。尽管如此,还是花了两年才小批。。。。。。

思路:无人船和无人车差不多,将4个轮子换成船用的动力装置。所以借鉴 apmrover代码分支,编译,环境,代码分析,仿真等等

1:代码用git管理的,百度一下,git的简单使用就可以了。想详细了解的,可以看git权威指南这本书。 2:本人是使用ubuntu的,相对而言,在ubuntu下的编译比windows快。u buntu怎么装可以百度,帖子很多。 3.阅读代码本人是用sourceinsight,在ubuntu下,装wine,然后就可以使用 sourceinsight了,也能百度的到。 版本说明:用的是apmrover3.1.2的版本,当时的稳定版。 4.如果你是ubuntu,安装环境apm已经写好了脚本,tools/scrips/install-prereqs-ubuntu.sh,执行这个脚本即可。注意。会报错pip2没有安装,将脚本里的pip2改成pip即可。

系统组成
无人船的系统分为船体,主控,动力,船整体通信系统,功能传感器,上位机,,遥控器,电池。

船体

船体,国内做船模具的也不少,可以尝试联系搞一个。 主控 刚开始谁也不知道怎么做,只能说摸着石头过河,既然要采用别人的软件, 就不妨用pixhawk来做主控,搭一个无人船的样船。官网能找到硬件的原理图。一开始不建议直接画自己的硬件,前期验证,还是用官方的pixhawk来采坑吧。

动力系统
动力系统一般分为两种设计: 1.舵机加电机的方式。阅读源码可知,apmrover的控制方式是舵机加电机,舵机和点击的驱动方式是pwm。 2.差速转向。差速转向就省了一个舵机,举个例子,左边转速比右边快,不就右转了吗。但是差速转向受船体结构的影响,太长的船,转向会不灵敏。 3.动力部分代码的分析,以及差速转向的修改思路后续会开一章节。

船整体通信系统
无人机飞控上一般的通信是通过数传模块,可以理解为主控将数据传给数传模块,数传模块在传给电脑上的上位机(反之一样)完成数据的传输和控制。刚开始无头绪的时候也可以采用数传模块做样船,先完成基本通讯,后续在优化。我们刚开始也是数传模块,但是数传模块的带宽不够,传摄像头的数据会很卡。在样船完成后基本上就可以考虑,通讯系统的优化了。思路可以有很多种。举例系统集成,用串口服务器+网桥(900m或者5G)+交换机的形式组成局域网,完成通讯系统。。。。。面对不同的应用场景,也可以采用4g的通讯方式。

功能传感器
功能传感器根据实际的应用需求添加,最基本的gps+避障模块+摄像头在加上你的应用场景的,比如测绘的,就加上单波束,多波束。水质的就加上你的水质仪。传感器的选型需要花点功夫,,因为作为一个船上的模块,你的避障得装在船头吧,船头离主控的距离可有有个一两米。需要注意。 1.gps的选择看系统对于定位精度的要求而定。精度要求不高的选择ublox模块,几百块钱。精度要求厘米级的就得采用rtk了,国内的rtk华测,中海达,南方,司南,国外的就是天宝。 2.避障模块:可以采用的是超声波maxson啊,美国进口的,晶度和稳定的还可以。就是距离受限制,10米。你也可以选择距离远一点的激光雷达。就是好一点的雷达价格比较贵,国内口碑比较好的禾赛和速腾 。(团队散了后,本人还去禾赛面试,可惜太菜了,没通过。) 3.摄像头:摄像头还是推荐使用海康威视的。 4.如果做水质检测的,水质仪推荐使用哈希的。

上位机
上位机采用missionplannner。apm官方的开源的上位机软件,主要是和无人船的主控建立通信,可以加载地图,不知无人船的航线,控制无人船的执行自动巡航模式,等等。负责和无人船的交互。

遥控器
加遥控器可以大大的增加用户体验,一开始玩船,玩飞机,不要太开心。 遥控器分为日本手,和美国手,遥控器的牌子一般两种,国内的推荐frsky ,还有一个futuba的。

主控
pixhawk有2个imu,九轴的mpu9250,还有l3gd20 ,lsm303d +uboxl里的磁力计一般是hmmc5883,新版的ublox磁力计是icm20948.组成2个imu。 pixhawk上还有sd卡用来存日志,蜂鸣器,串口,iic,can等接口。方便你接各种传感器二次开发。 新出的pixkawk2将imu,fmu和电源底板分离,imu做了减震处理。 对于pixhawk不多做介绍了,用原版的硬件只是用来验证,做产品,接口的扩展性等等不是很合适,肯定是要自己做硬件的。

电池
电池一定要找好一点的电池厂商,质量太差,会爆炸。一点要注意。

样船
准备好上文的系统组成还还有一些配件后,就可以着手搭建自己的样船了 ,搭建自己的样船,前期只能自己飞线。思路就是围绕着pixhawk,将他的一些接口飞出来,需要加长的加长,需要转换的转换,固定的固定。代码的烧录看了官方的文档就知道了,可以用usb烧录,我们选择的pixhawk对应的是 make px4-v2-upload 烧完代码上电如果蜂鸣器有清脆的一段音乐,就说明程序跑起来了。要做好遥控器的匹配工作。遥控器将pwm传给主控,主控在输出给电调和舵机。注意正反转的设置。 配置好之后,现在室内试一下,遥控器等等。然后再外出下水测试。 下水之前要注意个传感器的状态,准确的说看ekf滤波器的状态是不是可用。初次的使用,还是下水先试一下,手动模式,测一下,船的动力系统和遥控器的性能。然后在开始早missionpalnner上调试参数。在前期样船准备的时候你的外界传感器要工作,就需要设置一下波特率,用法等等。ekf的一些参数也需要微调。系统才能起来。传下水之后,ekf如果没问题。就可以自动任务了。自动巡航的轨迹,就需要控制调试了。可喜的是,apm将pid等控制参数,做成可调的形式,供用户调试。初期的项目还是用apm自己的pid,可调的控制参数,推广性不是很好,后期最好加入自适应的调参。 在样船的基础上开发调试基本的避障,数据处理等等产品功能,前期的耗时 可能比较艰苦。一方面既需要开发功能,一方面前期的样船稳定性不好,各种东西易损,还得在河边调试。。。。。。。

硬件制板
样船功能差不夺得时候,就是做自己硬件的时候,先找到官方的开源原理图。根据自己的需求增加。各个公司规范不一样,pixhawk上的传感器,大部分比较旧了,不是新料,会停产的,基本会跟换掉,当时的mpu6000,换mpu9250,l3gd20换成l3g20h等等。 硬件回来基本上都会遇到一系列的问题,慢慢解决即可。

这时候功能基本上就差不多完善了。接下来就是一些系统上的性能优化。 中途舵机的料停产,更换舵机,电流翻了一倍,板子重新改版,新增了spi转串口的芯片等等。

软件优化
软件上做的事情也基本上回顾一下吧。 1.mpu9250,l3gd20h的更换调试。 2.避障停止时间与响应的优化。 3.ublox的icm20948调试加入 4.iic电池的电量检测。跳动处理,与低电量返航发,报警的处理。 5.ublox,rtk双gps的冗余设计。以及rtk从固定跳浮动的处理等等。 6.桥洞不收星ekf的优化。 7.自动巡航,入线的优化。 8.自定模式的遥控器映射。 9.水质仪的数据采集处理及mavlink消息传输 10.测深仪的数据接入主控处理,dep文件格式的采集处理。 11.数据的下载处理。 12.gps位置与测深数据的不匹配的后处理(插值算法) 13.adi惯导模块的接入与数据融合。 14.ekf磁力计数据的去除(产品量产时,罗盘数据的易干扰性暴露出来,为此采用单天线的gps的航向数据融合,本来准备在下一代采用rtk双天线的方案,但是项目进度要求,只能先用单天线,先满足市场需求) 15.系统数据的延时处理。 16主控板接口的自动化测试脚本。 等等其他。

平台迭代
stf4系列做的主控平台,水质的应用场景一展开,串口就全用完了。打出来的固件也越来越大。后续的业务功能开发扩展已经不合适。为此有两种思路。 1.将apm一直到linux平台上,一开始考虑的imx6上,后来无意中逛帖子发现阿木实验室已经将飞控移植到imx6上了,不知道性能如何。 2.单片机加imx6的方式。考虑到主控的实时性要求。还是不移植到imx6上了。采用f4加imx6的方式,主控控制部分的还放在f4上,业务处理扩展的部分放在imx6上。 3.之前的罗盘处理部分,一开始定的方案是双天向的定向方案,由于已到小批量阶段,暂时采用单天线的gps航向融合。此方法的弊端就是下水后需要手动跑一条直线,获取航向,让ekf工作,影响用户体验。双天线的话,开机就有方向输出。之呢个作为下一代的改进了,百度apollo3.5发布的时候有一个亮点突出,就是双天线的航向获取。当时还高兴了一下,英雄所见略同。如今在逛一下a’pollo,发现已经5.0了,而且限定区域量产,不得不佩服。 4.gps位置和水深位置同步的问题。暂时的解决办法是插值处理。本质上是主控和采集的水深一起时间不同步的问题。平台迭代是需要加入数据的时间戳处理。

总结
ardupilot的代码还是非常好的。ekf,ahrs,等等,每一个模块,都是一个工程师的工作。虽然笔者都涉及了,但是都不精。 写此系列的博客,仅代表个人理解和分享总结,有不足之处,希望您提出来。帮助我成长。更重要的一个原因是开始做Linux驱动了,再不写下来记录一下,就忘光了。加油!!!!!!
————————————————
版权声明:本文为CSDN博主「W_nvshengdan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/W_nvshenglu/article/details/117168763

 

标签:总结,ardupilot,pixhawk,遥控器,主控,模块,无人,gps
From: https://www.cnblogs.com/jiangshan110/p/16790549.html

相关文章

  • 【学习笔记】字符串小总结
    刷了两三周的字符串题,可以说对于这些字符串算法有了一个基本的了解了,大概包括从普及到省选的字符串算法。1.哈希1.1算法基础:我们一般写的哈希就是使用的指数的形式,因为......
  • python中的字符串/列表查找函数小总结
    find()和index()首先是适用情况,'list'objecthasnoattribute'find',list没有find方法,str全有.返回的情况:查找成功都会返回查找字符串的首位的下标(索引).若......
  • SharedWorker使用总结
    最近有个需求要在浏览器页签之间实现信息共享,由第三方包处理。看过人家的效果介绍,嚯哦,闪瞎我的双眼!没见识过的技术,怎么也得看一看呀......
  • CentOS firewall简单总结
    CentOSfirewall简单总结简介防火墙是安全的重要道防线.硬件防火墙一般部署再内网的边界区域.作为最外层的防护.但是一般硬件的防火墙会比较宽松.不然会导致很多业......
  • 10月13日小总结
    今天上午,3个半小时抱了个零蛋,原因竟是没开longlong,longlong真是害死人啊。。。呕了,下次一定开。T1的暴力5分钟过样例,自信提交,直接抱零。T2的部分分没拿到,spfa的最短路......
  • ctfshow文件上传总结
    简单总结下 文件上传前端限制绕过:抓包修改对应项即可,不过本人更习惯上传一个符合要求的文件,然后抓包后只修改后缀名,看看能不能上传成功文件上传后端限制绕过:一般都是检......
  • ctfshow 文件包含总结
    一些php伪协议就不具体介绍了,也不讲太详细filter伪协议可以利用过滤器来读或者写php://filter/read=convert.base64-encode/resource=flag.php  如上图,不能让......
  • 每日总结(~~鲜花,酰铧 ❀~~) (晚上没精力切题了,就来写写总结吧)
    每日总结(鲜花,酰铧❀)(晚上没精力切题了,就来写写总结吧)10.13今天没考试,快乐刷题。事实证明,蓝以下数论题有思路的话真好切(不过一般我没有),python与高精度真是......
  • 【Pandas总结】第五节 Pandas 数据查询方法总结_df.loc()总结
    一、写在前面如果说Pandas最重要的方法是什么,毫无疑问就是查询数据;所以,这节的内容应当是Pandas的核心知识点。能够按我们的要求查询出所需的数据,是我们使用Pandas的最重要......
  • NetBSD安装中的一些问题总结
    参考文档:https://www.cioworld.cn/guide/install/netbsd-quick-installhttps://www.netbsd.org/docs/guide/en/最近迷上了BSD系统,玩了一阵子FreeBSD之后,发现FreeBSD对ar......