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

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

指令(字符串)订阅功能

为了通过键盘触发mavros 的不同功能,需要实现一个订阅字符串的功能

该功能同样可用于其它项目

在终端输入

c 复制代码
rostopic pub -1 /keyboard_cmd std_msgs/String "arm" 

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

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

代码

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

在类的定义中加入

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

构造函数中加入

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

定义回调函数如下:

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

测试

编译后进行测试

运行节点

节点照常出现

新开终端输入

c 复制代码
rostopic pub -1 /keyboard_cmd std_msgs/String "arm"

节点终端变为

测试通过

表明回调函数收到了arm的指令 可以进行下一步 mavros功能测试

相关推荐
smart_well_11 小时前
无人机图传模块 wfb-ng openipc-fpv,4G
无人机·openipc
古月居GYH12 小时前
边缘计算与ROS结合:如何实现分布式机器人智能决策?
机器人·ros·边缘计算
Evand J1 天前
基于改进的强跟踪技术的扩展Consider Kalman滤波算法在无人机导航系统中的应用研究
算法·无人机
创小董2 天前
无人机+固定机巢 ,空地协同作业技术详解
无人机
创小董3 天前
集群建模、空地协同,无人机高效救灾技术详解
无人机
创小董3 天前
无人机微波图像传输数据链技术详解
无人机
古月居GYH4 天前
ROS应用之SwarmSim在ROS 中的协同路径规划
ros·路径规划
FreeBuf_5 天前
DroneXtract:一款针对无人机的网络安全数字取证工具
安全·web安全·无人机
深蓝学院7 天前
突破极限!!!20米每秒的端到端无人机自主导航
无人机
视觉语言导航7 天前
无人机如何自主侦察?UEAVAD:基于视觉的无人机主动目标探测与导航数据集
无人机