前言
在将经纬高转化为以起飞点为坐标原点的局部直角坐标系时,涉及确定起始点的问题,这里记录一下。
方法1:
直接加一个bool开关,只有在第一次从回调函数中订阅到gps信息的时候,才保存为起始点,并在之后关闭开关。
方法2:
static关键字
参考文章,言简意赅
自己试了一下:
#include <ros/ros.h>
using namespace std;
int test(int c)
{
static int b=c;
return b;
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "static");
for (int i = 2; i < 5; ++i) {
std::cout<<"test("<<i<<")="<<test(i)<<std::endl;
}
return 0;
}
运行结果如下:

只有第一次赋值成功了,如果后续不再对b进行修改,b的值将会保存第一次赋值时的结果。赋值语句static只运行了一次!!!!也就是第一次。
本文介绍了两种方法来解决在经纬高坐标转换中确定起始点的问题:一是使用bool开关控制首次保存,二是利用C++的static关键字实现变量初始化。通过实例展示了静态变量的特性——仅在首次赋值后保持不变。

5167

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



