PX4二次开发 创建进程

2023-05-16

目录

一、创建进程

二、仿真测试


PX4官方手册:Module Template for Full Applications | PX4 User Guide

编写参照PX4源码 src/templates:PX4-Autopilot/src/templates/template_module at main · PX4/PX4-Autopilot · GitHub

一、创建进程

创建自己的进程,仿照PX4源码,在 src/modules/文件夹下,创建一个新的文件夹,名字为进程名。

比如我在这里希望创建一个进程 safe_detector ,用于实时检测无人机上搭载的下激光测距传感器的数值,如果>5m,认为高度过高,向地面站发出警告信息。于是在 src/modules/文件夹下,创建safe_detector文件夹。文件夹里新建4个文件,分别是SafeDetector.cpp SafeDetector.hpp CMakeLists.txt和Kconfig。

代码的编写参照src/modules/templates中的文件,把所有的template_module替换为自己的进程名。

PX4最新的固件(v1.13.0)需要加上Kconfig文件

menuconfig MODULES_SAFE_DETECTOR
	bool "safe_detector"
	default n
	---help---
		Enable support for safe_detector

对应功能的实现只需要修改.cpp文件中的Run()函数即可

void SafeDetector::Run()
{
	if (should_exit()) {
		ScheduleClear();
		exit_and_cleanup();
		return;
	}

	// reschedule backup

	perf_begin(_loop_perf);
	perf_count(_loop_interval_perf);

	// Check if parameters have changed
	if (_parameter_update_sub.updated()) {
		// clear update
		parameter_update_s param_update;
		_parameter_update_sub.copy(&param_update);
		updateParams(); // update module parameters (in DEFINE_PARAMETERS)
	}
	
	//获取无人机状态(是否解锁)
	if (_vehicle_status_sub.updated()) {
		vehicle_status_s vehicle_status;

		if (_vehicle_status_sub.copy(&vehicle_status)) {

			const bool armed = (vehicle_status.arming_state == vehicle_status_s::ARMING_STATE_ARMED);

			_armed = armed;
		}
	}

	distance_sensor_s distance_sensor;

	//获取激光传感器数值
	for (unsigned i = 0; i < _distance_sensor_subs.size(); i++) {
		if (_distance_sensor_subs[i].copy(&distance_sensor)) {
			_down = distance_sensor.current_distance;
		}
	}

	//发送警告信息
	if(_armed && (_down > 5.0f)){
		PX4_INFO("高度过高!");
	}

	perf_end(_loop_perf);
}

我们可以借助PX4本身的仿真环境测试编写的代码。为了让进程默认启动,还需要修改两个文件,分别是

1、ROMFS/px4fmu_common/init.d/rc.mc_apps(以多旋翼为对象,mc即multicopter)

2、boards/px4/sitl/default.px4board

 

二、仿真测试

PX4官方仿真模型介绍:Gazebo Vehicles | PX4 User Guide

选择带光流与下激光测距的模型 :

make px4_sitl gazebo_iris_opt_flow

在地面站中勾选虚拟遥控,可以手动操控无人机飞行

 拉动油门让无人机升高,可以看到在下激光超过5m后出现警告信息

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

