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

相关推荐
Dev7z4 小时前
基于Matlab多目标粒子群优化的无人机三维路径规划与避障研究
开发语言·matlab·无人机
EasyDSS6 小时前
打造“移动的风景线”:RTMP推流平台EasyDSS无人机推流直播实现文旅宣传新形态
无人机
GIS数据转换器16 小时前
基于GIS的智慧旅游调度指挥平台
运维·人工智能·物联网·无人机·旅游·1024程序员节
暮色念了红尘2 天前
Ros1 Noetic(本地)和Ros2 Humble(docker)之间相互通信及设置初始位姿
docker·容器·ros·humble·noetic·ros1_bridge
星光一影4 天前
SpringBoot+Vue3无人机AI巡检系统
人工智能·spring boot·websocket·mysql·intellij-idea·mybatis·无人机
Likeadust4 天前
突破视野与传输壁垒:RTMP推流平台EasyDSS在无人机城市航拍直播中的挑战与实现
无人机
Mr.Winter`5 天前
无人船 | 图解基于MPC控制的路径跟踪算法(以全驱动无人艇WAMV为例)
人工智能·算法·机器人·自动驾驶·ros·路径规划
深圳市青牛科技实业有限公司 小芋圆5 天前
30V N 沟道 MOSFET SP30N06NK 全面解析:参数、特性与应用场景
人工智能·单片机·嵌入式硬件·无人机·高频dc-dc谐振变换器·笔记本电脑开合检测
云卓SKYDROID5 天前
无人机探测器技术要点解析
人工智能·无人机·材质·高科技·云卓科技
中渝软通5 天前
技术解析:清洗无人机在高空清洁中的应用与优势
无人机