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

相关推荐
EasyCVR1 小时前
空地视频融合:国标GB28181视频监控EasyCVR打通无人机与指挥中心国标监控最后一公里
音视频·无人机
AI浩4 小时前
基于运动对齐RGB与事件视觉线索的无标签长时序3D无人机轨迹预测
3d·无人机
波特率1152008 小时前
在ROS2当中两种rmw比较(CycloneDDS和FastDDS)
ros·ros2·dds
诺斯顿_三维扫描8 小时前
无人机机库三维扫描:精准复刻核心部件,赋能航空运维数字化升级
无人机·数字孪生·三维扫描·三维数字化·三维扫描服务·数字化保护
IC_1577961147610 小时前
CVBS转BT656/BT601,能成熟、应用广泛的低功耗视频解码器
车载系统·无人机·视频编解码
渡之11 小时前
PiLoT:神经像素到三维配准 —— 无人机自定位与目标地理定位论文精读
无人机
数智工坊11 小时前
MPC引导的策略搜索:用模型预测控制训练安全高效的无人机深度控制策略
论文阅读·人工智能·算法·无人机
小许同学记录成长1 天前
三维重建技术文档
算法·无人机
梦道长生1 天前
PX4 + AirSim + QGC 仿真环境搭建笔记
无人机·仿真·px4·qgc·airsim
AI浩2 天前
一种用于跟踪无人机的三模态数据集与基线系统
无人机