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

相关推荐
无线图像传输研究探索3 天前
5G单兵图传 5G单兵 单兵图传 无线图传 无线图传方案 无人机图传解决方案 指挥中心大屏一目了然
5g·无人机·5g单兵图传·单兵图传·无人机图传
SXTomi3 天前
【无人机】无人机用户体验测试策略详细介绍
集成测试·无人机·用户体验
云卓SKYDROID4 天前
无人机飞行速度模块技术要点概述
人工智能·无人机·飞行速度·高科技·云卓科技
电力程序小学童5 天前
基于密集型复杂城市场景下求解无人机三维路径规划的Q-learning算法研究(matlab)
算法·matlab·无人机
云卓SKYDROID5 天前
无人机桨叶转速技术要点与突破
无人机·科普·测距·高科技·云卓科技
云卓SKYDROID5 天前
无人机云台电压类型及测量方法
人工智能·目标跟踪·无人机·高科技·航线系统
MocapLeader6 天前
IROS 2025 多智能体深度强化学习算法实现Crazyflie无人机在复杂环境中协同追逐
无人机·集群·控制·导航·协同·轨迹规划·避障
Coovally AI模型快速验证7 天前
基于YOLO集成模型的无人机多光谱风电部件缺陷检测
人工智能·安全·yolo·目标跟踪·无人机
云望无线图传模块7 天前
12公里无人机图传模组:从模糊到超高清的飞跃,抗干扰能力全面升级
网络·物联网·无人机
休息一下接着来7 天前
Ubuntu 22.04 安装 ROS 2 Humble 笔记
ros