无人系统路径规划开发流程(避障方向)含代码

2023-05-16

有很多同学在我们微信群和我们阿木实验室论坛提问,无人机/无人车的路径规划和避障应该怎么入手。随着无人系统的发展,无人系统的路径规划的研究也越来热。生活中无人机器系统也越来越多的出现,从无人机,到无人车,商城的引导机器人。一个新兴机器人行业正在兴起。

一 系统软件和硬件框架

一个典型的无人机系统的计算机构架如下:

111.png

图一 无人机计算机系统

这种以PX4/Ardupilot为代表的小型无人系统的计算机系统构架图,主要有两块:感知和任务计算机和飞控计算机,无人车其实类似(车辆底盘驱动系统和感知系统)。目前来讲飞控计算机不断在成熟和完善,研究和应用的热点在感知和任务计算机上。

二 研究方向

在Ardpuliot/PX4的感知和任务管理计算机开发中,和大型无人机的任务管理计算机开发不同,小型无人机的任务管理计算机集中在环境感知,自动避障路径规划,目标物体识别追踪,自动搜寻,集群控制策略等领域。符合小型化,低空域,在有限空间飞行的特点。开发重点1 环境感知:以激光雷达,视觉传感器等硬件为主的激光SLAM/视觉SLAM开发方向,获得设备自身的方位,速度和姿态为目的,作为GPS的补充或者替代。2 路径规划:以自动避障的路径规划,以集群控制为主的路径规划,以自动搜寻的路径规划,以无人机自动调度系统的路径规划。获得当前空间和时间下的设备自身的最优运动路径(一般是期望的速度和期望的位置),来执行复杂任务为目的。3 视觉识别:以目标物体的识别,感知,追踪,引导。获得目标物体的相对位置为目的。很多的无人机应用开发的目标实际上同时包含了环境感知和路径规划,视觉识别三大块。比如可以进行一个良好的路径规划的基础是环境感知,本身的位置速度估算正确才可以去完成一个有效的路径规划,否则路径规划就会失效。一般室外的环境感知GPS就可以完成,遮挡等复杂场景,环境感知由任务和感知计算机来做。还是上一张图:

222.png

感知和任务计算机的开发三大方向,和开发流程方法。

三 无人系统开发手段和方法

1 任务和感知计算机开发硬件载体以往工业级以PowerPC,FPGA等为代表的硬件载体,现在的消费级或者说准工业级以Arm构架和Intel为多。像大疆的妙算系列无人机板载计算机就有英伟达的TX2和Intel的。因为任务和感知计算机通常要求计算能力比较强,普通的单片机构架无法胜任。还有就是飞控计算机和任务计算机是模块化分立的,模块化的。业界由玩家把树莓派同时用来飞控计算机和任务和感知计算机,这样设计是很不合理的,且不说树莓派的运算能力如何,飞控计算机和任务计算机软件运行在同一个硬件上,从软件和硬件设计上都有重大的缺陷。专业领域不推荐那么做,这也是这类一体化板卡没有发展起来的原因。飞控计算机要求实时性,任务计算机计算复杂,如果任务计算机软件复杂性问题导致了整个系统的崩溃,飞控计算机也崩溃,那么无人系统就失控了,如果任务计算机崩溃,只要飞控计算机不崩溃,整个无人系统还是可以安全着陆的。我们曾经也有一款这样的板卡,后来我们停产了,没有发展起来。我们在硬件设计上还是走向分模块,相对独立的做法。同样软件设计上也遵守这样的设计,模块独立,降低耦合。我们目前用到的硬件如下:

333.jpg

英伟达的nano

444.jpg

英伟达的TX2我们淘宝店铺均有售,可以关注https://shop142114972.taobao.com/?spm=a230r.7195193.1997079397.2.3efb3d8dLWaZOj

2 开发流程以避障为例:

开发硬件平台

555.jpg

https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-18433176671.6.13def907NjLqL4&id=591693894635

开发手段

按照完整的开发流程

1 建立数学模型

2 算法开发

3 仿真

4 实机测试

以完成一个激光雷达避障为例:

1 数学建模

业界关于避障的算法,有很多论文,开源的代码。比如可以采用简单高效的VFH算法,数学模型相对比较简单,方便构建。

2 算法开发

根据数学模型编写代码,涉及复杂的数学公式可以采用matlab来开发,VFH比较简单,开源的代码做一下优化就可以完成,或者直接用matlab来编写也相对比较容易。

3 仿真

避障属于场景和逻辑,最好用三维可视环境搭建出虚拟环境,在虚拟环境中仿真,常用的仿真工具有FlightGear,Gazebo,AirSim等等,写好的算法在虚拟仿真环境中运行,看一看避障的效果如何。总结就是仿真有问题,实际测试一定有问题。

4 实机测试

仿真测试通过以后,然后实机测试具体功能,在仿真中传感器数据大多为理想值,仿真的代码有时候不能完全适用于真实环境。当然可以在仿真系统中加入噪声数据,和建立仿真模型的时候高度还原真实物理场景,这样也可以提高仿真代码的适应性。以上4个步骤,尤其的仿真环节一定不可缺少,可以提升开发效率,降低开发成本。我们的板载计算机功能包,提供了完善的仿真环境和代码框架,欢迎大家关注我们的github和wiki。

以上详细文档参考wiki和我们的github.

板载计算机介绍 腾讯链接

https://v.qq.com/x/page/f3014rj41ib.html

微信公众号关注《阿木实验室》获取更多无人机开发测评信息,关注《阿木社区》获取更多学习课程信息。
社区论坛地址:bbs.amovauto.com 参与讨论。

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

