当前位置: 首页 > news >正文

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

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

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

指令(字符串)订阅功能

为了通过键盘触发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的指令 可以进行下一步 mavros功能测试


http://www.mrgr.cn/news/13306.html

相关文章:

  • 新增页面保存后,跳转为详情页,同时关闭新增页。(即路由detail/1?type=1,变为detail/2/2?type=2id=2)
  • Go学习笔记(一)语法
  • GNU/Linux - RSYSLOG
  • 移动端+PC端源码,智慧城管执法系统,后端框架:springboot,移动端:uniapp
  • Git实战精粹
  • RSA加密解密算法认识及signln_resolve
  • 初识redis:Zset有序集合
  • fastjson序列化时过滤字段的方法
  • C++ DAY2
  • XSS-labs靶场通关攻略(16-20)
  • 力扣229题详解:求众数 II 的多种解法与模拟面试问答
  • day-42 分割字符频率相等的最少子字符串
  • 怎么生成一个springboot的项目
  • Vue:组件化开发
  • 11 索引
  • 290. 单词规律【 力扣(LeetCode) 】
  • RAG与LLM原理及实践(14)---- Python + MinIO + Kafka进阶
  • 在英伟达,你既能成为百万富翁,也能被“折磨”
  • bash 脚本的执行方式
  • MATLAB 低版本Matlab-读取LAS格式点云文件并可视化(78)