P200阿木无人机学习笔记--二维码引导着陆

2023-05-16

目录

我手上的阿木实验室的P200无人机配置

现阶段目标:实现二维码引导着陆

项目理解

进度-更新中

踩坑经验

初次设置时没有显示器如何远程连接TX2?

虚拟机和双系统谁更好(ubuntu)

无人机无法解锁,报错"compass sensors inconsistent"

px4_command运行gazebo仿真时,QCC地面站无法自动连接

Gazebo和V-rep比较

安装ubuntu双系统经验

Prometheus项目下载与跑通


2021/06/09更新

这篇文章写于一年前了,本文的二维码引导降落试验我也早已实现。

一年前写这篇文章的时候我还是个无人机开发的小白,这篇文章就是当初我努力理解无人机开发的一个笔记。如今回首,之前困扰我的很多问题早已不是问题,自己也有了开发无人机,独立编写控制代码的能力。一些配置的笔记写在这里。当然还有我写的很多其他博客。

二维码引导降落是我的一个无人机入门练习。本文没有给出具体的方法和代码,因为我实在是没有精力写这些。大家可以参考下面给出阿木的一些代码,自己琢磨,多实践。其实懂了之后并不困难。

-------------------------------原文分界线------------------------------------------

我手上的阿木实验室的P200无人机配置

TX2板载计算机(预装好ubuntu16.04系统和ROS、mvros等,amov_ws文件夹下载有px4_command开源项目代码、没有安装PX4编译环境、没有安装nomachine软件)

Pixhawk4飞控(应该是预先刷好了阿木的Firmware V110中的v5版本的固件)

单目USB摄像头一个、激光定高模块一个、wifi数传一个、遥控器。目前没有激光雷达和双目摄像头。

 

现阶段目标:实现二维码引导着陆

主要参考资料:

新手入门:https://amov-wiki.readthedocs.io/zh_CN/latest/docs/新手入门.html

阿木的github:https://github.com/amov-lab

阿木的b站无人机开发课程8课:https://www.bilibili.com/video/BV19K411p7do

阿木的论坛和学院:https://bbs.amovlab.com/forum.php?mod=viewthread&tid=486&extra=page

阿木的Prometheus无人机开源项目(含二维码自主着陆):https://github.com/amov-lab/Prometheus

理论依据论文:Qi, Yuhua & Jiang, Jiaqi & Wu, Jin & Wang, Jianan & Wang, Chunyan & Shan, Jiayuan. (2019). Autonomous Landing Solution of Low-Cost Quadrotor on a Moving Platform. Robotics and Autonomous Systems. 119. 64-76. 10.1016/j.robot.2019.05.004. 

 

项目理解

目前的目标是复现Prometheus无人机开源项目中的二维码引导着陆环节,包括gazebo仿真和真机实验两部分

Github上的Prometheus或者px4_command本质上是写好的ROS包,它的任务是处理传感器的数据,估计飞机姿态、给出飞机的运动指令,并利用mavros将指令发送给pixhawk飞控固件(阿木改过的固件,真机用的是Github的px4_command里的firmware,仿真用的是Github的Firmware v110,都不是pix官网的固件)。

现在所说的无人机开发其实指的是任务层的开发,集中在编写ROS程序放到TX2上去跑,而不是对pixhawk飞控的开发。如下

本次无人机开发是基于ROS的,ROS将一个个功能模块封装好并提供模块间的通信机制(topic、service等),便于机器人系统各模块之间的协调工作。我需要改写的代码主要是单目相机图像识别节点和自动着陆控制律节点。节点可以用cpp或者python编写,ubuntu系统预装有python2和python3.5

无人机开发流程:  建立数学模型  ->  算法编写(matlab或者ros) ->  仿真(ros-gazebo或者 matlab-ros-gazebo)-> 实机实验

如果用ros直接编写算法代码进行仿真,稍作修改就可以移植到真机的板载计算机上。

参考:https://www.bilibili.com/video/BV1hE411h7sy

 

进度-更新中

已完成

ubuntu系统安装学习 (虚拟机)

P200基础使用学习   

自己电脑安装PX4编译环境、ROS环境等

跑通px4_command开源代码中的gazebo仿真程序

