GNSS处理软件groops学习笔记(二):groops调试与项目构建--以地球定向参数(EOP)格式转换为例

前言

之前简单介绍了groops的编译和环境配置,隔了好久才想起来继续写,今天写一下groops的调试,并用一个简单的小功能展示一下调试和项目构建的过程。

调试准备

GROOPS官方在windows利用msys2管理的MinGW-w64编译程序,在Linux下使用g++等工具。因此,GROOPS调试可以直接使用编译时使用的环境即可进行调试,不需要再新增别的环境。

官方的source文件夹内有现成的CMakeLists.txt,直接用VSCode+CMAKE或者CLion在source文件建立工程就能直接进行调试了。VSCode搭配CMAKE调试C++的教程很多,这里就不赘述了。

在Windows环境下。推荐使用编译时安装的msys2管理的MinGW环境,以CLion为例,将工具链路径设为msys2/mingw64的路径即可。VSCode将kits设置为对应的版本也没有问题。

项目构建

GROOPS通过XML文件来设置工程,详细说明可以参考官方文档(网络不稳定,有时需要魔法)。对XML比较熟练的话可以编辑XML文件,最简单的方法是使用官方的GUI程序,该程序通过界面的方式来进行工程设置,最后结果保存为XML文件。
在GUI中新建一个项目XML, 这里用定位定轨中用的地球定向参数(EOP)的格式转换为例,原始EOP文件可以从IERS官网获取。

参数类别中,global为全局变量,可以设置一些项目通用的属性,比如路径、时间等等,通过大括号来引用,这里我们设置一个路径方便后面填写。

program即为可调用的程序,绿色标志表示当前程序可用,灰色表示当前程序被禁用。GUI侧边第二栏提供了程序列表和说明,可以快速搜索选择。我们选择IersC04IAU2000EarthOrientationParameter程序将IERS格式的EOP转换为GROOPS自身的EOP格式

在这里插入图片描述

proram中需要设置各项参数,右上角有红色标志的为必填参数,此处为输入文件路径inputfile和输出文件路径outputfileEOP。输出文件根据GROOPS格式说明,可以选择三种文件:

后缀文件类型
.xmlXML格式文件
.dat二进制格式文件
.txt和其他后缀文本格式文件

到这里,这个简单项目就基本配置好了,如果之前按照说明已经编译安装好了,点击绿色三角就可以直接运行了。也可以在命令行直接调用。

groops.exe EOPTrans_timeseries.xml

项目调试

如果选择Clion调试的话,直接配置参数就行了。使用VSCode的话,在./vscode下编辑launch.json文件:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) groops",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/groops.exe",   //调试对象
            "args": ["EOPTrans_timeseries.xml"],   //程序实参
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/../scenarioLeoReducedDynamicOrbit",    //工作目录
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "gdb",     //GDB工具路径
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

好了,做完上面这些就可以开始调试了。下面用Clion做演示。
GROOPS每一个程序功能都有对应的一组 .cpp.h文件,并实现了一个与功能同名的类,成员函数 run( ) 为该程序功能的运行部分。在相应功能的 run() 中即可对该功能进行调试。

class IersC04IAU2000EarthOrientationParameter
{
public:
  void run(Config &config, Parallel::CommunicatorPtr comm);
};
开始Debug,就能看到该功能运行的细节了,这样一个简单项目的调试就完成了。

总结

本次对GROOPS基本的调试和项目搭建进行了一个简单的介绍,之后根据官方给出的几个大型示例工程(低轨卫星简化动力学定轨、精密单点定位)再对GROOPS进一步演示。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值