- #include "rclcpp/rclcpp.hpp"
- #include "example_interfaces/srv/add_two_ints.hpp"
-
- #include "memory.h"
-
- void add(const std::shared_ptr<example_interfaces::srv::AddTwoInts::Request> prequest,
- std::shared_ptr<example_interfaces::srv::AddTwoInts::Response > 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<rclcpp::Node>("serverNode");
- auto pservice=pnode->create_service<example_interfaces::srv::AddTwoInts>("service1",&add);
- rclcpp::spin(pnode);
- rclcpp::shutdown();
- }
说明:
111使用auto可以加快速度,例如:
std::shared_ptr
可以简写为
auto nodex=std::make_shared
222 std::shared_ptr与rclcpp::(Node/)::Shared_Ptr之间是可以互相替换的,例如
std::shared_ptr
rclcpp::Node::Shared_Ptr nodex
我觉得还是使用STD这个款式比较好,因为不依赖于ROS,而且其实更加好理解我觉得
格式:std::模板名称<模板参数类型>(参数);这就是标准的模板使用
3333那个spin函数的作用是:暂时不清楚,反正跟while(1)类似放在那里就好了