ROS1入门4---Service server cpp

ROS1(Robot Operating System) 入门学习笔记

        Ubuntu 18.04

        ROS melodic 1.14.13

        环境变量添加 详见: ROS1入门1---工作空间与功能包

进入 上篇文章中创建的 /service_pkg/src 文件夹中

ROS1入门3---Service Client cpp

新建文件 command_server.cpp 内容如下

#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
#include <std_srvs/Trigger.h>

ros::Publisher value_pub;

bool pubflag = false;

bool commandCallback(std_srvs::Trigger::Request &req, std_srvs::Trigger::Response &res)
{
    pubflag = !pubflag;

    ROS_INFO("State : %s", pubflag == true ? "Run" : "Stop");

    res.success = true;

    res.message = "change state";

    return true;
}

int main(int argc, char **argv)
{
    ros::init(argc, argv, "state_publisher");
    ros::NodeHandle n;

    ros::ServiceServer server = n.advertiseService("/my_command", commandCallback);

    value_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);

    ROS_INFO("Waiting for command...");

    ros::Rate loop_rate(10);

    while (ros::ok())
    {
        ros::spinOnce();

        if (pubflag == true)
        {
            geometry_msgs::Twist cmd_vel;
            cmd_vel.linear.x = 0.5;
            cmd_vel.angular.z = 0.3;
            value_pub.publish(cmd_vel);
        }
        loop_rate.sleep();
    }
}

编辑  ROS1_Learn/src/service_pkg/CMakeLists.txt

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

 回到 工作空间根目录 编译

catkin_make

打开4个终端分别输入

        roscore

        rosrun turtlesim turtlesim_node

        rosrun service_pkg command_server

        rosservice call /my_command "{}" 

海龟开始转圈运动

 在最后一个终端 再次输入  rosservice call /my_command "{}"

海龟停止运动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值