MAVROS二次开发(四)添加消息处理插件

2023-05-16

MAVROS二次开发

四、添加消息处理插件

mavros插件所在路径:~/catkin_ws/src/mavros/mavros/src/plugins

1、自定义消息处理插件的编写

  • 参考代码:~/catkin_ws/src/mavros/mavros/src/plugins/manual_control.cpp(很典型)
  • 插件文件名称:crawl_control.cpp
  • 文件路径:~/catkin_ws/src/mavros/mavros/src/plugins/crawl_control.cpp
  • 文件内容:
/**
 * @brief CrawlControls plugin
 * @file crawl_controls.cpp
 * @author Yanfeng <962353916@qq.com>
 *
 * @addtogroup plugin
 */

#include <mavros/mavros_plugin.h>

#include <mavros_msgs/CrawlControlStatus.h>
#include <mavros_msgs/CrawlControlSet.h>

namespace mavros {
namespace std_plugins {
/**
 * @brief Crawl Control plugin
 */
class CrawlControlPlugin : public plugin::PluginBase {
public:
	CrawlControlPlugin() : PluginBase(),
		crawl_control_nh("~crawl_control")
	{ }

	void initialize(UAS &uas_)
	{
		PluginBase::initialize(uas_);

		control_pub = crawl_control_nh.advertise<mavros_msgs::CrawlControlStatus>("status", 10);
		send_service = crawl_control_nh.advertiseService("send", &CrawlControlPlugin::send_cb, this);
	}
    //用来获取mavlink解析到的消息
	Subscriptions get_subscriptions() {
		return {
			make_handler(&CrawlControlPlugin::handle_crawl_control),
		};
	}

private:
	ros::NodeHandle crawl_control_nh;

	ros::Publisher control_pub;
	ros::ServiceServer send_service;

	/* -*- rx handlers -*- */
    //mavlink::crawl_control_status::msg::CRAWL_CONTROL_STATUS为自动生成的消息头文件中所定义的,也是依据此来解析收到的mavlink消息。
	void handle_crawl_control(const mavlink::mavlink_message_t *msg, mavlink::crawl_control_status::msg::CRAWL_CONTROL_STATUS &crawl_control)
	{
		auto crawl_control_msg = boost::make_shared<mavros_msgs::CrawlControlStatus>();
		
		// crawl_control_msg->header.stamp = ros::Time::now();
		crawl_control_msg->sw_state = crawl_control.sw_state;
		crawl_control_msg->clamp_state = crawl_control.clamp_state;
		crawl_control_msg->crawl_state = crawl_control.crawl_state;
		crawl_control_msg->clamp_speed = crawl_control.clamp_speed;
		crawl_control_msg->crawl_speed = crawl_control.crawl_speed;
		//将解析到的消息发布至topic
		control_pub.publish(crawl_control_msg);
	}

	/* -*- callbacks -*- */

	bool send_cb(mavros_msgs::CrawlControlSet::Request &req, mavros_msgs::CrawlControlSet::Response &responce)
	{
		mavlink::crawl_control_set::msg::CRAWL_CONTROL_SET msg;
		//讲server收到的request赋值给mavlink消息
		msg.clamp_state_set = req.clamp_set;
		msg.crawl_state_set = req.crawl_set;
		msg.clamp_speed_set = req.clamp_speed;
		msg.crawl_speed_set = req.crawl_speed;
		//响应发送成功
		responce.send_success = true;
		//调用mavlink消息发送API
		UAS_FCU(m_uas)->send_message_ignore_drop(msg);
		return true;
	}
};
}	// namespace std_plugins
}	// namespace mavros

#include <pluginlib/class_list_macros.h>
PLUGINLIB_EXPORT_CLASS(mavros::std_plugins::CrawlControlPlugin, mavros::plugin::PluginBase)

2、添加自定义插件到插件列表中

  • 路径:~/catkin_ws/src/mavros/mavros/mavros_plugins.xml
  • 作用:用于MAVROS自动加载插件
  • 添加内容:
	<class name="crawl_control" type="mavros::std_plugins::CrawlControlPlugin" base_class_type="mavros::plugin::PluginBase">
		<description>Handle the crawl_control messages</description>
	</class>

