您的位置:首页 > 娱乐 > 八卦 > 创建企业网站的步骤_软件开发_广告网页_怎么在百度推广

创建企业网站的步骤_软件开发_广告网页_怎么在百度推广

2025/2/28 1:38:12 来源:https://blog.csdn.net/dshfh/article/details/145862167  浏览:    关键词:创建企业网站的步骤_软件开发_广告网页_怎么在百度推广
创建企业网站的步骤_软件开发_广告网页_怎么在百度推广

在ROS中除了常见的话题(topic)通信、服务(server)通信等方式,还有action通信这一方式,由于可以实时反馈任务完成情况,该通信方式被广泛运用于机器人导航等任务中。本文将通过三个小节的分享,实现基于action通信的阶乘运算。
第一节:自定义action文件
第二节:基于C++实现action通信的服务端
第三节:基于C++实现action通信的客户端

本节为第三节:基于C++实现action通信的客户端

详细步骤如下:

步骤1:在action_ws/src/factorial_pkg/src下创建factorial_client.cpp文件

cd action_ws/src/factorial_pkg/src
touch factorial_client.cpp

步骤2: 编写factorial_client.cpp文件

作者已在代码中进行了详细注释

#include "ros/ros.h"
// 导入自定义action头文件
#include "factorial_pkg/FactorialAction.h"
// 用于创建一个简单的行为服务器客户端
#include "actionlib/client/simple_action_client.h"typedef actionlib::SimpleActionClient<factorial_pkg::FactorialAction> ac;// 当任务完成时被调用,可以用来处理返回的结果
void doneCB(const actionlib::SimpleClientGoalState &goal_state, const factorial_pkg::FactorialResultConstPtr &result)
{if(goal_state.state_ == goal_state.SUCCEEDED){ROS_INFO("The task has succeeded");ROS_INFO("result: %ld", result->result);}else{ROS_INFO("The task failure");}
}// 这个回调函数在目标开始执行并变为“活动”(Active)状态时被调用。
// 在这里,你可以执行一些操作,比如更新用户界面,表示任务正在进行等。
void activeCB()
{ROS_INFO("Goal just went active");
}// 这个回调函数会在目标执行期间接收到反馈信息时被调用。
// 这通常用来获取目标执行的进度、状态更新等。
void feedbackCB(const factorial_pkg::FactorialFeedbackConstPtr &feedback)
{ROS_INFO("feedback: %.2f", feedback->feedback_num);
}   int main(int argc, char *argv[])
{ros::init(argc, argv, "factorial_client");ros::NodeHandle nh_;ac ac_(nh_, "factorial_action", true);// 等待服务器启动ac_.waitForServer();// 发送goal;factorial_pkg::FactorialGoal goal;goal.goal = 10;ac_.sendGoal(goal, &doneCB, &activeCB, &feedbackCB);ros::spin();return 0;
}

步骤3:编写factorial_pkg下的CMakeLists.txt文件

add_executable(factorial_client src/factorial_client.cpp)
target_link_libraries(factorial_client ${catkin_LIBRARIES})

步骤四:客户端和服务端联调

在终端中编译文件
打开一个终端,输入roscore
新开一个终端,输入rosrun factorial_pkg factorial_server
新开一个终端,输入rosrun factorial_pkg factorial_client
如果没有问题,则可以得到最终结果
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com