安装ubuntu双系统

下载并跑通 阿木的Prometheus无人机开源项目

未完成

阿木无人机仿真课程学习(ros和gazebo实现PX4无人机仿真)

阅读并理解Prometheus中的二维码着陆代码

修改代码实现二维码着陆Gazebo仿真

二维码着陆真机实验

……

 

踩坑经验

 

初次设置时没有显示器如何远程连接TX2?

到手TX2是没有显示器的,要么用HDMI线接上显示器,要么在一个wifi网络下使用nomachine远程桌面。我没有显示器也没有HDMI线,只能远程桌面连接。问题是想要远程连接就必须让TX2和我的电脑连接上同一个WiFi并下载好nomachine,可是没有显示器我怎么让TX2连上我家的WiFi并且下载nomachine???

真是一个死循环,百度无果后我还是想到了解决办法:那就是用有线网络连接

找一台路由器,一根网线。网线一头插TX2一头插路由器输出网口,自己电脑也连上这个路由器的WiFi,这样自己的电脑就和TX2在一个局域网下啦。

接下来需要知道TX2的IP地址,显然这时不可能在TX2里输入ifconfig查看IP,可以在自己电脑上登入路由器的设置网页(tendawifi.com,melogin.cn,192.168.0.1之类的,路由器上有),默认账号密码一般都是admin,里面可以查看到连到这台路由器的所有设备的IP。如果忘记了路由器的密码,可以按路由器上的按钮恢复出厂设置。

也可以用360安全卫士里的“路由器卫士”查看连接到wifi的设备的IP。

我的电脑是win10系统,假设TX2的IP是127.111.0.1。打开cmd,输入ssh ubuntu@127.111.0.1就可以登陆到TX2啦!(TX2预装了ubuntu系统,系统账号和密码都是ubuntu)。其实也可用xshell登陆TX2,或者用winscp。

但这时只有命令行界面,没有图形界面。下面需要在TX2安装nomachine,可以用命令行从网上下载安装,也可以用自己电脑下载好安装包,然后用winscp把安装包上传到TX2的ubuntu系统,命令行输入指令安装nomachine。参考nomachine官网。

这时打开自己电脑上的nomachine,重启TX2,理论上就能连接上了。但是我的nomachine老是提示"Waiting for the desktop user to authorize your connection",这说明TX2的ubuntu系统需要确认连接,但是我都没有ubuntu的图形界面怎么点确认……

解决方法在:https://www.nomachine.com/TR10L04623

然后应该就能远程桌面连接上TX2的ubuntu系统了。

这时有了图形界面就好办事了,让TX2连接上WiFi(建议是实验室的wifi或者是无人机自带的wifi),然后就不需要这根网线了。以后无人机开机就能自动连接wifi并且启动nomachine,自己电脑连接上和TX2一样的wifi就能使用nomachine远程桌面了

当然也有VNC远程连接ubuntu的教程,我试了一下没成功,其实nomachine挺好的,还可以自动搜索同一局域网下的待连接电脑。

 

虚拟机和双系统谁更好(ubuntu)

VMware15虚拟机的优点:安装简单,占空间小(10G);内存、cpu、硬盘资源可以随使调整分配量;可以和win10同时使用,便于用ubuntu遇到问题时用win10查资料,而且可以把win10下载的资料直接拖入ubuntu系统。对新手学习ubuntu很友好

VMware15虚拟机的缺点:运行gazebo卡,不能用上显卡

双系统安装有风险,而且不能同时使用win10和ubuntu,但是可能不是很卡吧。

其实两者并不矛盾,都可以安装,用虚拟机做一些验证和练习,用双系统跑仿真。

 

无人机无法解锁,报错"compass sensors inconsistent"

双罗盘不一致导致,重新校准传感器也没用,可以直接禁用pixhawk上的内置罗盘。如下:

“地面站错误提示原因是磁罗盘受到干扰,尤其是内置磁罗盘,导致内外磁罗盘数据不一致,解决办法有两种:1.在参数列表里面修改内置磁罗盘参数CAL_MAG0_EN,将Enabled修改为Disabled。2.飞控内置磁罗盘容易受到激光雷达内的电机磁场干扰,需要将激光雷达高度适当调高。”

 