3、添加至CMakeLists.txt

  • 路径:~/catkin_ws/src/mavros/mavros/CMakeLists.txt
  • 作用:将插件添加至编译
  • 添加内容:
add_library(mavros_plugins
  src/plugins/crawl_control.cpp #add
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MAVROS二次开发(四)添加消息处理插件 的相关文章

  • (2022.12.12 )完成mavros配置+PX4配置

    一 mavros 安装配置 在安装之前 xff0c 请先更新软件库 xff1a sudo apt get update sudo apt get upgrade 遇到问题 无法安全地用该源进行更新 xff0c 所以默认禁用该源 N 参见 a
  • 【PX4 二次开发 初级】 02 飞控软硬件体系

    PX4 二次开发初级 PX4 飞控软硬件体系 飞控硬件体系PIXHAWK 控制硬件 软件体系PX4 体系原生固件原生固件官网原生固件地面站 APM 体系APM官网 xff1a 原生固件地面站 特点 标题 xff1a PX4二次开发教程 xf
  • 【Mavros解析 】02 ROS服务以及在mavros中体现

    Mavros解析 02 ROS服务以及在mavros中体现 简介实现步骤步骤 1 xff1a 连接服务步骤 2 xff1a 实例化服务参数 xff1a 步骤 3 xff1a 请求服务 Demo头文件订阅回调函数主函数初始化订阅mavrso
  • mavros安装

    官方地址 xff1a https github com mavlink mavros 因为github有时侯不好上 xff0c 所以我自己弄了个gitee https gitee com qq408007026 mavros tree ma
  • Mavros Client md5sum Error

    Mavros Client md5sum Error 运行阿木实验室px4 commander包里vio fly sh的 roslaunch px4 command px4 pos estimator launch 时报错 xff1a ER
  • MAVROS started. MY ID 1.240, TARGET ID 1.1

    运行Mavros未报错 xff0c 但是启动不成功 xff1a INFO Known MAVLink dialects common ardupilotmega ASLUAV autoquad icarous matrixpilot pap
  • 树莓派安装MAVROS的一些坑

    一 基于原生系统安装ROS 详见文章https blog csdn net qq 33662995 article details 98645837 xff0c 写的很详细了 二 源码安装MAVROS 由于树莓派环境下不能直接从二进制安装
  • PX4二次开发——uorb订阅

    PX4二次开发 uorb订阅 一 写在前面 我们写了一个一个功能的模块 xff0c 这些模块并不是独立的 模块之间是有数据传递的 xff0c 这样才能组合到一起实现飞行控制的目的 那么解决模块之间的数据传递的方式就是通过uorb订阅的方式
  • QT二次开发Kvaser

    前言 最近工作中需要自己去开发一个上位机 xff0c 上位机的通讯方式是CAN xff0c 利用Kvaser将CAN信息传递到上位机 xff0c 所以就需要二次开发Kvaser xff0c 保证上位机的正常通讯 原本是本着前人栽树 xff0
  • 安装MAVROS过程 catkin:未找到命令 的问题

    PX4官网安装教程 源码方式安装 1 第一步执行 xff0c 创建文件夹 xff1b 移到创建文件夹中 mkdir p catkin ws src cd catkin ws 2 执行 catkin init 出错如下图 解决方法 xff1a
  • 海康威视工业相机SDK二次开发(VS+Opencv+QT+海康SDK+C++)(一)

    最近在做一个项目 xff0c 涉及到工业相机 xff0c 需要对其进行二次开发 相机方面选择了海康威视 xff0c 网上关于海康威视工业相机SDK的开发资料很少 xff0c 官方文档里面虽然写的是支持C 43 43 开发的 xff0c 但其
  • ubuntu20 安装px4、mavros、QGroundControl

    一 安装PX4 jjm2是我的主文件夹名 xff0c 可以根据自己的主文件夹名修改 下载PX4 git clone https github com PX4 PX4 Autopilot git recursive 由于网速原因 xff0c
  • Mavros读取PixHawk硬件的IMU数据

    Ubuntu18 04 读取PixHawk硬件的IMU数据 实现方式 使用mavros话题读取到Pixhawk飞控的IMU数据 实现步骤 安装ros 检查是否安装cmake xff08 未安装根据提示安装 xff09 cmake span
  • PX4 Offboard Control Using MAVROS on ROS

    这篇是下面这位大神推荐的 xff0c 我看了下确实也不错 https blog csdn net zhengyuxin0507 article details 80357405 摘自 xff1a https 404warehouse net
  • vue-element-admin的二次开发

    最近也是完成了公司招聘管理系统后台的前端开发 xff0c 项目已经开始测试了近期估计就会交付使用 一直是一个人在做 xff0c 配合两个后端 xff0c 说实话这种从很多不会到一个个独立debug解决问题到最后终于完成项目的感觉真的太有成就
  • mavros_msgs的type_mask用法

    这几天在看自主无人机的一些代码 xff0c 如下 xff1a mavros msgs PositionTarget PositionSetpoint PositionSetpoint type mask 61 0b100111000000
  • QGC4.1.2二次开发(2)QGC连接与数据收发

    文章目录 前言一 连接原理二 连接过程与数据收发1 连接过程 xff08 以串口为例 xff09 2 数据发送 总结 前言 QGC连接无人机飞控时支持多种连接方式 xff0c 并且可以自动连接 xff0c 不由让人好奇它的实现原理 xff0
  • mavros中的一些坑

    固件 xff1a px4 控制 xff1a 通过对mavros发布mavros setpoint raw local话题控制无人机飞行 获取飞机的ENU坐标系坐标有两个话题 xff1a mavros global position loca
  • Jetson Xavier NX安装Mavros

    Px4飞控通过USB线连接Jetson Xavier NX xff0c 如果需要进行软连接 xff0c 即通讯 xff0c 需要下载Mavros功能包 xff0c 并通过启动命令进行连接 安装Mavros sudo apt install
  • 关于OpenAI的Gym中的step方法

    文章目录 导读 Gym的step方法 最后的话 导读 本文就只是关于step方法的参数与返回值的一个小小的学习笔记 这也是没有第一时间查官方文档而造成的时间消耗 所以 这篇博客就是逼自己查一下 Gym的step方法 既然都已经用pip下载了

随机推荐

  • golang单例模式加载服务配置

    golang中单例模式体现在很多地方 xff0c 比如init函数 xff0c 当包被导入的时候只会被执行一次 实现单例模式有很多种方式 xff0c 这里给出几种简单的实现 xff1a 互斥锁 对全局共享变量加锁 xff0c 如果该变量不是
  • go面试题

    1 json包在使用的时候 xff0c 结构体里的变量不加tag能不能正常转成json里的字段 xff1f 如果变量首字母小写 xff0c 则为private 无论如何不能转 xff0c 因为取不到反射信息 如果变量首字母大写 xff0c
  • golang windows弹窗功能实现

    代码示例 span class token keyword package span main span class token keyword import span span class token punctuation span s
  • golang获取windows系统有线活跃网卡及IP配置

    代码 span class token keyword package span network span class token keyword import span span class token punctuation span
  • !!!Chapter 2 The Physical Layer

    2 1 The Theoretical Basis for Data Communication Fourier Analysis Any reasonably behaved periodic function g t with peri
  • 启动golang项目编译的exe可执行文件获取windows管理员权限(UAC)

    背景 xff1a go代码启动以后里面涉及到修改ip地址等操作 xff0c 需要管理员权限 打包好的exe文件双击执行默认是没有管理员权限的 xff0c 那么修改ip就会提示需要管理员权限 解决方法1 xff1a 右键以管理员权限运行exe
  • k8s外部访问pod内部容器的端口-NodePort

    一 如何从外部网络访问 Kubernetes的Pod IP和Cluster IP都只能在集群内部访问 xff0c 而我们通常需要从外部网络上访问集群中的某些服务 xff0c Kubernetes提供了下述几种方式来为集群提供外部流量入口 二
  • python断点下载文件

    使用pytohn编码实现文件的断点下载 span class token keyword import span os span class token keyword import span json span class token k
  • 异常检测(1)—初识异常检测

    1 概念 异常一般是指与标准值 xff08 预期值 xff09 有偏离的样本点 xff0c 也就是跟绝大部分数据 长的不一样 异常往往是 有价值 的事情 xff0c 我们对异常的成因感兴趣 2 类别 有监督 xff1a 数据集有标签无监督
  • 【git】在GitHub上下载历史版本

    GitHub上的项目很多都是从简单到复杂 xff0c 一点点迭代的 当我们需要看懂别人的代码时 xff0c 按照别人commit的历史版本一步一步跟踪 xff0c 或许是个好办法 这时候我们就要用到下载历史版本功能了 1 git clone
  • 实时操作系统UCOS学习笔记1----UCOSII简介

    前面我们所有的实验都是跑的裸机程序 xff08 裸奔 xff09 xff0c 从本章开始 xff0c 我们开始介绍UCOSII xff08 实时多任务操作系统内核 xff09 UCOSII简介 UCOSII的前身是UCOS xff0c 最早
  • 欢聚时代YY/测试实习面试

    去到YY大楼 xff0c 虽然在番禺但是附近很多楼在施工中了 大楼就在万达后面 前台登记 xff0c 小姐姐会让你出示邀请邮件 xff0c 然后直接上去就行了 达到楼层 xff0c 二维码签到 然后找地方坐一下等待面试 一轮是技术面 xff
  • 基于卡尔曼滤波的气压计高度解算

    ax ay az为归一化的加速度数据 1代表重力加速度 gx gy gz 为加速度数据 单位rad s altitude为气压计测量得到的海拔数据 欧拉角 float pitch roll yaw 世界坐标系下机体加速度 float ax
  • Kali安装Xfce4

    Kali安装Xface4 一 配置kali源并更新二 解决报错1 签名无效2 依赖报错 三 安装xfce4 一 配置kali源并更新 此处使用的是gedit编辑器 xff0c gedit etc apt sources list xff0c
  • 串口转WIFI的工作方式理解

    串口无线 AP xff08 COM AP xff09 串口无线 STA xff08 COM STA xff09 和 串口无线 AP 43 STA xff08 COM AP 43 STA xff09 3 个模式 串口WIFI模块是基于Uart
  • 典型环节的频率特性(建议收藏)

    自控笔记 5 3典型环节频率特性 控制系统种类繁多 xff0c 传递函数复杂 xff0c 但任何形式的传递函数都是由有限的典型环节组成 因此 xff0c 掌握典型环节的频率特性是使用频域法分析系统的基础 如下表所示 xff0c 构成系统的最
  • 【WINAPI】CreateSemaphore_信号量

    WINAPI CreateSemaphore 信号量 1 注册信号量函数1 1 参数1 2 返回值 2 释放信号量函数2 1 参数2 2 返回值 3 WaitForSingleObject3 2 参数3 3 返回值 4 例子4 1 运行结果
  • MAVROS二次开发(一)MAVROS的安装

    MAVROS二次开发 一 MAVROS的安装 1 参考网址 https dev px4 io v1 10 en ros mavros installation html https github com mavlink mavros tre
  • MAVROS二次开发(二)(三)添加自定义消息

    MAVROS二次开发 二 MAVROS消息添加 1 自定义rostopic消息 路径 xff1a catkin ws src mavros mavros msgs msg 自定义消息文件名称 xff1a CrawlControlStatus
  • MAVROS二次开发(四)添加消息处理插件

    MAVROS二次开发 四 添加消息处理插件 mavros插件所在路径 xff1a catkin ws src mavros mavros src plugins 1 自定义消息处理插件的编写 参考代码 xff1a catkin ws src