ros2 服务节点源代码

#include "rclcpp/rclcpp.hpp"
#include "example_interfaces/srv/add_two_ints.hpp"

#include "memory.h"

void add(const std::shared_ptr prequest,
  std::shared_ptr presponse)
{
    presponse->sum=prequest->a+prequest->b;
    RCLCPP_INFO( rclcpp::get_logger("rclcpp"),"a=%d,b=%d,result:%d",prequest->a,prequest->b,presponse->sum );

}

int main(int argc,char ** argv)
{
    rclcpp::init(argc,argv);
    //define a node
    auto pnode=std::make_shared("serverNode");
    auto pservice=pnode->create_service("service1",&add);
    rclcpp::spin(pnode);
    rclcpp::shutdown();
}

说明:

111使用auto可以加快速度,例如:

std::shared_ptr nodex=std::make_shared("serverNode");

可以简写为

auto nodex=std::make_shared("serverNode");这样就不用写2次了

222 std::shared_ptr与rclcpp::(Node/)::Shared_Ptr之间是可以互相替换的,例如

std::shared_ptr nodex等价于

rclcpp::Node::Shared_Ptr   nodex

我觉得还是使用STD这个款式比较好,因为不依赖于ROS,而且其实更加好理解我觉得

格式:std::模板名称<模板参数类型>(参数);这就是标准的模板使用

3333那个spin函数的作用是:暂时不清楚,反正跟while(1)类似放在那里就好了

你可能感兴趣的:(机器人,ros2,ros,嵌入式系统,c++)