px4_command运行gazebo仿真时,QCC地面站无法自动连接

参考新手入门https://amov-wiki.readthedocs.io/zh_CN/latest/docs/Gazebo仿真.html

这部分参考Gazebo仿真教程部分都做好后,运行一个仿真,打开QGC地面站却没法自动连接gazebo

首先,QGC地面站的版本肯定越新越好,但是ubuntu16.04系统不支持最新的QGC,我用的是QGC3.5.2版本的,是ok的

其次,按照新手入门所述,我安装的px4编译环境是1.8.2版本的,不是最新的。这个版本的px4编译后生成的build文件名有所不同,如下

但是新手入门里添加环境变量却是按照px4 v1.9.2版本以后的来添加的,如下图。要是进入这个路径下面会发现没有"px4_sitl_default"这个文件夹,而是"posix_sitl_default"

因此这里添加环境变量,红色圈里面应该改成posix_sitl_default

这也告诉我们,添加环境变量不要照搬教程,而是要检查到底有没有这个路径,有没有这个文件

修改后QGC就能自动连接了,仿真也能正常跑了。

参考 https://bbs.amovlab.com/forum.php?mod=viewthread&tid=486&extra=page

参考 https://bbs.amovlab.com/forum.php?mod=viewthread&tid=987

 

Gazebo和V-rep比较

之前我做无人车用的v-rep仿真

v-rep可以在win10下运行,操作简单易懂十分浅显。而且自带很多机器人模型,改一改就能用。可以选择用Lua这种类似硬件的控制模型,也可以用python、matlab控制,vrep都提供了很简单的接口。v-rep多用于机械臂和一些固定机械的仿真,场景和机器人单一,不能进行px4无人机仿真。

做无人机仿真还是要用gazebo,操作复杂一些,而且要用linux或者macOS运行,新手很难上手。gazebo主要针对需要使用ros的机器人系统,场景和仿真的逼真度都高很多。

总之,新手可以用vrep,但gazebo更强大且适用于ros系统。

 

安装ubuntu双系统经验

我的笔记本电脑品牌是Acer,已经安装了win10系统,现在安装ubuntu18.04双系统。

我的boot是UEFI的(不是legacy),双硬盘(128G固态硬盘+1T机械硬盘)

主要参考如下:

《Windows10安装ubuntu18.04双系统教程》https://www.cnblogs.com/masbay/p/11627727.html

《win10下安装Ubuntu16.04双系统》https://blog.csdn.net/s717597589/article/details/79117112

主要参考的是以上第一篇,注意要在固态硬盘分200M空间安装ubuntu的引导

主要遇到的问题有:

1、制作的ubuntu的U盘启动盘插入电脑后,boot manager没有识别出U盘启动项

2、安装成功ubuntu双系统后,打开电脑没有显示linux的grub选择菜单,而是直接进入了windows系统

3、安装成功进入ubuntu系统后,重启再进windows,windows的系统时间错误

解决方案我写在另一篇文章里:

https://blog.csdn.net/benchuspx/article/details/108267599

 

Prometheus项目下载与跑通

Prometheus是阿木实验室提供的开源无人机开发项目,可以实现避障、激光雷达、自主降落等多种功能的gazebo仿真和配合P200无人机的真机实验。github上有完整的工程和Wiki讲解,链接如下

https://github.com/amov-lab/Prometheus

Prometheus本质是个ROS package,它和上文“新手入门”中提到的px4_command项目是一个类型,但是含有的功能包更多,下载和安装方式也不大一样。

上次下载px4_command项目以及配置px4、ros环境,我是在VMware虚拟机上进行的,全部实现了但是gazebo仿真十分卡,而且没有二维码引导着陆的功能包。这次我是在双系统ubuntu上下载Prometheus并配置px4、ros环境,过程有些许不同。

这次我安装的都是最新版的环境。ubuntu18.04、px4是1.10-stable版本、ROS-Melodic、Gazebo9。当然gazebo9在安装px4或者ros的过程中可能已经安装了。

我遇到的环境配置问题如下:

1、px4、gazebo环境配置顺序

