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

相关推荐
冀晓武5 小时前
Ubuntu22.04 安装 ROS2 Humble
ubuntu·ros
干啥都是小小白1 天前
话题通信之python实现
python·机器人·ros
智联视频超融合平台2 天前
无人机+AI视频联网:精准狙击,让‘罪恶之花’无处藏身
人工智能·网络协议·安全·系统安全·音视频·无人机
敢敢のwings3 天前
论文速读《UAV-Flow Colosseo: 自然语言控制无人机系统》
无人机
云卓SKYDROID3 天前
无人机报警器探测模块技术解析!
人工智能·无人机·科普·高科技·报警器
灵翼飞航科技有限公司4 天前
无人机多旋翼倾转动力测试系统-适用于(eVTOL开发、缩比模型测试、科研教育)
无人机
moonsims4 天前
无人机桥梁3D建模、巡检、检测的航线规划
3d·无人机
武汉唯众智创4 天前
职业本科院校无人机专业人才培养解决方案
无人机·低空经济·无人机专业·无人机实训基地·低空经济实训基地
云卓SKYDROID4 天前
无人机多人协同控制技术解析
无人机·科普·低空经济·协同控制·高科技·云卓科技
视觉语言导航4 天前
俄罗斯无人机自主任务规划!UAV-CodeAgents:基于多智能体ReAct和视觉语言推理的可扩展无人机任务规划
人工智能·深度学习·无人机·具身智能