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

相关推荐
云卓SKYDROID4 小时前
无人机智能返航模块技术分析
人工智能·数码相机·无人机·高科技·云卓科技
MintonLee复现侠1 天前
记录RK3588的docker中启动rviz2报错
docker·容器·ros·rk3588·rviz·rviz2
Mr.Winter`4 天前
运动规划实战案例 | 基于多源流场(Flow Field)的路径规划(附ROS C++/Python实现)
人工智能·机器人·自动驾驶·ros·ros2·具身智能
Cprsensors5 天前
压力传感器选型铁三角:介质·安全·精度
人工智能·机器人·无人机
EriccoShaanxi5 天前
无人机如何靠陀螺仪保持稳定飞行?
车载系统·无人机
AI科技分享6 天前
仅需8W,无人机巡检系统落地 AI 低空智慧城市!可源码交付
人工智能·无人机·智慧城市
云卓SKYDROID6 天前
无人机SN模块运行与功能详解
人工智能·无人机·科普·高科技·云卓科技
Tipriest_7 天前
wstool和git submodule优劣势对比
ros·wstool·git submodule
无线图像传输研究探索7 天前
无人机图传的得力助手:5G 便携式多卡高清视频融合终端的协同应用
5g·音视频·无人机·无线图传·5g单兵图传·单兵图传·无人机图传
云卓SKYDROID7 天前
无人机遥控器波特率技术解析
无人机·通道·遥控器·波特率·高科技·云卓科技