PX4二次开发 创建进程 的相关文章

  • 腾讯云轻量应用服务器安装和配置宝塔 Linux 面板腾讯云专享版

    宝塔 Linux 面板腾讯云专享版由腾讯云与堡塔公司联合开发 xff0c 专享版在已支持普通版所有功能的基础上 xff0c 还默认集成腾讯云对象存储 文件存储 内容分发网络和 DNS 解析插件 插件具备如下功能 xff1a 支持将对象存储的
  • Ubuntu操作系统如何搭建可视化界面?

    VNC xff08 Virtual Network Console xff09 是虚拟网络控制台的缩写 它是一款优秀的远程控制工具软件 xff0c 由著名的 AT amp T 的欧洲研究实验室开发 VNC 是基于 UNIX 和 Linux
  • ubuntu密码忘记-解决方法

    1 xff1a 开机按Shift键 xff0c 出现如下界面 xff08 手速要快 xff0c Shift键要按时间久一点 xff09 选择第二项 2 xff1a 按回车键进入如下界面 xff0c 然后选中有recovery mode的选项
  • git 仓库迁移,保留提交记录,同时提交到多个仓库

    git 仓库迁移 xff0c 保留提交记录 xff0c 同时提交到多个仓库 1 仓库迁移并保留原有的提交记录 应用场景 原有需求在 A 存储库地址进行开发 xff0c 现在新建了一个 B 存储库 xff0c 要求将 A 的代码和提交记录一起
  • STM32MP157开发-STM32CubeProgrammer-No DFU detected解决

    STM32MP157开发 STM32CubeProgrammer No DFU detected解决 xff0c 在开发时 xff0c 需要用STM32CubeProgrammer烧录固件 xff0c 但是按照官方文档 xff0c 安装后
  • Python正则表达式学习(5)——re.findall()

    re findall xff08 pattern xff0c string xff0c flags 61 0 xff09 返回字符串中模式的所有非重叠匹配 xff0c 作为字符串列表 字符串从左到右扫描 xff0c 并按照找到的顺序返回匹配
  • linux内核插入模块时 Unknown symbol in module

    编译驱动的时候碰到了 insmod error inserting 39 igb ko 39 1 Unknown symbol in module 的问题 xff0c 在网上看了下 xff0c 说是查看 dmesg tail 看输出信息中的
  • Linux路由器

    宽带上网已经不是什么新鲜事情 xff0c 人们对相关的网络器件已经不再陌生 xff0c 比如说常见的路由器 对于一般的网络用户 xff0c 他们能知道怎样使用路由器来上网 玩游戏等就已经感到很满足了 xff0c 通常情况下对路由器的深层技术
  • 树莓派linux驱动学习之hello world

    http blog csdn net hcx25909 article details 16860055 最近想学习一下linux驱动 xff0c 看了一些书和教学视频 xff0c 大概了解了一下 xff0c 不过要想深入 xff0c 肯定
  • 微信端口及协议分析

    http blog newxd com 7235 html 有朋友公司需求如下 xff0c 手机通过WIFI连接上网 xff0c 而老板要求 xff0c 员工使用手机只能上微信 xff0c 而不能上其他网页和看在线视频 上网搜索了微信使用协
  • git报错fatal: HTTP request failed

    1 在使用git pull git push git clone会报类似如下的错误 xff1a sudo git clone https github com pcduino a20 kernel fatal HTTP request fa
  • 树莓派2在U8300W平台上用pppd拨号时出现“pppd: The remote system is required to authenticate itself”

    利用pppd拨号 xff0c 首先需要调试好驱动 1 xff09 安装ppp sudo apt get install y ppp sudo apt get install y ppp dev sudo apt get install y
  • armv7架构下lubuntu系统apt-get安装ffmpeg方法

    What s up doc 17 08 2007 I think you have noticed the Google Ads I need that to pay the huge amount of bandwidth 10 05 2
  • shell脚本转换成二进制的可执行文件方法--加密

    http www 360doc com content 14 0507 14 10058718 375504586 shtml http www linuxidc com Linux 2014 12 110612 htm http www
  • Linux下jhead简介以及使用

    jhead 源代码下载地址 http www sentex net mwandel jhead locate r 34 io h 34 find usr include name 34 io h 34 一个现成更改照片时间的程式 jhead
  • Linux 内核和驱动开发工程师的发展前景怎么样

    或许这样的标题 xff0c 应该是由像Linus或Greg KH这样的大师级的高手才有资格写的吧 但是作为我来说 xff0c 也许我更想把这个标题作为一个疑问句来使用 xff0c 整理一下自己的认识 xff0c 用来勉励自己 xff0c 和
  • Linux awk 中 BEGIN 和 END 的使用方法

    1 awk的流程控制BEGIN和END http blog 51cto com 151wqooo 1309851 2 awk详解 http blog 51cto com 7177526 1387238
  • SLAM 介绍

    http www slamcn org index php E9 A6 96 E9 A1 B5 比较好的开源SLAM Odometry代码 xff1a https github com ethz asl rovio https github
  • MIPI接口介绍

    文章转自 xff1a http blog csdn net shen924 article details 9140509 xff0c 留此作为备份 xff0c 感谢原创贡献 xff5e 一 MIPI MIPI xff08 移动行业处理器接
  • STL的多线程安全问题

    1 stl的线程安全 说一些关于stl容器的线程安全相关的话题 一般说来 xff0c stl对于多线程的支持仅限于下列两点 xff1a 貌似Effective STL中有描述 1 多个读取者是安全的 即多个线程可以同时读取一个容器中的内容

