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

相关推荐
YOLO数据集集合3 小时前
无人船视角水面目标检测数据集 |无人船 USV 水面目标检测 自主航行 避障 水域监测 目标检测9076期
深度学习·yolo·目标检测·无人机·无人机视角·无人船·自主航线
EW Frontier3 小时前
无人机集群协同拦截的目标分配怎么做?一套可落地的分布式决策框架拆解【附代码链接】
无人机·拦截·集群对抗
小O的算法实验室21 小时前
IEEE TASE,基于异构注意力的图卷积网络求解非对称取送货问题
无人机
XBWRJ21 小时前
下沉市场观察:《无人机装调维修师》与县域维保能力的构建
无人机
haishikeji696_1 天前
低空一网统管怎么做?无人机智慧巡查平台项目选型指南
无人机·低空经济·无人机管理系统·无人机飞控平台·一网统飞·ai自动化巡检
Zentceh1 天前
AI-ISP vs 传统ISP全面对比
人工智能·深度学习·计算机视觉·车载系统·transformer·无人机·智能硬件
光影跳跳糖1 天前
某矿山无人机航测案例,从储量管理到边坡监测
无人机·航测
深圳安车昇辉检测机构1 天前
DO-160G 爆炸大气试验:机载设备可燃环境安全验证要点
无人机·安全性测试
workflower1 天前
AI 转型正从工具部署转向生产关系重构
人工智能·安全·机器学习·机器人·无人机