Simlink与PX4硬件在环仿真(HIL)实现

介于涉及的知识比较多,这里只是简单的介绍一下,

  • 硬件在环HIL介绍

  • simlink与PX4通信实现

    硬件在环HIL介绍

为来贯彻万物都可以用数学公式表示,我们以simlink的角度来看我们的无人机,那么UAV可以分为以下的几个模块:

  • 传感器模型

  • 滤波器模块

  • 控制器模块

  • 飞机的物理模型

    一般我们都会在simlink中搭建如上所有的模块,那么我们可以进行纯软件仿真。如下图当我们只仿真飞行器的物理模型,把物理模型的姿态、位置信息打包发给PX4飞控中处理,飞控的中控制器在根据这些物理模型的状态然后输出的控制量在来控制simlink中的物理模型。这样就形成了一闭环的HIL。

simlink与PX4通信实现

硬件在环原理不难,关键是两者的通信如何实现。因为PX4通过usb口向外发送的是打包好的mavlink信息,所以我们的simlink模块能不能直接解析出串口中的mavlink信号呢,遗憾的是不可以。目前有两种方法可以实现通信:

  • 用s-function链接c程序可以参考这个连接

    https://gitee.com/bingobinlw/simulink_mavlink
    
  • 用s-function连接m程序,我们的工程用到的是此方法,不过需要下图的工具箱

版本要是v19.1.1及以上才行。因为在这个工具箱里集成了malink解析打包的函数。

大概会用到以下几个函数:

  • deserializemsg(),解析来自缓冲区的mavlink包,比如来自PX4的控制量通过com的消息
  • serializemsg(),打包成mavlink包,然后可以通过com口发给PX4

然后再看下用到的几个重要的simlink与PX4通信的mavlink包

  • mavlink_msg_hil_actuator_controls ID=93
typedef struct __mavlink_hil_actuator_controls_t {uint64_t time_usec; /*< [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude the number.*/uint64_t flags; /*<  Flags as bitfield, reserved for future use.*/float controls[16]; /*<  Control outputs -1 .. 1. Channel assignment depends on the simulated hardware.*/uint8_t mode; /*<  System mode. Includes arming state.*/
}) mavlink_hil_actuator_controls_t;
  • mavlink_msg_hil_state_quaternion ID = 115

    typedef struct __mavlink_hil_state_quaternion_t {uint64_t time_usec; /*< [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude the number.*/float attitude_quaternion[4]; /*<  Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation)*/float rollspeed; /*< [rad/s] Body frame roll / phi angular speed*/float pitchspeed; /*< [rad/s] Body frame pitch / theta angular speed*/float yawspeed; /*< [rad/s] Body frame yaw / psi angular speed*/int32_t lat; /*< [degE7] Latitude*/int32_t lon; /*< [degE7] Longitude*/int32_t alt; /*< [mm] Altitude*/int16_t vx; /*< [cm/s] Ground X Speed (Latitude)*/int16_t vy; /*< [cm/s] Ground Y Speed (Longitude)*/int16_t vz; /*< [cm/s] Ground Z Speed (Altitude)*/uint16_t ind_airspeed; /*< [cm/s] Indicated airspeed*/uint16_t true_airspeed; /*< [cm/s] True airspeed*/int16_t xacc; /*< [mG] X acceleration*/int16_t yacc; /*< [mG] Y acceleration*/int16_t zacc; /*< [mG] Z acceleration*/
    }) mavlink_hil_state_quaternion_t;

    如下图左边需要的mavlink包是mavlink_msg_hil_actuator_controls,右边需要的mavlink包是mavlink_msg_hil_state_quaternion

