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

相关推荐
Yuroo zhou12 小时前
破空驭风,智领未来 --5KG物流配送无人机展示飞行!
人工智能·算法·机器人·硬件工程·无人机
胖提莫13 小时前
无人机Remote ID Beacon 帧字段详解
无人机·remote id
lihongli0001 天前
ros中的Navigation导航系统
自动驾驶·ros
总有刁民想爱朕ha1 天前
YOLO目标检测:一种用于无人机的新型轻量级目标检测网络
yolo·目标检测·无人机
lihongli0001 天前
ROS与Qt结合开发CAN控制界面(发布自定义的truck_send_can1消息)
开发语言·qt·ros
GIS数据转换器1 天前
2025无人机在农业生态中的应用实践
大数据·网络·人工智能·安全·无人机
无线图像传输研究探索1 天前
5G无人机用单兵图传设备 5G单兵图传 无线图传 无人机图传
5g·无人机·5g单兵图传·单兵图传·无人机图传
蜀中廖化1 天前
高压输电线背景下无人机检测输电线和周围树木以及计算两者之间的距离
无人机·双目摄像头测距·输电线检测·树木检测
应用市场1 天前
傅里叶变换在无人机振动分析中的应用详解
无人机
云卓SKYDROID1 天前
无人机RTK信号增强技术要点
无人机·遥控器·中继器·高科技·云卓科技