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

相关推荐
UAV_ckesc14 小时前
【硬核测评】ROCK 400A-M无人机电调深度解析:无人机动力系统的工业级革命
无人机
小赖同学啊14 小时前
无人机端部署 AI 模型,实现实时数据处理和决策
人工智能·无人机
思茂信息20 小时前
CST直角反射器 --- 距离多普勒(RD图), 毫米波汽车雷达ADAS
前端·人工智能·5g·汽车·无人机·软件工程
机器学习之心2 天前
【无人机三维路径规划】基于CPO冠豪猪优化算法的无人机三维路径规划Maltab
算法·无人机·无人机三维路径规划·冠豪猪优化算法
创小董2 天前
驾校与无人机飞手培训机构合作开展低空业务技术详解
无人机
创小董2 天前
低空经济快速发展,无人机人才培养及校企实验室共建技术详解
无人机
云卓SKYDROID2 天前
无人机扩频技术对比!
无人机·制造·科普·高科技·云卓科技
龙猫略略略2 天前
无人机如何根据航线重叠率与相机参数计算航线间隔与拍照点
数码相机·无人机·航线·qgc
云卓SKYDROID2 天前
无人机热点共享无线连接技术概述
人工智能·智能手机·电脑·无人机·云卓科技
EasyDSS2 天前
无人机推流/RTMP视频推拉流:EasyDSS无法卸载软件的原因及解决方法
网络协议·小程序·ffmpeg·音视频·无人机