2、gazebo打不开,报错gazebo: symbol lookup error;编译px4不成功

3、运行roslaunch……,报错ResourceNotFound: gazebo_ros

解决办法我写在另一篇博文

https://blog.csdn.net/benchuspx/article/details/108303032

 

待续~~

其实还有很多问题,百度能解决的这里就没写了

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

P200阿木无人机学习笔记--二维码引导着陆 的相关文章

  • 将以-1结束的整数存储到字符型数组中去

    代码如下 xff1a xff08 在求整数长度的时候注意0的存在 xff09 xff08 注意字符型数组中存储的是acsii码 xff0c 比如说要将整数1存到字符型数组arr 100 中 xff0c 则是arr i 61 1 43 39
  • C语言数组的结尾字符

    对于整数型数组来说 xff0c 结尾字符为整数 对于字符型数组来说 xff0c 结尾字符为 0 xff0c 占一个空间 所以当输出字符串数组时 xff0c 若要整体输出 xff08 printf 34 s 34 s xff0c 则要在数组末
  • 含有字符串数组的结构体的赋值、输入、字符串比较

    1 之所以用到结构体 xff0c 是因为一个物体有多个属性 xff0c 此时使用结构体简单些 2 对字符串进行整体操作时 xff0c 需要添加头文件 include lt string h gt 1 字符串赋值需要使用strcpy char
  • JavaWeb

    JavaWeb Maven amp MyBatis xff1a https cyborg2077 github io 2022 08 11 JavaWeb01 JavaWeb HTML amp CSS xff1a https cyborg2
  • Ubuntu20.04+eclipse+jlink(openocd+SWD)+arm-none-eabi-gcc+STM32开发

    Ubuntu20 04 43 eclipse 43 jlink openocd 43 SWD 43 arm none eabi gcc 43 STM32开发环境搭建 1 文件准备 安装Eclipse IDE for C C 43 43 De
  • Java中类型转换

    1 char int int output 61 temp charAt 0 39 0 39 2 int char int a 61 1 char b 61 a 43 39 0 39 3 String int 将字符串转换为整数 int o
  • JAVA中int和char类型的相互转化

    预备知识 xff1a 1 int类型长度为4个字节 xff0c char类型长度为2个字节 所以char int为自动转换 xff0c int char为强制转换 xff08 因为可能有数据丢失风险 xff09 2 Java中设计char的
  • stm32的一些简单注意点

    下面说的这些只是一些关于 xff1a MiniSTM32f103系列的开发板 xff0c 以下皆是参考stm32中的手册 xff0c 只是博主的一些愚见 大家都知道 xff0c 我们是通过usb线连接我们的开发板和电脑 xff0c 我们用电
  • C++ vector用法(详解!!函数,实现)

    xff11 xff0c 简述一下vector的基本操作 xff0c 它的 xff53 xff49 xff5a xff45 xff0c capacity xff08 xff09 xff0c xff43 xff4c xff45 xff41 xf
  • 为什么很多公司都是用PADS和orCAD的组合来设计硬件呢?

    请问为什么要选用ORCAD画原理图 xff0c PADS画PCB呢 xff1f 两个不同的软件 ORCAD画原理图比较方便 xff0c 而PADS画PCB画PCB比较强大 xff0c 许多中小公司都这么干 这是各区二者所长 因为ORCAD的
  • XCOM V2.6串口助手

    XCOM V2 6 串口下载 链接 xff1a https pan baidu com s 1hMkNY zq0nqxfFnH4VRbDQ 提取码 xff1a 5bzm
  • STM32中文参考手册_V10

    STM32中文参考手册 V10 链接 xff1a https pan baidu com s 1AZXyanPyiazpVvVrJwXvRg 提取码 xff1a uwi5
  • 200SMART通信问题及解决方案

    今天在试运行S7 200SMART PLC 以太网通信 遇到以下问题 xff1a 连接时通信接口无选项如下图 解决办法如下操作 xff1a xff08 本人win10 xff09 1 打开任务管理器 xff08 在任务右击选中任务管理器即可
  • 快速创建一个scrapy爬虫

    如何快速创建一个scrapy爬虫 如下操作 xff1a 1 首先创建一个scrapy文件 在pycharm中的Terminal 中输入scrapy startproject myspider 2 快速生成一个爬虫 先进入生成后scrapy文
  • Codesys配置电子凸轮连接虚轴

    外接编码器通过电子凸轮连接虚轴 1 创建编码器和虚轴 xff08 Encoder为编码器 xff0c 该编码器是4000脉冲为一转 xff0c AXIS1为虚轴 xff09 2 配置编码器参数如下 3 配置虚轴参数如下 4 测试用了以下功能
  • Matlab的plot的线形、marker的形状、颜色

    Line StyleDescription Solid line default Dashed line Dotted line Dash dot line MarkerDescriptionoCircle 43 Plus sign Ast
  • 电脑操作用户不小心被禁用,千万不要着急。

    不小心将电脑用户禁用导致无法使用电脑 xff0c 该怎么解决 1 常见的用户禁用情况2 非常见情况 xff0c 按F8进去安全模式出现密码弹窗 记住密码的 3 极端情况 xff0c 电脑用户被禁用 xff0c 安全模式的密码不知道 有可能忘
  • Laravel框架源码解析

    一 请求 响应篇 1 程序启动准备 1 1 服务容器实例化 index php入口文件包含了 app 61 require once DIR 39 bootstrap app php 39 这一行代码 xff0c app php会返回框架的

