创建代码
turtle_command_server.cpp
/**
* 该例程将执行/turtle_command服务,服务数据类型std_srvs/Trigger
*/
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
#include <std_srvs/Trigger.h>
ros::Publisher turtle_vel_pub;
bool pubCommand = false;
// service回调函数,输入参数req,输出参数res
bool commandCallback(std_srvs::Trigger::Request &req,
std_srvs::Trigger::Response &res)
{
pubCommand = !pubCommand;
// 显示请求数据
ROS_INFO("Publish turtle velocity command [%s]", pubCommand==true?"Yes":"No");
// 设置反馈数据
res.success = true;
res.message = "Change turtle command state!"
return true;
}
int main(int argc, char **argv)
{
// ROS节点初始化
ros::init(argc, argv, "turtle_command_server");
// 创建节点句柄
ros::NodeHandle n;
// 创建一个名为/turtle_command的server,注册回调函数commandCallback
ros::ServiceServer command_service = n.advertiseService("/turtle_command", commandCallback);
// 创建一个Publisher,发布名为/t

本篇博客详细介绍了如何使用ROS(Robot Operating System)创建一个服务,通过调用/turtle_command服务来控制海龟机器人的移动。服务采用std_srvs/Trigger类型,通过回调函数实现状态切换,控制海龟的前进与停止。代码示例展示了如何在C++中实现这一功能,并提供了编译和运行的步骤。
最低0.47元/天 解锁文章
3565

被折叠的 条评论
为什么被折叠?



