ROS2之spin()函数解析(C++版)

ros2里面的这个spin()函数我觉的(我没有去看源代码,只是个人固执的这么认为)可以替换为如下内容:

while(rclcpp::ok())
{
    if(timer_->call())
    {

        timer_->execute_callback();
    }

}

这样写有一个好处,那就是不用使用智能指针了shared_ptr

//假设前面内容是:
using namespace rclcpp;
Node * pnode=0;
rclcpp::TimerBae::SharedPtr timer_;
int main(int argc,char ** argv)
{
    Node node1("nodeName");
    pnode=&node1;
    
}
//这个时候可以不用转换pnode为智能指针可以直接在pnode=&node1后面添加内容
    while(ok())
    {
        if(timer_->call())
        {
            timer_->execute_callback();
        }

    }

否者你就要这样写:

int main(int argc,char ** argv)
{
    Node node1("nodeName");
    pnode=&node1;
    //转换普通指针为共享指针
    shared_ptr p(pnode);
    spin(p);

}

虽然说后面这个看起来反而简洁一点,但是第一种结构我们更加熟悉,而且看起来思路非常的清晰,而且好像还可以在里面设定各种条件,控制流程执行,所以说这个是很值得参考的

你可能感兴趣的:(ros2,机器人,ubuntu,c++)