无人机 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功能测试

相关推荐
漫漫求43 分钟前
1、无人机教学初衷
无人机
天途小编1 小时前
为什么不能用无人机送外卖?
无人机
gorgeous(๑>؂<๑)2 小时前
【中国石油大学-AAAI26】无人机+自然语言!首个空中多目标追踪 benchmark 来了,还带超强追踪算法
无人机
Likeadust2 小时前
视频推流平台EasyDSS无人机推流直播技术电力设施智能巡检实践
音视频·无人机
天途小编2 小时前
专科层次无人机专业就业方向全解析
无人机
智农云芯(Agribrain)3 小时前
无人机田间提取教程(上)-无人机操作部分
无人机
天途小编19 小时前
无人机领域领先品牌及其核心优势性能
无人机
2301_8234380221 小时前
解析《灾区应急通信协作无人机轨迹设计:多智能体PPO方法》
无人机
天途小编1 天前
无人机专业院校排名
无人机
yoyo君~1 天前
本地仓库推送到github
学习·github·无人机