随机推荐

  • 【转】MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)

    转自 xff1a http www matlabsky com thread 10308 1 1 html 一 基本知识 xff1a 转 1 二进制文件与文本文件的区别 xff1a 将文件看作是由一个一个字节 byte 组成的 xff0c
  • vscode开发ROS(5)-ROS工程目录结构

    ROS工程目录结构 ROS工程整体结构图package文件夹devel文件夹 vscode文件夹 ROS工程整体结构图 1 ROS工程整体结构图如下 2 对应到之前创建的test工程 如下 3 ROS工程总目就是整个工程的根文件夹 对应这里
  • vscode开发ROS(19)-ros与arduino串口通信(c++)

    ros与arduino串口通信c 43 43 写在最前安装serial库编写arduino串口通信程序编写ros节点端口号配置配置CMakeLists txt文件编译整个ROS工程运行节点后记 写在最前 串口通信在嵌入式领域的重要性我也就不
  • 无人机开发套件

    一 产品介绍 我们现在有完善的仿真环境开发视频教程和系列硬件学习平台 xff0c 可以帮助学生实现飞控开发的入门和提成 xff0c 帮助项目实现原型的搭建和开发的迅捷 xff0c 辅助老师实现无人机的教学 科研便捷 xff0c 可以帮助学习
  • 无人机基于Matlab/Simulink的模型开发(连载一)

    一切可以被控制的对象 xff0c 都需要被数学量化 这是笔者从事多年研发工作得出的道理 xff0c 无论是车辆控制 xff0c 机器人控制 xff0c 飞机控制 xff0c 还是无人机控制 xff0c 所有和机械运动相关的控制 xff0c
  • 无人系统路径规划开发流程(避障方向)含代码

    有很多同学在我们微信群和我们阿木实验室论坛提问 xff0c 无人机 无人车的路径规划和避障应该怎么入手 随着无人系统的发展 xff0c 无人系统的路径规划的研究也越来热 生活中无人机器系统也越来越多的出现 xff0c 从无人机 xff0c
  • 双旋翼Falcon无人机背后技术之PX4混控器

    最近被零零科技的矢量动力双旋翼Falcon无人机刷屏了 xff0c 其50分钟的续航让行业惊艳 感谢零零科技为无人机行业带来了创新的正能量 xff01 可能很多人会有疑惑 xff1f 为什么四旋翼无人机可以变身双旋翼无人机 xff0c 背后
  • PX4-Vision 自主无人机开发平台测评

    对于目前的自主无人机开发平台上 xff0c 国内的用户除了我们阿木实验室出品的自主无人机开发平台上 xff0c 又多了一种选择 xff0c 就是这个 PX4 Vision 自主无人机开发平台 硬件上是 pixhawk 4 一个 UP Boa
  • Matlab的GUI的slider滑动条和edit动态文本框联合使用例程

    代码链接 xff1a https download csdn net download benchuspx 12404653 今天想用matlab的plot画个函数的曲线图 xff0c 函数有一个参数a可以调 xff0c 不同的a对应不同的
  • 【收藏备用】控制理论结构图——一目了然全面了解控制理论

    中国自动化学会会员 System control xff0c 通过整合各种资源以及IEEE控制系统协会 国内外控制领域同仁的建议 历时12天 xff0c 迭代6个版本 xff0c 最终绘制而成的控制理论结构图 强烈建议收藏备用 xff01
  • 工程开发利器-Homer高带宽 多接口 可组网数据传输链路

    我们阿木实验室经常做各种无人系统的实验 xff0c 比如需要从远端无线采集视频图像 xff0c 本地给远端一个串口控制量 xff0c 采集远端的各种传感器数据等 有的时候需要支持TCP IP的网络数据 xff0c 有的时候需要串口透明传输数
  • 开源自主无人机软件平台—Prometheus

    Prometheus xff0c 在希腊神话中 xff0c 是最具智慧的神明之一 xff0c 希望Prometheus项目能为无人机研发工作带来无限的智慧与光明 同时电影普罗米修斯里面的无人机在黑洞中自由穿越 xff0c 也是我们在技术层面
  • 课程学习 | 开源水下机器人地面站软件开发

    鳌海海洋 xff08 AOHI Ocean xff09 是一家由国内著名高校博士 海归博士等人创立 xff0c 长期致力于以水下机器人技术为核心的海洋装备研究与开发 xff0c 正在为国家海洋局 国家电网 中船集团 蓝天救援队 千岛湖消防队
  • 阿木实验室技术课程和项目科研招募,分享知识获取收益

    阿木实验室专注于无人化系统开发平台的研发与生产 xff0c 并致力于推广前沿IT科技技术及其教育 希望通过整合优质资源 xff0c 提升研发效率 xff0c 从而促进整个技术生态的发展 为了达成这一宏伟愿景 xff0c 单靠我们是不够的 因
  • 技术专栏|阿木无人机室内避障

    之前阿木实验室提供了一系列室内定位的方案 xff0c 以及对各自的特点进行了介绍 本期我们采用T265的视觉定位方案 xff0c Matlab ROS Toolbox进行了VFH室内避障测试 Matlab ROS Toolbox 众所周知
  • 大疆览沃浩界(Livox Horizon)激光雷达测评

    测评人 董小胖 Livox Horizon xff08 览沃浩界 xff09 介绍 Livox Horizon xff08 览沃浩界 xff09 是大疆专为L3 L4自动驾驶打造的一款激光雷达 与传统的采用机械旋转结构的激光雷达不同 xff
  • 大疆Payload SDK开发火热来袭!

    DJI SDK开发课程之 大疆Payload SDK xff08 PSDK xff09 开发今日正式上线 本课程由 铂贝学院 xff08 阿木实验室 xff09 联合DJI 大疆共同推出 xff01 大疆PSDK开发课程介绍 DJI 为支持
  • 技术专栏 | 关于吊舱你了解多少?

    01 背景及预期目标 在无人机航拍领域中 xff0c 为了实现追踪拍摄 xff0c 目标检测和追踪必不可少 xff0c 因此 xff0c 目标检测和追踪技术是无人机航拍领域的重要研究方向 在本项目中 xff0c 我们将yolov3目标检测方
  • PX4官方动态 | 通过WSL2在AirSim下实现PX4仿真

    支持PX4仿真的开源项目AirSim PX4作为主流的开源飞控 xff0c 为无人机开发者们提供了一个优秀的平台 PX4用户可以将飞控板作为核心 xff0c 构建属于自己的无人机 但开源无人机的初学者很难避免炸机的惨剧 xff0c 轻则螺旋
  • P200阿木无人机学习笔记--二维码引导着陆

    目录 我手上的阿木实验室的P200无人机配置 现阶段目标 xff1a 实现二维码引导着陆 项目理解 进度 更新中 踩坑经验 初次设置时没有显示器如何远程连接TX2 xff1f 虚拟机和双系统谁更好 xff08 ubuntu xff09 无人