无人机 PX4 飞控 | ROS应用层开发:指令(字符串)订阅功能
指令(字符串)订阅功能
为了通过键盘触发mavros 的不同功能,需要实现一个订阅字符串的功能
该功能同样可用于其它项目
在终端输入
rostopic pub -1 /keyboard_cmd std_msgs/String "arm"
含义:在/keyboard_cmd 上发布一条字符串消息,消息内容为"arm"。
程序在接收到该指令后,可进行相关的操作。
代码
代码在之前博客 基础代码框架上进行的添加
在类的定义中加入
/* 订阅 topic 话题 */
ros::Subscriber KeyCmdSub_;//键盘指令
void KeyCmdSub_callback(const std_msgs::String::ConstPtr& msg);//键盘指令回调函数
构造函数中加入
/* 订阅 topic 话题 */
KeyCmdSub_ = nh_.subscribe("/keyboard_cmd", 10, &MavrosFuctionTest::KeyCmdSub_callback,this);
定义回调函数如下:
// 键盘指令回调函数
void MavrosFuctionTest::KeyCmdSub_callback(const std_msgs::String::ConstPtr& msg)
{
if( msg->data == "arm")
{
std::cout<<"receive arm cmd "<<std::endl;
}
}
测试
编译后进行测试
运行节点
节点照常出现
新开终端输入
rostopic pub -1 /keyboard_cmd std_msgs/String "arm"
节点终端变为
测试通过
表明回调函数收到了arm的指令 可以进行下一步 mavros功能测试
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 无人机 PX4 飞控 | ROS应用层开发:指令(字符串)订阅功能
发表评论 取消回复