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

相关推荐
小O的算法实验室2 小时前
2023年EAAI SCI1区TOP,使用无人机实现的可持续最后一公里包裹配送与退货服务,深度解析+性能实测
无人机·论文复现·智能算法·智能算法改进
云卓SKYDROID9 小时前
无人机结构设计核心要点解析
无人机·吊舱·高科技·云卓科技·结构要点
张驰咨询公司9 小时前
无人机赛道的下半场:我用六西格玛培训打赢的“确定性战争”
无人机·六西格玛·六西格玛培训·六西格玛绿带培训·六西格玛培训公司·精益六西格玛培训
shejizuopin1 天前
基于强化学习的多无人机对抗决策生成与优化方法研究(开题报告+答辩PPT)
无人机·开题报告·答辩ppt·基于强化学习的·多无人机·对抗决策生成·与优化方法研究
Bigemap1 天前
如何保存WAsp软件需要的 map格式(.map)的文件
人工智能·无人机·政务·bigemappro添加地图
Bigemap1 天前
如何打开Arcgis Binary Grid Files后缀为*.adf格式的文件
arcgis·无人机·数据要素·bigemap·bigemap pro
Bigemap1 天前
如何打开GeoPackage后缀.gpkg格式的文件?
无人机·大疆·kml·bigemap pro·无人机kml
钓了猫的鱼儿1 天前
无人机航拍巡检数据集
无人机
DeepHacking2 天前
Ubuntu22.04 + PX4 + ROS 2 + Gazebo Harmonic搭建四轴无人机仿真环境(ChatGPT 5.2 Pro)
无人机
DeepHacking2 天前
Ubuntu22.04 + PX4 + ROS 2 + Gazebo Harmonic四轴无人机仿真环境中开发功能(1)
无人机