无人系统路径规划开发流程(避障方向)含代码 的相关文章

  • 【网络安全】如何在 Apache 安装开源 WAF

    说明 xff1a 本文以 Windows 环境下的 Apache 安装 mod security 为例 xff0c 介绍开源 WAF 产品的安装使用 http www modsecurity cn https github com Spid
  • 手把手教系列之梳状滤波器设计实现

    导读 前面一篇文章关于IIR 移动平均滤波器设计的文章 本文来聊一聊陷波滤波器 该滤波器在混入谐波干扰时非常有用 算法简单 实现代价低 本文来一探其在机理 应用场景 注 尽量在每篇文章写写摘要 方便阅读 信息时代 大家时间都很宝贵 如此亦可
  • 看思维导图:一文带你学Verilog HDL语言

    关注 星标嵌入式客栈 xff0c 精彩及时送达 导读 基于FPGA的SOC在嵌入式系统应用越来越广了 xff0c 往往一个复杂系统使用一个单芯片基于FPGA的SOC就搞定了 比较流行的方案主要有Altera xilinx两家的方案 要用这样
  • 长文图解工业HART总线协议

    关注 星标嵌入式客栈 xff0c 精彩及时送达 导读 在AIOT蓬勃发展的今天 xff0c 也掀起传统工业设备IOT革新的浪潮 那么需要对工业设备进行IOT改造 xff0c 除了直接开发具有IOT互联协议的新型设备 xff0c 对原有总线设
  • RS-485总线,这篇很详细

    关注 星标嵌入式客栈 xff0c 精彩及时送达 导读 大家好 xff0c 我是逸珺 xff0c 前面一篇文章总结了一下工业HART总线 xff0c 今天来聊聊RS 485总线 RS 485也是应用非常广泛的一种通信接口 xff0c 本文来讨
  • 图文详解Modbus-RTU协议

    关注 星标嵌入式客栈 xff0c 精彩及时送达 导读 大家好 xff0c 我是逸珺 xff0c 前面总结了一下RS 485的一些要点 xff0c 今天来总结一下Modbus RTU协议 xff0c 原本想把实现思路也一起发出来 xff0c
  • 【干货】用FreeRTOS搭建Event-Driven应用框架

    关注 星标嵌入式客栈 xff0c 精彩及时送达 导读 大家好 xff0c 我是逸珺 今天来分享一下 xff0c 之前项目中使用FreeRTOS搭建的Event Driven事件驱动框架 什么是Event Driven xff1f Event
  • 【Spring Boot】1.解决IDEA中springboot整合mybatis中出现的Invalid bound statement(not found)的问题

    最近学习springboot的开发 xff0c 中间磕磕碰碰也是遇到了诸多问题 xff0c 以前编写java IDE都是用的eclipse xff0c 现在换成idea了倒有点不适应了 xff0c 中间遇到了一个让人很郁闷的问题 xff0c
  • (数据结构与算法分析 一)------快速求幂算法,Java递归实现

    快速求幂算法 xff0c 递归实现 xff0c 其实算法的思想很简单 xff0c 但是感觉非常经典 xff0c 这个也是我开始看数据结构与算法分析这本书的开始把 xff0c 大学期间感觉就得深究一下算法 xff0c 课堂学习的太肤浅 xff
  • 永磁同步电机PMSM负载状态估计(龙伯格观测器,各种卡尔曼滤波器)矢量控制,坐标变换

    永磁同步电机PMSM负载状态估计 xff08 龙伯格观测器 xff0c 各种卡尔曼滤波器 xff09 矢量控制 xff0c 坐标变换 xff0c 英文复现 xff0c 含中文报告 xff0c 可作为结课作业 仿真原理图结果对比完全一致 另外
  • 分享信号处理相关的几部名著

    导读 大家好 xff0c 我是逸珺 数字信号处理还是比较难的 xff0c 我也只是会一些简单的 但是一直对这个有兴趣 xff0c 曾经有朋友问我看什么书籍比较好 xff0c 今天分享几本我经常看的数字信号处理书籍给大家 数字信号导论 书有点
  • 钓鱼累了,写下断言怎么用

    导读 大家好 xff0c 我是逸珺 今天来分享整理如何正确的使用断言 何为断言 断言一般是用于检测在某个程序位置程序必须满足某些条件的宏 一般用的多的可以分两种种情况 xff1a 前置条件 xff1a 在某个程度点开始的地方后置条件 xff
  • 手把手带你写一个中断输入设备驱动

    导读 大家好 xff0c 我是逸珺 首先说声抱歉 xff0c 最近迷上钓鱼了 xff0c 有时候晚上出去夜钓大板鲫了 xff0c 停更了一段时间 来几张鱼获图片 xff1a 技术还是不太到家 xff0c 遇到几次大鲤鱼都给溜了 xff0c
  • STM32的SPI外设片选只有一个怎么破?

    导读 大家好 xff0c 我是逸珺 之前用STM32的SPI需要控制很多外部芯片 xff0c 可是一个SPI的外设只有一个片选 xff0c 要实现独立片选一主多从 xff0c 怎么实现呢 xff1f SPI总线拓扑 一般地 xff0c SP
  • Java compareTo()方法

    Java compare To 方法 xff08 Java String类 xff09 xff1a 1 用途 xff1a 按字典序比较两个字符串 2 语法 xff1a int compareTo String anotherString 3
  • C语言函数如何正确的输入和返回数组(一维和二维)

    对于一维数组而言有两种方法 xff1a 1 函数外 xff08 主函数内 xff09 初始化数组 xff0c 相当于已经分配好了一块固定的内存 xff0c 然后将其地址传入函数 xff0c 经过一番操作 xff0c 再将地址返回 2 函数内
  • 将以-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