随机推荐

  • 树莓派安装docker,Go语言。附VNC软件安装重启后,进入白屏登录界面的解决方案

    树莓派安装docker xff0c Go语言 附VNC软件安装重启后 xff0c 进入白屏登录界面的解决方案 背景 xff1a 课题要使用hyperledger xff0c 在ARM上应用 涉及到docker xff0c go语言 之后会包
  • 黑马程序员C++课程笔记二(模板、STL)

    笔记 C 43 43 模板 STL学习笔记 代码地址 xff1a 程序文件名与课程P一致 文章目录 笔记 C 43 43 模板 STL学习笔记1 模板1 1 模板的概念1 2 函数模板1 2 1 函数模板语法1 2 2 函数模板注意事项1
  • Nano板使用USB与PX4通信

    环境配置 USB micro与PX4通信 文章目录 环境配置 USB micro与PX4通信1 硬件接线2 软件环境 最近项目需要PX4与记载电脑通信 xff0c 查了下资料目前方案有 1 使用TELEM2串口的 xff0c 阿木的就是使用
  • 在Win下Visual Studio配置Eigen

    在Win下Visual Studio配置Eigen 最近在使用Visual Studio时想使用一下著名的矩阵运算库 xff1a Eigen xff0c 摸索了一下如何在Visual Studio中配置 1 下载Eigen源码 直接到Eig
  • AirSim中运行VIO算法(VINS-Mono)

    VINS Mono在AirSim上跑通 文章目录 VINS Mono在AirSim上跑通一 IMU参数配置二 相机参数设置三 AirSim发布数据问题 关于相机 IMU内外参的完整解释 xff0c 可以参考我的另一篇文章 一 IMU参数配置
  • AirSim中获取视觉、惯性数据方法研究

    AirSim中获取视觉 惯性数据方法研究 文章目录 AirSim中获取视觉 惯性数据方法研究1 获取ROS bag格式数据2 获取文件形式 EuRoc数据集格式 3 其他方案 最近在做AirSim中部署V SLAM xff0c 抽空将之前尝
  • 如何引用开源库(BibTex转为endnote)方法

    前言 xff1a 我们在写论文时 xff0c 论文的工作有时可能会用到别人的开源算法库 xff0c 那么我们如何在参考文献中引用呢 以Ceres库为例 xff0c 该库是谷歌开发的一款求解非线性优化问题的库 xff0c 相信做SLAM相关的
  • 关于MAC 安装 laravel4 的一些经验 二

    unix 和windows 完全不同 xff0c 只好恶补了一些UNIX的知识 xff0c 找到了 profie 这个是隐藏文件 xff0c 在find里面找不到的 接下来只能自己配置PHP环境或者下载其他软件 我下载了XAMPP xff0
  • AirSim相机、IMU内外参分析(VIO、vSLAM)

    作者 朱贞欣 xff0c 公ZH xff1a SLAM学习er 文章目录 0 引入1 世界坐标系2 IMU2 1 IMU数据生成2 2 关于IMU噪声 3 相机3 1 相机外参3 2 内参 0 引入 假设你想通过AirSim获取仿真数据运行
  • C++ cout输出小数位数

    方法一 xff1a 使用setiosflags span class token macro property span class token directive hash span span class token directive
  • kubeadm init 运行时kebelet启动失败问题

    最近在部署kebeedge xff0c 需要先在云服上部署k8s xff0c 期间通过kubeadm init config的方式进行master的部署 xff0c 记录一下遇到的kubelet相关的错误 在通过kubeadm init c
  • 2288hv5超融合服务器 数码管报888

    问题现象 2288hv5超融合服务器 xff0c 前面板数码管报888 xff0c 电源灯黄灯闪烁 xff0c 开不了机 xff0c ibmc网络是通的 xff0c 但是web网页打不开 问题原因 iBMC的版本过低 xff0c iBMC在
  • 跟我一起写操作系统(二)——史上最简单的内核

    跟我一起写操作系统 二 史上最简单的内核 转载注明出处 xff1a http www cnblogs com lucasysfeng p 4847662 html 上一讲地址 xff1a http www cnblogs com lucas
  • k8s中文文档

    http www cnblogs com huangzhenyou p 8066145 html k8s概念比较多 xff0c 有什么概念的疑惑的推荐看k8s中文文档 me的环境 操作系统 xff1a centos7 docker xff1
  • 阿里云 CentOS7 安装图形化界面 。安装图形化界面看这一篇就够了。

    阿里云centos7 下执行eclipse 响应学校老师的要求安装eclipse用于与hadoop的操作 在这之前想过两种方法来解决服务器无图形化界面 xff0c 来操作eclipse 1 在主机上下载eclipse把需要编译的代码编译成j
  • 把ESXi中的虚拟机通过OVA/OVF导出的方式迁移到Proxmox 5

    一 前言 之前发现ESXi是免费的时候 xff0c 非常兴奋地把几台服务器都装上了 xff0c 用着确实还行 xff0c 但是用久了之后就发现 xff0c 很多高端功能需要进一步付费才能使用 xff0c 比如HA等 另外就是它还有很多局限性
  • PX4 ThoneFlow光流使用

    PX4官方光流介绍 xff1a PMW3901 Based Flow Sensors PX4 User Guide 与飞控连接 接线 xff1a G接GND xff1b V接3 3V xff1b T是TX接飞控的RX口 xff1b Y接地开
  • Ubuntu PX4无人机仿真环境配置

    目录 一 VM虚拟机安装ubuntu18 04 1 VMware安装 2 新建虚拟机 二 Ubuntu系统配置 1 更改软件安装源 2 安装中文输入法 三 PX4环境搭建 1 安装git 2 下载px4源码 3 安装ROS 4 安装MAVR
  • larave5安装过程分享-MAX OSX版本

    MAC上的平台是XAMPP xff0c 自带的版本低 我用的是XAMPP MAC版本 一 本地php环境配置 which php php xff0d v xff5c php xampp php PASH 61 34 xff0f applic
  • PX4二次开发 创建进程

    目录 一 创建进程 二 仿真测试 PX4官方手册 xff1a Module Template for Full Applications PX4 User Guide 编写参照PX4源码 src templates xff1a PX4 Au