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

server/2024/10/9 15:15:55/

无人机 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/server/110565.html

相关文章

Golang | Leetcode Golang题解之第388题文件的最长绝对路径

题目&#xff1a; 题解&#xff1a; func lengthLongestPath(input string) (ans int) {n : len(input)level : make([]int, n1)for i : 0; i < n; {// 检测当前文件的深度depth : 1for ; i < n && input[i] \t; i {depth}// 统计当前文件名的长度length, isFi…

《C++20 特性综述》

《C20 特性综述》 在编程世界中&#xff0c;C一直以其强大的性能和灵活性占据着重要地位。随着时间的推移&#xff0c;C不断发展和演进&#xff0c;C20 带来了一系列令人瞩目的新特性&#xff0c;为开发者提供了更强大的工具和更高效的编程方式。 一、概念&#xff08;Concep…

初识Node.js

大家好久不见&#xff0c;今天我来介绍一下Node.js&#xff0c;对Node.js的安装和对其模块的简要讲解。 Node.js 目录 Node.js 什么是Node.js 安装Node.js Node运行方式 Node.js基础命令 查缺补漏 模块化 原生模块 fs模块 require指令 module对象 小结 什…

stable-diffusion-webui 部署 ,启用 api 服务

stable-diffusion-webui 部署 &#xff0c;启用 api 服务 api 文档参考 https://profaneservitor.github.io/sdwui-docs/api/ api 源码路径是 stable-diffusion-webui/modules/api/api.py 我系统是 ubuntu22.04 conda 环境torchpgu , python 是 3.11.7 安装 stable-diffusi…

【drools】intelj修改JDK版本、进行maven test

以使用drools 8.44.2.Final 版本的工程: 为例子, 使用idea 运行: 修改JDK版本 jdk版本的选择在项目结构:项目结构中 打开是真的慢这里选择jdk 版本自动弹出要设置 web框架 <

VCCAUX_IO

VCCAUX_IO指定给定I/O的VCCAUX.IO轨道的工作电压。 DRC可用于确保VCCAUX_IO属性分配正确&#xff1a; •VCCAUXIOBT&#xff08;警告&#xff09;&#xff1a;确保VCCAUX_IO值为NORMAL或HIGH的端口 仅存放在惠普银行。 •VCCAUXIOSTD&#xff08;警告&#xff09;&#xff1a;确…

Android创建自己的内容提供器(ContentProvider)

文章目录 Android创建自己的内容提供器&#xff08;ContentProvider&#xff09;创建内容提供器的步骤新建MyProvider继承自ContentProvider内容URI的格式修改MyProvider中的代码MIME类型 Android创建自己的内容提供器&#xff08;ContentProvider&#xff09; 在上一节当中&a…

Redis的内存淘汰策略-noeviction

noeviction 策略简介 noeviction 是 Redis 的默认内存淘汰策略。当 Redis 的内存使用达到配置的最大限制&#xff08;maxmemory&#xff09;时&#xff0c;该策略不会删除任何现有键&#xff0c;而是直接返回错误。这意味着 Redis 将拒绝写操作&#xff08;如 SET、LPUSH 等&a…