Simlink与PX4硬件在环仿真(HIL)实现相关推荐

  1. Airsim环境下的px4硬件在环仿真

    文章目录 前言 1.Airsim和硬件在环介绍 2.硬件在环测试的准备工作(硬件和软件) 2.1 usb-ttl转接线的制作: 2.2 px4的ttl端口波特率设置 3 硬件在环测试过程中的问题 4 ...

  2. Pixhawk原生固件PX4之HIL硬件在环仿真

    欢迎交流~ 个人 Gitter 交流平台,点击直达: 硬件在环仿真可以接遥控器进行调试. 串口设置 下载minicom sudo apt-get install minicom 配置飞控的设备号(/d ...

  3. 一篇文章带你了解新能源汽车整车控制器VCU 硬件在环(HiL)仿真测试方案

    1.HiL的定义: HiL(Hardware-in-the-Loop)硬件在环是计算机专业术语,也即是硬件在回路.通过使用"硬件在环"(HiL) ,可以显著降低开发时间和成本.在过 ...

  4. 硬件在环仿真(HiL)测试介绍

    一.HiL是什么? 硬件在环仿真(Hardware-in-the-Loop,简称HIL)是真的控制器连接假的被控对象,以一种高效低成本的方式对控制器进行全面测试.它是一种用于复杂设备控制器的开发与测试 ...

  5. 一篇文章带你了解新能源汽车电池管理系统BMS 硬件在环(HiL)仿真测试

    1.什么是BMS? BMS(Battery Management System)全称电池管理系统,是新能源汽车的核心系统之一.新能源汽车与传统燃油车存在很大的不同,以纯电动汽车为例,它是以电池包为动力 ...

  6. 新能源汽车核心技术-VCU硬件在环(HiL)仿真测试系统

    新能源汽车(EV/HEV)整车控制器(VCU)是新能源汽车的核心控制部件,VCU控制技术水平直接影响着整车的动力性.安全性及经济性.作为国家重点发展的技术方向,近年来随着我国大力发展新能源汽车及新能源 ...

  7. QA | 关于高级硬件在环(HIL)想要了解的十个问题

    HiL(Hardware-in-the-Loop)硬件在环仿真测试系统是采用实时处理器运行仿真模型来模拟受控对象(比如:汽车.航空飞机等设备)的运行状态,以此判断电控模块的性能. Q1:什么是HIL? ...

  8. 在环仿真有两种,一种是软件在环仿真SITL,还有一种是硬件在环仿真HITL。

    在环仿真有两种,一种是软件在环仿真SITL,还有一种是硬件在环仿真HITL.S就是soft  H应该就是hardware,硬件在环应该就是真实的pixhawk. https://blog.csdn.n ...

  9. 教程 | VeriStand硬件在环仿真测试第一章

    NI VeriStand是一款针对实时测试应用的软件,具有激励生成.数据采集以及计算通道和自定义通道换算等功能.VeriStand软件可帮助用户对实时硬件配置I/O通道.数据记录.激励生成和主机通信, ...

最新文章

  1. 小狗分类器,你家的狗子是个什么狗?
  2. python编辑器对比和推荐
  3. 华为杯大学生计算机软件大赛,关于举办2018年西安电子科技大学程序设计网络赛暨第十六届“华为杯”大学生程序设计竞赛的通知...
  4. 实现路由器无线接收另一个路由器无线信号搭建网络
  5. 曾国藩36字诀,改变你的人生
  6. LAMP+LNMP(一) LAMP架构概述
  7. java xml接口实例_Java访问WebService接口方法 , 返回xml数据,能根据 下面的能给我写个实例吗?略急...
  8. 字节跳动研发的云固件投入应用 首批装机200余台X86服务器
  9. 快速使用nexus搭建maven本地私服
  10. 那些不需要你知道的Chrome DevTool - 使用技巧篇
  11. mysql for in 循环_groovy循环-for-in 语句 - Groovy教程
  12. i7-1160G7 怎么样 相当于什么水平
  13. linux系统安装文网卫士,360主机卫士 linux版的安装/使用/卸载 方法
  14. IT职业技能图谱:IT工程师学习路线
  15. java代理模式教你中间商赚差价
  16. 京东手机评论分析(一):词云
  17. sql 根据出生日期计算年龄
  18. python没有库怎么办_python缺少依赖(ImportError)库怎么办 | C/C++程序员之家
  19. SDNUOJ 1168.FBI树
  20. SLAM十四讲-设计前端-0.4-代码解读

热门文章

  1. 远山行小程序后端管理心得总结
  2. 基于Kafka+ELK搭建海量日志平台
  3. 排序(下)---快排、归并
  4. linux 创建逻辑卷命令,Linux对逻辑卷的创建与管理基本命令
  5. C++ 百万并发网络通信引擎架构与实现视频课程
  6. 史上最强的绕口令,没人能读出
  7. 用c++做双人枪战游戏
  8. Supplier JAVA_Java 8 Supplier 使用
  9. SQL Server(数据库)-in、not in + 视图
  10. RANSAC(Random Sample Consensus)随机抽样检验一致性