无人机 PX4 飞控 | ROS应用层开发:指令(字符串)订阅功能

devtools/2024/10/9 15:18:37/

无人机 PX4 飞控 | ROS应用层开发:指令(字符串)订阅功能

  • 指令(字符串)订阅功能
    • 代码
    • 测试

指令(字符串)订阅功能

为了通过键盘触发ROS.html" title=mavros>mavros 的不同功能,需要实现一个订阅字符串的功能
该功能同样可用于其它项目

在终端输入

rostopic pub -1 /keyboard_cmd std_msgs/String "arm" 

含义:在/keyboard_cmd 上发布一条字符串消息,消息内容为"arm"。

程序在接收到该指令后,可进行相关的操作。

代码

代码在之前博客 基础代码框架上进行的添加

在类的定义中加入

    /* 订阅 topic 话题  */ros::Subscriber KeyCmdSub_;//键盘指令void KeyCmdSub_callback(const std_msgs::String::ConstPtr& msg);//键盘指令回调函数

构造函数中加入

    /* 订阅 topic 话题  */KeyCmdSub_ = nh_.subscribe("/keyboard_cmd", 10, &MavrosFuctionTest::KeyCmdSub_callback,this);

定义回调函数如下:

// 键盘指令回调函数
void MavrosFuctionTest::KeyCmdSub_callback(const std_msgs::String::ConstPtr& msg)
{if( msg->data == "arm") {std::cout<<"receive arm cmd "<<std::endl;}
}

测试

编译后进行测试
运行节点
节点照常出现
在这里插入图片描述
新开终端输入

rostopic pub -1 /keyboard_cmd std_msgs/String "arm"

节点终端变为
在这里插入图片描述
测试通过
表明回调函数收到了arm的指令 可以进行下一步 ROS.html" title=mavros>mavros功能测试


http://www.ppmy.cn/devtools/104836.html

相关文章

【日常记录-Linux】unzip指令

Author&#xff1a;赵志乾 Date&#xff1a;2024-08-28 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 简介 unzip是一个在类Unix系统(如Linux、macOS)上广泛使用的命令行工具&#xff0c;用于解压缩.zip格式的文件。.zip是一种广泛支持…

【Go高性能】测试(单元测试、基准测试)

Go测试 一、分类1. 单元测试2. 基准测试 二、基准测试1. 介绍2. 基准测试基本原则3. 使用testing包构建基准测试3.1 执行基准测试3.2 基准测试工作原理3.3 改进基准测试的准确性3.3.1 -benchtime3.3.2 -count3.3.3 -cpu 4. 使用benchstat工具比较基准测试(可跳过&#xff09;4.…

C#上位机使用Microsoft.Office.Interop.Excel和EPPlus库对Excel或WPS表格进行写操作

C#上位机使用Microsoft.Office.Interop.Excel和EPPlus库对Excel或WPS表格进行写操作 一、使用Microsoft.Office.Interop.Excel库 1、通过NuGet包管理器添加引用 按照下图中红框所示进行操作。 需要安装Microsoft.Office.Interop.Excel包 添加Microsoft Office 16.0 Object …

新年伊始,暗网掀起泄露数据发布狂潮

新的一年已经到来&#xff0c;网络犯罪分子的脚步仍然没有停歇。为了庆祝圣诞节&#xff0c;犯罪分子在暗网上发布了大量窃取的数据。这些泄露的数据都被打上了 Free Leaksmas 的标签&#xff0c;犯罪分子将数据作为圣诞礼物进行互相共享。对受害者来说&#xff0c;就没有那么开…

焦虑相关症状与错误相关大脑活动的机器学习研究

摘要 焦虑症状可能会影响大脑对错误的加工方式。然而&#xff0c;许多研究报告的结果相互矛盾且不可再现&#xff0c;因此大脑对错误的反应(即错误相关负波[ERN]&#xff1b;错误相关正波[Pe])与特定焦虑症状的对应关系仍不清楚。本研究收集了171名被试的16个焦虑维度自述评分…

Redis:浅谈Redis持久化机制-RDB和AOF

Redis提供了两种持久化方式&#xff1a; 1、RDB持久化&#xff1a;在指定的时间间隔对数据进行快照存储。 2、AOF持久化&#xff1a;记录每次对服务器写的操作&#xff0c;当服务器重启的时候会重新执行这些命令来恢复原始的数据。AOF命令以redis协议追加保存每次写的操作到文件…

es7.13.2平滑下线

临时移除节点 临时移除节点 的步骤是通过更新集群设置来排除特定节点&#xff0c;以便 Elasticsearch 不再在该节点上分配新的分片。你可以执行以下命令来排除 nodename3&#xff1a; PUT /_cluster/settings {"persistent": {"cluster.routing.allocation.exc…

vue 前进刷新后退不刷新

本篇主要讲述vue如何通过路由实现“前进刷新后退不刷新”功能。 1. 在App.vue中配置keep-alive // <router-view></router-view> 外添加<template><div id"app"><!-- 前进后退都刷新 --><!-- <router-view></router-vie…