-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontent.json
1 lines (1 loc) · 211 KB
/
content.json
1
{"meta":{"title":"Home","subtitle":"Spacefan","description":"Personal blog of Spacefan","author":"Spacefan","url":""},"pages":[{"title":"","date":"2018-06-18T10:27:43.848Z","updated":"2016-01-30T11:16:22.000Z","comments":true,"path":"404.html","permalink":"/404.html","excerpt":"","text":"404 | hexo-theme-freemind Toggle navigation Freemind Archives Categories Tags About OMG, failed to find this article! © 2014 Joseph Pan with help from Hexo and Twitter Bootstrap. Theme by Freemind. var path = \"/hexo-theme-freemind/search.xml\"; searchFunc(path, 'local-search-input', 'local-search-result');"},{"title":"About","date":"2019-02-17T10:23:01.686Z","updated":"2019-02-17T10:23:01.686Z","comments":true,"path":"about/index.html","permalink":"/about/index.html","excerpt":"","text":"Who am I 我的名字叫 廖祥,是一个不折不扣的航天爱好者,所以我给自己取名为 Spacefan。我是一位航天工程师,目前就职于中国航天科技集团。 My Story (-;(-;(-;…博主太懒,没有留下任何东西…;-) ;-) ;-) Contact E-mail: [email protected]: Shenzhen, Guangdong, China"},{"title":"Categories","date":"2018-06-18T10:27:43.848Z","updated":"2016-03-15T14:23:14.805Z","comments":true,"path":"categories/index.html","permalink":"/categories/index.html","excerpt":"","text":""},{"title":"Tags","date":"2018-06-18T10:27:43.993Z","updated":"2016-01-30T11:16:22.000Z","comments":true,"path":"tags/index.html","permalink":"/tags/index.html","excerpt":"","text":""}],"posts":[{"title":"Bernese 5.2 在 Ubuntu 16.04.6 编译安装","slug":"Bernese52_install","date":"2019-06-25T14:22:30.000Z","updated":"2019-07-03T14:08:12.902Z","comments":true,"path":"2019/06/25/Bernese52_install/","link":"","permalink":"/2019/06/25/Bernese52_install/","excerpt":"Bernese 是三大著名的高精度 GNSS 数据处理软件之一。由瑞士伯尔尼大学天文学院( Astronomical Institute of the University of Bern,AIUB)开发,能够处理包括 GPS、GLONASS 和卫星激光测距(SLR)等多种观测数据。该程序支持 Windows 和 UNIX/Linux 操作系统,具有图形界面(使用 Qt 实现),操作友好,模型准确,解算精度高,并且具有强大的数据批处理能力。 当前 Bernese 软件可以购买的最新版本为 5.2,获得 Linux 版本源码后,可使用本文介绍的方法将其安装到运行 Ubuntu 16.04 操作系统的计算机上。","text":"Bernese 是三大著名的高精度 GNSS 数据处理软件之一。由瑞士伯尔尼大学天文学院( Astronomical Institute of the University of Bern,AIUB)开发,能够处理包括 GPS、GLONASS 和卫星激光测距(SLR)等多种观测数据。该程序支持 Windows 和 UNIX/Linux 操作系统,具有图形界面(使用 Qt 实现),操作友好,模型准确,解算精度高,并且具有强大的数据批处理能力。 当前 Bernese 软件可以购买的最新版本为 5.2,获得 Linux 版本源码后,可使用本文介绍的方法将其安装到运行 Ubuntu 16.04 操作系统的计算机上。本文主要有三部分内容,前两部分都是关于 Linxu 系统的(由于很久不用 Linux 了,所以想趁此机会留下笔记,方便以后拾遗),熟悉 Linux 的童鞋可以忽略,直奔第三部分。 1. Ubuntu 16.04 安装与优化Ubuntu16.04 是 Canonical 公司于 2016 年发布的长期支持版本(Long Time Support, LTS),目前版本号已升至 16.04.6,本文系统环境使用该版本,下载地址:http://releases.ubuntu.com/xenial/。 根据需求选择 32 位 ubuntu-16.04.6-desktop-i386.iso 或 64 位 ubuntu-16.04.6-desktop-amd64.iso,安装步骤就不叙述了,网上很多教程,如果不想使用真机环境,可在虚拟机下安装。这里重点讲下安装后要做的一些优化,其中标题后面带有 (Optional) 的指可选优化项目。 1.1 更新软件源安装好 Ubuntu 后,第一件事就是更新软件源,因为这会节约很多时间。阿里云源在国内应该最快(网易 163 源速度也还不错),此处使用阿里云源。Ctr+Alt+T 打开终端,执行命令: 123sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份sudo gedit /etc/apt/sources.list #修改软件源地址sudo apt-get update #更新列表 第二行命令后需添加的阿里云源地址如下: 1234567891011121314151617deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-propertiesdeb http://mirrors.aliyun.com/ubuntu/ xenial main restricteddeb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-propertiesdeb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricteddeb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-propertiesdeb http://mirrors.aliyun.com/ubuntu/ xenial universedeb http://mirrors.aliyun.com/ubuntu/ xenial-updates universedeb http://mirrors.aliyun.com/ubuntu/ xenial multiversedeb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiversedeb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-propertiesdeb http://archive.canonical.com/ubuntu xenial partnerdeb-src http://archive.canonical.com/ubuntu xenial partnerdeb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricteddeb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-propertiesdeb http://mirrors.aliyun.com/ubuntu/ xenial-security universedeb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse 当然,也可以使用 software & update 即 软件和更新 更新,图形化的界面可能更加直观。 设置完软件源后,更新软件源并升级系统: 1234sudo apt-get update && sudo apt-get upgrade # 或分步执行# sudo apt-get update# sudo apt-get upgrade 1.2 Unity 桌面环境调整(Optional)Unity 是 Ubuntu 自己打造的桌面环境,有人认为 Unity 桌面环境糟糕的设计使很多 Ubuntu 用户不满,使其转向 Linux Mint 等非 Unity 桌面系列系统。 Unity 优化工具 Unity Tweak Tool,可用来调整外观设置、鼠标、Unity 启动器、窗口行为等选项,可直接在 Ubuntu软件中心 搜索安装或使用命令: 1sudo apt-get install unity-tweak-tool 1.3 安装Linux显卡驱动Ubuntu 16.04 支持大多数 Nvidia 和 Intel 显示硬件,安装适配的显卡驱动之后 Ubuntu 可以获得非常流畅的统一桌面体验。 在 软件和更新 -> 附加驱动 选项卡中进行选择。对于使用 Nvidia 的用户,可以通过 PPA 为 Ubuntu 安装 Nvidia 驱动。 注意:在虚拟中使用 Ubuntu,无需安装显卡驱动。 1.4 搜狗输入法Linux版本UbuntuKylin 团队与搜狗输入法合作开发的搜狗输入法Linux版本已经推出多年,下载地址: http://pinyin.sogou.com/linux/,下载后直接点击安装即可。 1.5 安装 Ubuntu 受限的额外的解码器Ubnutu 额外受限 指的是这些解码器的包没有默认安装在 Ubuntu 系统里面,这些解码器没有默认安装在系统里面的原因是受到很多国家的法律的约束。在这些解码器安装完以后可正常播放很多格式的音视频文件,如 MP3,MP4,AVI 和以及其他的一些格式。使用下面的命令进行安装: 1sudo apt-get install ubuntu-restricted-extras 注意:对于初学者,如果屏幕上出现那些协议和条款,按 Tab 键在选项之间切换,使用 Enter 确认选择。 1.6 安装 adobe-flash 播放器(Optional)通常在安装完 Ubuntu 的受限额外的解码器后,你应该想通过 flash 播放器 看视频。可能因为一个问题或者其他的原因在安装 flash播放器 上遇见的问题。使用下面的命令: 1sudo apt-get install flashplugin-installer 1.7 安装 Typora 编辑器(Optional)Typora 是优秀的 Markdown 编辑器,便于日常笔记写作。Typora 不在 Ubuntu 默认软件仓库中,需要先添加仓库,再行安装。 12345678910# 若报错,执行注释行# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAEwget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -# 添加 Typora 软件仓库sudo add-apt-repository 'deb https://typora.io/linux ./'sudo apt-get update# 安装 Typorasudo apt-get install typora 注意:Typroa 在 Ubuntu 下可能一不小心就进入全局菜单下的全屏模式了,通过快捷键 F11 切换即可。 1.8 安装 Oracle Java(Optional)由于系统自带的是 OpenJDK,卸载 OpenJDK 之后会带有残留,导致运行 $ java -version 时第一行不是 java 的版本号,会是 Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 这个提示,导致很多检测 java 版本号的脚本会运行出错,因此需要手动清除残留。 1sudo rm /usr/share/upstart/sessions/jayatana.conf 删除 /usr/share/upstart/sessions/jayatana.conf 文件,重启之后再运行 $ java -version 就不会再有 Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 提示了。然后用如下命令安装 Oracle Java: 12345678# 添加 Oracle Java 8 软件仓库sudo add-apt-repository ppa:webupd8team/java # 更新软件源sudo apt-get update # 安装 Oracle Java 8sudo apt-get install oracle-java8-installer 1.9 其他微调整(Optional)1234567891011121314151617181920# 删除卡顿的 Libreofficesudo apt-get remove libreoffice-common # 删除 Amazon 链接sudo apt-get remove unity-webapps-common # 删掉基本不用的自带软件,用的时候再安装sudo apt-get remove thunderbird totem rhythmbox empathy brasero simple-scan gnome-mahjongg aisleriot gnome-mines cheese transmission-common gnome-orca webbrowser-app gnome-sudoku landscape-client-ui-install onboard deja-dup# 安装上古神器 Vimsudo apt-get install vim# 安装新立得软件包管理器,也可在软件中心搜索安装sudo apt-get install synaptic# 系统默认不带解压缩 .rar 文件的功能,手动安装 unrar 程序sudo apt-get install unrar# 装上之后就可以用命令解压缩 .rar 文件了,使用如下命令解压缩文件到当前目录unrar x test.rar 2. Linux 基础命令与用户权限Linux 系统的一大特色就是使用命令进行日常操作和系统管理,新手可能会感觉不太适应,但熟悉以后会发现命令其实是非常高效的执行方式。该部分内容介绍 Linxu 下的基础命令、用户权限以及用户和密码管理等基本概念。 2.1 卸载软件(以 Gnome 的卸载为例)Ubuntu 18.04 之前的发型版本都对 Gnome 桌面环境不友好,若是体验后想卸载,可按照以下命令进行,卸载流程可借鉴至其他软件。 1234567891011121314151617# 卸载掉 gnome-shell 主程序sudo apt-get remove gnome-shell# 卸载掉 gnome,并删除其配置文件sudo apt-get --purge remove# 或分步执行# sudo apt-get remove gnome# sudo apt-get purge gnome# 1)卸载不需要的依赖关系sudo apt-get autoremove# 2)清理安装 gnome 时候留下的缓存程序软件包sudo apt-get autoclean# 3)清理系统所有的缓存程序软件包sudo apt-get clean 注意:若是在图形界面卡死,可快捷键 Ctrl+Alt+F1~F6 调出终端,抑或进入恢复模式(黑屏情况下显卡出现问题只能在无图形化界面下进行操作)。 2.2 文件/文件夹的复制、移动和删除Linux 下文件的复制、移动与删除命令为:cp,mv,rm,若遇权限问题需在前面加:sudo。 2.2.1 文件复制命令:cp 命令格式 1cp [-adfilprsu] source destination 参数说明 -a: 是指 archive 的意思,指复制所有的目录 -d: 若源文件为连接文件(link file),则复制连接文件属性而非文件本身 -f: 强制(force),若有重复或其它疑问时,不会询问用户,而强制复制 -i: 若目标文件(destination)已存在,在覆盖时会先询问是否真的操作 -l: 建立硬连接(hard link)的连接文件,而非复制文件本身 -p: 与文件的属性一起复制,而非使用默认属性 -r: 递归复制,用于目录的复制操作 -s: 复制成符号连接文件(symbolic link),即“快捷方式”文件 -u: 若目标文件比源文件旧,更新目标文件 操作示例 如将 /test1 目录下的 file1 文件复制到 /test3 目录,并将文件名改为 file2,可输入以下命令: 1cp /test1/file1 /test3/file2 2.2.2 文件移动命令:mv 命令格式 1mv [-fiv] source destination 参数说明 -f: force,强制直接移动而不询问 -i: 若目标文件(destination)已经存在,就会询问是否覆盖 -u: 若目标文件已经存在,且源文件比较新,才会更新 操作示例 如将 /test1 目录下的 file1 移动到 /test3 目录,并将文件名改为 file2,可输入以下命令: 1mv /test1/file1 /test3/file2 移动当前目录所有文件到上一级目录 1mv * ../ # .. 表示回到上一级目录 2.2.3 文件删除命令: rm 命令格式 1rm [-fir] 文件或目录 参数说明: -f: 强制删除 -i: 交互模式,在删除前询问用户是否操作 -r: 递归删除,常用在目录的删除 操作示例 如删除 /test 目录下的 file1 文件,可以输入以下命令: 1rm -i /test/file1 2.3 文件/文件夹权限管理2.3.1 Linux 用户权限简介Linux 内的一切皆文件,所以对于 Linux 下文件的管理就十分的重要了。Linux 下的文件权限分为三种:r(读),w(写),x(执行)。Ubuntu 下查看权限的命令为: 123ls -l filename # 文件权限查询,filename 用于指定具体文件ls -ld folder # 文件夹权限查询,folder 用于指定具体文件夹ll # 查看目录下所有内容权限情况,也可在后面指定目录 如列出用户根目录下文件的权限情况,结果如下: 1234567891011121314151617181920212223242526272829303132spacefan@U1604:~$ ll总用量 152drwxr-xr-x 18 spacefan spacefan 4096 6月 23 18:58 ./drwxr-xr-x 3 root root 4096 6月 12 05:51 ../-rw------- 1 spacefan spacefan 1490 6月 23 18:57 .bash_history-rw-r--r-- 1 spacefan spacefan 220 6月 12 05:51 .bash_logout-rw-r--r-- 1 spacefan spacefan 3771 6月 12 05:51 .bashrcdrwxrwxrwx 4 spacefan spacefan 4096 6月 10 23:05 Bernesev5.2/drwx------ 14 spacefan spacefan 4096 6月 23 18:54 .cache/drwx------ 3 spacefan spacefan 4096 6月 23 11:22 .compiz/drwx------ 19 spacefan spacefan 4096 6月 23 14:32 .config/drwx------ 3 spacefan spacefan 4096 6月 12 05:56 .dbus/drwxr-xr-x 2 spacefan spacefan 4096 6月 12 05:56 Desktop/-rw-r--r-- 1 spacefan spacefan 25 6月 23 12:09 .dmrcdrwxr-xr-x 2 spacefan spacefan 4096 6月 12 05:56 Doc/drwxr-xr-x 2 spacefan spacefan 4096 6月 12 05:56 Download/drwx------ 2 spacefan spacefan 4096 6月 23 16:22 .gconf/drwx------ 3 spacefan spacefan 4096 6月 23 16:21 .gnupg/-rw------- 1 spacefan spacefan 3140 6月 23 16:22 .ICEauthoritydrwxr-xr-x 2 spacefan spacefan 4096 6月 12 05:56 Image/drwx------ 3 spacefan spacefan 4096 6月 12 05:56 .local/drwx------ 5 spacefan spacefan 4096 6月 12 06:01 .mozilla/drwxr-xr-x 2 spacefan spacefan 4096 6月 12 05:56 Music/drwx------ 2 spacefan spacefan 4096 6月 12 05:56 .presage/-rw-r--r-- 1 spacefan spacefan 655 6月 12 05:51 .profile-rw-r--r-- 1 spacefan spacefan 0 6月 12 06:00 .sudo_as_admin_successfuldrwxr-xr-x 2 spacefan spacefan 4096 6月 12 05:56 Video/-rw------- 1 spacefan spacefan 1503 6月 23 18:24 .viminfo-rw------- 1 spacefan spacefan 150 6月 23 16:21 .Xauthority-rw------- 1 spacefan spacefan 84 6月 23 16:21 .xsession-errors-rw------- 1 spacefan spacefan 1172 6月 23 14:34 .xsession-errors.old-rw-rw-r-- 1 spacefan spacefan 39425 6月 22 23:35 .zcompdump 可见权限表示一共有 10 位字符,其中: 第 1 位字符代表档案类型 - 代表文件 d 代表是目录 l 代表链接 第 2~4 位字符表示拥有者(user)权限 第 2 位字符代表拥有者是否有 读 权限 第 3 位字符代表拥有者是否有 写 权限 第 4 位字符代表拥有者是否有 执行 权限 第 5~7 位字符表示同组者(group)权限 第 5 位字符代表同组者(group)是否有 读 权限 第 6 位字符代表同组者(group)是否有 写 权限 第 7 位字符代表同组者(group)是否有 执行 权限 第 8~10 位字符表示其他用户(other)权限 第 8 位字符代表其他用户(other)是否有 读 权限 第 9 位字符代表其他用户(other)是否有 写 权限 第 10 位字符代表其他用户(other)是否有 执行 权限 其中,r 表示文件可以被读(read),w 表示文件可以被写(write),x 表示文件可以被执行(如果它是可执行程序的话),- 表示未被授予权限。 2.3.2 权限修改方法Linux 用 chmod 命令修改用户权限,其用法大致分为两种,1)指定某类用户的权限;2)同时指定三类用户的权限,语法为: 1chmod [-可选参数][<权限范围>+/-/=<权限设置>] 文件/目录 可选参数列表 -c:当发生改变时报告处理信息 -f:错误信息不输出 -R:处理指定目录及子目录下的所有文件 -v:运行时显示详细处理信息 指定某类用户的权限 1chmod [u/g/o/a] [+/-/=] [r/w/x] file [u / g / o / a] 为权限范围,其中: u:User,即文件或目录的拥有者 g:Group,即文件或目录的所属群组 o:Other,除了文件或目录拥有者和所属群组外,其他用户都属于这个范围 a:All,即全部用户 权限操作 +:表示增加权限 -:表示取消权限 =:表示取消之前的权限,并给予唯一的权限 权限代号 r:读取权限,数字代号为 “4” w:写入权限,数字代号为 “2” x:执行权限,数字代号为 “1” -:不具备任何权限,数字代号为 “0” file:文件名(路径) 例如给 User 用户增加了对 code 目录下 /readme.txt 文件 w 和 x 的权限: 1sudo chmod u+rw code/readme.txt 同时指定三类用户的权限 1chmod [xyz] file 其中 x,y,z 分别指定 User、Group、Other 的权限;用三位二进制数表示 r , w , x 三种权限(注意顺序),其中 0 代表没有该权限,1 代表有该权限,如 100 则表示,有 r 权限,无 wx 权限;再将这个三位的二进制数转为十进制,则是 x(或yz)的值。 User: 7 = 111,表示具有 rwx 权限 Group: 7 = 111,表示具有 rwx 权限 Other: 4 = 100,表示只具有 r 权限,而没有 wx 权限 例如给 User 和 Group ”读+写+执行“ 的权限(即 rwx ),并给 Other 只 ”读“(即 r)的权限: 1sudo chmod 774 code/readme.txt 对当前所在目录下的所有非隐藏内容(Linux 下以 . 开头的为隐藏内容)做权限修改操作: 1sudo chmod 774 * # “*” 为通配符,代表当前目录下所有非隐藏内容 对当前所在目录下的所有内容(包括以 . 开头的隐藏内容)做权限修改操作: 1sudo chmod 774 . # “.” 代表当前所在目录 修改指定目录下所有内容(包括以 . 开头的隐藏内容)的权限: 1sudo chmod -R 774 code/ 2.4 用户和密码管理2.4.1 root 密码设置Ubuntu 普通用户第一次使用 root 需要设置 root 密码: 1sudo passwd root 两次输入相同密码后设置成功,然后执行: 1su root 输入密码后即切换到了 root 用户。 2.4.2 root & guest 登陆设置Ubuntu 默认的登陆界面不能采用 root 账号登陆,但可使用 guest 访客登陆。将其改为可输入用户名的形式登陆,并删除访客登陆。 第一步:给 root 用户设置密码 见 2.4.1 小节。 第二步:修改登陆界面的配置文件 1234sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf# 若不具有修改权限,修改之sudo chmod 777 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 在末尾增加两行后保存退出,如下所示: 1234[Seat:*]user-session=ubuntugreeter-show-manual-login=trueallow-guest=false 如果现在用 root 用户在图形界面登录会有错误:读取 /root/.profile 时发生错误:mesg:tty n 还需要做修改。继续下一步。 第三步:编辑 root 配置文件 编辑 /root/.profile 文件: 1sudo gedit /root/.profile 在末尾增加:tty -s && mesg n || true,保存后退出: 123456789# ~/.profile: executed by Bourne-compatible login shells.if [ "$BASH" ]; then if [ -f ~/.bashrc ]; then . ~/.bashrc fifitty -s && mesg n || true 第四步:重启系统 重启系统后,上述修改生效,选择 登陆 按钮,输入 root 为登录用户,再输入密码。 2.4.3 用户密码修改普通用户密码修改只能由 root 完成,操作过程及结果如下: 123456spacefan@U1604:~$ su root密码: root@U1604:/home/spacefan# passwd spacefan输入新的 UNIX 密码: 重新输入新的 UNIX 密码: passwd:已成功更新密码 3. Bernese 5.2 编译安装3.1 确认软件包内容经过前面的大量铺垫,终于进入安装 Bernese 软件编译安装环节。首先检查安装文件是否齐全,一份完整的软件包至少包含以下文件: BERN52.tgz:主程序包; CAMPAIGN52.tgz:示例工程; DATAPOOL.tgz:输入数据; ICONS.tgz:程序图标; README:程序说明文档; SAVEDISK.tgz:输出数据; setup.sh:程序安装脚本。 3.2 安装依赖程序Bernese 软件代码量庞大,计算部分主要采用 Fortran 语言编写,界面部分使用基于 Qt 的 C++ GUI 库实现,但也有一些 Perl 或 Shell 语言实现的脚本。在编译安装 Bernese 之前,你需要安装以下程序: 依赖库文件; C++ 编译器; Fortran 编译器; Perl 5; Qt 4。 目前,绝大部分的 Linux 发行版都已经自带了 Perl 5 解释器和 GNU C++(g++)编译器,当然也包括 Ubuntu。因此实际上只安装所需依赖库、Fortran 编译器和 Qt 4 即可。 3.2.1 安装依赖库Bernese 软件依赖于 X11 和 zlib,编译软件之前需要首先安装这些依赖。使用如下命令安装 X11 和 zlib: 1234sudo apt-get install libx11-devsudo apt-get install libxext-devsudo apt-get install libxtst-devsudo apt-get install zlib1g-dev 3.2.2 安装 GNU FortranFortran 编译器用于编译 Bernese 软件中使用 Fortran 语言编写的计算程序,在终端中使用如下命令安装 GNU Fortran(gfortran)编译器: 1sudo apt-get install gfortran 3.2.3 安装 Qt 4Bernese 的图形操作界面部分基于 Qt 开发,编译程序菜单时需要引用 Qt 4。从 Qt 4 的下载页面,下载 Qt 4.8.7 的 Linux 源代码 进行编译。首先解压源代码文件: 1tar -zxvf qt-everywhere-opensource-src-4.8.7.tar.gz 使用 cd 命令进入解压得到的文件夹,执行如下命令将 Qt 4 安装到 /usr/local/qt4 目录内: 123sudo ./configure -release -opensource -static -prefix /usr/local/qt4sudo make sudo make install Qt 4 的编译安装过程需要耗费较长的时间,具体时长取决于你的计算机硬件配置,耐心等待其编译完成。然后设置环境变量 QTDIR,将其指向 Qt 4 的安装目录。切换至 root ,打开 bash 环境配置文件: 12su rootgedit ~/.bashrc 在文件末尾添加一下内容: 12345# PATH for QT4.8export QTDIR=/usr/local/qt4export PARH=PATH:QTDIR/binexport MANPATH=$QTDIR/doc/manexport LD_LIBRARY_PATH=$QTDIR/lib 也可以直接在终端设置环境变量: 1export QTDIR=\"/usr/local/qt4\" 至此,依赖环境已经配置完毕,可以开始安装 Bernese 了。 3.3 安装 BerneseBernese 程序为用户提供了安装引导脚本 setup.sh,执行该脚本并根据提示操作即可完成安装过程。Bernese 默认安装到当前用户的 Home 文件夹,但也可以安装到其他文件夹,完整安装需要约 500 MB 的磁盘空间。为了供多个用户使用,需要共享 BERN52 和 MENU.INP 的执行和修改权限。本示例将 Bernese 安装至 /opt 目录下。 3.3.1 格式转换进入安装文件目录,此处为 ~/Bernesev5.2/Bernese_v5.2_linux,命令操作如下所示: 123spacefan@U1604:~$ cd Bernesev5.2/Bernese_v5.2_linux/spacefan@U1604:~/Bernesev5.2/Bernese_v5.2_linux$ pwd/home/spacefan/Bernesev5.2/Bernese_v5.2_linux 为了防止出现乱码,将 sh 转为 unix 格式,再运行。终端输入: 12sudo apt-get install dos2unixdos2unix setup.sh 3.3.2 安装 Bernese通过 root 用户执行 Bernese 的安装引导脚本: 12su rootsh setup.sh 之后程序提示输入 Bernese 软件的安装目录,这里的 /root 表示默认安装路径。我们将其安装到 /opt/BERN52 文件夹,因此输入:/opt。 12345678910111213141516spacefan@U1604:~/Bernesev5.2/Bernese_v5.2_linux$ su root密码: root@U1604:/home/spacefan/Bernesev5.2/Bernese_v5.2_linux# sh setup.sh **************************************** Bernese GNSS Software ** Installation ** (UNIX/Linux or Mac OS X platform) ****************************************Full path where the BERN52 software tree will be installed[ /root ]:/optThe software will be installed in /opt/BERN52 程序提示找到的 Perl 语言解释器位置: 1Perl program to be used [ /usr/bin/perl ]: 一般使用系统自带的 Perl 语言解释器就可以了,此处直接按 Enter 键回车。之后,配置文件 configure.pm 被启动,并在屏幕打印以下提示: 123456789101112131415==========================================CONFIGURATION OF THE BERNESE GNSS SOFTWARE========================================== 0 ... Complete installation (Steps 1 to 5) 1 ... Update LOADGPS.setvar 2 ... Install online updates (only after Step 1) 3 ... Add a new user environment (only after Step 1) 4 ... Compile the menu (only after Step 1) 5 ... Compile the programs (only after Step 1) 6 ... Install the example campaign (only after Step 1) 7 ... --- x ... ExitEnter option: 解释一下此处的各个选项: 键入 0:执行从第 1 项至第 5 项的全部过程 键入 1:更新环境变量设置 键入 2:安装在线更新包 键入 3:添加新用户环境 键入 4:编译图形界面菜单 键入 5:编辑程序 键入 6:安装解算工程示例 键入 x: 退出安装程序 由于存在一些坑,我们老老实实一步一步进行。键入 1,安装程序打印出支持的编译器,其中 GNU 指示到 gfortran 的路径,表明安装程序找到的了该编译器: 12345678910111213141516171819Enter option: 1Information about compiler tests for OS LINUX: 1: g95 tested at AIUB 2: gfortran tested at AIUB 3: ifort tested at AIUB (version 10 and 12) 4: pgf90 tested at AIUB 5: f90 tested at AIUB 6: Use \"OTHER\" compiler from /opt/BERN52/GPS/EXE/Makefile.templateSelect Compiler for OS LINUX: 1: G95 2: GNU -> /usr/bin/gfortran 3: IFC 4: PG_F90 5: SUNF90 6: OTHERSelect [2]: 这里系统已经检测到了 gfortran,键入 2 选择 gfortran 编译器(也可以直接按 Enter 键回车,因为默认就是 2)。然后安装程序继续打印出当前应用的环境变量: 123456789101112131415Current Values:-------------- VARIABLE DESCRIPTION VARIABLE NAME VARIABLE VALUE 1: Path to software C => /opt/BERN52 2: Path to Qt libraries QTBERN => /usr/local/qt4 3: Operating system group OS => UNIX 4: Operating system name OS_NAME => LINUX 5: Fortran compiler name F_VERS => GNU 6: List of additional compilers F_VERS_LIST => 7: Host of the BPE server BPE_SERVER_HOST => U1604 8: Path to user environment U => ${HOME}/GPSUSER52 9: Path to temp. user environment T => ${HOME}/GPSTEMP10: Path to campaign area P => ${HOME}/GPSDATA/CAMPAIGN5211: Path to datapool area D => ${HOME}/GPSDATA/DATAPOOL12: Path to savedisk area S => ${HOME}/GPSDATA/SAVEDISK 解释一下此处的默认环境变量: 第 1 项:Bernese 软件的安装目录 第 2 项:所使用的 Qt 4 所在目录 第 3 项:操作系统类型 第 4 项:操作系统名称 第 5 项:使用的 Fortran 编译器 第 6 项:其他可用的编译器 第 7 项: BPE 服务器 第 8 项:用户环境目录 第 9 项:用户临时文件缓存目录 第 10 项:用户解算工程文件夹 第 11 项:用户数据文件夹目录 第 12 项:解算成果目录 若接受其默认的变量设置,输入 y。要修改其中的配置,输入 n,然后根据其提示,输入变量编号来配置变量。这里使用默认设置,输入 y。随后安装程序将检测是否存在所需的文件夹,当提示某个文件夹不存在时,程序提示是否创建,键入 y 创建即可。 123456789101112131415161718192021222324252627282930Accept the values (y/n): yUse of uninitialized value $hlp in substitution (s///) at /opt/BERN52/GPS/EXE/configure.pm line 927, <STDIN> line 3.*********************************************************************** /opt/BERN52/GPS/EXE/LOADGPS.setvar* has been updated.**********************************************************************Your campaign area ${P} does not exist:/root/GPSDATA/CAMPAIGN52Create it now (y/n): Your campaign area ${P} does not exist:/root/GPSDATA/CAMPAIGN52Create it now (y/n): Your campaign area ${P} does not exist:/root/GPSDATA/CAMPAIGN52Create it now (y/n): yYour datapool area ${D} does not exist:/root/GPSDATA/DATAPOOLCreate it now (y/n): yYour savedisk area ${S} does not exist:/root/GPSDATA/SAVEDISKCreate it now (y/n): yPress Enter to continue 之后按 Enter 键继续,再按 2 下载更新文件。由于下载更新文件的过程可能会很慢,若已经有更新文件(本文为 update_2013-07-18.tar.gz),Ctrl+C 取消更新文件下载,另开终端并将更新文件复制到 /opt/BERN52 目录下,然后回到原终端中输入 y。 123456789101112spacefan@U1604:~/Bernesev5.2/Bernese_v5.2_linux$ sudo mv update_2013-07-18.tar.gz /opt/BERN52/[sudo] spacefan 的密码: spacefan@U1604:~/Bernesev5.2/Bernese_v5.2_linux$ cd /opt/BERN52/spacefan@U1604:/opt/BERN52$ ls -l总用量 3740drwxrwsr-x 2 978 1070 4096 6月 23 22:34 BPEdrwxrwsr-x 12 978 1070 4096 7月 18 2013 GPSdrwxrwsr-x 3 978 1070 4096 7月 18 2013 INCdrwxrwsr-x 3 978 1070 4096 7月 18 2013 LIBdrwxrwsr-x 2 978 1070 4096 7月 18 2013 MENUdrwxrwsr-x 3 978 1070 4096 7月 18 2013 PGM-rwxrw-rw- 1 spacefan spacefan 3803626 6月 23 23:04 update_2013-07-18.tar.gz 好,重点来了:继续之前,先来填坑。首先对 BERN52 目录赋予执行权限,另开终端进入 /opt 进行权限设置: 12cd /opt/BERNsudo chmod -R 777 . # or $ sudo chmod -R 777 * 然后,查询 ld 的版本: 12$ ld -vGNU ld (GNU Binutils for Ubuntu) 2.26.1 版本大于 2.22,需要修改 BERN52/MENU/memu.pro 中的内容。打开该文件: 1gedit /opt/BERN52/MENU/menu.pro 找到: 1##QMAKE_LIBS += -lz 去除前面的注释 #,保存后退出。然后,回到原终端,按 3 添加新用户环境。 123456789101112131415161718192021222324252627282930==========================================CONFIGURATION OF THE BERNESE GNSS SOFTWARE========================================== 1 ... Update LOADGPS.setvar 2 ... Install online updates 3 ... Add a new user environment 4 ... Compile the menu 5 ... Compile the programs 6 ... Install the example campaign 7 ... --- x ... ExitEnter option: 3User environment /root/GPSUSER52 already exists.Update files (y/n): yCopying menu and program input files...Copying BPE user scripts...Copying examples for process control files...Copying BPE options for processing examples...Copying ICONS ...Extracting ICONS ...*********************************************************************** User area /root/GPSUSER52* has been added/updated.********************************************************************** 完成后,继续按 4 编译图形界面菜单。 123456789101112131415161718192021222324252627==========================================CONFIGURATION OF THE BERNESE GNSS SOFTWARE========================================== 0 ... Complete installation (Steps 1 to 5) 1 ... Update LOADGPS.setvar 2 ... Install online updates 3 ... Add a new user environment 4 ... Compile the menu 5 ... Compile the programs 6 ... Install the example campaign 7 ... --- x ... ExitEnter option: 4Running the compilation of the menu.This can take a while...It depends on the computer performance.All compilation output is redirected into file/opt/BERN52/MENU/MENUCOMP.log******************************************** Bernese menu compiled successfully.******************************************* 菜单编译成功后按 5 继续编译程序,如果看到下面的提示,那么恭喜你,Bernese 软件已经编译安装成功了! 123******************************************** Fortran programs compiled successfully.******************************************* 注意:若提示 Fortran 程序编译至 100/100 时出错,返回安装程序引导,按 0 重新执行 1~5 步,根据经验,应该会成功编译了。 3.3.3 安装示例Bernese 编译安装成功后,需要跑一下示例文件 PPP_DEMO.PCF 来验证软件是否可以正常工作,在跑 PPP_DEMO.PCF 之前,最好先完成这几件事情: 更新 CAMPAIGN52.tgz、DATAPOOL.tgz、SAVEDISK.tgz 最新的 CAMPAIGN52.tgz、DATAPOOL.tgz、SAVEDISK.tgz 文件需要在 Bernese FTP 下载:ftp.aiub.unibe.ch/BERN52/,下载后替换掉自带的文件,否则跑 PPP_DEMO.PCF 时会报错。 1234spacefan@U1604:~$ cd Bernesev5.2/Bernese_v5.2_FTP_20170915/spacefan@U1604:~/Bernesev5.2/Bernese_v5.2_FTP_20170915$ cp * /opt/BERN52/GPS/DOC/spacefan@U1604:~/Bernesev5.2/Bernese_v5.2_FTP_20170915$ lsCAMPAIGN52.tgz DATAPOOL.tgz SAVEDISK.tgz 更新 /BERN/GPS/GEN 目录 最好也更新 /BERN/GPS/GEN,否则可能会提示:缺少 SINEX. SINEX.PPP IONEX. IONEX.PPP 等文件,下载地址:ftp.aiub.unibe.ch/BSWUSER52/。由于文件较多,建议用 FTP 软件下载。下载后,不要删除自带的 /BERN/GPS/GEN 目录,做好备份。 添加星历文件 Bernese 5.2 使用 JPL/NAIF 发布的 DE405.EPH 星历,下载地址:https://github.com/SGL-UT/GPSTk/blob/master/examples/DE405.EPH,下载后放入 /BERN52/GPS/GEN目录下。 1cp DE405.EPH /opt/BERN52/GPS/GEN/ 添加 RINEX 转换程序 将 Linux 版本的 RINEX 转换程序放入 usr/bin 目录下,否则第安装示例文件时会出现 识别不了 RRX2RNX 文件 的提示。下载地址:Download page for the RNXCMP software,32位为 RNXCMP_4.0.7_Linux_x86_32bit.tar.gz,64位为:RNXCMP_4.0.7_Linux_x86_64bit.tar.gz。下载后解压,进入目录。 12cd RNXCMP_4.0.7_Linux_x86_64bit/bin/sudo cp * /usr/bin 注意:这几件事除了星历文件,其余三件都可以在安装开始之前进行,其中第一件和第二件可以直接在安装包文件中进行替换。但为了保险起见,最好先按照本文步骤操作。 然后,继续在上小节的安装提示中,按 6 安装示例,如果看到下面的提示,说明示例安装成功。 1Installation of the example campaign has been finished 3.3.3 添加普通用户使用 root 用户进行数据解算操作既不方便也不安全。为了让非 root 用户也能使用 Bernese,需要使用新用户加载环境变量设置文件,并启动配置程序。按 3 继续,若不慎将终端关闭,新开终端中执行如下命令: 12source /opt/BERN52/GPS/EXE/LOADGPS.setvarperl /opt/BERN52/GPS/EXE/configure.pm 程序再次打印出安装提示,此时键入 3,根据程序提示添加新用户的环境变量即可。 1234567891011121314151617181920212223242526272829==========================================CONFIGURATION OF THE BERNESE GNSS SOFTWARE========================================== 1 ... Update LOADGPS.setvar 2 ... Install online updates 3 ... Add a new user environment 4 ... Compile the menu 5 ... Compile the programs 6 ... Install the example campaign 7 ... --- x ... ExitEnter option: 3Create user environment /home/spacefan/GPSUSER52 (y/n): yCopying menu and program input files...Copying BPE user scripts...Copying examples for process control files...Copying BPE options for processing examples...Copying ICONS ...Extracting ICONS ...*********************************************************************** User area /home/spacefan/GPSUSER52* has been added/updated.********************************************************************** 注意:此步是在普通用户模式下进行的操作,而非 root 用户。 3.3.4 配置环境变量为了在每次开机后都能直接使用 Bernese 软件,需要配置在系统启动时自动加载环境变量。编辑用户主文件夹内的配置文件(root 下的配置文件也可以一并添加了): 1gedit ~/.bashrc 在文件末尾为 Bernese 加载环境变量: 12# Load environment variables for Bernese GNSS Softwaresource /opt/BERN52/GPS/EXE/LOADGPS.setvar 之后在终端中键入 G 就可以启动 Bernese 了,如下图所示。 如果 3.3.3 小节在添加普通用户时 GPSDATA 移动不成功,可能会在启动时报错: 12Cannot open INP file /home/spacefan/GPSDATA/CAMPAIGN52/EXAMPLE/STA/SESSIONS.SESUsing standard session definition 从 /root 目录将 GPSDATA 拷贝到普通用户目录 /home/spacefan,再为其添加普通用户权限即可。 4 结束语至此,Bernese 5.2 软件在 Ubuntu 16.04.6 下编译安装成功。简单总结一下: 安装依赖:libx11-dev、libxext-dev、libxtst-dev、zlib1g-dev、gfortran & Qt-4.8.7(网上有些教程说要装 ncompress,本文没装并未出错,若出错无法解决可以安装)。 手动下载更新文件,复制到 BERN52 目录下。 运行 setup.sh 前,为防止乱码,先在终端运行:$ dos2unix setuo.sh 。 第二步过后要修改权限并检查 ld 版本号,并做相应填坑工作。 安装示例之前,处理好示例文件更新、DE405.PHE 星历和 RENX 转换工具的添加。 最后重新运行安装配置文件 configure.pm,配置好普通用户的环境变量。 后续,将写一些在 Bernese 5.2 下的 GNSS 数据处理和精密定轨教程,敬请期待! 5 参考资料【1】Bernese GNSS Software Version 5.2,DOCU52.pdf 【2】安装Ubuntu 16.04后要做的事 【3】Linux(Ubuntu)系统下安装Qt library和Qt Creator全过程记录 【4】Ubuntu 操作系统安装 Bernese 【5】Windows安装虚拟机-Centos7;fortran及Qt4.8.4, BERNESE5.2 linux下安装步骤 【6】BERNESE5.2 linux 安装 【7】Bernese安装后要做的几件小事 【8】Linux Mint 18.2安装Bernese 5.2的注意事项","categories":[{"name":"专业技能","slug":"专业技能","permalink":"/categories/专业技能/"}],"tags":[{"name":"GNSS","slug":"GNSS","permalink":"/tags/GNSS/"},{"name":"Bernese","slug":"Bernese","permalink":"/tags/Bernese/"},{"name":"Ubuntu","slug":"Ubuntu","permalink":"/tags/Ubuntu/"}]},{"title":"卫星轨道之从开普勒到近代航天","slug":"SatelliteDesign-Orbits","date":"2019-04-06T02:00:00.000Z","updated":"2019-05-02T11:57:46.570Z","comments":true,"path":"2019/04/06/SatelliteDesign-Orbits/","link":"","permalink":"/2019/04/06/SatelliteDesign-Orbits/","excerpt":"轨道是卫星在太空中运行所形成的固定轨迹,类似于高铁奔跑在铁轨上一样。沿着这条轨迹,卫星围绕在地球或者其他天体飞行,就像月亮绕着地球、地球绕着太阳飞行一样。与地面交通工具不同的是,卫星以数公里每秒的速度(比如 7.6km/s)飞速疾驰在太空中的超级跑道上,而地面交通工具则以龟速蠕动在地球表面。 那么,问题来了,卫星为什么能在太空中持久飞行?卫星的超级跑道如何描述?航天工程师们都设计了哪些实用的卫星轨道来完成太空任务?且听轨道君细细道来。","text":"轨道是卫星在太空中运行所形成的固定轨迹,类似于高铁奔跑在铁轨上一样。沿着这条轨迹,卫星围绕在地球或者其他天体飞行,就像月亮绕着地球、地球绕着太阳飞行一样。与地面交通工具不同的是,卫星以数公里每秒的速度(比如 7.6km/s)飞速疾驰在太空中的超级跑道上,而地面交通工具则以龟速蠕动在地球表面。 那么,问题来了,卫星为什么能在太空中持久飞行?卫星的超级跑道如何描述?航天工程师们都设计了哪些实用的卫星轨道来完成太空任务?且听轨道君细细道来。 图 1: 卫星运行在太空中的超级跑道上 1 开普勒的彩蛋 全世界的 People 都知道砸大牛的苹果,却鲜为人知开普勒的彩蛋。我相信很多同学都知道开普勒,但卫星在太空飞行与开普勒有啥关系呢? 图 2: 约翰尼斯·开普勒(Johannes Kepler,1571-1630),德国天文学家 1609 年,开普勒出版《星际使者》一书,书中包含了他所提出的行星运动三大定律的前两个定律。十年后的 1619 年,他发表了第三个定律。开普勒定律定性地揭示了行星围绕太阳的运行规律,使人们明晰了对行星运动的认识。更为重要的是,开普勒定律这一大大的三色彩蛋为大牛的苹果提供了先验基础,因此开普勒被誉为航天动力学这门天文学分支学科的鼻祖。 为纪念鼻祖,美国宇航局将一个太空望远镜命名为开普勒号,并给这一寻找系外类地行星的任务取名为开普勒计划,被寻得的位于宜居带的系外行星都以开普勒开头。美国佬搞出这么大的动静,咋们也不能示弱,为了纪念鼻祖,咱们来温习一下开普勒三大定律。 椭圆定律:所有行星绕太阳的轨道都是椭圆,太阳在椭圆的一个焦点上。 面积定律:行星和太阳的连线在相等的时间间隔内扫过相等的面积。 调和定律:所有行星绕太阳一周的恒星时间(T)的平方与它们轨道长半轴(a)的立方成比例,即 公式 1. 开普勒三大定律之调和定律 \\frac{T^{2}_{1}}{T^{2}_{2}} = \\frac{a^{3}_{1}}{a^{3}_{2}} T:恒星绕太阳一圈的恒星时间,即轨道周期; a:恒星绕太阳运行轨道的半长轴,与椭圆中的定义一致。 1,2,3,重点来了。开普勒同学发现了行星运动三定律,大牛站在他的肩膀上发现了万有引力定律,进一步定量地揭示了万物运动的普世规律。 图 3: 万有引力示意图 全世界的 People 都知道的万有引力定律就是两个东东相互吸引,然后其中一个东东吨位不够,只能寄人篱下,围绕大哥转啊!转啊!转。我们的卫星就是小吨位的东东,地球就是大哥。 3,2,1,重点又来了。根据牛顿的万有定律可知,在忽略空气阻力的情况下,水平扔出去的物体将沿抛物线运动。 图 4: 水平扔出去的物体将沿抛物线运动 由于地球总体上呈球形,于是有意思的事情发生了。地球表面每 8km 水平距离存在 5m 的垂直高度差,也就是说,如果扔物体的水平速度达到每秒 8km/s,那么抛出去的物体将不会落到地表,而是一直飞下去。 图 5: 地球曲率 当然,空气阻力一直被忽略。如果在距地表不高的地方扔物体,空气阻力会逐渐使其减速,那么如果在太空中扔呢?Bingo,太空中没有大气阻力(严格来说是大气阻力微小),所以扔出去的物体将一直绕着地球飞行。把我们在太空中扔一个速度高达 8km/s 的物体,换成用运载火箭将卫星加速至 8km/s,那么卫星就能在太空中持久飞行。 图 6: 太空加农炮 2 如何描述卫星轨道 第一个问题顺利 XO,下面进入第二个:卫星的超级跑道如何描述? 航天动力学中用轨道根数(Orbital Elements)描述卫星轨道,仅用特定的六个根数就定义卫星轨道的几何形状和大小以及卫星飞行方向和所处位置,以唯一确定卫星轨道。我们来数一数这六根数,一根…两根…三根…… 轨道第一个根数 轨道的第一个根数是半长轴 a 这个根数决定了卫星轨道形成的椭圆长半轴的长度,及轨道的大小。同时,这个根数也决定了发射卫星到这个轨道需要多少能量,因为根据活力公式,一个确定轨道的机械能是固定的。 图 7: 轨道的第一个根数 不同任务类型的卫星,或者运载约束,工作在不同的轨道高度上。发射到不同轨道所需要的能量都需要依靠半长轴来计算。如下图所示,飞得越高的卫星速度越慢,也是依据半长轴计算而来的。 图 8: 轨道高度 vs. 轨道速度曲线 轨道第二个根数 轨道的第二个根数为偏心率 e ,跟椭圆的扁率是一个意思,代表轨道偏心的程度。偏心率近似等于 0 的轨道一般称为近圆轨道,此时地球的质心几乎与轨道几何中心重合。偏心大于 0 小于 1,轨道就呈椭圆状,偏心率越大轨道越扁。 图 7: 轨道的第二个根数 轨道第三个根数 轨道的第三个根数是轨道倾角 i,即轨道平面与赤道平面之间的夹角,用于描述轨道的倾斜程度,简单地说就是轨道平面相对于地球赤道平面是躺着的还是立着的或者是斜着的。卫星轨道的倾角决定了卫星星下点所能覆盖的地理高度,并对发射场和运载火箭的运力形成硬性约束。具体而言,若想卫星行下点轨迹覆盖高纬度地区,则卫星轨道倾角不能小于该纬度;发射场的纬度不能高于卫星轨道倾角;在半长轴和发射场相同的情况下,运载火箭发射倾角更高的卫星需要提供更多的能量。 图 8: 轨道的第三个根数 轨道第四个根数 轨道的第四个根数是升交点赤经 Ω,理解这个轨道根数需要在称为惯性系的三维空间中进行。航天动力学中常常将 J2000 坐标系作为惯性系使用,J2000 坐标系它的原点在地球质心,参考平面是 J2000 平赤道面,Z 轴向北指向平赤道面北极,X 轴指向 J2000 平春分点,Y 轴与 X 和 Z 轴组成直角右手系。那么卫星在轨道上运动从南半球向北半球运动的过程中经过赤道平面所处的天球赤经和春分点之间的角度就称之为升交点赤经。 图 9: 轨道的第四个根数 轨道第五个根数 轨道的第五个根数是近地点幅角 υ,卫星从升交点开始到达近地点在轨道平面内所飞过的角度,代表了轨道朝向。 图 10: 轨道的第五个根数 轨道第六个根数 轨道的第六个根数为真近角 θ,这是一个时变根数,用来描述某一个确定时刻卫星在轨道中所处的位置,是地心指向卫星和指向近地点矢量之间的夹角。 图 11: 轨道的第六个根数 3 实(花)用(式)卫星轨道锦集 第二个问题也顺利 XO,下面实战阶段:航天工程师们都设计了哪些卫星轨道来完成太空任务?前方高能,先送一点福利自行补脑。 现代航天对卫星轨道做了全方位、无死角分类,按轨道高度可分为低轨(Low Earth Orbit,200~2000km),中轨(Medium Earth Orbit,2000~36000km),高轨(High Earth Orbit,36000km 及以上)等;按轨道偏心率可分为近圆轨道(e≈0),椭圆轨道(e≥0.001)等;按轨道倾角可分为赤道轨道(i≈0),极轨道(i≈90°)等;未完待续…😂 😂 😂 图 12: 按高度分类的轨道图谱 但实际上,近地卫星(绕地球飞行的卫星)常用的轨道就那么几种:1)地球静止轨道;2)太阳近同步轨道;3)回归轨道。不常用也有几种:1)冻结轨道;2)大椭圆轨道;3)驻留轨道;4)巡游轨道。其中,大椭圆轨道还可以细分为闪电轨道、眼镜蛇轨道和魔法轨道,虽然名字取得贼好听,但是除了老(俄)毛(罗)子(斯)和北(加)极(拿)熊(大)的部分卫星,极少有其他国家的卫星使用。下面就简单介绍一下常(实)用的和名字贼(花)好(式)听的几种轨道。 地球静止轨道 地球静止轨道(Geostationary Earth Orbit, GEO)相信大家一定不陌生,尤其是喜欢看科幻小说的童鞋。因为这条轨道最先由科幻大师亚瑟·查尔斯·克拉克(Arthur C. Clarke)详细阐述并发表在无线世界,题为 “Extra-Terrestrial Relays – Can Rocket Stations Give Worldwide Radio Coverage?”。文章详细阐述了地球静止轨道在通信领域的巨大应用潜力,值得拍手叫绝的是,那时(1945 年)地球人还未曾向太空扔过卫星。 图 13: 科幻大师亚瑟·查尔斯·克拉克(Arthur C. Clarke) 地球静止轨道最大的特征就是轨道倾角为零且轨道周期与地球自转周期相同,即 23 小时 56 分 4 秒。如今,这条独一无二的轨道已经被人类塞满了各式各样的卫星,拥挤不堪,人们形象地称之为地球静止轨道带(Geostationary Earth Orbit Belt)。 图 13: 拥挤的地球静止轨道带 太阳同步轨道 太阳同步轨道(Sun-Synchronous Orbits, SSO)相信大家有点陌生,类似于地球静止轨道(倾角不为零时称为地球同步轨道)每天绕地球转一圈,太阳同步轨道每年升交点赤经绕地球转一圈。由于地球每年绕太阳转一圈(即地球绕太阳运动的轨道每年升交点赤经绕太阳转一圈)…好像有点晕…所以太阳同步轨道每天升交点赤经与地球每天绕太阳转过的角度相同,约为 0.9863°/天。 公式 2. 太阳同步轨道升交点进动速率 \\Delta \\Omega = -2 \\pi \\frac{J_2 R^2_E}{p^2} \\cdot \\frac{3}{2} cos(i) = \\frac{2\\pi}{365} \\approx 0.9863 ^{\\circ} J_2 为地球非球形引力带谐项二阶系数,约为 1.08263 \\times 10^{−3}); R_E 为地球平均半径,约为 6378.1363 km; p 为轨道半通径,p = a(1-e^2)。 太阳同步轨道的这一特性使得其广泛被低轨卫星用于实际任务,尤其是遥感卫星。因为太阳同步轨道平面始终与太阳矢量保持相对固定的夹角,所以轨道光照条件好且升交点地方时基本不变,有利于遥感卫星正常开展观测任务。 图 14: 太阳同步轨道周年运动示意图 需要专门指出的是,太阳同步轨道并非只有一条,而是一类轨道,因而轨位资源较为宽松。此外,太阳同步轨道倾角一般在 97° 左右,所以运行在该类轨道上的卫星基本上可以覆盖全球。 回归轨道 回归轨道(Repeat-ground track orbit, RGTO)指星下点轨迹(卫星轨道在地球上的投影)周期性出现重合的一类轨道,即经过一定时间后,回归轨道星下点轨迹又重新回到原来通过的路线,期间流逝的时间称为回归周期。回归轨道可用下式加以数学描述。 公式 3. 回归轨道数学描述 \\frac{\\frac{N}{K}}{\\omega_e - \\dot{\\Omega}} - \\frac{1}{\\dot{\\omega_e} + \\dot{M}} = 0 N 回归轨道的回归轨数,必须为整数; K 回归轨道的回归天数,必须为整数; \\omega_e 地球自转速率; \\dot{M} 升交点赤经进动速率; \\dot{\\omega_e} 近地点幅角进动速率; \\dot{M} 平近角进动速率。 回归轨道通常用用于那些对目标重访性有严格要求的一类卫星,如返回式卫星、立体测绘卫星、干涉 SAR 卫星等。我国神舟系列飞船即采用了回归轨道,以便规划返回点。 图 15: 神舟四号飞船星下点回归轨迹 大椭圆轨道 大椭圆轨道(High Elliptical Orbit, HEO),顾名思义,就是指轨道偏心率较大的轨道。有多大呢?先看看前苏联专门为其闪电通信卫星设计的一类大椭圆轨道 — 闪电轨道(Molniya Orbits)。 图 16: 闪电轨道三维示意图 闪电轨道远地点约 46000km,近地点约 800km,偏心率约高达 0.72,轨道周期 12h,每天运行两圈。为保持近地点长期不旋转,轨道倾角被冻结在 63.4° 附近,近地点幅角被冻结在 270° 附近。从上图可见,闪电轨道绝大多数时间运行在中高纬度地区,因而适合中高纬度通信,三颗卫星组网即可实现中高纬度地区不间断覆盖,这也是前苏联设计闪电轨道的初衷。 图 17: 闪电轨道星下点二维轨迹图 由于闪电轨道在闪电卫星的成功应用,后续轨道工程师们又设计了眼镜蛇轨道和魔法轨道。 眼镜蛇轨道(Cobra Orbits),是闪电轨道的缩小版,远地点轨道高度只有 27000km,轨道周期 8h,每天运行三圈。该轨道在远地点附近对 3 个经度相互间隔 120° 的中高纬度区域提供大约 4h 的连续覆盖。因此,6 颗卫星组网颗实现中高纬度地区不间断覆盖。 图 17: 眼镜蛇轨道星下点三维轨迹图 魔法蛇轨道(Magic Orbits) ,是闪电轨道的微缩版,远地点轨道高度只有 7800km,轨道周期 3h,每天运行八圈。该轨道在远地点附近对 8 个经度相互间隔 45° 的中高纬度区域提供大约 1h 的连续覆盖。因此,24 颗卫星组网颗实现中高纬度地区不间断覆盖。 图 18: 魔法轨道星下点三维轨迹图 结束语 好了,轨道君已经带大家从开普勒超级快地跑到了现代航天,打完收工,让喵星人跟大家拜了个拜!","categories":[{"name":"航天任务","slug":"航天任务","permalink":"/categories/航天任务/"}],"tags":[{"name":"卫星轨道","slug":"卫星轨道","permalink":"/tags/卫星轨道/"},{"name":"开普勒","slug":"开普勒","permalink":"/tags/开普勒/"},{"name":"轨道根数","slug":"轨道根数","permalink":"/tags/轨道根数/"},{"name":"地球静止轨道","slug":"地球静止轨道","permalink":"/tags/地球静止轨道/"},{"name":"太阳同步轨道","slug":"太阳同步轨道","permalink":"/tags/太阳同步轨道/"},{"name":"回归轨道","slug":"回归轨道","permalink":"/tags/回归轨道/"},{"name":"闪电轨道","slug":"闪电轨道","permalink":"/tags/闪电轨道/"},{"name":"眼镜蛇轨道","slug":"眼镜蛇轨道","permalink":"/tags/眼镜蛇轨道/"},{"name":"魔法轨道","slug":"魔法轨道","permalink":"/tags/魔法轨道/"}]},{"title":"一种实用的开普勒方程求解方法及其 C 语言实现","slug":"KeplerianSolver","date":"2019-02-20T12:30:00.000Z","updated":"2019-03-06T14:30:13.416Z","comments":true,"path":"2019/02/20/KeplerianSolver/","link":"","permalink":"/2019/02/20/KeplerianSolver/","excerpt":"开普勒方程是航天动力学基础方程,是开普勒定律的数学描述。由于开普勒方程属于超越方程,因而无法通过解析法精确求解,这一问题在历史上困扰全世界数学家们达 200 年之久,直至牛顿迭代方法的出现。 本文将介绍一种实用的开普勒方程求解方法,并采用 C 语言实现其算法。该方法出自美国海军天文台 Marc A. Murison 名为 A Practical Method for Solving the Kepler Equation 的文章,由于其算法简单、高效且利于编码实现,因而具有较好的实用性。","text":"开普勒方程是航天动力学基础方程,是开普勒定律的数学描述。由于开普勒方程属于超越方程,因而无法通过解析法精确求解,这一问题在历史上困扰全世界数学家们达 200 年之久,直至牛顿迭代方法的出现。 本文将介绍一种实用的开普勒方程求解方法,并采用 C 语言实现其算法。该方法出自美国海军天文台 Marc A. Murison 名为 A Practical Method for Solving the Kepler Equation 的文章,由于其算法简单、高效且利于编码实现,因而具有较好的实用性。 1. 开普勒方程描述 开普勒方程可表达为: f(E(t))=E(t)-esinE(t)-M(t)=0它描述了线性时间 t 下偏近角 E(t) 和平近角 M(t) 之间的非线性转换关系。式中,e 为轨道偏心率,M(t) = n(t-\\tau) 为平近角。其中,n = \\sqrt{\\mu / a^3} 表示二体模型中的平运动,\\tau 为天体(或卫星)飞越近地点后累积的时长,a 为轨道半长轴。 实际计算中,有两种情况需要求解开普勒方程,一是已知真近角 \\theta,求平近角 M;另外则是已知平近角 M,求真近角 \\theta。可见偏近角 E 只是过程量,真近角 \\theta 和 M 才是最终想要的结果量。在航天动力学中偏近角 E 本就是不真实的虚拟量,但它与真近角 \\theta 存在直观的几何关系,如图 1 所示。当然平近角 M 也是不真实的虚拟量,它必须通过偏近角和开普勒方程与真近角实现数值上的转换。 图 1: 真近角和偏近角之间的几何关系 由图 1 内部椭圆(真实运动轨迹)几何关系可得: r = a(1 - EcosE)由图 1 外部圆(假想的平运动)几何关系可得: acosE = rcos \\theta + ae于是可得真近角和偏近角之间的相互转换关系为: tan \\theta = \\frac{sin \\theta}{cos \\theta} = \\frac{\\sqrt{1-e^2} sinE}{cosE-e} \\\\ tanE = \\frac{sinE}{cosE} = \\frac{\\sqrt{1-e^2} sin \\theta}{e+cos \\theta}开普勒方程属于超越方程,故需采用数值法才能求得精确值。理想情况下,一个数值方法是否实用,应该看它是否同时具备以下两点: 计算 E 的 CPU 耗时是否最小化; 程序的复杂度是否最小化。 这两个需求往往是互相制约的,但幸运的是通过分析研究可以找到一个折中的方法来解决这个矛盾。开普勒方程只能通过迭代法求解,任何一个迭代过程的设计都有两个任务: 第一个任务是设计迭代循环中的逼近算法。这个逼近算法需要重复执行直到结果达到令人满意的精度,一般说来迭代公式所用的阶数越高,迭代所需的次数就越少。然而,更高阶的迭代公式将使得公式的表达式变得十分复杂,这将极大地耗费 CPU 的运行时间。因此,无论我们选择何种算法,一个恰当(通常是比较低)的阶数会使得 CPU 的耗时最短; 第二个任务是选择一个迭代循环的初始值。初始值选的越精确,循环收敛的越快。选择初始值的方法不需要和迭代方法一样,哪怕两者极其相近。类似于迭代逼近算法,对于一个初值确定的算法,将有一个理想的阶数能够最大限度地减少 CPU 的耗时。 接下来将给出一个非常简单的初值确定方法,紧接着是一个快速迭代算法。最后,直接给出算法性能分析结果及其伪代码,并用 C 语言加以实现之。 2. 初值确定方法 由于必须用迭代法求解开普勒方程,因而循环迭代的初始值越精确,迭代效果就越好,至少在迭代表达式复杂得令人反感之前应该是如此。将开普勒方程写成: E = M + esinE在 e=0 的极限情况下,有 E=M,这是最简单的初始值近似。因此上面的方程可改写成如下简单的迭代近似公式: E_k = M + esinE_{k-1}其中初始条件 E_0 = M。我们可以对上述递归表达式进行反复迭代,直至得到足够高的偏心率阶数。例如,三阶近似公式为: E = M + esinM + e^2sinMcosM + \\frac{1}{2}\\ e^3sinM(3cos^2M-1)程序化后的三阶伪代码如下:1234567KeplerStart3 := proc(e,M) local t33, t35, t34; t34 := eˆ2; t35 := e*t34; t33 := cos(M); return M+(-1/2*t35+e+(t34+3/2*t33*t35)*t33)*sin(M);end proc; 3. 循环迭代方法 循环迭代的最终目的是要得到收敛的结果。具体到开普勒方程,当给定一个带有误差的 E 时,必须找到一个迭代公式,使其每次返回一个误差更小的近似值,同时它也必须收敛。基于此,按如下方式改写开普勒方程: f(x) = x - esinx - M式中,f(x)=0 的解是 x=E。令 \\epsilon \\equiv x-E 为 x 逼近 E 时存在的误差,将 f(x) 在 x=E 处进行泰勒展开,于是得到: f(E) = f(x-\\epsilon) = x-esinx-M-(1-ecosx) \\epsilon + \\frac{1}{2}\\ \\epsilon ^2 esinx - \\frac{1}{6}\\ \\epsilon ^3 ecosx + ...式中,假设 \\epsilon 充分小。若只考虑一阶展开,可得: \\epsilon = \\frac{x-esinx-M}{1-ecosx}上式可作为一阶迭代方案的的核心算法。假设一开始猜测 x = x_0,那么 x_1 = x_0 + \\epsilon 比 x_0 更接近于 E。于是得到一阶迭代方程: \\epsilon_{n+1} = \\frac{x_n-esinx_n-M}{1-ecosx_n}其中初始值 x_0 的取值将在后面讨论。由上式可以得到单步一阶迭代法来估计 E_{n+1} = E_n - \\epsilon_n,对应的伪代码如下:123eps1 := proc(e,M,x) return (x-e*sin(x)-M)/(1-e*cos(x));end proc; 现在把二阶项考虑进去,方程展开后写成 Horner 形式: f(x-\\epsilon) = x-esinx-M- \\left( 1 - ecosx - \\frac{1}{2}\\ esinx \\cdot \\epsilon \\right) \\epsilon同理,令 f(x-\\epsilon)=0,整理得到如下形式: \\epsilon = \\frac{x-esinx-M}{1-ecosx-\\frac{1}{2}\\ \\epsilon esinx}类比单步一阶形式,创建单步二阶迭代方程: \\epsilon_{n+1} = \\frac{x_n-esinx_n-M}{1-ecosx_n-\\frac{1}{2}\\ \\epsilon_n esinx_n}重点来了,此处可以将 \\epsilon_n 用一阶迭代公式替换,创建一个两步迭代过程,于是得到新的迭代方程: \\epsilon_{n+1} = \\frac{x_n-esinx_n-M}{1-ecosx_n-\\frac{1}{2}\\ esinx_n \\frac{x_n-esinx_n-M}{1-ecosx_n}}上述方程经优化后的伪代码为:1234567eps2 := proc(e,M,x) localt1,t2,t3; t1 := -1+e*cos(x); t2 := e*sin(x); t3 := -x+t2+M; return t3/(1/2*t3*t2/t1+t1);end proc; 更进一步,f(E)=f(x-\\epsilon) 三阶展开方程的 Horner 形式为: f(x-\\epsilon) = x-esinx-M- \\left( 1 - ecosx - \\left( \\frac{1}{2}\\ esinx - \\frac{1}{6}\\ ecosx \\cdot \\epsilon \\right) \\epsilon \\right) \\epsilon同理,令 f(x-\\epsilon)=0,整理得到如下形式: \\epsilon_{n+1} = \\frac{x_n-esinx_n-M}{1-ecosx_n-\\frac{1}{2}\\ \\left( esinx_n - \\frac{1}{3}\\ ecosx \\cdot \\epsilon_n \\right) \\epsilon_n}重点又来了,此处可以先将 \\epsilon_n 用二阶迭代公式替换,再将 \\epsilon_n 用一阶迭代公式替换,创建一个三步迭代过程,于是得到新的迭代方程,由于方程过于复杂,直接给出优化后的伪代码:12345678910eps3 := proc(e,M,x) local t1, t2, t3, t4, t5, t6; t1 := cos(x); t2 := -1+e*t1; t3 := sin(x); t4 := e*t3; t5 := -x+t4+M; t6 := t5/(1/2*t5*t4/t2+t2); return t5/((1/2*t3 - 1/6*t1*t6)*e*t6+t2);end proc; 可以继续利用这种方式到更高阶的形式,本文的推导止于此,后文我们会看到三阶迭代已经处于 CPU 时耗最优区间。 4. 实用的开普勒方程求解方法 数值测试,令算法执行的 CPU 耗时为迭代阶数 (Niter) 和 初始值逼近阶数 (Nstart) 的二元函数,绘制求解 16000 个开普勒方程的 CPU 耗时等高线,其中 e 和 M 在 \\{ \\mathbb{R} \\times \\mathbb{R}: e \\in [0,1), M \\in [0, \\pi] \\} 等间隔 400 \\times 400 网格域中选取。结果表明,不论是对于初值算法,还是迭代算法,三阶形式都接近最优,如图 2 所示。 图 2: 真近角和偏近角之间的几何关系 由此,给出优化后的三阶迭代和初始值方法求解开普勒方程的伪代码:12345678910111213141516171819KeplerSolve := proc( e, M, tol:=1.0e-14 ) local dE, E, E0, Mnorm, count; global Estart3, eps3; Mnorm := fmod(M,2*Pi); E0 := KeplerStart3(e,Mnorm); dE := tol + 1; count := 0; while dE > tol do E := E0 - eps3(e,Mnorm,E0); dE := abs(E-E0); E0 := E; count := count + 1; if count=100 then print “太令人惊讶了,KeplerSolve 竟然不收敛!”; break; end if; end do; return E;end proc; 5. C 语言实现 根据优化后的实用开普勒方程求解伪代码,可编写其计算机语言实现代码。下面给出三个主要函数的 C 语言实现,这些代码已经过充分测试,可放心使用。函数中的 fmod 函数为取模函数,用于处理平近角周期问题,请读者自行补脑。至此,码完收工,拜了个拜!123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115/* ---------------------------------------------------------------------**** 函数名称: KeplerStart3** 函数功能: 开普勒方程三阶初值估计** 输入参数: ecc -> 偏心率 [N/A]** M -> 平近角 [rad]** 输出参数: 无** 返回值 : E -> 偏近角 [rad]**** ---------------------------------------------------------------------*/double KeplerStart3(double ecc, double M){ double t34, t35, t33, E; if(ecc < 0 || ecc >= 1){ printf(\"!!!错误的偏心率,该程序只适合椭圆轨道(0 =< ecc < 1)!!!\\n\"); return -1; } if(M >= D2PI || M < 0){ M = fmod(M, 0, D2PI); } t34 = ecc * ecc; t35 = ecc * t34; t33 = cos(M); E = M + (-0.5*t35 + ecc + (t34 + 3.0/2.0*t33*t35) * t33) * sin(M); return E;}/* ---------------------------------------------------------------------**** 函数名称: eps3** 函数功能: 开普勒方程三阶误差估计** 输入参数: ecc -> 偏心率 [N/A]** M -> 平近角 [rad]** x -> 偏近角过程值 [rad]** 输出参数: 无** 返回值 : E_error -> 偏近角估计误差 [rad]**** ---------------------------------------------------------------------*/double eps3(double ecc, double M, double x){ double t1, t2, t3, t4, t5, t6, E_error; if(ecc < 0 || ecc >= 1){ printf(\"!!!错误的偏心率,该程序只适合椭圆轨道(0 =< ecc < 1)!!!\\n\"); return -1; } if(M >= D2PI || M < 0){ M = fmod(M, 0, D2PI); } t1 = cos(x); t2 = -1 + ecc * t1; t3 = sin(x); t4 = ecc * t3; t5 = -x + t4 + M; t6 = t5 / (0.5 * t5 * t4 / t2 + t2); E_error = t5 / ((0.5*t3 - 1.0/6.0*t1*t6) * ecc * t6 + t2); return E_error;}/* ---------------------------------------------------------------------**** 函数名称: KeplerSolve** 函数功能: 求解开普勒方程** 输入参数: ecc -> 偏心率 [N/A]** M -> 平近角 [rad]** 输出参数: 无** 返回值 : E -> 偏近角 [rad]**** ---------------------------------------------------------------------*/double KeplerSolve(double ecc, double M){ double E0, dE, E, Mnorm; double tol = 1.0e-20; int iter_count = 0; if(ecc < 0 || ecc >= 1){ printf(\"!!!错误的偏心率,该程序只适合椭圆轨道(0 =< ecc < 1)!!!\\n\"); return -1; } if(M >= D2PI || M < 0){ M = fmod(M, 0, D2PI); } Mnorm = fmod(M, 0, D2PI); E0 = KeplerStart3(ecc, Mnorm); dE = tol + 1; while(dE > tol){ E = E0 - eps3(ecc, Mnorm, E0); dE = fabs(E - E0); E0 = E; iter_count = iter_count + 1; if(iter_count > 10){ printf(\"太令人惊讶了,KeplerSolve 竟然不收敛!\\n\"); return -1; } // printf(\"迭代次数:iter_count = %d\\n\", iter_count); } return E;}","categories":[{"name":"专业技能","slug":"专业技能","permalink":"/categories/专业技能/"}],"tags":[{"name":"航天动力学","slug":"航天动力学","permalink":"/tags/航天动力学/"},{"name":"开普勒方程","slug":"开普勒方程","permalink":"/tags/开普勒方程/"},{"name":"C","slug":"C","permalink":"/tags/C/"},{"name":"平近角","slug":"平近角","permalink":"/tags/平近角/"},{"name":"偏近角","slug":"偏近角","permalink":"/tags/偏近角/"},{"name":"真近角","slug":"真近角","permalink":"/tags/真近角/"}]},{"title":"低轨卫星通信系统发展综述","slug":"LEOComm","date":"2019-02-12T14:32:00.000Z","updated":"2019-02-28T14:15:13.848Z","comments":true,"path":"2019/02/12/LEOComm/","link":"","permalink":"/2019/02/12/LEOComm/","excerpt":"通信、导航和遥感是卫星应用领域的三驾马车,简称 通导遥。鉴于任务特性,通信卫星和导航卫星通常运行在中高轨道,遥感卫星一般则运行在低地球轨道。自 20 世纪 90 年代以来,微小卫星技术迅猛发展,性价比逐年攀升,通信与导航卫星在低地球轨道(Low Earth Orbits, LEO)上的应用潜力渐渐被人们挖掘,尤其是通信卫星,已有成功商业案例。 本文将阐述笔者对国内外低轨卫星通信系统的过去和发展现状的一些看法,以及产业展望。","text":"通信、导航和遥感是卫星应用领域的三驾马车,简称 通导遥。鉴于任务特性,通信卫星和导航卫星通常运行在中高轨道,遥感卫星一般则运行在低地球轨道。自 20 世纪 90 年代以来,微小卫星技术迅猛发展,性价比逐年攀升,通信与导航卫星在低地球轨道(Low Earth Orbits, LEO)上的应用潜力渐渐被人们挖掘,尤其是通信卫星,已有成功商业案例。 本文将阐述笔者对国内外低轨卫星通信系统的过去和发展现状的一些看法,以及产业展望。 图 1: 低轨通信星座艺术想象图 1 低轨卫星通信系统的过去 20 世纪 80 年代开始掀起的小卫星技术热潮对星座的发展起了巨大的推动作用。早期卫星质量大,研制周期长,要完成一个星座的部署很困难。在卫星运行寿 命短和可靠性差的情况下,没有等到星座部署完成,早期发射的卫星就已经不能工作了。在当时的技术和经济条件下,小卫星提供了一个较好的解决思路,与此同时世界通信市场不断扩大,这两方面因素促进了低轨通信星座发展。 20 世纪 90 年代初期,低轨通信星座开始盛行,最多时有十几个卫星通信星座 计划。这些星座通常被分为三类: 大型 LEO 卫星移动电话系统; 中小型 LEO 卫星移动数据传输系统; 宽带多媒体通信系统(Ka 波段)。 根据美国联邦通信委员会的决定,小 LEO 系统是非话音非静止轨道卫星,在轨道高度较宽的范围内提供低速业务;而大 LEO 系统要提供话音、传真、数据和 寻呼业务,寻呼包括在低速业务内。 然而低轨通信星座发展并不顺利,主要原因在市场竞争和经济因素。由于目前通信密集地区是城市,而城市地面蜂窝通信费用很低,卫星通信费用高,因而竞争不过现有的通信手段。当时名震一时的“铱星系统”(Iridium)运营商最终应入不敷出宣布破产。目前 ORBCOMM 和“全球星”系统(GlobalStar)运营正常,ORBCOMM 是低成本的数据通信和定位系统,而“全球星”主要是满足国防、边远、沙漠地区通信的需要,填补了地面通信网的空白。 1.1 ORBCOMM ORBCOMM 是一个在全球范围内提供双向、窄带的数据传送、数据通信以及定位业务的卫星通信系统。ORBCOMM 设计为 47 颗卫星(包括 6 颗备用卫星)分布在 7 个轨道面的全球覆盖的星座系统,这 7 个轨道面命名为 A、B、C、D、E、F、G。其中, A~D 轨道倾角为 45°,高度 800km;E 为赤道轨道,高度 975km;F、G 轨道倾角分别为 70° 及 108°,高度 820km。ORBCOMM 从 1995 年开始发射试验卫星,1998 年底开始提供全球服务。目前在轨服务的卫星共有 29 颗,A、B 平面各有 8 颗卫星,C、D 轨道各有 6 颗卫星,G 轨道 1 颗卫星。ORBCOMM 的每颗卫星不足 50kg,是典型的低成本微小卫星。目前该系统已经在交通运输、油气田、水利、环保、渔船以及消防报警等方面发挥重要作用。 图 2: ORBCOMM 星座系统瞬时地面覆盖示意图 1.2 铱星星座(Iridium Constellation) “铱星”星座 系统是美国摩托罗拉公司于 1987 年提出的一种利用低轨道星座实现全球个人卫星移动通信的系统,它与现有的通信网相结合,可以实现全球数字化个人通信。“铱星系统”区别于其他卫星移动通信系统的特点之一是卫星具有星间通信链路,能够不依赖地面转接为地球上任意位置的终端提供连接,因而系统的性能极为先进、复杂, 这导致其投资费用较高。星座的构型为玫瑰星座,卫星均匀部署在南北方向 677km 高的 6 条极轨近圆轨道上,轨道倾角为 86.4°。每颗卫星载有 3 个 16 波束相控阵天线,其投射的多波束在地球表面形成 48 个蜂窝区。每颗卫星拥有 4 条 Ka 频段的星间通信链路,两条用于建立同轨道面前后方向卫星的星间链路,星间距离 4021~4042km;两条用于建立相邻轨道面间卫星的通信链路(仅适用于纬度 68° 以下地域),星间 距离 2700~4400km。异轨道面间链路的天线可根据加载到卫星上的星历信息进行指向调整,波束宽度足以适用纬度控制和卫星位置保持的容差。卫星在轨重量 320kg,工作寿命 5~8 年。 图 3: 铱星星座三维构型示意图(66 颗工作星) 1.3 全球星系统(GlobalStar System) “全球星”系统 是美国 Loral 和 Qualcomm(高通) 公司发起的,是目前唯一正式商业运行的语音移动通信系统。卫星系统由 48 颗工作卫星和 12 颗备用卫星组成。最近的一次发射是在 2007 年 10 月 21 日,由俄罗斯的运载火箭将四颗备份卫星送入轨道。卫星重约 450kg,预定寿命为 7.5 年。分布在 8 个倾角为 52°的圆轨道上,轨道高度 1414km,每个轨道分布 6 颗工作卫星和 1~2 颗备用卫星,星座的相位因子为 1。系统主要覆盖南北纬 70° 以内地区。“全球星”系统的每个卫星利用 16 个点波束天线将辐射区划分为 16 个小区以与地面的用户和网关相互收发信息考虑到信息传输的多样性和链路余量问题,“全球星”在主要的商业服务区(北纬25°~49°)满足任何时刻至少两重覆盖的要求,而其他地区则只要求保证一重覆盖,“全球星”系统的地面覆盖如图4 所示。“全球星”系统的卫星设置弯管式(Bent Pipe)转发器,通过地面建立不在同一卫星覆盖区内的用户的连接,因此,需要建立较多的网关地球站。 图 4: 全球星星座系统瞬时地面覆盖示意图(48 颗星) 1.4 其他系统 除上述已经投人运营的卫星通信系统外,同时期的还有 ICO, Ellipso 等卫星通信系统计划。ICO 全球通信系统由高度为 10390km 的中轨大型卫星组成,共有 12 颗卫星,布置于 2 个轨道面,每个轨道面 5 颗工作星, 1 颗备份星。由于受“铱星系统”的影响,投资者缺乏信心,1999 年也曾宣布破产重组。 Ellipso 卫星移动通信系统 是由美国移动通信控股公司设计的一种独特的混合轨道星座,它由两个规则的子星座即 Borealis 和 Concordia 组成,用 17 颗卫星实现人口主要分布区域(北半球和南半球的中低讳地区)的覆盖,比 Iridium 星座和 GlobalStar 星座的卫星数量少得多。在该星座中有 10 颗卫星部署在两条轨道,倾角为 116.6° 的椭圆轨道上(Borealis),近地点高度 520km,远地点高度 7846km,轨道周期为 3h,偏心率为 0.35,用以覆盖北半球中高讳度地带;另有 7 颗卫星部署在轨道高度为 8063km 赤道圆轨道上(Concordia),用以覆盖中低讳度地带。 随着数字技术的进步以及人们对高质量的电文、语音、数据和视频通信业务需求的增长,美国许多通信经营商纷纷投向宽带多媒体卫星系统,已有多家公司获得了 FCC(Federal Communications Commission,美国通信委员会)的许可证。它们都将利用 Ka 波段(20~30GHz)提供宽带、大容量、多媒体的卫星通信业务,典型的静止轨道系统如 Spaceway、Astrolink 等,中低轨系统有 Skybridge,Teledesic 等。 Skybridge 星座 由 80 颗低地球圆轨道卫星组成,采用 Ka 波段支持高速数据、因特网接人及宽带多媒体技术。Skybridge 星座在设计上有其特殊之处,为了避免与同步轨道或其他高轨卫星的频率冲突,采用了复合 Walker 星座的构型,以“星对”为单元构成整个星座,这样当任意一颗卫星与其他卫星发生冲突时,采用另外一颗处于安全距离的卫星来替代工作。 Teledesic 是 20 世纪卫星数最多的一个星座计划,在计划刚公布时引起了不小的反响。星座最初计划由 840 颗星组成。后来改成了 288 颗卫星(构型如下图所示),分布于 12 平面,每个面 24 颗卫星,后又减至 120 颗卫星加 6 颗在轨备份。Teledesic的 星地链路为 Ka 波段,每个轨道面上的相邻卫星之间建 有 60GHz 的星际链路,Teledesic 采用全星上处理和全星上交换,系统设计成一个“空中因特网”。 图 5: Teledesic 星座三维构型示意图(228 颗星) 2 低轨卫星通信系统发展现状 进入 21 世纪后,计算机、微机电、先进制造等行业的快速发展推动了通信技术和微小卫星技术升级换代,进而使得卫星通信成本的下降,低轨卫星通信星座凸显出广泛的应用前景。2015年前后,国内外先后提出多个大规模低轨卫星通信系统,知名的诸如:Iridium Next、OneWeb、StarLink、鸿雁星座、虹云星座等。其中,铱星二代 (Iridium Next)在 2019 年 1 月 11 日成功完成最后一组卫星发射,并于 2019 年 2 月 6 日宣布完成星座组网,正式投入运营;SpaceX 公司的 StarLink 于 2018 年 2 月 2 日成功发射两颗试验星 Microsat2-A/B,对最终要组建的 12000 颗微小卫星星座信心十足;中国航天科工集团于 2018 年 12 月 22 日成功将虹云工程技术验证卫星发射升空,卫星进入预定轨道;中国航天科技集团于 2018 年 12 月 29 日成功发射鸿雁星座首发星 重庆号,并顺利开展了载荷星地通信试验;OneWeb 首批 6 星也于 2019 年 2 月 28 日成功由 联盟号运载火箭(Soyuz ST-B/Fregat-MT)发射入轨,拉开了其规模庞大的宽带星座撒网序幕。 2.1 铱星二代(Iridium NEXT) 铱星通信公司于 2010 年 6 月宣布了其下一代卫星星座 Iridium NEXT 的筹建资金,建设和部署计划,以取代超期服务的铱星星座。2016 年铱星公司与 SpaceX 签订了 4.92 亿美元的发射合同, 一次 10 星一共七次将 70 颗铱星二代系统发射到 LEO 轨道。随后,双方补签了第八次 5 星发射合同。2019 年 1 月 11 号,随着 SpaceX 成功将最后 10 星发射入轨,标志着铱星二代完成组网工作。铱星二代由 81 颗功能相同的卫星组成天基移动通信系统,其中 66 颗工作星呈 δ-Walker 星座均匀分布在 6 个轨道面上,辅以 6 颗天基备份星和 9 颗地基备份星。 图 6: 铱星二代星座三维构型示意图(66 颗工作星) 铱星二代卫星重约 860kg,最大功耗 2kW,发射包络 3.1m x 2.4m x 1.5m,设计寿命 10 年,任务寿命 15 年。卫星主载荷为 L 波段通信载荷,其相控阵天线在地球表面生成 48 个波束,形成直径为 4700km 的蜂窝,用于提供 1.5Mbps 的星地数据传输服务;卫星提供搭载服务,可搭载质量不大于 50kg、功耗不大于 50W、空间包络不大于 40 cm x 70 cm x 30 cm、数据量不大于 100 kbps(90% 占空比)或 1 Mbps(10% 占空比)的次载荷,目前每颗卫星皆携带一个 ADS-B 接收机,58 颗星携带了 AIS 接收机,用于全球民用客机及船舶监视服务。此外,卫星具备星间和星地网关链路,星间链路由 4 个 Ka 波段(23 GHz)通信设备实现,前后双星的链路 2 个设备固定指向,相邻轨道 2 个设备具备目标姿态指向能力,通信速率达 10Mbps;星地网关链路由 2 个具备目标姿态指向的 Ka 波段(20/30 GHz)通信设备实现,通信速率达 8Mbps。 表 1: 铱星二代卫星总体指标 铱星二代星座 66 颗工作星和 6 颗备份星皆由 SpaceX 公司的 Falcon-9 v1.2 运载火箭发射,卫星首先被送入 625km 的停泊轨道,通过测试后变轨进入 780km 的工作轨道。寿命末期,卫星再次变轨将其近地点降低至 250km,实现主动离轨。由于项目规模庞大,铱星二代的总成本达 30 亿美元,包括卫星研发、制造和发射相关的所有开销。 2.2 OneWeb 2.2.1 OneWeb 简介 2012 年,卫星互联网公司 O3b 创始人 Greg Wyler 成立了 OneWeb 公司,致力于实现全球天基实时互联的宽带互联网络系统。O3b 拥有 12 颗位于赤道上方的 MEO(距离地面 8000km)卫星,并成功在系统建成第一年就超额完成了 1 亿美金的财政目标,因而 OneWeb 成立之初就被众多太空互联网投资者看好。目前,其投资方阵容强大,覆盖了软银 SoftBank、高通 Qualcomm、空客防务 Airbus、维珍 Virgin、可口可乐 Coca Cola 等。 图 7: Onweb 创始人 Greg Wyler OneWeb 公司计划建造的 OneWeb 星座设计由 900 颗微小卫星组成,其中 720 颗将被发射到倾角为 87.9° 的1200km 高度轨道,均匀分布在 18个轨道面 ,每个轨道面工作星 36 颗,辅以 4 颗备份星,以提供全球宽带互联网实时连接。 图 8: OneWeb 星座艺术图及其项目特性 OneWeb 卫星重约 150kg,设计寿命 5 年,发射包络约为 1m x 1m x 1.3m,配备两个太阳能电池板,采用电推进系统进行轨道机动、构型保持以及主动离轨,并使用 Ku 波段通信天线实现用户链路和Ka波段通信天线实现网关链路,可提供高仰角、优于 50ms 延时、宽带速率达 50Mps 的互联网接入服务。 图 9: OneWeb 星座空间段特性 图 10: OneWeb 卫星模型 星座的部署分多个批次进行,每批卫星首先被发射至 450~475km 的停泊轨道,待完成测试后利用电推进系统抬升轨道至 1200km 高度的工作轨道。值得一提的是,1200km 高度的轨道空间碎片通量处于 LEO 轨道较低水平,因而碰撞风险较小,对于设计由 720 颗卫星组成的 OneWeb 星座来说无疑是极其理想的轨道空间 。此外,为满足空间碎片协委会(机构间空间碎片协调委员会)对低轨卫星空间碎片减缓要求的规定,当星座接近其预期使用寿命时,所有卫星将主动离轨。届时每颗卫星先将轨道高度降低至 1100km,再将近地点高度降低至 250km,随后利用大气阻力在 5 年内坠毁,以确保不产生太空垃圾。 图 11: LEO 编目空间碎片通量统计数据(2011年) 2.2.2 OneWeb 系统特性 OneWeb 具有众多颠覆传统卫星行业的任务特性,一是其实时覆盖性;二是其理智的运营策略;三是大规模生产和发射部署的革命性举措;四是巨大的实施风险。 1). 实时覆盖性:与铱星一样,OneWeb 采用了极轨道,每颗卫星设计了 16 个 Ku 用户波束,从而实现了对全球的无缝覆盖,使得不论何时身处何处,都能接收到 OneWeb 卫星提供的无线信号。由于低轨道卫星的运动速度非常快,大概在 7km/s 水平,所以用户其实是在不断地更换通讯的卫星,通过波束的多重覆盖,可以使用户感觉不到这种“漫游”,保证通讯等质量。说是这么说,效果还要拭目以待,全波束覆盖并不能彻底解决跨波束的漫游切换(hangover)问题。跨波束跨卫星的切换对于卫星来说由于其相对地面运动速度较大,终端与节点在三维空间中的随机与可预测运动轨迹与相对速度的快速变化将导致三维角速度快速变化和多普勒频移造成链路捕获与跟踪的困难,需要通过接入控制进行链路适配与切换控制,支持其链路层协议的识别,切换、链路调制。并采用类似于移动 IP 的方法进行移动性管理。此外,OneWeb 官方声称通过 Progressive Pitch 技术能逐步改变 LEO 卫星信号发射的方向和电平值,因而能有效消除对 GEO 卫星的干扰。然而,事实的结果是,GEO 的影响还是很难避免的,需要 GEO 的卫星降低发生功率,所以还有很多需要协调的事情。 图 12: OneWeb 波束覆盖示意 2). 理智的运营策略:OneWeb 并没有像铱星一样提供小型化终端的解决方案,直接为用户提供移动连接,而是与网络运营商合作,通过社区进行网络服务的提供,这种模式成为 B2B 通讯服务。也就是说,OneWeb 是对现有的网络运营商提供在空间覆盖上经济可行的一套解决方案,由于其定位准确所以很顺利就拿到了 5 亿美元前期投资。 图 13: OneWeb B2B 通讯服务 OneWeb 主要的应用场景包括:a) 应急网络连接,全球通讯保障;b) 高空高速低延迟宽带网络;c) 通过车载终端提供 200 米覆盖的 LTE 网络; d) 偏远地区家庭,学校固定网络,解决了光纤成本过高的问题;e) 乡间无线网络运营。 图 14: 应急网络连接,全球通讯保障 图 15: 高空高速低延迟宽带网络 图 16: 通过车载终端提供 200 米覆盖的 LTE 网络 图 17: 偏远地区家庭,学校固定网络,解决了光纤成本过高的问题 图 18: 乡间无线网络运营 3). 卫星大规模生产发射的革命性举措:OneWeb 卫星将精简设计的理念发挥到了极致,但是面对后续需要每天生产 3~5 颗卫星,每周生产 20 颗卫星的巨大产能要求,在航天界还是前所未有的。很多卫星甚至可能在生产出来的当天就被发射升空。如今 OneWeb 最大的合作方 Airbus,在图卢兹的工厂已经动工,首批 6 颗试验星以完成研制,即将发射升空。同时研制高度自动化的机器人生产线单元,以及利用人工智能实现对生产流程的优化。 图 19: 图卢兹与佛罗里达工厂关系示意图 同时在佛罗里达的卫星工厂实施计划也提上了日程,并与佛州达成了协议。工厂面积(包括生产区、检测区、装配区等)占地约 14 亩,将来的 900 颗卫星就将在这里生产。由于生产流程高度自动化,只需要招募 250 名左右的技术人员。 图 20: 佛罗里达工厂示意图 4). 巨大的实施风险 图 21: 航天是高风险行业 发射风险: 虽然商业航天现在异常繁荣,但是航天毕竟不是过家家,很多繁杂的流程看起来虽然耗费人力物力,但也是为了保证成功率与安全性。 生产风险:OneWeb 签约了多家发射公司,而且卫星制造时间短,测试流程简单,所以埋下了很大的安全隐患。至今并没有了解到他们具体的卫星生产流程,这么短的研制周期,必然会带来很高的风险。而且这么短的时间生产如此之多卫星本身就是一件非常困难多事情,如果成功就是里程碑意义的事件。 部署与碰撞规避风险:OneWeb 卫星首先被发射到 500km 停泊轨道,从 500km 使用电推进进入 1200km 工作轨道。期间电推进系统将持续工作很长一段时间,对其整体可靠性是极大的挑战。此外,在 500km 到 1200km 之间分布着大量的 LEO 卫星和空间碎片,这必将大大增加空间撞击事件发生的概率,造成双方巨大的损失以及大量二次碎片的产生。且星座的构型决定了 720 颗卫星在两极上方过于密集,相相邻卫星相对相位控制范围只有 ±0.25°,若不进行频繁的相位保持控制,极易发生碰撞。 商业风险:O3b 提供的网络填补性很明显,所以准确的定位使得该项目很成功,然而 OneWeb 其实存在要么运营成本过高、要么用户有限的问题。其巨大的规模必然容易和地面网络形成竞争关系,这样就有可能因为成本或用户体验而败下阵来。 2.2.3 OneWeb 总结 OneWeb 是一个让人心潮澎湃的伟大工程,同时它开创一种卫星全新的生产模式与运营理念。然而,其庞大的星座规模也存在巨大的商业风险。 OneWeb 在 2015 年对单星造价的期望值是 50 万美元,而近期将单星提高至 100 万美元,从成立起至今公司 CEO 已经换了 3 任,第四任 CEO Adrian Steckel 也将于今年 9 月走马上任。目前,公司虽然获得软银、空客等多家金融巨头的巨额投资,但由于单星制造成本比预估翻倍,资金已出现巨大缺口,且公司后续的融资进展并不明晰,原计划的首发时间不断跳票,这使得近期外界对这家公司是否最终能完成星座组网、提供全球实时通信网有或多或少的质疑。但公司创始人 Greg Wyler 表示,OneWeb 卫星功能强大,有很多内置冗余和弹性设计,安全性可达到电信运营商应用级别,至于成本是 50 万美元还是 100 万美元,并不重要。 据最新消息,OneWeb 首批 6 颗卫星(F6)已于北京时间 2019 年 2 月 28 日在法属圭亚那的库鲁航天中心采用联盟号运载火箭(Soyuz ST-B/Fregat-MT)成功发射至高度约 1200km、倾角约 87.8° 的近地轨道上。那么这个被国内外媒体誉为 看起来最靠谱的空间互联网创业公司 最终是否会实现其 万物一网互联 的宏伟目标,让我们拭目以待。 2.3 StarLink 图 22: StarLink 2.3.1 StarLink 简介 除了有殖民火星的远大梦想以外,Elon Musk 的 SpaceX 还有一个似乎更加实际的目标,从 2019 年开始运营一个由上千颗低轨卫星组成的宽带互联网星座。2016 年初,SpaceX 负责卫星政府事务的副总裁 Patricia Cooper 在出席美国参议院商业、科学与技术委员会听证时表示,公司将利用自己的猎鹰 9 号可回收火箭,在 2019 年到 2024 年的 6 年时间内分别将 4425 颗卫星送到轨道,为全球客户提供高速宽带互联网服务。 2016 年 11 月 15 日 SpaceX 向美国联邦通讯委员会(FCC)提交了一份申请,计划发射共计 4425 颗通信卫星,并且准备在华盛顿州雷蒙德对卫星通信系统展开地面测试。根据 SpaceX 提交给 FCC 的这份申请,SpaceX 的卫星网络将被定名为 The SpaceX non-geostationary orbit (“NGSO”) satellite system (the “SpaceX System”)。根据最新的消息,美国专利商标局的申请文件披露了 SpaceX 正式递交了卫星通讯网络的商标申请 “Starlink”。 图 23: StarLink 计划书 图 24: StarLink 商标申请 目前围绕地球运行的现役卫星共有 1400 余颗,还有 2600 多颗卫星已经不再工作,只是漂浮在太空之中,加上这部分已经退役的卫星,人类已发射的卫星总数约为 4000 多颗。也就是说,SpaceX 计划发射的通信卫星数量将超过人类已发射卫星总数。 2.3.2 StarLink 星座构型 目前,StarLink 的建设计划分为两步,首先向 1150km 轨道高度发射 1600 颗卫星,然后再发射 2825 颗卫星并将它们分别安置在 1110km、1130km、1275km 和 1325km 这四个轨道高度上。第一步发射的 1600 颗卫星轨道倾角为 53°,分布于 32 个轨道面,每个轨道部署50 颗卫星。第二部发射的 2825 颗卫星,其中 1600 颗的轨道高度为 1110km,轨道倾角 53.8°,分布于 32 个轨道,每个轨道部署 50 颗卫星;其中 400 颗的轨道高度为 1130km,轨道倾角 74°,分布于 8 个轨道,每个轨道部署 50 颗卫星;其中 375 颗的轨道高度为 1275km,轨道倾角 81°,分布于 5 个轨道,每个轨道部署 75 颗卫星;剩余 450 颗的轨道高度为 1325km,轨道倾角 70°,分布于 6 个轨道,每个轨道部署 75 颗卫星。 表 2: StarLink 星座构型参数 图 25: StarLink 星座三维构型(1600 颗) 图 26: StarLink 星座三维构型(4425 颗) 按照 1150km 的轨道高度计算,每一颗卫星大约可覆盖半径为 1060km 的区域,覆盖面积大约为 350 万平方公里。 图 27: StarLink Ku 频段波束覆盖示意图 2.3.3 StarLink 卫星配置 SpaceX 计划发射的 StarLink 通信卫星重量约为 386kg,发射包络 4m × 1.8m × 1.2m,相当于一辆迷你 Cooper 汽车。每颗卫星配备两块太阳能电池阵,每块的面积为 12 m^2 。 表 3: StarLink 卫星基本配置 2.3.4 StarLink 系统特性 SpaceX 的卫星系统将主要被用于为全球个人用户、商业用户、机构用户、政府和专业用户提供各种宽带和通讯服务。SpaceX 初期部署 1600 颗卫星上天后,就能提供覆盖全球的宽带服务。一旦完成最终部署(Final Deployment),系统就能为全球消费者和商业用户提供高带宽(最高每用户 1Gbps)、低延时的宽带服务。 高速度:为全球每一个用户提供 1Gbps 的带宽。据 Akamai 发布的《互联网状态》报告称,截至 2015 年底,全球互联网平均速度为每用户 5.1Mbps,只有 SpaceX 目标的 1/200,现在大多数网速较高的互联网服务的网速都是通过地面光缆和光纤连接实现的。 高容量:SpaceX卫星系统中的每一颗卫星能够为用户们提供的下行容量总和在 17Gbps ~ 23Gbps 之间,具体数值取决于用户终端配置。以平均值 20Gbps 来计算,首期部署(Initial Deployment)的 160 0颗卫星将能够提供 32Tbps 的总容量。整个系统的部署时间长达数年,SpaceX 将在部署过程中定期改善和升级卫星,有可能进一步提升单颗卫星和整个卫星系统的总容量。 高适应性:整个系统可利用相控阵技术来动态控制资源池,专注于需要容量的用户。卫星之间以激光互连,这样便于在轨道层面灵活规划数据流。而且,卫星集群可以保证频谱能够被不同卫星更高效地再利用,从而增强整个系统的灵活性、容量和牢固性。 宽带服务:系统可以提供最高容量达每用户 1Gbps 的宽带服务。由于系统使用的是低轨道卫星,因此可以将延时控制在 25ms 到 35ms 之间。 全球覆盖:首批 1600 颗卫星部署完成后,系统就能为美国和全球提供宽带连网服务;整个系统全部部署完成后,系统就可以进一步增加容量并覆盖赤道和两极,达到真正的全球覆盖。在申请文件附带的技术信息中,SpaceX 公司表示,将利用 1600 颗卫星开始商业宽带服务,在全球的覆盖范围是北纬 15 度到 60 度,南纬 15 度到 60 度。阿拉斯加的一些地区将被去除在外,因为那里需要 FCC 临时授权。最终,该网络的卫星数量将增长到 4425 颗,传输频段在 Ku 和 Ka 之间。 图 28: StarLink 频率范围 图 29: StarLink Ka/Ku 波束频率范围 低成本:SpaceX 在设计这个系统时考虑了成本效率和可靠性。从设计和制造位于太空和地面的各种设备,到利用 SpaceX 的发射服务来发射卫星和部署整个系统,到部署用户终端以及最终用户的收费标准,SpaceX 都考虑到了成本的因素和服务的可靠性。 易用性:SpaceX 采用的相控阵用户天线设计对用户所用终端的要求很低,这些终端很容易安装在墙面或屋顶,操作也很简单。这些卫星可以运行 5 到 7 年的时间,然后会在退役后的一年内迅速离轨。 2.3.5 StarLink 总结 Elon Musk 的故事大家几乎耳熟能详。一个横跨互联网(ZIP2 和 PayPal)、电动汽车(特斯拉)、航天科技(SpaceX)、太阳能(SolarCity)等不同行业且都发展得风生水起的商业奇才。但规模比 OneWeb 更大的 StarLink,除了在运载方面(自家的,便宜,风险可控性也相对较好)具有一定优势之外,其融资、频率资源、卫星制造、服务营销、风险抗压等方面都不如 OneWeb。尤其是在融资方面,目前尚无外界直接投资的消息,资金大都来自 2016 年起 SpaceX 的盈利积累。 不过,Elon Musk 是一个颠覆传统规则的 “怪才”,且善于利用新事物进行造势,而最为让人叹为观止的是他强大的执行能力。早在 2015 年时,SpaceX 就开始了 StarLink 相关的测试项目,并于 2018 年 3 月 获得 FCC 关于发射 4425 颗卫星的批准,2018 年 11 月 15 日又新获批了第二批共 7518 颗卫星的发射计划。至此,Starlink 星座的规划卫星总数达到了惊人的 11943 颗。 目前,SpaceX 正在美国、波多黎各和美属维尔京群岛等国家和地区寻求运营批准,预计在 2019 年年底之前获得运营授权。如果获得批准,SpaceX 将在 2020 年部署地球站,逐步开展星座的大规模建设和服务运营。 2.4 鸿雁星座 2.4.1 鸿雁星座简介 鸿雁星座 为国内首套全球低轨卫星通信系统,该系统包含一个移动通信星座和一个宽带通信星座,其中移动通信星座将由数十颗窄带卫星组成,宽带通信星座将由数百颗宽带星组成,并辅以全球数据业务处理中心。鸿雁星座系统将实现六方面应用:移动通信、宽带互联网接入、物联网接入、热点信息推送、导航增强、航空航海监视,系统建成后可以在全球范围内实现宽带和窄带相结合的移动通信,实现地球上任意地点的人与人、物与物信息互联。 鸿雁星座的建设分为两个阶段,一期工程由 60 余颗骨干卫星构成,优先提供全球移动通信业务和重点地区的宽带互联网业务;二期拓展为 300 余颗补网卫星,将宽带业务也拓展至全球,以服务200万移动用户、20万宽带用户及近1000万的物联网用户,并在导航、航空、航海等领域提供综合服务。即首期的 60 余颗卫星组成的星座被称作“移动通信星座”,优先满足打电话的功能,更像是美国的“铱星系统”。二期完成后,会增加一个“宽带通信星座”解决上网功能。整个星座计划在 2024 年后完成。 图 30: 鸿雁星座宣传海报 - 沟通万物,永不失联 2.4.2 鸿雁星座系统功能 鸿雁移动通信星座将集成多项卫星应用功能,系统卫星将由中国空间技术研究院通信事业部研制。其卫星数据采集功能,可实现大地域信息收集,满足海洋、气象、交通、环保、地质、防灾减灾等领域的监测数据信息传送需求,并可为大型能源企业、工程企业等提供全球资产状态监管、人员定位、应急救援和通信服务。其卫星数据交换功能,可提供全球范围内双向、实时数据传输,以及短报文、图片、音频、视频等多媒体数据服务。 图 31: 十二届珠海航展展示的鸿雁移动通信卫星模型 该系统将搭载船舶自动识别系统,可在全球范围内接收船舶发送的信息,全面掌握船舶的航行状态、位置、航向等,实现对远海海域航行船舶的监控及渔政管理;还将搭载广播式自动相关监视载荷,可从外层空间对全球航空目标进行位置跟踪、监视及物流调控,增强飞行安全性及突发事故搜救能力。 图 32: 鸿雁星座应用场景 此外,该系统将具备移动广播功能,能向全球覆盖区域进行音频、视频、图像等信息广播发送,将是实现公共及定制信息一点对多点发送的有效手段;其导航增强功能可为北斗导航卫星增强系统提供信息播发通道,提高北斗导航卫星定位精度。 2.4.3 鸿雁星座研发历程 2016 年 11 月 01 日,中国航天科技集团公司在十一届珠海航展上表示,计划 2020 年建成 “鸿雁卫星星座通信系统”。 2018 年 07 月 12 日,在长沙召开的航空航天航海装备论坛上,中国航天科技集团公司表示,计划在 2018 年下半年发射星座首颗星,预计于 2023 年建设骨干星座系统。 2018 年 10 月 24 日,中国航天科技集团注册成立控股公司 “东方红卫星移动通信有限公司”,计划投资 200 亿 建设与运营鸿雁星座。公司注册资本 20 亿元,由中国空间技术研究院副院长王海涛先生任公司法人兼董事长。公司有 11 位股东,其中大股东为中国航天科技集团有限公司,占股 15%;其余 10 位股东分别为国创投资引导基金(有限合伙),占股 12.5%;中国电信集团有限公司,占股 12.5%;中国空间技术研究院,占股 12.5%;国新国同(浙江)投资基金合伙企业(有限合伙),占股 10%;南京熊猫汉达科技有限公司,占股 7.5%;中国电子进出口有限公司,占股 2.5%;中国电子信息产业集团有限公司,占股 2.5%;中国卫通集团股份有限公司;中国长城工业集团有限公司;国华军民融合产业发展基金(有限合伙)。公司总部坐落于美丽的山城重庆,规划建筑面积 60 万平方米,包括公司总部、运营中心、产业基地。公司还将在国内设立北京研发中心及 6 个区域分部,在国外设立海外运营中心,构建覆盖全球的、完整的产业链条与生态圈。 2018 年 11 月 30 日,东方红卫星移动通信有限公司揭牌仪式在重庆两江新区举行,该公司将负责建设与运营全球低轨卫星移动通信与空间互联网系统,提供各种终端产品与服务,构建海、陆、空、天一体化新型天地一体化信息网络,开展面向全球的智能终端通信、物联网、移动广播、导航增强、航空航海监视、宽带互联网接入等增值服务。 2018 年 12 月 29 日,“鸿雁”星座首发星 重庆号 在我国酒泉卫星发射中心由长征二号丁运载火箭发射成功并进入预定轨道,并顺利开展了载荷星地通信试验。首发星的成功发射标志着“鸿雁”星座的建设全面启动。 2.4.4 鸿雁星座总结 鸿雁星座作为我国在航天领域的又一重大工程,将承载起我国首套全球低轨卫星通信系统的历史使命。国家队的大手笔投资为项目提供了资金、政策和技术支撑,沟通万物,永不失联 在神州大地上即将成真。 2.5 虹云工程 2.5.1 虹云工程简介 虹云工程 是中国航天科工集团五大商业航天工程之一,2018 年 3 月 4 日,全国政协委员、中国航天科工集团二院院长张忠阳表示,预计在 2018 年底前发射并开展低轨宽带通信的演示验证及应用示范。2022 年完成星座部署后,虹云工程将可以提供全球无缝覆盖的宽带移动通信服务,为各类用户构建“通导遥”一体化的综合信息平台。 2.5.2 虹云工程计划 虹云工程计划发射 156 颗卫星组成一个星载宽带全球移动互联网络,每颗卫星重约 500kg,设计运行在 1000km 的地球轨道上。卫星采用 Ka 波段通信,每颗卫星有 4Gb 带宽的吞吐量。 整个虹云工程被分解为 “1+4+156” 三步。第一步计划在 2018 年前,发射第一颗技术验证星,实现单星关键技术验证;第二步到“十三五”末,发射 4 颗业务试验星,组建一个小星座,让用户进行初步业务体验;第三步到“十四五”末,实现全部 156 颗卫星组网运行,完成业务星座构建。 目前,负责项目建设航天科工二院已经向国际电联报备了将要使用的轨道与频段。与鸿雁星座不同的是,虹云工程优先向全球用户提供“宽带互联网”服务,并计划于 2022 年前后将初步建成。系统以互联网接入为基础功能,具备通信、导航和遥感一体化、全球覆盖、系统自主可控的特点,以其高速率、低延时等特征,为全球用户提供通信、导航增强和遥感信息一体化综合服务。该系统更接近于美国的 StarLink,但是初期卫星数量不如 SpaceX 的多。 2.5.3 虹云工程进展 2018 年 03 月 04 日,全国政协委员、中国航天科工集团二院院长张忠阳表示,虹云工程将在 2018 年实施技术验证星的发射,卫星已经进入正样研制阶段。预计 2022 年底具备全面运营条件,同年完成星座部署。 2018 年 09 月 26 日,从中国航天科工集团有限公司第二研究院获悉,“虹云工程”技术验证星将在 2018 年底发射,并总计将发射 156 颗卫星;卫星将在距离地面约 1000km 的轨道上组网运行,构建出星载宽带全球移动互联网络。 2018 年 12 月 22 日,中国在酒泉卫星发射中心用长征十一号运载火箭,成功将虹云工程技术验证卫星发射升空,卫星进入预定轨道。 2.5.4 虹云工程总结 中国航天科工集团的 5 朵云 作为其在新时代谋求转型的重要战略工程,不惜与航天科技集团展开直接竞争。然而,其在卫星制造和应用行业的技术和资源积累却远不及中国航天科技集团。眼下虽然虹云工程的首发星抢了头彩,但若想在后续发展中继续领先,势必要拿出家底、使出看家本领。 3 低轨卫星通信系统产业展望 3.1 机遇与挑战 3.1.1 机遇 市场优势:截至 2017 年 6 月,全球互联网普及率为 51.7%,意味着全球仍有一半的人口未实现互联网连接。这个庞大的数字对于任何一家追求未来发展的卫星通信公司来说都是极具诱惑力的,Iridium、ORBCOMM、Oneweb、SpaceX、中国航天集团、 中国航天科工集团 等行业 独角兽 已经有了各自的计划和试验项目。目前,在轨运行的卫星中商业通信卫星占据了 38% 的比例(2014 年数据),通信卫星是卫星应用产业当子无愧的主流。收入方面,卫星电视在 2014 年的收入近 950 亿美元,而卫星音频是 40 亿美元,卫星宽带只有 20 亿美元(2014 年数据)。可见,音频和宽带卫星应用领域存在巨大的市场缺口。 图 33: 通信卫星市场份额(2014 年) 图 33: 通信卫星市场收入(2014 年) 技术优势:相对于地面通信系统,低轨卫星通信系统易于快速实现打发范围的全球覆盖,适合低人口密度、有限业务量的国家或地区。相对于高轨卫星通信系统,低轨卫星通信系统链路传播损耗小,更有利于系统为手持终端用户提供服务;传输延时小,实时性较好;采用极轨道或大倾角轨道时可为高纬度地区提供服务;可利用多普勒频移进行定位,实现导航增强功能;星座能够对用户提供多重覆盖,具备冗余。 行业优势:随着世界经济全球化、快速化发展,中国的科技实力逐年增强,并紧跟国际潮流。未来,中国将大力发展物联网、人工智能以及智慧城市等高新科技,这些都离不开互联网的支撑。所以,低轨卫星通信技术潜在用户基数大(用户潜力),建设发展低轨通信系统将孵化更多增值产业(产业潜力),且新事物将推动就业并获得国家及地方政府的支持(资本潜力)。 3.1.2 挑战 机遇总是与挑战并存,低轨卫星通信系统与地面通信系统和高轨通信系统都存在相互竞争的关系,尤其是地面移动通信系统即将迎来 5G 时代,低轨卫星通信系统在 5G 覆盖区域的用户体验必然处于下风。此外,低轨卫星通信系统还存在规模化建设、长期稳定运营和核心技术上的诸多挑战: 规模化建设:低轨卫星通信系统工程宏大,耗时少则数年,多则数十年,且必须建设完整才能提供实时服务,故必然存在空间段和地面段开发及建设滞后的风险。 长期稳定运营:采用传统运营技术将导致低轨通信系统运营任务繁重,必须进行技术创新,简化系统运营流程,降低星座稳定运营成本。 核心技术:必须有效解决 星间链路、通信服务连续性、抗衰落通信、网络管理与控制、空间段与地面段匹配与优化 等核心技术。 3.2 核心资源与技术 发展低轨卫星通信系统的核心资源是:资金、用户 和 管理。有了充足的资金,才具备开展大规模星座建设的能力;具备大量用户,系统才会实现盈利,使得项目持续发展;而卓越的项目管则理可提高效率,在空间段、地面段和用户段的建设过程中起到事半功倍的效果。 发展低轨卫星通信系统的核心技术是:领先的通信技术、规模化制造技术、星座部署与自动化运维技术 以及一切可 切实提高用户服务与体验的附加技术。领先的通信技术即是在 3.1.2 小节 中的 核心技术 中提到的诸多技术;规模化制造技术即数十颗、数百颗卫星的批量化研发、生产和制造的技术,在此过程中,需保证卫星产品性能的一致性和稳定性;星座部署与自动化运维技术即空间段建设和智能化运营的相关技术,数百颗卫星的部署和运营已经超出国家测控体系的承载能力,必须进行技术革新。切实提高用户服务与体验的附加技术基本上属于基于以上硬实力建立的软实力,不多加论述。 3.3 成败之关键 发展低轨卫星通信系统成败之关键在于找到自己的优势所在,充分挖掘用户需求,利用规模化制造和领先的技术优势降低运营成本,最终实现系统长期稳定运行,持续输出价值。 技术背景:纵观国内外低轨卫星通信项目,知名的都出自技术背景强大的传统航天企业,那些以博人眼球和融资为目的,却缺乏技术积淀的项目必将被大浪淘沙。只需看一眼 Iridium、SpaceX、OneWeb、中国航天科技集团 以及 中国航天科工集团 的技术实力,就知道低轨卫星通信系统真正的玩家需要什么样的实力,才配获得市场和用户的认可。 资本实力:低轨卫星通信要实现正常运营服务,卫星规模至少在数十颗以上,宽带星座至少在数百颗量级。如此大规模的星座建设,没有雄厚的资金,连行业的门槛都踏不进去。OneWeb 在 2017 年就已经拿到了包括日本软银在内的约 17 亿美元投资,且在 Starlink 试验星升空之后,投资人又进一步加大投入,全力助推 OneWeb 快速建网。中国航天科技集团 更是宣布投资 200 亿元人民币建设 鸿雁星座。由此可见,低轨卫星通信的资金门槛让人咋舌。 频率资源:在卫星通信领域,由于相近频率上的信号干扰,原则上国际上不允许不同卫星通信系统共用频率,频率因此成为最为宝贵的资源,每一颗通信卫星都需要提前许久预定备案。在导航卫星领域,中国北斗与欧洲伽利略曾经为抢频率而抢发卫星的“斗争”也是近些年的事情。Iridium NEXT 已完成空间段建设,频率资源问题早已不再是问题。OneWeb 方面, Greg Wyler 在离开 O3b 创建 OneWeb 之时就带走了部分已授权频率资源,加上收购其他公司而获得的频率使用权,手中握有足够的 Ku 波段资源。2017 年,OneWeb 又从 ITC/FCC 获批了更加珍惜的 V 波段资源。Starlink 早在 2015 年就已经向国际电信联盟(ITU)和美国联邦通信委员会(FCC)申请频率,目前已拿到 Ku/Ka 波段资源。中国航天科技集团 与 中国航天科工集团 也都在积极申请,随着其各自成功发射首发试运星,将频率资源握在手心也只是时间的问题。 卫星制造:传统卫星制造需要经过严格的 设计 -> 装配 -> 集成 -> 测试” 流程,而且发现问题之后还需迭代归零,一颗卫星从设计到出厂短则数月,长则数年,甚至达十几年之久。低轨卫星通信星座星数较多,制造过程必须实现批量化,一来可快速实现空间段建设,再者可大大降低单星成本。目前,OneWeb 拿到软银巨量投资后,迅速在佛罗里达建立了一个测试与总装中心,预计每天平均可生产一颗卫星,单星成本可控制在 100 万美元之下。SpaceX 仅有一个 30 人左右的小团队负责 Starlink 项目,未来计划快速扩充,但总体看来距离量产并将单星成本降至 100~150 万美元还比较遥远。中国航天科技集团 也已经在天津建设了 AIT 厂房,服务未来鸿雁星座的批量化制造。 发射成本:发射成本在卫星航天产业链中占比较大,是低轨卫星通信系统拦路虎之一。目前,Iridium NEXT 全部采用 SpaceX 的猎鹰九号火箭发射,单星发射成本在 700 万美元左右;OneWeb 采取的方案是“多国联军”,已经签订了 60 多次发射合同,21 次将由俄罗斯联盟火箭完成,39 次将由英国廉价商业航天发射公司维珍银河(总部美国)完成,3 次将由欧洲下一代火箭阿丽亚娜六完成。Starlink 必然采用 SpaceX 的猎鹰系列火箭进行发射,由于 SpaceX 的火箭可回收多次利用,其成本必然秒杀所有竞争对手。 服务营销:不管前期建设进行的多么顺利,最终考验低轨卫星通信系统的是营收能力,Iridium 就是前车之鉴。目前,Iridium 通信公司经过十多年的积累已步入正轨,实现盈利。OneWeb 凭借 O3b 卫星通讯网络近些年建立过程中的资源积累,在首批卫星发射前就早早布局全球营销。早在 2017 年 2 月,OneWeb 就在发布会上公开宣布首批 648 颗卫星的通信能力基本售罄,用户涵盖各个大洲。虽然 OneWeb 在初步运营阶段能否实现盈利犹未可知,但它在抢占市场先机方面可谓先拔头筹。Starlink 目前还处在“一鸣惊人”的阶段,造了一个爆炸性新闻后震惊世人,但目前尚未与任何通信服务商签订初步合同,还处在营销阶段。此外,国内的两个低轨卫星通信系统也频繁曝出项目进展,为后续发展奠定舆论基础。 风险抗压:任何大型的工程都存在诸多方面的风险和内外部压力,尤其是集 航天技术、频率资源、空间法律、大规模卫星制造与发射部署、移动互联网 等诸多高新技术和国际责任于一身的低轨卫星通信系统。这方面,以国家力量或资本和技术实力雄厚的项目优势明显,也更容易在后续竞争中取得最终主动权。目前,OneWeb 背后有日本财团、欧洲制造商/火箭发射商、俄罗斯火箭发射商、英国/美国火箭发射商/投资人/政府保护、几十个已经签订初步服务合同的国家,牢牢绑定了一个大的利益集团,抗风险能力明显较高。Starlink 目前是 SpaceX 尝试扩展并渴望最终发展为主要盈利点的业务,但在当下它的可回收火箭受到蓝色起源狙击、货运飞船受到俄罗斯进步飞船狙击、客运飞船受到俄罗斯联盟号和波音新一代飞船狙击,可谓压力巨大。如果Starlink 后续无法得到足够的外部资金支持,则项目极有可能面对随时停掉的可能性。中国两大航天集团在统治国内 14 亿潜在用户的巨大市场基础之上必然会走向国际市场,资金、技术和抗风险压力比国外商业公司小很多。 4 总结 本文阐述了笔者对低轨卫星通信技术的过去和发展现状的一些看法,并从顶层视角对低轨卫星通信产业的未来加以展望。若能为读者提供有效信息,则深感欣慰。文中的信息皆来源于网络及笔者自己对行业的观察,若有不当或错误之处,敬请多多指教、评论。 5 参考资料 Iridium PRIME — A Constellation of Hosted Payloads Iridium NEXT (Hosting Payloads on a Communications Constellation) OneWeb Minisatellite Constellation for Global Internet Service 一网开始撒网,首批六颗卫星升空 看起来最靠谱的空间互联网创业公司-OneWeb ORBCOMM天基短报文/物联网系统深度分析 我国将发射“鸿雁”全球卫星通信星座首星 “鸿雁”首发星发射成功,星座由数百颗低轨通信卫星组成 东方红卫星移动通信有限公司 我国计划2020年建成“鸿雁星座” 航天科工虹云工程拆解:156颗卫星如何无差别覆盖全球网络 虹云工程2022年成网移动宽带覆盖全球 我国首颗低轨宽带通信卫星技术验证星发射成功 我国成功发射首颗低轨宽带通信技术验证星 SpaceX的星链 (Starlink) 能否成功狙击一网 (OneWeb)?","categories":[{"name":"航天任务","slug":"航天任务","permalink":"/categories/航天任务/"}],"tags":[{"name":"卫星通信","slug":"卫星通信","permalink":"/tags/卫星通信/"},{"name":"LEO","slug":"LEO","permalink":"/tags/LEO/"},{"name":"ORBCOMM","slug":"ORBCOMM","permalink":"/tags/ORBCOMM/"},{"name":"Iridium","slug":"Iridium","permalink":"/tags/Iridium/"},{"name":"OneWeb","slug":"OneWeb","permalink":"/tags/OneWeb/"},{"name":"GlobalStar","slug":"GlobalStar","permalink":"/tags/GlobalStar/"},{"name":"Teledesic","slug":"Teledesic","permalink":"/tags/Teledesic/"},{"name":"StarLink","slug":"StarLink","permalink":"/tags/StarLink/"},{"name":"SpaceX","slug":"SpaceX","permalink":"/tags/SpaceX/"},{"name":"鸿雁星座","slug":"鸿雁星座","permalink":"/tags/鸿雁星座/"},{"name":"虹云工程","slug":"虹云工程","permalink":"/tags/虹云工程/"},{"name":"商业航天","slug":"商业航天","permalink":"/tags/商业航天/"}]},{"title":"Orekit 航天动力学库调用方法","slug":"orekit_prop","date":"2019-01-25T12:30:00.000Z","updated":"2019-02-27T23:54:52.277Z","comments":true,"path":"2019/01/25/orekit_prop/","link":"","permalink":"/2019/01/25/orekit_prop/","excerpt":"Orekit 是一个基于 Java 语言开发的航天动力学库,采用对商业友好的 Apache 开源许可协议,第一个公开发行版本始于 2003 年。十多年来,Orekit 一直专注于航天动力学底层算法的实现,包含丰富的航天动力学元素:轨道、时间、参考架、姿态和事件等,以及大量处理这些元素的算法:元素转换、航天器状态预报、卫星姿态指向和事件响应等。","text":"Orekit 是一个基于 Java 语言开发的航天动力学库,采用对商业友好的 Apache 开源许可协议,第一个公开发行版本始于 2003 年。十多年来,Orekit 一直专注于航天动力学底层算法的实现,包含丰富的航天动力学元素:轨道、时间、参考架、姿态和事件等,以及大量处理这些元素的算法:元素转换、航天器状态预报、卫星姿态指向和事件响应等。 Orekit 在世界各大航天机构及一些科研院所中皆有使用,尤其在欧洲十分流行,诸如 CNES,ESA,NASA,SSTL,SSC,ISRO,Eumetsat,Airbus,Thales,Telespazio,Nexeya,U.S. Naval Research Laboratory,Texas University at Austin 等大型航天机构和科研院所都在使用,通常它作为应用软件的底层代码库,为上层实现提供航天动力学算法支持。 图 1: Orekit 项目首页 1 获取 Orekit 库 Orekit 官方网站 www.orekit.org 提供封装好的 .jar 库文件以及源码,目前最新版为 v9.3(2019 年 2 月 15 日更新),.jar 库文件可直接使用,源码可编译后使用,此处介绍 .jar 库文件的调用。 2 调用 Orekit 库 2.1 添加 Orekit 库 将 orekit-9.2.jar 添加到项目参考库即可调用 Orekit 中的所有类库,由于 Orekit 采用 Hipparchus 库进行数值运算,所以还需下载并添加该库,方法跟添加 Orekit 库一样,下载地址为 www.hipparchus.org。 图 2: 添加好的 Orekit 与 Hipparchus 库列表 2.2 添加动力学建模数据 动力学建模数据包含了 Orekit 建立动力学模型、进行时间和参考架转换以及星历计算所需要的重要参数,必须在调用 Orekit 下属类库之前加载,配置代码如下所示。代码中的文件路径根据具体情况修改。12345678910111213// configure OrekitFile home = new File(\"D:/CodeProjects/eclipse_java/Orekit\");File orekitData = new File(home, \"orekit-data\");if (!orekitData.exists()) { System.err.format(Locale.US, \"Failed to find %s folder%n\", orekitData.getAbsolutePath()); System.err.format(Locale.US, \"You need to download %s from the %s page and unzip it in %s for this tutorial to work%n\", \"orekit-data.zip\", \"https://www.orekit.org/forge/projects/orekit/files\", home.getAbsolutePath()); System.exit(1); }DataProvidersManager manager = DataProvidersManager.getInstance();manager.addProvider(new DirectoryCrawler(orekitData)); 3 轨道预报 作为航天动力学库,Orekit 最基本的功能性算法就是对航天器状态矢量进行预报,该功能由 org.orekit.propagation 包提供。Orekit 有三种预报方式,一是解析法预报,由 org.orekit.propagation.analytical 实现;二是数值法预报,由 org.orekit.propagation.numerical 和 org.orekit.propagation.integration 实现;三是半解析法预报,由 org.orekit.propagation.semianalytical.dsst 实现。 解析法预报速度快,但精度随时间下降快,且需要平根或拟平根作为预报输入,即需要事先定轨;数值法通过求解轨道动力学方程实现,模型精确的情况下,预报精度高,但由于必须递推中间过程量,故需消耗较多的计算资源;半解析法速度和精度都介于解析法和数值法之间,一般用于卫星轨道寿命与离轨分析,本文不作介绍。 3.1 轨道描述 Orekit 中的轨道描述由 org.orekit.orbits 包提供,该包是构建航天动力学相关程序的基础。从 v3.0 开始,Orekit 就支持多种轨道描述,包括:经典开普勒轨道 KeplerianOrbit、圆轨道 CircularOrbit、赤道轨道 EquinoctialOrbit 以及三维状态矢量 CartesianOrbit。 经典开普勒轨道描述:KeplerianOrbit 1). a:轨道半场轴(m) 2). e:轨道偏心率(NAN) 3). i:轨道倾角(rad) 4). \\omega:近地点幅角(rad) 5). \\Omega:升交点赤经(rad) 6). \\nu,E or M:真近角、偏近角或平近角(rad) 圆轨道描述:CircularOrbit 1). a:轨道半场轴(m) 2). e_x:偏心率矢量 X 分量(NAN),e_x = e\\times cos(\\omega) 3). e_y:偏心率矢量 Y 分量(NAN),e_y = e\\times sin(\\omega) 4). i:轨道倾角(rad) 5). \\Omega:升交点赤经(rad) 6). u_\\nu,u_E or u_M:真纬度幅角(\\omega + \\nu)、偏纬度幅角(\\omega + E)和平纬度幅角(\\omega + M)(rad) 赤道轨道:EquinoctialOrbit 1). a:轨道半场轴(m) 2). e_x:偏心率矢量 X 分量(NAN),e_x = e \\times cos(\\omega) 3). e_y:偏心率矢量 Y 分量(NAN),e_y = e \\times sin(\\omega) 4). i_x:倾角矢量 X 分量(NAN),h_x = tan(i/2) \\times cos(\\Omega) 5). i_y:倾角矢量 Y 分量(NAN),h_y = tan(i/2) \\times sin(\\Omega) 5). \\Omega:升交点赤经(rad) 6). l_\\nu,l_E or l_M:真纬度幅角(\\omega +\\nu + \\Omega)、偏纬度幅角(\\omega + E + \\Omega)和平纬度幅角(\\omega + M + \\Omega)(rad) 三维状态矢量:CartesianOrbit 1). X, Y, Z:位置矢量(m) 2). V_x, V_y, V_z:速度矢量(m/s) 3.2 轨道预报流程 3.2.1 输入参数 四种轨道描述方法定义的轨道根数都可以作为轨道预报的输入,采用 Orbit 关键字进行定义。开普勒轨道根数定义方法如下:12double mu = 3.986004415e+14;Orbit kepOrbit = new KeplerianOrbit(a, e, i, omega, raan, M, PositionAngle.MEAN, Frame, Date, mu); 代码中,M 对应 PositionAngle.MEAN,即表示平近角,真近角和偏近角分别用 PositionAngle.TURE 和 PositionAngle.ECCENTRIC 表示;mu 为中心天体引力常数,Frame 为参考架,J2000 坐标系用 FramesFactory.getEME2000() 表示,遵循 IERS 2010 约定的地球固连坐标系,简称地固系,用 FramesFactory.getTIRF(IERSConventions.IERS_2010) 表示;Date 为时间,采用如下代码初始化: 1AbsoluteDate Date = new AbsoluteDate(yr, mt, day, hr, min, sec, TimeScalesFactory.getUTC()); 类似地,圆轨道根数定义方法如下: 12double mu = 3.986004415e+14;Orbit cirOrbit = new CircularOrbit(a, ex, ey, i, raan, u, PositionAngle.MEAN, Frame, Date, mu); 赤道轨道根数定义方法如下: 12double mu = 3.986004415e+14;Orbit equOrbit = new EquinoctialOrbit(a, ex, ey, hx, hy, l, PositionAngle.MEAN, Frame, Date, mu); 三维状态矢量定义方法如下: 123double mu = 3.986004415e+14;PVCoordinates catPV = new PVCoordinates(new Vector3D, new Vector3D);Orbit catOrbit = new CartesianOrbit(catPV, Frame, Date, mu); 代码中,catPV 为状态矢量。根据轨道数据的来源,选择对应的轨道描述方式。 3.2.2 建立轨道预报器 Orekit 提供多种解析法预报器,由 org.orekit.propagation.analytical 包实现,最简单的为基于 二体模型 的解析法预报器: 1KeplerianPropagator tbProp = new KeplerianPropagator(Orbit initialOrbit); 较为复杂的解析法预报器基于 EcksteinHechler 模型: 123456789double referenceRadius = 6378136.3;double mu = 3.986004415e+14;double c20 = -0.484165143790815e-03;double c30 = 0.957161207093473e-06;double c40 = 0.539965866638991e-06;double c50 = 0.686702913736681e-07;double c60 = -0.149953927978527e-06EcksteinHechlerPropagator ehProp = new EcksteinHechlerPropagator(Orbit initialOrbit, referenceRadius, mu, c20, c30, c40, c50, c60); Orekit 数值预报器由 org.orekit.propagation.numerical 包实现,定义方法如下: 1NumericalPropagator propagator = new NumericalPropagator(integrator); 参数 integrator 较具有多种选择,通用型高精度积分器可选择 PD 系列中的 DormandPrince853Integrator,定义方法如下: 12345678final double minStep = 0.001;final double maxstep = 100.0;final double positionTolerance = 1.0e-13;final OrbitType propagationType = OrbitType.KEPLERIAN;final double[][] tolerances = NumericalPropagator.tolerances(positionTolerance, initialOrbit, propagationType);AdaptiveStepsizeIntegrator integrator = new DormandPrince853Integrator(minStep, maxstep, tolerances[0], tolerances[1]); 此外,数值轨道预报,还需要设置动力学模型,一般只考虑地球引力场: 1234final NormalizedSphericalHarmonicsProvider provider = GravityFieldFactory.getNormalizedProvider(20, 20);ForceModel holmesFeatherstone = new HolmesFeatherstoneAttractionModel(FramesFactory.getITRF(IERSConventions.IERS_2010, true), provider); 更多力学模型的设置参考 API 文档中的 NumericalPropagator 类:orekit-9.2-javadoc/org/orekit/propagation/numerical/NumericalPropagator.html。 3.2.3 执行轨道预报 执行预报语句,获取指定时间的轨道根数 currentState: 1234567891011121314151617SpacecraftState currentState = kepler.propagate(extrapDate);java也可构建循环语句,以定步长预报指定时间段的轨道根数:```javadouble duration = 600.;AbsoluteDate finalDate = initialDate.shiftedBy(duration);double stepT = 60.;int cpt = 1; extrapDate.compareTo(finalDate) <= 0; extrapDate = extrapDate.shiftedBy(stepT)) { SpacecraftState currentState = kepler.propagate(extrapDate); System.out.println(\"step \" + cpt++); System.out.println(\" time : \" + currentState.getDate()); System.out.println(\" \" + currentState.getOrbit());} 数值法预报器于解析法稍有不同,是通过 StepHandler 执行数据操作的: 12345propagator.addForceModel(holmesFeatherstone);propagator.setInitialState(initialState);propagator.setMasterMode(60., new TutorialStepHandler());SpacecraftState finalState = propagator.propagate(initialDate.shiftedBy(600)); 4 总结 本文介绍了 Orekit 航天动力学库的调用方法,并简单阐述了其轨道预报方法,可作为相关应用软件开发的入门级参考。 © Copyright by Spacefan 2019.","categories":[{"name":"专业技能","slug":"专业技能","permalink":"/categories/专业技能/"}],"tags":[{"name":"Space","slug":"Space","permalink":"/tags/Space/"},{"name":"航天动力学","slug":"航天动力学","permalink":"/tags/航天动力学/"},{"name":"Orekit","slug":"Orekit","permalink":"/tags/Orekit/"},{"name":"轨道根数","slug":"轨道根数","permalink":"/tags/轨道根数/"},{"name":"Java","slug":"Java","permalink":"/tags/Java/"},{"name":"轨道预报","slug":"轨道预报","permalink":"/tags/轨道预报/"}]},{"title":"史上最强的 5G 介绍,外行业看完也秒懂","slug":"5G_intro","date":"2018-12-05T14:32:00.000Z","updated":"2019-02-27T15:18:25.398Z","comments":true,"path":"2018/12/05/5G_intro/","link":"","permalink":"/2018/12/05/5G_intro/","excerpt":"今天的故事,从一个公式开始讲起,一个简单且神奇的公式。 这是一个既简单又神奇的公式。说它简单,是因为它一共只有3个字母。而说它神奇,是因为这个公式蕴含了博大精深的通信技术奥秘,这个星球上有无数的人都在为之魂牵梦绕。 这个公式,就是它:c = \\lambda \\times \\nu。","text":"今天的故事,从一个公式开始讲起,一个简单且神奇的公式。 这是一个既简单又神奇的公式。说它简单,是因为它一共只有3个字母。而说它神奇,是因为这个公式蕴含了博大精深的通信技术奥秘,这个星球上有无数的人都在为之魂牵梦绕。 这个公式,就是它:c = \\lambda \\times \\nu。 我相信很多同学都认出这个公式了,如果没认出来,而且你又是一个理科生的话,请记得有空多给你的中学物理老师打打电话! 解释一下,上面这个公式,这是物理学的基本公式,光速=波长×频率。 对于这个公式,可以这么说:无论是1G、2G、3G,还是4G、5G,万变不离其宗,全部都是在它身上做文章,没有跳出它的“五指山”。且听我慢慢道来。 有线?无线? 通信技术,无论什么黑科技白科技,归根到底,就分为两种 —— 有线通信 和 无线通信。 我和你打电话,信息数据要么在空中传播(看不见、摸不着),要么在实物上传播(看得见、摸得着)。 如果是在实体物质上传播,就是有线通信,基本上就是用的铜线、光纤这些线缆,统称为有线介质。 在有线介质上传播数据,速率可以达到很高的数值。 以光纤为例,在实验室中,单条光纤最大速度已达到了26Tbps,是传统网线的两万六千倍。 图注:光纤,单条最大速度已达到了26Tbps 而空中传播这部分,才是移动通信的瓶颈所在。 目前主流的移动通信标准,是4G LTE,理论速率只有150Mbps(不包括载波聚合)。这个和有线是完全没办法相比的。 所以,5G如果要实现端到端的高速率,重点是突破无线这部分的瓶颈。 好大一个波 大家都知道,无线通信就是利用电磁波进行通信。电波和光波,都属于电磁波。 电磁波的功能特性,是由它的频率决定的。不同频率的电磁波,有不同的属性特点,从而有不同的用途。 例如,高频的γ射线,具有很大的杀伤力,可以用来治疗肿瘤。 图注:电磁波的不断频率 我们目前主要使用电波进行通信。当然,光波通信也在崛起,例如LiFi。 图注:LiFi(Light Fidelity),可见光通信 不偏题,回到电波先。 电波属于电磁波的一种,它的频率资源是有限的。 为了避免干扰和冲突,我们在电波这条公路上进一步划分车道,分配给不同的对象和用途。 图注:不同频率电波的用途 请大家注意上面图中的红色字体。一直以来,我们主要是用 中频~超高频 进行手机通信的。 例如经常说的“GSM900”、“CDMA800”,其实意思就是指,工作频段在900MHz的GSM,和工作频段在800MHz的CDMA。 目前全球主流的4G LTE技术标准,属于特高频和超高频。 我们国家主要使用超高频: 大家能看出来,随着1G、2G、3G、4G的发展,使用的电波频率是越来越高的。 这是为什么呢? 这主要是因为,频率越高,能使用的频率资源越丰富。频率资源越丰富,能实现的传输速率就越高。 图注:更高的频率→更多的资源→更快的速度 应该不难理解吧?频率资源就像车厢,越高的频率,车厢越多,相同时间内能装载的信息就越多。 那么,5G使用的频率具体是多少呢? 如下图所示: 5G的频率范围,分为两种:一种是6GHz以下,这个和目前我们的2/3/4G差别不算太大。还有一种,就很高了,在24GHz以上。 目前,国际上主要使用28GHz进行试验(这个频段也有可能成为5G最先商用的频段)。 如果按28GHz来算,根据前文我们提到的公式: 好啦,这个就是5G的第一个技术特点—— 毫 米 波 请允许我再发一遍刚才那个频率对照表: 图注:不同频率电波的用途 请注意看最下面一行,是不是就是“毫米波”? 继续,继续! 好了,既然,频率高这么好,你一定会问:“为什么以前我们不用高频率呢?” 原因很简单——不是不想用,是用不起。 电磁波的显著特点:频率越高,波长越短,越趋近于直线传播(绕射能力越差)。频率越高,在传播介质中的衰减也越大。 你看激光笔(波长635nm左右),射出的光是直的吧,挡住了就过不去了。 再看卫星通信和GPS导航(波长1cm左右),如果有遮挡物,就没信号了吧。 图注:卫星那口大锅,必须校准瞄着卫星的方向,否则哪怕稍微歪一点,都会影响信号质量。 移动通信如果用了高频段,那么它最大的问题,就是传输距离大幅缩短,覆盖能力大幅减弱。 覆盖同一个区域,需要的5G基站数量,将大大超过4G。 基站数量意味着什么?钱啊!投资啊!成本啊! 频率越低,网络建设就越省钱,竞争起来就越有利。这就是为什么,这些年,电信、移动、联通为了低频段而争得头破血流。 有的频段甚至被称为——黄金频段。 这也是为什么,5G时代,运营商拼命怼设备商,希望基站降价。(如果真的上5G,按以往的模式,设备商就发大财了。) 所以,基于以上原因,在高频率的前提下,为了减轻网络建设方面的成本压力,5G必须寻找新的出路。 出路有哪些呢? 首先,就是微基站。 微 基 站 基站有两种,微基站和宏基站。看名字就知道,微基站很小,宏基站很大! 宏基站: 图注:室外常见,建一个覆盖一大片 微基站: 图注:看上去是不是很酷炫? 图注:还有更小的,巴掌那么大 其实,微基站现在就有不少,尤其是城区和室内,经常能看到。 以后,到了5G时代,微基站会更多,到处都会装上,几乎随处可见。 你肯定会问,那么多基站在身边,会不会对人体造成影响? 我的回答是——不会。 其实,和传统认知恰好相反,事实上,基站数量越多,辐射反而越小! 你想一下,冬天,一群人的房子里,一个大功率取暖器好,还是几个小功率取暖器好? 大功率方案▼ 小功率方案▼ 上面的图,一目了然了。基站小,功率低,对大家都好。如果只采用一个大基站,离得近,辐射大,离得远,没信号,反而不好。 天线去哪了? 大家有没有发现,以前大哥大都有很长的天线,早期的手机也有突出来的小天线,为什么现在我们的手机都没有天线了? 其实,我们并不是不需要天线,而是我们的天线变小了。 根据天线特性,天线长度应与波长成正比,大约在1/10~1/4之间。 随着时间变化,我们手机的通信频率越来越高,波长越来越短,天线也就跟着变短啦! 毫米波通信,天线也变成毫米级。。。 这就意味着,天线完全可以塞进手机的里面,甚至可以塞很多根。。。 这就是5G的第三大杀手锏—— Massive MIMO(多天线技术) MIMO 就是“多进多出”(Multiple-Input Multiple-Output),多根天线发送,多根天线接收。 在LTE时代,我们就已经有MIMO了,但是天线数量并不算多,只能说是初级版的MIMO。 到了5G时代,继续把MIMO技术发扬光大,现在变成了加强版的Massive MIMO(Massive:大规模的,大量的)。 手机里面都能塞好多根天线,基站就更不用说了。 以前的基站,天线就那么几根: 5G时代,天线数量不是按根来算了,是按“阵”。。。“天线阵列”。。。一眼看去,要得密集恐惧症的节奏。。。 不过,天线之间的距离也不能太近。 因为天线特性要求,多天线阵列要求天线之间的距离保持在半个波长以上。如果距离近了,就会互相干扰,影响信号的收发。 你是直的?还是弯的? 大家都见过灯泡发光吧? 其实,基站发射信号的时候,就有点像灯泡发光。 信号是向四周发射的,对于光,当然是照亮整个房间,如果只是想照亮某个区域或物体,那么,大部分的光都浪费了。。。 基站也是一样,大量的能量和资源都浪费了。 我们能不能找到一只无形的手,把散开的光束缚起来呢? 这样既节约了能量,也保证了要照亮的区域有足够的光。 答案是:可以。 这就是—— 波 束 赋 形 波束赋形: 在基站上布设天线阵列,通过对射频信号相位的控制,使得相互作用后的电磁波的波瓣变得非常狭窄,并指向它所提供服务的手机,而且能跟据手机的移动而转变方向。这种空间复用技术,由全向的信号覆盖变为了精准指向性服务,波束之间不会干扰,在相同的空间中提供更多的通信链路,极大地提高基站的服务容量。 直的都能掰成弯的。。。还有什么是通信砖家干不出来的? 别收我钱,行不行? 在目前的移动通信网络中,即使是两个人面对面拨打对方的手机(或手机对传照片),信号都是通过基站进行中转的,包括控制信令和数据包。。。 而在5G时代,这种情况就不一定了。 5G的第五大特点——D2D,也就是Device to Device(设备到设备)。 D 2 D 5G时代,同一基站下的两个用户,如果互相进行通信,他们的数据将不再通过基站转发,而是直接手机到手机。。。 这样,就节约了大量的空中资源,也减轻了基站的压力。 不过,如果你觉得这样就不用付钱,那你就图样图森破了。 控制消息还是要从基站走的,你用着频谱资源,运营商爸爸怎么可能放过你。。。😄 😄 😄 后记 相信大家通过本文,对5G和她背后的通信知识已经有了深刻的理解。而这一切,都只是源于一个小学生都能看懂的数学公式。不是么? 通信技术并不神秘,5G作为通信技术皇冠上最耀眼的宝石,也不是什么遥不可及的创新革命技术,它更多是对现有通信技术的演进。 正如一位高人所说—— 通信技术的极限,并不是技术工艺方面的限制,而是建立在严谨数学基础上的推论,在可以遇见的未来是基本不可能突破的。 如何在科学原理的范畴内,进一步发掘通信的潜力,是通信行业众多奋斗者们孜孜不倦的追求。","categories":[{"name":"科技前沿","slug":"科技前沿","permalink":"/categories/科技前沿/"}],"tags":[{"name":"5G","slug":"5G","permalink":"/tags/5G/"},{"name":"通信","slug":"通信","permalink":"/tags/通信/"},{"name":"毫米波","slug":"毫米波","permalink":"/tags/毫米波/"},{"name":"微基站","slug":"微基站","permalink":"/tags/微基站/"}]},{"title":"CodeBlocks v17.12 界面汉化与编辑器主题美化","slug":"Codeblocksv1712","date":"2018-11-30T14:51:00.000Z","updated":"2019-02-28T00:02:59.441Z","comments":true,"path":"2018/11/30/Codeblocksv1712/","link":"","permalink":"/2018/11/30/Codeblocksv1712/","excerpt":"Code::Blocks 是一个非常优秀的 IDE,它轻巧、强大、跨平台,且紧跟标准,最新版更是加入了对 Qt5 的支持。然而,这么一个令人爱不释手的 IDE 竟无汉化,编辑器主题界面也十分简陋,于是便有了本博文。 本文将以 Code::Blocks v17.12 为对象,介绍其菜单汉化及编辑器主题优化方法,配置后的软件有助于我们更赏心悦目度撸代码。😄 😄 😄","text":"Code::Blocks 是一个非常优秀的 IDE,它轻巧、强大、跨平台,且紧跟标准,最新版更是加入了对 Qt5 的支持。然而,这么一个令人爱不释手的 IDE 竟无汉化,编辑器主题界面也十分简陋,于是便有了本博文。 本文将以 Code::Blocks v17.12 为对象,介绍其菜单汉化及编辑器主题优化方法,配置后的软件有助于我们更赏心悦目度撸代码。😄 😄 😄 一、界面汉化 1.1 下载 Code::Blocks 汉化包 首先,大家需要下载一个 Code::Blocks 汉化包,下载链接: https://pan.baidu.com/s/1sniGc01 (提取码: 7e9m)。 1.2 汉化 Code::Blocks 1) 汉化包下载完成后,是一个压缩包,将其解压,其中包含有一个 locale 文件夹,如下图所示,这是我们需要的。 2) 进入 Code::Blocks 安装目录(其默认安装目录为 C:\\Program Files (x86)\\CodeBlocks),依次进入 share —> CodeBlocks 文件夹,然后将解压汉化包得到的 locale 文件夹,复制到 CodeBlocks 文件夹下,如下图所示: 如果上述过程,你都没有打开 Code::Blocks,这个时候你直接打开,应该就可以看到,你的 Code::Blocks 已经汉化成功啦。如果还没有成功,继续以下操作。 1.3 更改Code::Blocks设置 1) 打开 Code::Blocks,选择 “Settings —> Environmen”,如下图所示: 2) 会弹出用于设置 Code::Blocks 的对话框,如下图所示: 选择 View 选项,勾选 Internationalization 选项,同时选择其中的 Chinese(Simplified)。然后点击 OK 按钮。设置完成后,直接重新启动 Code::Blocks,此时 Code::Blocks 会出现一个提示框,提示你是否保存更改,选择保存即可。 3) 再次启动 Code::Blocks,你会看到全新的汉化的 Code::Blocks,虽然没有完全汉化,但起码不会影响日常的正常使用。 二、编辑器主题美化 2.1 替换配置文件 在 C 盘下搜索文件 default.conf(先去文件夹选项里勾上显示隐藏的系统文件),用文本编辑器打开,搜索标签,用记事本打开 default.conf,把这个主题网址的下面的所有代码都覆盖复制进去(建议把原来的 default 文件名字改为备份,以留后用)。 http://wiki.codeblocks.org/index.php?title=Syntax_highlighting_custom_colour_themes 一般这个文件地址是 C:\\用户\\(你电脑的用户名)\\AppData\\Roaming\\CodeBlocks\\default.conf,可以用 Everything 搜索。 在此期间 Code::Blocks 需要关闭,不然会被改回去。 2.2 稍作修改 可能用新的界面风格会看不到光标,这个在 Code::Blocks 内修改,Settings->Configure editor->Margins and caret->Caret->Colour,选择一个可以辨识的颜色,比如白色。并将宽度设为 3(或者更宽)。 2.3 修改字体 字体修改在 Settings->Configure editor->General settings->Font,点击 Choose,在里面选择。最后主题自己选定一个保存再打开 Code::Blocks 新建一个文件或者工程就可以看到主题样式已经发生改变。 2.4 代码缩进指示线 如下图修改一下就有这种效果(可能汉化包不一样,反正倒数第三个选项打勾应该就可以了)。 效果如图: 三、总结 汉化后的界面和美化后的编辑器主题有利于我们写出更优秀的代码,至此,打完收工。","categories":[{"name":"编程语言","slug":"编程语言","permalink":"/categories/编程语言/"}],"tags":[{"name":"CodeBlocks","slug":"CodeBlocks","permalink":"/tags/CodeBlocks/"},{"name":"IDE","slug":"IDE","permalink":"/tags/IDE/"},{"name":"c","slug":"c","permalink":"/tags/c/"},{"name":"C++","slug":"C","permalink":"/tags/C/"},{"name":"编辑器","slug":"编辑器","permalink":"/tags/编辑器/"},{"name":"主题美化","slug":"主题美化","permalink":"/tags/主题美化/"}]},{"title":"基于 JavaScript 的 GIS 开发库 Cesium","slug":"cesium-intro","date":"2018-06-30T12:50:00.000Z","updated":"2019-02-27T15:20:09.682Z","comments":true,"path":"2018/06/30/cesium-intro/","link":"","permalink":"/2018/06/30/cesium-intro/","excerpt":"Cesium 是一个用来在 Web 浏览器中创建三维地球与二维地图的 JavaScript 库,Cesium 开发的应用不需要任何浏览器插件的支持即可运行。Cesium 使用 WebGL 进行硬件图形加速,并且跨平台,跨浏览器,适合用来进行动态数据可视化。","text":"Cesium 是一个用来在 Web 浏览器中创建三维地球与二维地图的 JavaScript 库,Cesium 开发的应用不需要任何浏览器插件的支持即可运行。Cesium 使用 WebGL 进行硬件图形加速,并且跨平台,跨浏览器,适合用来进行动态数据可视化。 👍 核心功能 地理空间动态可视化 使用 CZML 数据驱动的、时间动态的场景 世界范围的高精度地形可视化; 使用 WMS、TMS、OpenStreetMaps、Bing 及 Esri 标准绘制影像图层; 使用 GeoJSON 和 TopoJSON 绘制矢量数据; 使用 COLLADA 和 glTF 绘制三维模型; 使用 插件 来扩展 Cesium。 为性能和精度进行设计 使用硬件加速的方式,通过批处理和效率选择来优化 WebGL; 绘制多种几何图形,包括 polylines、polygons、billboards、labels、extrusions 和 corridors; 控制相机并创建飞行路径; 使用标准小部件控制动画时间,选择图像图层并缩放到某个位置。 一个API,三种视图 Cesium 支持采用同一 API 实现三维(全球)、2.5维(Columbus视图)及二维(地图)三种视图 🚀 快速开始 访问 下载页面 或者使用 npm 安装 Cesium :1$ npm install cesium 有任何问题都可以在 论坛 提出。如果对项目开发贡感兴趣,可以进一步阅读 CONTRIBUTING.md。 ❤ ❄ 项目使命 Cesium 的使命是为静态和时间动态内容创建领先的三维地球仪和地图,具有最佳性能,精度,视觉质量,平台支持,社区和易用性。 📗 使用许可 Cesium 使用 Apache 2.0 许可协议,对于商业和非商业用户都是免费的。 👏 特性展示 👏 演示项目 ","categories":[{"name":"专业技能","slug":"专业技能","permalink":"/categories/专业技能/"}],"tags":[{"name":"Cesium","slug":"Cesium","permalink":"/tags/Cesium/"},{"name":"GIS","slug":"GIS","permalink":"/tags/GIS/"},{"name":"JavaScript","slug":"JavaScript","permalink":"/tags/JavaScript/"},{"name":"NPM","slug":"NPM","permalink":"/tags/NPM/"},{"name":"AGI","slug":"AGI","permalink":"/tags/AGI/"},{"name":"WebGL","slug":"WebGL","permalink":"/tags/WebGL/"},{"name":"Web","slug":"Web","permalink":"/tags/Web/"},{"name":"数字地球","slug":"数字地球","permalink":"/tags/数字地球/"}]},{"title":"Hexo 博客使用 emoji 表情","slug":"hexo-emoji","date":"2018-06-30T09:30:00.000Z","updated":"2019-02-27T15:21:52.220Z","comments":true,"path":"2018/06/30/hexo-emoji/","link":"","permalink":"/2018/06/30/hexo-emoji/","excerpt":"将 Markdown 转化为 html 的过程叫做 Markdown 渲染,对应的插件叫做 Markdown 渲染引擎。在 Hexo 中默认的 Markdown 渲染器是 hexo-renderer-marked,这个渲染器不支持 emoji 表情。本文利用 hexo-filter-github-emojis 在博客中实现 emoji 表情。","text":"将 Markdown 转化为 html 的过程叫做 Markdown 渲染,对应的插件叫做 Markdown 渲染引擎。在 Hexo 中默认的 Markdown 渲染器是 hexo-renderer-marked,这个渲染器不支持 emoji 表情。本文利用 hexo-filter-github-emojis 在博客中实现 emoji 表情。 1. 插件安装 使用以下命令安装 hexo-filter-github-emojis 插件:1$ npm install hexo-filter-github-emojis --save 2. 启用插件 向站点配置文件 hexo_root\\_config.yml 中添加如下设置:12345678githubEmojis: enable: true className: github-emoji unicode: true styles: display: inline vertical-align: middle # Freemind适用 localEmojis: 具体的每个配置项含义参见 说明文档。 3. 使用方法 在 emoji-cheat-sheet 中找到你想要的表情,然后点击即可复制。使用方法和 GitHub 一样,比如你想发一个笑脸 😄 直接输入笑脸对应的 emoji 编码 :smile: 就可以。来一波表情 😍 😄 😂 ✨ 🎵 👌 👍 💜👫 💧 ☀ 🐼 🐦 🌚 🌏 📞 🔫 🔭 🚴 🍅 🚀 🇨🇳 🈚 🈳 🚯 ♎ ©。","categories":[{"name":"Hexo建站","slug":"Hexo建站","permalink":"/categories/Hexo建站/"}],"tags":[{"name":"Hexo","slug":"Hexo","permalink":"/tags/Hexo/"},{"name":"emoji","slug":"emoji","permalink":"/tags/emoji/"}]},{"title":"开放航空航天仿真工具集锦","slug":"OpenTools","date":"2018-06-28T04:00:00.000Z","updated":"2019-02-27T15:30:39.662Z","comments":true,"path":"2018/06/28/OpenTools/","link":"","permalink":"/2018/06/28/OpenTools/","excerpt":"小时候,晴朗的天空总是蔚蓝,就连那连绵不断的山峰也无法遮挡住那深邃的远方。曾几何时,天空中偶尔会飞过一架飞机,于是众小伙伴奔走相告,哪怕飞机的轰鸣早已响彻耳旁。有时,我们会目不转睛地望着飞机,直到它飞出视野范围之外,并梦想着有一天能够像飞机一样在天空中翱翔,到我们想去的远方。 依稀记得,那些年,为了躲避夏日的炎热,我们姐妹三人常常在优静的晚上躺在繁星闪烁的夜空下,仰望宇宙的苍穹。那时,我们的视力好到可以看见亮度十分暗淡的人造卫星飞越上空。而为了等待流星划过夜空的美丽瞬间,我们更是轮流看守,不放过任何一次机会。令我们感到十分惊讶的是,我们几乎总是能在深夜欣赏到流星划过的瞬间,甚至有时还会中头奖,来一次令人激动不已的流星雨。 童年纵然逝去,但我相信每个人心中都有个孩子,每个人心中都留有一份童真,每个人心中都深藏童年的美好记忆。现在看来,长大可并不是一件好事,但是爸妈却不这么想,天天盼望着我们长大成人,并能有所作为。","text":"小时候,晴朗的天空总是蔚蓝,就连那连绵不断的山峰也无法遮挡住那深邃的远方。曾几何时,天空中偶尔会飞过一架飞机,于是众小伙伴奔走相告,哪怕飞机的轰鸣早已响彻耳旁。有时,我们会目不转睛地望着飞机,直到它飞出视野范围之外,并梦想着有一天能够像飞机一样在天空中翱翔,到我们想去的远方。 依稀记得,那些年,为了躲避夏日的炎热,我们姐妹三人常常在优静的晚上躺在繁星闪烁的夜空下,仰望宇宙的苍穹。那时,我们的视力好到可以看见亮度十分暗淡的人造卫星飞越上空。而为了等待流星划过夜空的美丽瞬间,我们更是轮流看守,不放过任何一次机会。令我们感到十分惊讶的是,我们几乎总是能在深夜欣赏到流星划过的瞬间,甚至有时还会中头奖,来一次令人激动不已的流星雨。 童年纵然逝去,但我相信每个人心中都有个孩子,每个人心中都留有一份童真,每个人心中都深藏童年的美好记忆。现在看来,长大可并不是一件好事,但是爸妈却不这么想,天天盼望着我们长大成人,并能有所作为。 童年对头顶上那片天空产生的特殊情怀使得我踏上了航空航天的学习道路,然而多年以来却术无专攻、学无所成。唯一值得欣慰的是,这么多年来,我学会了一个原则,那就是做任何事都不要首先尝试重新发明轮子,而要学着制造汽车。用牛顿先生的话说,就是:“如果说我比别人看得更远些,那是因为我站在了巨人的肩膀上。”于是,当我需要某种工具时,必先用 Google 搜寻一番,哪怕是 Bing 也是可以的。时至今日才猛然发现,在开放的世界竟然有那么多实用的工具可以为我所用,即使是专业特性超强的航空航天领域。 本文并非一篇教读者如何在庞杂的信息世界里搜索合适的工具,而是直接授之以鱼,将笔者已知的航空航天领域十分优秀的开放仿真工具介绍给大家,并辅以相应的入门级教程。这其实是一项十分艰难的工作,因为大部分开放软件的文档都较为匮乏,且绝大多数由英文写成。这倒不是致命伤,关键在于,笔者不可能把每一款软件都学会,然后写出教程。从时间和精力的角度来讲,这都是不现实的。所以本文将重点对功能相对强大且笔者认为十分有研究价值的工具软件展开介绍,希望能抛砖引玉,吸引更多的爱好者加入到本文的撰写过程中来。 本文定性为航空航天仿真工具的相关介绍和研究,主要涉及航空航天领域大量优秀的开放仿真软件,不会涉及任何与开放硬件相关的话题。这里的开放是指读者可以免费获取资源,而无需为其支付任何使用费用。文中介绍的工具包含了很多开源的软件,而开源是开放的子集,开源的软件绝大多数是免费的。此外,开源软件最鲜明的特点是其源代码必定公开,并可以通过互联网或其它媒介自由获取。书中并不包含那些停止开发或多年未曾更新的工具软件,因为笔者认为,只有历经岁月的洗礼,才能称得上优秀,并最具研究价值。原则上,长达五年未曾更新的软件不会出现在本文的分类之中,已经包含在本文中的软件如果在未来五年之内不再更新,亦将在下一次更新过程中被剔除。 是开源赋予了这个时代更多的活力,而开放则将知识的种子播撒开来。知识本就不应该被束之高阁,即使是本文所讨论的航空航天。衷心地希望本文能够帮助读者了解航空航天,了解开放的世界,并最终找到自己钟爱的航空航天仿真工具。 第零篇 基本信息 0.1 版本信息 0.1.1 更新记录 2016/06/28 v1.0 建立基本框架,对每款软件进行较为完整的介绍,并不涉及任何操作实践,甚至不包括如何安装软件。 0.1.2 写作计划 2019/04/05 v1.1 添加 OpenRocket 安装教程。 2019/04/15 v1.2 添加 Orbiter 入门教程:冲破卡门线。 2019/04/25 v1.3 添加 GMAT 入门教程:Molniya 轨道预报。 2019/05/15 v1.4 添加 Orbiter 入门教程:造访国际空间站。 2019/05/25 v1.5 添加 NASA’s Eyes 入门教程:在家畅游太阳系。 2019/06/15 v1.6 添加 Orbiter 入门教程:带她一起去月球。 2019/06/25 v1.7 添加 GMAT 入门教程:霍曼转移。 2019/07/15 v1.8 添加 Orbiter 进阶教程:TransX 行星际航行指南。 2019/07/25 v1.9 添加 Orbiter 进阶教程:红色行星之旅行。 2019/08/15 v2.0 添加 Orbiter 高级教程:EVA & EDL。 0.2 使用协议 本文采用 Creative Commons 使用协议,具体内容请参照 Creative Commons 协议官方网站。 第一篇 航空工具集 1.0 内容概述 本篇将对开放航空工具进行分类归纳,由于笔者已不再从事航空学方面的研究工作,所以很少再接触新的航空工具软件,文中涉及的工具皆为笔者早年间熟知的软件,具有一定的代表性。同时希望读者能够分享信息,提供更多关于开放航空仿真工具软件最新的发展状况。 本篇含有三个部分的内容,在广度和深度方面都不如航天工具集篇详实,但其中却不乏重量级的工具。如 FlightGear 和 OpenRocket,它们在各自的领域都有着极大的影响力。特别值得一提的是它们的源代码都是开放的,使得用户可以进行深层次的探究。 笔者作为一名模拟飞行爱好者,曾经使用过 X-Plane,如今对 Orbiter 有较为系统的学习。虽然只是在虚拟的环境中体验飞行,但这也未曾不失为一种乐趣,而且模拟带着浓厚的教育意味,在此过程中可以学得一些书本之外的知识。 1.1 模拟飞行 图注:“协和”号即将降落在伦敦盖特威克机场跑道上 1.1.1 FlightGear FlightGear 是一款开源的跨平台模拟飞行器。该项目始于 1997 年,经过最初十年的开发,于 2007 年 12 月发布了功能较为完善的 v1.0.0 版本。其最新版本为 2019 年 1 月 29 日发布的 v2018.3.2 版本,软件授权协议为 GPL(GNU General Public License)。从 FlightGear 官方手册可知,FlightGear 具有以下诸多特点: 民用性 该项目主要针对民航,用于通用航空和民航飞行模拟。FlightGear 的长远目标是可以作为 FAA 的飞行训练模拟器;FlightGear 不能进行空战模拟可能会让您感觉有些失望。但我们并没有完全排除 FlightGear 的这部分功能,只是因为缺少空战模拟的开发人员所以还没有实现这部分功能。 跨平台 项目所有开发人员都希望代码能不依赖平台,因此 FlightGear 能运行在多种电脑硬件和操作系统上。当前的代码支持 Linux(任何分支和平台)、Windows XP/Vista/7/8/10( Intel/AMD 平台)、Mac OS X、BSD UNIX & Sun Solaris 等等。目前为止,还没有其它任何一款模拟飞行软件(不管是商业化的还是免费的)支持如此多的平台。 开放性 FlightGear 不限定在任何固定开发人员手里,能在项目中发挥作用任何人都是受欢迎的。此项目的版权在自由软件基金会的手中,虽然 GPL 现在还不太被人们了解,但它已经得到法律的保护。在这个体系中,GPL 允许您复制和免费贡献代码,只要你喜欢这样做。然而,你必须免费提供源代码给每个需要它的人,且必须保留原始著作权。简而言之,GPL 允许你做任何除了收费之外的事情。 扩展性 从设计之初开始,FlightGear 的场景地形、飞机模型、内部参数、API 和其它任何东西都是对用户透明并有文档记录的。就算没有任何开发文档,您也能参看源代码来了解 FlightGear 是如何工作的。FlightGear 开发人员的目标是建立是一个能自由进行场景设计、飞行面板设计、ATC 设计及声音驱动的基本引擎。FlightGear 项目凝结了来自全世界开发者的智慧,我们希望此项目所有的开发人员和用户都能从中获益。 1.1.2 Plane-Maker Plane-Maker 是随 X-Plane 免费发布的一款内部模型插件开发工具,专门供 X-Plane 插件开发者为其开发飞机、人物、车辆及地景模型等第三方插件。用户只需安装 X-Plane Demo,而非购买完整的 X-Plane 软件包,即可获得 Plane-Maker 进行插件开发。 Plane-Maker 虽然是免费软件,但它的功能却异常强大。首先,它给开发者提供了一个十分方便的 GUI 集成环境,从而使得开发者可以很轻松地在该环境中创建各种类型的模型;其次,Plane-Maker 与 X-Plane 的交互过程既简单又高效,且在 Plane-Maker 中开发的飞机插件可以直接导入 X-Plane 这一高仿真度的模拟飞行环境中进行试飞;此外,Plane-Maker 能够读取来自外部三维软件(如 Blender、Google Sketchup、AC3D 及 3DS Max 等)所构建的各种模型。 事实上,Plane-Maker 完全是 X-Plane 团队为提升自身竞争力而为第三方开发者量身打造的插件开发工具。时间证明,这种做法是成功的。因为,如今 X-Plane 的插件开发者已经为其开发了大量的优秀插件,这间接增加了 X-Plane 对用户的吸引力。你可以从 X-Plane 官方论坛下载到由众多爱好者开发的各种插件。当然,如果你想设计一架属于自己的机模,我相信 Plane-Maker 一定是不错的选择。 1.1.3 CRRCSim CRRCSim 是一款基于 GPL 发布的开源遥控模型飞机飞行模拟器,由 C 和 C++ 语言编写而成,OpenGL 作为图形驱动引擎。CRRCSim 可运行在主流的操作系统平台之上,多数 Linux 发行版本、Mac OS X 及 Microsoft Windows。使用 CRRCSim 不仅可以帮助你学习如何操控遥控模型飞机,并在模拟环境中提高遥控操纵技能,还可以帮助你测试新设计的飞机模型。 1.2 飞行动力学仿真 图注:基于 JSBSim 开发的 MATLAB/Simulink 仿真模块 1.2.1 JSBSim JSBSim 是一套开源的飞行动力学模型软件库,目前为 FlightGear 两大常用的飞行动力学引擎之一。此外,JSBSim 还被 OpenEaagles 模拟框架所使用,并可以单独被其它程序调用,以此来创建一些模拟工具。JSBSim 于 1996 年被开发并使用至今,可运行在 Linux、Mac OS X 及 Microsoft Windows 等多种操作系统平台上,它由 C++ 编写而成,使用 XML 解析配置文件。 1.2.2 YASim YASim 是 FlightGear 两大常用的飞行动力学引擎之一,它采用飞机的几何外形来生成其飞行特性。虽然这种方法只能是近似,但在获得初始结果后可以对飞行参数作进一步调整,以此来达到逼真的仿真效果。如果你已经获得飞机可靠的飞行数据(比如风洞数据),或是想生成超级真实的仿真模型,那么 JSBSim 应该是更好的选择。但如果你手中缺乏飞行数据,只知道飞机的几何模型,那么 YASim 则能提供可以满足绝大多数仿真需求的解决方案。此外,YASim 还包含直升机飞行动力学模型。 1.3 飞行性能分析 图注:OpenRocket Photo Studio生成的探空火箭云层穿越想象图 1.3.1 XFLR5 XFLR5 是一个在低雷诺数下翼型、机翼和飞机的分析工具,使用 Xfoil(用于分析翼型气动力的共享软件,由 MIT 航空航天系的 Prof. Mark Drela 和 H. Youngren 开发)作为求解器,QT 开发用户界面。 其主要功能包括: 基于 Xfoil 翼型分析程序的直接和逆向分析能力; 基于升力线法、涡格法和 3D 面元法的机翼设计和分析。 XFLR5 v6 版本引入了模型飞机的稳定性分析。 1.3.2 OpenRocket OpenRocket 是一款功能强大的模型火箭仿真软件,你可以用它设计你的模型火箭,然后对其进行模拟试飞,得到其仿真性能参数,并加以改进。OpenRocket 包括以下主要功能: 六自由度飞行仿真 自动设计优化 实时高度、速度及加速度仿真显示 对火箭串并联级的支持 跨平台(基于 Java) OpenRocket 以 GPL 开源协议发布,这意味着你可以自由地使用它。正如其它开源软件一样,OpenRocket 提供完整的项目源代码(由 Java 语言编写而成),这使得感兴趣的模型火箭爱好者可以理解其内部运作机理,并对其进行功能扩展。 1.3.3 Sumo Sumo 是由一位在 皇家理工学院(位于瑞典首都斯德哥尔摩)飞行动力学实验室工作的研究员基于 C++ 开发的一款飞行器建模与网格生成工具软件。 Sumo 能够快速生成飞机的几何模型,并自动对其表面进行网格划分。但它并不是一套 CAD 系统,而是一个简单易用的画板,专门用于飞机的外形结构建模。Sumo 发型版本中自带一款叫做 Scope 的气动弹性可视化工具,用于显示流体势能求解器 dwfs 生成的分析结果(如飞机表面数据、颤振振型及飞行轨迹)。另外,Scope 还能读取 NASTRAN 数据文件、模型分析结果和动画本征模态形式。 第二篇 航天工具集 图注:航天先驱“罗伯特·戈达得”和他的名言 2.0 内容概述 本篇将对开放航天工具进行分类归纳, 由于笔者现今从事航天学方面的研究工作,所以接触的航天工具软件比航空更加广泛,其中一些工具早在几年前已经有所了解,但出于时间和兴趣的关系没有深入研究。 本篇含有三部分内容,但其实每部分介绍的工具软件在功能上存在着交叉。比如 Orbiter 被划分在了 2.1 航天交互式仿真,该部分内容主要收集具有很强人机交互性的航天仿真软件,但 Orbiter 的功能并不仅限于此,其内部包含着丰富的航天动力学理论知识。之所以进行这样的分类,是因为各款工具软件有着功能侧重点之分,需体现出它们的功能特色及主要用途。 2.1 航天交互式仿真 本节将对 Orbiter 、EYES ON THE SOLAR SYSTEM 和 Celestia 三款极具交互性的航天仿真工具软件展开介绍,之所以将三者单独成章是因为它们具有较为相似的功能特性,即强大的交互能力以及令人惊艳的视觉效果。下图截自 EYES ON THE SOLAR SYSTEM,展示的是土星那美丽而又神秘的巨大光环。计算机图形显示技术的飞速发展使得我们在个人计算机上欣赏这一美景得以成为现实。 图注:EYES ON THE SOLAR SYSTEM 中的土星和它那美丽而又神秘的巨大光环 2.1.1 Orbiter Space Flight Simulator Orbiter 是一款功能异常强大的免费太空飞行模拟器,它可以带你冲破卡门线,驶入浩瀚的星空,体味驾驶宇宙飞船的快感。Orbiter 的核心部分由 Dr. Martin Schweiger 团队开发,第一个版本于 2000 年 11 月 27 日发布,最新稳定版本为 Orbiter 2016。通常,官方发布的 Orbiter 版本只是基础版(Base Edition),用户要想获得绝佳的飞行体验还需要下载第三方扩展插件,如 DanSteph 开发的 OrbiterSound,及社区开发用于支持 DirectX9 图形渲染的 D3D9Client 客户端。 Orbiter 能够十分真实地模拟航天器在轨运行的轨迹,这源于隐藏在视觉背后的航天动力学理论知识。当用户驾驶飞船翱翔在太阳系时,实际上是沉侵于太阳强大的引力场中。 更多关于 Orbiter 的介绍,可跳转小编的另一篇博文:Orbiter 模拟航天入门攻略 - Ch00。 2.1.2 EYES ON THE SOLAR SYSTEM Eyes on the Solar System 是一个包含了众多 NASA 真实航天任务数据的三维仿真环境。你可以用 Eyes 在自己的电脑上畅游太阳系:登上小行星,和“旅行者”号一起飞向太阳系的边缘,并实时观看整个太阳系的运动情况。总之,在 Eyes 的虚拟世界里,所有操作都取决于你,空间和时间任由你掌控。而以这种前所未有的方式探索太阳系,只需你点击 “Launch” 按钮,或是选择一个特定的任务模块即可。 2.1.3 Celestia Celestia 是一款由 Chris Claurel 主导开发的开源天文软件,以 OpenGL 为三维图形引擎,跟据 JPL/SPICE 星历表模拟宇宙中的各种天体。 通过 Celestia,用户不仅可以鸟瞰地球,还可以畅游太阳系,以及其它多达 10 万颗星体,甚至是银河系以外的星座。在 Celestia 中,你可以远观星云,也可以近看飞行器,所有的查看和缩放都非常平滑。 Celestia 包含了巨大的天文数据库,恒星、行星、卫星、彗星以及太空飞船。如果自带的这些天体模型还满足不了你的话,你可以从 Celestia 相关社区下载并安装扩展插件。当你在 Celestia 中飞行时,不会受到速度、方向及时间的限制,可以以任何角度观赏小至人造卫星、大至星系的各种天体。 Celestia 是在 GPL 开源许可协议下发布的自由软件,目前已有 Microsoft Windows、Mac OS X 和 Linux 发行版本。此外,NASA 和 ESA 已将 Celestia 用于教育和推广项目,并将其作为轨道分析软件的接口。 2.2 航天动力学仿真 本节将对几款重量级的航天动力学仿真工具展开介绍,它们绝大多数是开源的,而且功能十分强大。此外,互联网上存在很多开放的航天动力学仿真工具,但笔者并未将它们一一囊括在本节。这样做的原因有很多,最主要的原因是很多工具既不成熟也不完整,而且大多数以库的形式存在,对用户自身的编程能力及专业要求过高。 航天动力学的主要任务是对航天器的轨道特性进行分析,传统的开普勒体系和牛顿力学并不能精确地反应真实的情况,所以考虑各种摄动力对航天器的影响显得尤为重要。下图截自 GMAT,是对考虑地球非球形引力摄动的 LEO 圆轨道所做的长时间预报仿真,可以很明显地看出,该轨道的升交点赤经在地球非球形引力摄动的长时间作用下发生了很大的漂移。 图注:考虑地球非球形引力摄动的LEO圆轨道预报仿真 2.2.1 General Mission Analysis Tool GMAT (General Mission Analysis Tool) 是一套由 NASA 戈达德太空飞行中心 主导开发的通用航天任务仿真工具,作为一款开源的通用航天任务分析仿真软件, 其功能涵盖了基本的航天任务分析需求,如轨道设计、轨道优化、飞行任务分析、星座设计及行星际飞行仿真等。GMAT 的仿真精度可以与 AGI/STK 相媲美,足以将其直接应用于通用航天任务的分析与仿真工作之中。 GMAT 由 GSFC 从 2002 年开始开发。 随后在NASA的领导下,Thinking System, Inc 公司、 Computer Sciences Corporation 公司和 Honeywell Technology Solutions, Inc 公司参与了该软件的开发,目前 NASA 仍在招商开源伙伴合作商参与该项目的进一步研发。 GMAT 的主要特性包括: 高仿真度航天动力学模型; 图形和报表生成; 任务优化及目标定位; MATLAB & Python 编程接口; Apache License Version 2.0 开源许可协议; 跨平台:支持 Windows、MacOS X & Linux; 内建脚本编程; 用户自定义函数; 以及二次开发等。 当前最新版本为 2018 年 5 月发布的 GMAT R2018a。经过十多年的持续开发,GMAT 的 用户手册 已经相当完善,但由于文档皆用英文撰写,所以学习起来存在一定的语言障碍。 2.2.2 Orbit Determination Toolbox ODTB (Orbit Determination ToolBox) 是由 NASA 戈达德太空飞行中心 的导航与任务设计部门(Navigation & Mission Design branch at NASA GSFC)开发的一款航天器高级任务仿真分析定轨工具箱,基于 MATLAB 环境和 Java 语言实现,可用于航天任务设计的概念研究、方案分析和早期设计等阶段,特别适用于编队飞行及系统研究。ODTB 的底层构架相当灵活,使得高级用户可以在此基础之上开发自己的导航算法及仿真程序 ODTB 的核心功能由一系列预估指令实现,并辅以蒙特卡洛(Monte Carlo)数据模拟、线性协方差分析及普通水平的测量处理功能。目前,ODTB 的主要功能逐渐移植到了 GMAT 。 2.2.3 PreviSat: Satellite Tracking For Everyone PreviSat 是一款通过解析由美国太空监视网(Space Surveillance Network,SSN)发布并定期更新的“两行轨道根数”(Two-Line Element,TLE)实现卫星轨道预报及跟踪的开源航天仿真工具,其用户界面友好,可同时对多达数百个在轨目标的 TLE 参数进行解析。 TLE ANALYSER 内部使用来自北美空防司令部(North American Air Defense Command,NORAD)开发的 SGP4(Simplified General Perturbations Models,SGP4)和 SDP4 模型进行轨道预报,能较为精确地预报 TLE 编目卫星下一时间段的轨道位置。 2.2.4 Celestlab Celestlab 是由 CNES (Centre National d Etudes Spatiales - French Space Agency,法国宇航局) 基于 Scilab 开发的轨道力学工具箱,可对多种航天任务进行轨迹分析及轨道设计。 工程师们可用 Celestlab 完成轨道预报、姿态计算、初步轨道机动计算、参考系转换及坐标变换等初步任务设计分析工作,其中的函数分为下面几种类型: 坐标及参考系:定义参考系,时间尺度,坐标类型等; 几何形状及事件:计算轨道几何形状及其相关事件(地面站可见性等); 星际航行:星际航行和三体问题; 数学:数学函数; 模型:大气密度模型,日月位置等; 轨道特征:太阳同步轨道,回归轨道,冻结轨道,轨道根数的漂移等; 相对运动:用 C-W Hill 方程分析航天器相对运动轨迹; 轨道及机动:轨道预报和轨道机动计算; 工具集:各种实用工具及多目标函数。 2.2.5 STELA STELA (Semi-analytic Tool for End of Life Analysis,半解析全寿命分析工具) 是一款由 CNES (Centre National d Etudes Spatiales - French Space Agency,法国宇航局) 开发并维护的轨道寿命分析软件,用于支持 FSOA(French Space Operations Act),用户可免费下载并使用此软件。 STELA 体现了对 LEO 和 GEO 轨道区域保护的普遍关注(轨道寿命及保护区与报废轨道的交叉问题),并给用户提供了与需求相容的实用评估工具。它基于半解析模型和保护区评估原则,提供了针对 LEO,GEO 和 GTO 有效地长期轨道预报功能,并会在运行过程中生成一份汇总计算结果的报告文件及一份星历文件。 STELA 软件能够:1) 对给定初轨的大气再入寿命进行迭代计算;2) 计算给定寿命 GEO 交叉区的规避问题;3) 对 GTO 进行概率模型分析;4) 计算航天器的平均横截面积;5) 转换 TLE 数据。 STELA 由 JAVA 语言编写而成,能运行在装有 JRE 1.6 及以上版本(Java Runtime Environment,Java 运行时环境)的 Windows、Linux 及其诸如 Sun-Solaris 等 Unix 平台上,并能作为 JAVA 库被用户调用。 2.2.6 Tudat Tudat (TU Delft Astrodynamics Toolbox) 是由荷兰代尔夫特理工大学航天工程学院航天动力学与航天任务研究组的教职工及学生开发并维护的 C++ 软件库集,它为用户提供了多种可用于航天动力学应用仿真的实用功能。 Tudat 是开源软件,采用 BSD-3-Clause 开源协议,用户可以自由下载使用。但较为不便的是,Tudat 开发团队并不发布编译好的二进制包供用户直接安装,而是只发布软件源码,想使用 Tudat 得先将其编译成可执行文件。 Tudat 分为 Tudat 内核(Tudat Core)和 Tudat 库(Tudat libraries)两大部分。其中 Tudat 内核只包含非常成熟的代码,功能较为有限。而 Tudat 库则大大扩展了 Tudat 内核的功能,虽然有些库可能存在一些未知的问题。 2.2.7 Orekit Orekit (ORbit Extrapolation KIT, Orekit) 是一套基于 Java 语言编写的底层航天动力学库,旨在为航天动力学应用程序的开发提供准确有效的底层算法支撑。Orekit 被设计为可以简单地应用在各种不同的背景之下,从快速地学习到具体的操作。作为工具库,Orekit 包含了基本的元素(轨道、日期、姿态及框架等)和多样的算法来处理这些元素(坐标转换、轨道预报及定位等)。 Orekit 是开源软件,用户可以同时下载到 .jar封装库和源码,以及相关文档和测试样例。Orekit 采用对商业友好的 Apache 开源许可协议,这意味着任何人都可以使用 Orekit 来构建其它任何程序,且不要求在用户开发的代码中附带任何说明。 自 2008 年发布以来,Orekit 的应用价值得到了世界范围的广泛认可,在一些大型的航天机构中得到了具体的应用,体现在以下方面: Orekit 已经成功被 法国宇航局 和 欧空局 用于自动转移装置(Automated Transfer Vehicle,ATV)的任务规划和国际空间站(International Space Station,ISS)交会对接调相期间的实时监测; Orekit 已于2011年被 法国宇航局 选为下一代航天飞行动力学系统,包括操作系统、学习系统和任务分析系统; Orekit 已经被诸如 Eumetsat 等商业公司用于学习及地面站系统的开发; Orekit 已经被 ISAT 用于培训。 2.2.8 SaVi SaVi (Satellite constellation Visualization)是一款人造卫星星座仿真软件,它具有对人造卫星(尤其是卫星星座)进行轨道预报和地面覆盖仿真分析的能力,并可以二维和三维的形式实现卫星星座可视化。 SaVi 的发行包自带诸如铱星、全球定位系统、伽利略导航系统及闪电通信卫星系统等多个卫星星座仿真示例,供用户学习使用。这从某种程度上弥补了其自身文档不足的缺陷。 SaVi 的运行依赖 Tcl/Tk 库,其三维渲染能力来自 Geomview,虽然 Geomview 并不是必须的,但它能帮助 SaVi 实现三维可视化。 SaVi 官方只发布能直接运行在 Unix 和 Linux 环境下的安装包,Windows 和 Mac OS X 用户需要通过自己编译源码的方式才能使用它。 SaVi 是自由软件,基于 BSD (Berkeley Software Distribution,BSD) 开源许可协议 发布,用户可以修改其代码进行二次发布,但必须得遵守 BSD 协议 的相关条款。 2.3 航天器轨迹优化 本节将介绍三款功能强大的开源航天器轨迹优化软件,其中全局优化软件 PaGMO 和通用航天任务分析软件 PyKEM 出自 欧空局的先进概念团队 (ESA Advanced Concepts Team,ACT) 之手,软件质量极高。下图是 PaGMO 求解 JPL 主办的第六届国际深空探测轨迹优化设计大赛题目得到的最优结果。 图注:使用 PaGMO 求解 JPL 主办的第六届国际深空探测轨迹优化设计大赛题目得到的最优结果 2.3.1 Trajectory Optimization Tool TOT (Trajectory Optimization Tool) 是一款由 Arrowstar 基于 MATLAB 环境开发的轨迹优化软件,它用于帮助 Orbiter 及 KSP 用户规划并实施星际转移。KSPTOT 的主要功能包括: 用 Lambert 求解器绘制 Porkchop图(即 C3 能量图),以帮助确定星际转移轨道的逃逸及到达时间; 用 Lambert 求解器获得的数据来确定最优双曲线逃逸轨道,并计算变轨需要的推力大小及方向(即矢量)。此外,还提供航天器初始逃逸轨道的点火地点; 计算最优行星飞越轨迹,以最小燃料消耗到达 KSP 中诸如 Moho,Eello 等难以造访的目标星体; 寻找最优的双脉冲轨道机动方案,以最小的燃料消耗实现轨道调整。 Arrowstar 最初为 Orbiter 开发了 OrbiterTOT 工具,但在 Orbiter TOT v2.1 发布后就未曾更新过,转而将 TOT 移植到 KSP。目前,KSPTOT 的最新发行版本为 KSPTOT v1.6.2,仍处于活跃开发状态。 2.3.2 PaGMO PaGMO (Parallel Global Multiobjective Optimizer, 并行全局多目标优化器),其 Python 绑定版本命名为 PyGMO。 PaGMO 的主要功能是为用户提供一个能够处理“广义岛屿模型”(Generalized Island Model)的通用并行计算引擎,它友好地为用户提供了大量的全局和局部优化算法及相关问题的求解方案。 PaGMO 最初由 欧空局的先进概念团队 (ESA Advanced Concepts Team,ACT) 开发,目的是为了帮助实现星际航行轨迹和航天器轨道转移设计过程的自动化。由于 PaGMO 同时发布其 Python 绑定版本,故用户可以使用 C++ 及 Python 语言实现自己的算法并解决问题。 2.3.3 PyKEM PyKEM 是一套专为星际航行或通用航天任务分析提供科学计算支持的基本工具库,基于 GPL 开源许可协议,由 欧空局的先进概念团队 (ESA Advanced Concepts Team,ACT) 开发。 PyKEM 由 C++ 编写而成,并通过 Boost.Python 实现对 Python 语言的绑定,其算法的执行效率是开发 PyKEM 库过程中考虑的主要因素。 PyKEM 库的核心功能是实现对多圈兰伯特问题、Sims-Flanagan 小推力描述模型、开普勒预报器及Taylor 积分器等进行高效的求解。 FAQ Q1. 如何联系作者? 可以通过以下方式联系作者: 微信:Spacefan E-mail:[email protected] QQ:516951770 Q2. 为什么文中的部分链接无法访问? 由于文中很多链接皆为国外网站,可能会被防火长城拦截,故无法访问。此外,诸如地域和网络类型等因素也可能会导致部分网站无法访问。对于无法访问的链接,读者可以采用翻墙的方式进行访问。至于如何翻墙,请自行解决。 © Copyright by Spacefan 2016~2019.","categories":[{"name":"专业技能","slug":"专业技能","permalink":"/categories/专业技能/"}],"tags":[{"name":"GMAT","slug":"GMAT","permalink":"/tags/GMAT/"},{"name":"航天","slug":"航天","permalink":"/tags/航天/"},{"name":"开源","slug":"开源","permalink":"/tags/开源/"},{"name":"航空","slug":"航空","permalink":"/tags/航空/"},{"name":"仿真","slug":"仿真","permalink":"/tags/仿真/"},{"name":"FlightGear","slug":"FlightGear","permalink":"/tags/FlightGear/"},{"name":"X-Plane","slug":"X-Plane","permalink":"/tags/X-Plane/"},{"name":"Plane-Maker","slug":"Plane-Maker","permalink":"/tags/Plane-Maker/"},{"name":"CRRCSim","slug":"CRRCSim","permalink":"/tags/CRRCSim/"},{"name":"JSBSim","slug":"JSBSim","permalink":"/tags/JSBSim/"},{"name":"OpenRocket","slug":"OpenRocket","permalink":"/tags/OpenRocket/"},{"name":"XFLR5","slug":"XFLR5","permalink":"/tags/XFLR5/"},{"name":"Sumo","slug":"Sumo","permalink":"/tags/Sumo/"},{"name":"Orbiter","slug":"Orbiter","permalink":"/tags/Orbiter/"},{"name":"NASA Eyes","slug":"NASA-Eyes","permalink":"/tags/NASA-Eyes/"},{"name":"Celestia","slug":"Celestia","permalink":"/tags/Celestia/"},{"name":"PreviSat","slug":"PreviSat","permalink":"/tags/PreviSat/"},{"name":"Celestlab","slug":"Celestlab","permalink":"/tags/Celestlab/"},{"name":"STELA","slug":"STELA","permalink":"/tags/STELA/"},{"name":"Tudat","slug":"Tudat","permalink":"/tags/Tudat/"},{"name":"Orekit","slug":"Orekit","permalink":"/tags/Orekit/"},{"name":"SaVi","slug":"SaVi","permalink":"/tags/SaVi/"},{"name":"KSPTOT","slug":"KSPTOT","permalink":"/tags/KSPTOT/"},{"name":"PaGMO","slug":"PaGMO","permalink":"/tags/PaGMO/"},{"name":"PyKEM","slug":"PyKEM","permalink":"/tags/PyKEM/"}]},{"title":"Hexo 添加 MathJax 数学公式渲染","slug":"hexo-MathJax","date":"2018-06-27T13:30:00.000Z","updated":"2019-02-27T15:22:27.211Z","comments":true,"path":"2018/06/27/hexo-MathJax/","link":"","permalink":"/2018/06/27/hexo-MathJax/","excerpt":"最近想在博客上写些带有公式的文章,但却发现 Hexo 渲染公式的问题让人十分恼火。本着不怕折腾的精神,看了很多博文,也尝试可好几种解决方案,都以失败告终。今天,终于大功告成,虽然针对整个 Hexo 的完美解决方法仍需要详细探讨,但适用于 Freemind 主题的详细解决方案已然寻得。","text":"最近想在博客上写些带有公式的文章,但却发现 Hexo 渲染公式的问题让人十分恼火。本着不怕折腾的精神,看了很多博文,也尝试可好几种解决方案,都以失败告终。今天,终于大功告成,虽然针对整个 Hexo 的完美解决方法仍需要详细探讨,但适用于 Freemind 主题的详细解决方案已然寻得。 1. 添加 MathJax 支持 向 hexo_root\\themes\\freemind\\layout\\_partial 文件夹中添加 mathjax.ejs 文件: 1234567891011121314151617181920212223<script type=\"text/x-mathjax-config\"> MathJax.Hub.Config({ menuSettings: { zoom: \"None\" }, showMathMenu: false, jax: [\"input/TeX\",\"output/CommonHTML\"], extensions: [\"tex2jax.js\"], TeX: { extensions: [\"AMSmath.js\",\"AMSsymbols.js\"], equationNumbers: { autoNumber: \"AMS\" } }, tex2jax: { inlineMath: [[\"\\\\(\", \"\\\\)\"]], displayMath: [[\"\\\\[\", \"\\\\]\"]] } });</script><script type=\"text/javascript\" src=\"//cdnjs.cloudflare.com/ajax/libs/mathjax/2.6.1/MathJax.js\"></script></script> 向 hexo_root\\themes\\freemind\\layout\\_partial\\after_footer.ejs 文件中添加如下代码:123<% if (page.mathjax){ %><%- partial('mathjax') %><% } %> 向站点配置文件 hexo_root\\_config.yml 中添加如下设置:12345# MathJax Supportmathjax: enable: true per_page: false cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML 2. 更改默认渲染引擎 卸载 Hexo 默认的 Markdown 渲染插件 hexo-renderer-marked:123$ npm uninstall hexo-renderer-marked --saveor$ npm un hexo-renderer-marked --save 安装新的增强型 Markdown 渲染插件 hexo-renderer-kramed:123$ npm install hexo-renderer-kramed --saveor$ npm i hexo-renderer-kramed --save 并再次向站点配置文件 hexo_root\\_config.yml 中添加如下设置:12345678kramed: gfm: true pedantic: false sanitize: false tables: true breaks: true smartLists: true smartypants: true 3. 文章启用 MathJax 前面的方法允许文章选择性加载 MathJax 渲染公式,在每篇文章头部添加 mathjax: true 即选择使用 MathJax 渲染公式。如果不添加,则本篇文章不加载 MathJax 渲染公式,如此可以节约资源,增加网页访问速度。本文头部设置如下:1234567891011---title: Hexo 添加 MathJax 数学公式渲染date: 2018-06-27 21:30:00tags: Hexo教程categories: Hexo建站description: \"Hexo Freemind 主题使用 MathJax 渲染公式入门指南\"shadow: truemathjax: truefeature: /images/hexo.jpgtoc: true--- 4. 公式显示效果测试 行内公式测试:f(x)=ax+b,\\sqrt{\\frac{a^2+b^2}{a^2-b^2}} 。注意,根据 hexo-renderer-marked 说明,行内公式格式为:12`$f(x)=ax+b$` `$\\sqrt(\\frac{a^2+b^2}{a^2-b^2})$` 若想在行内显示$some code$符号,格式如下:1` $some code$ ` 进一步,若想在行内显示$$或者$$,格式如下:12` $$ `\\$\\$ 行间公式测试1: H=-\\sum_{i=1}^N (\\sigma_{i}^x \\sigma_{i+1}^x+g \\sigma_{i}^z)行间公式测试2(换行测试,用 \\ 可正常换行):1234567$$f(n) = \\begin{cases} \\frac{n}{2}, & \\text{if } n\\text{ is even} \\\\ 3n+1, & \\text{if } n\\text{ is odd} \\end{cases}$$ f(n) = \\begin{cases} \\frac{n}{2}, & \\text{if } n\\text{ is even} \\\\\\ 3n+1, & \\text{if } n\\text{ is odd} \\end{cases}行间公式测试3(换行测试,用 \\\\ 代替 \\ 也可实现换行):123456789$$f(n) = \\begin{cases} \\frac{n}{2}, & \\text{if } n\\text{ is even} \\\\\\ 3n+1, & \\text{if } n\\text{ is odd} \\end{cases}$$$$f(x): \\begin{cases} x, x>0 \\\\\\ -x,x<0 \\end{cases}$$ f(n) = \\begin{cases} \\frac{n}{2}, & \\text{if } n\\text{ is even} \\\\\\ 3n+1, & \\text{if } n\\text{ is odd} \\end{cases}f(x): \\begin{cases} x, x>0 \\\\\\ -x,x","categories":[{"name":"Hexo建站","slug":"Hexo建站","permalink":"/categories/Hexo建站/"}],"tags":[{"name":"Hexo","slug":"Hexo","permalink":"/tags/Hexo/"},{"name":"MathJax","slug":"MathJax","permalink":"/tags/MathJax/"}]},{"title":"这个星球上最强大的开源数学软件","slug":"sage-intro","date":"2017-10-27T16:30:00.000Z","updated":"2019-02-28T13:28:33.690Z","comments":true,"path":"2017/10/28/sage-intro/","link":"","permalink":"/2017/10/28/sage-intro/","excerpt":"1. 基本简介SageMath 是一款由 William A. Stein 主导开发的基于 GPL 协议的开源数学软件。它使用 Python 作为通用接口,并将现有的许多开源软件包整合在一起,构建一个统一的计算平台,如 NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R 以及 更多。SageMath 的目标是创建一个有活力的自由开源软件以替代 Magma,Maple,Mathematica 和 MATLAB。","text":"1. 基本简介SageMath 是一款由 William A. Stein 主导开发的基于 GPL 协议的开源数学软件。它使用 Python 作为通用接口,并将现有的许多开源软件包整合在一起,构建一个统一的计算平台,如 NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R 以及 更多。SageMath 的目标是创建一个有活力的自由开源软件以替代 Magma,Maple,Mathematica 和 MATLAB。 2. 功能概览SageMath 的功能异常强大,官方介绍中有这么一句:“这款开源软件的支持者称 SageMath 能够完成任何事情,从 12 维物体到计算全球变暖效应数学模型中的降雨量。” SageMath 采用浏览器作为 GUI 界面,融入了云计算的思想,可以在线使用 SageMath Cloud,你再也无需为了完成一次作业而安装十几个 Gb 大的 MATLAB 了,推荐大家去体验。 3. 快速开始软件下载访问 Download,快速开始跳转 Quickstart,详细参考文档见 Doc。此外,中文入门文档见 男单 618 - Sage Tutorial 中文版 或 Lainme - Sage Tutorial 中文版。最后附上 William A. Stein 关于其为何创建 SageMath & SageMath Cloud 项目初衷的视频(若无法观看,请自行爬墙 SageMath — Open source is ready to compete with Mathematica for use in the classroom,或者访问 SageMath - 地球上最强大的开源数学软件)。","categories":[{"name":"开源世界","slug":"开源世界","permalink":"/categories/开源世界/"}],"tags":[{"name":"SageMath","slug":"SageMath","permalink":"/tags/SageMath/"},{"name":"Python","slug":"Python","permalink":"/tags/Python/"},{"name":"IPython","slug":"IPython","permalink":"/tags/IPython/"},{"name":"NumPy","slug":"NumPy","permalink":"/tags/NumPy/"},{"name":"SciPy","slug":"SciPy","permalink":"/tags/SciPy/"},{"name":"R","slug":"R","permalink":"/tags/R/"},{"name":"数学软件","slug":"数学软件","permalink":"/tags/数学软件/"},{"name":"开源软件","slug":"开源软件","permalink":"/tags/开源软件/"}]},{"title":"GMAT R2017a 发布","slug":"GMAT2017a","date":"2017-07-29T12:00:00.000Z","updated":"2019-02-28T00:01:45.801Z","comments":true,"path":"2017/07/29/GMAT2017a/","link":"","permalink":"/2017/07/29/GMAT2017a/","excerpt":"R2017a 简要说明经过一年多的开发,R2017a 终于 2017 年 7 月 18 日在 SF 上发布,虽然官方网站并未未对此次发布作任何说明,但通过版本注释可以获得 R2017a 的新特性。此外,还可通过访问 开发面板 了解 R2017a 开发记录及 Bug 列表。下面对 Release Notes 作简单翻译。 R2017a 新特性1. 定轨能力强化 定轨方面,R2017a 增加了如下新功能: 新增了对三种数据类型的处理支持:1) GPS 导航状态矢量 (GPS_PosVec);2) 距离测量数据 (Range);3) 距离变化率数据 (RangeRate)。注意,这三种数据类型都经过反复测试,但只有 DSN 距离变化率数据通过了应用级测试,即 DSN 距离变化率数据对于 GMAT 来说是可靠的数据。","text":"R2017a 简要说明经过一年多的开发,R2017a 终于 2017 年 7 月 18 日在 SF 上发布,虽然官方网站并未未对此次发布作任何说明,但通过版本注释可以获得 R2017a 的新特性。此外,还可通过访问 开发面板 了解 R2017a 开发记录及 Bug 列表。下面对 Release Notes 作简单翻译。 R2017a 新特性1. 定轨能力强化 定轨方面,R2017a 增加了如下新功能: 新增了对三种数据类型的处理支持:1) GPS 导航状态矢量 (GPS_PosVec);2) 距离测量数据 (Range);3) 距离变化率数据 (RangeRate)。注意,这三种数据类型都经过反复测试,但只有 DSN 距离变化率数据通过了应用级测试,即 DSN 距离变化率数据对于 GMAT 来说是可靠的数据。 扩展卡尔曼滤波器算法经小范围测试和归档后形成的 alpha 版本现在可用于实验性质的使用。 此插件可用,但默认情况下处于关闭状态。要使用它,请在启动文件中启用 “libEKF” 插件。 增加了二级数据编辑功能,此功能允许您选择未在估计状态更新中使用的观测值。 2. STK .e 格式星历预报器 GMAT 现在支持使用 AGI 的 .e 星历文件格式的预报器。 有关更多信息,请参阅 Propagator 参考。 3. 文件管理工具 GMAT 现在可以使用 Python 文件管理器管理经验数据更新。该实用程序允许用户轻松更新闰秒、EOP、空间天气和其他文件,并可选择归档旧版本。有关详细信息,请参阅配置 GMAT 数据文件部分。运行该实用程序时,用户将看到如下所示的输出(以下数据仅是输出的部分摘要)。 1234567891011121314151617181920212223242526--------UPDATING GMAT LEAP SECOND FILE ------------------------------Process Began At 2017-06-01-11:23:55--------Downloading tai-utc.dattai-utc.dat downloaded successfully tai-utc.dat archived successfully to 2017-06-01-11h23m55s_tai-utc.dattai-utc.dat updated successfullyProcess Finished At 2017-06-01-11:23:55--------UPDATING GMAT EOP FILE --------------------------------Process Began At 2017-06-01-11:23:55--------Downloading eopc04_08.62-noweopc04_08.62-now downloaded successfully eopc04_08.62-now archived successfully to 2017-06-01-11h23m57s_eopc04_08.62-noweopc04_08.62-now updated successfully---------UPDATING SPICE LEAP SECOND FILE -----------------------Process Began At 2017-06-01-11:23:57--------Downloading naif0011.tlsSPICELeapSecondKernel.tls downloaded successfully--------Downloading naif0012.tlsSPICELeapSecondKernel.tls downloaded successfullySPICELeapSecondKernel.tls archived successfully to 2017-06-01-11h24m00s_SPICELeapSecondKernel.tlsSPICELeapSecondKernel.tls updated successfullyProcess Finished At 2017-06-01-11:24:00 4. CSALT 独立库与工具箱配置工具 GMAT 现在有一个独立的 C++ 库,用于通过搭配 CSALT解决最优控制问题。 该库经过了充分测试,可用于应用程序,目前正在与 GMAT 集成。 CSALT 库不通过 GMAT 接口公开,但熟悉 C++ 编程的用户现在可以使用 CSALT 解决最优控制问题。源代码将通过 SourceForge 提供。 CSALT 正在整合进入 GMAT,并计划在下一个 GMAT 版本发布时完成。有关 CSALT 库的更多信息,请参阅随 GMAT 分发的 docs 文件夹中名为 CSALT_CollocationBenchmarkingResults.pdf 的论文。 5. API 接口雏形 一个还处于雏形阶段的 API 正在紧密锣鼓的开发中, 不可在生产环境中视同,只在 SourceForge 中单独分发,并标注为 “Alpha”。API 使用 SWIG 将 GMAT 的功能提供给多种语言。目前,已经在 MATLAB 中调用的 JAVA 接口上进行了初步测试。下面的代码片段展示了如何通过 MATLAB 调用 JAVA 接口来计算作用在航天器上的轨道加速度。还执行了一些 Python 接口测试。 1234567891011121314151617181920212223242526272829303132% Load GMATscriptFileName = fullfile(pwd, 'gmat.script');[myMod, gmatBinPath, result] = load_gmat(scriptFileName);% Get the SolarSystem object from GMATss = myMod.GetDefaultSolarSystem();% Prepare the force model to be used for dynamicsfm = myMod.GetODEModel('DefaultProp_ForceModel');state = gmat.GmatState(6+6^2);fm.SetSolarSystem(ss); % Set solar system pointer in force modelfm.SetState(state); % Provide force model with the state placeholder% Create new Spacecraftsat = gmat.Spacecraft('Sat'); % Create PropagationStateManager to manage calculation of derivativespropManager = gmat.PropagationStateManager();propManager.SetObject(sat); % Add sat PropagationStateManagerpropManager.SetProperty('AMatrix', sat); % Want to calculate JacobianpropManager.BuildState(); % Tell force model to use propmanagerfm.SetPropStateManager(propManager);fm.UpdateInitialData(); % Update model with changesfm.BuildModelFromMap(); % Sets up the models in the force modelstate = gmat.gmat.convertJavaDoubleArray(x(:,tIndex));% Compute the orbital accelerations including variational termsfm.GetDerivatives(state, t(tIndex), 1); % Calculate derivativesderiv = fm.GetDerivativeArray(); % Get calculated derivativesderivArray = gmat.gmat.convertDoubleArray(deriv, 42); R2017a 性能改进 用户现在可以通过命令行界面定义 GMAT 启动和日志的文件名称和位置。 这在同时运行多个 GMAT 会话或具有复杂的自定义文件配置时非常有用。 用户现在可以用米为单位编写 STK ephem 文件(之前只支持 km)。 用户现在可以编写没有离散事件边界的 STK ephem 文件。 R2017a 兼容性变化 GMAT 现在需要 Python 3.6.x。 Schatten 文件不再需要文件顶部的 “PREDICTED SOLAR DATA” 关键字。 GMAT 用的多个数据文件的名称和位置不再是硬编码,它们的名称和位置在 bin 目录中的文件 gmat_startup_file.txt 中设置。如果用户使用自定义启动文件,则必须在启动 GMAT 之前将以下行添加到启动文件中。请注意,与 GMAT 一起分发的启动文件已经添加了这些设置。这种向后兼容的模式仅影响自定义其启动文件的用户。 12345EARTH_LATEST_PCK_FILE = PLANETARY_COEFF_PATH/earth_latest_high_prec.bpcEARTH_PCK_PREDICTED_FILE = PLANETARY_COEFF_PATH/SPICEEarthPredictedKernel.bpcEARTH_PCK_CURRENT_FILE = PLANETARY_COEFF_PATH/SPICEEarthCurrentKernel.bpcLUNA_PCK_CURRENT_FILE = PLANETARY_COEFF_PATH/SPICELunaCurrentKernel.bpcLUNA_FRAME_KERNEL_FILE = PLANETARY_COEFF_PATH/SPICELunaFrameKernel.tf 为了整个系统的一致性,导航功能的语法已经发生了重大变化。有关详细信息,请参阅 Tracking Data Types for OD 中的 Deprecated Measurement Type Names 部分内容。 © Copyright by Spacefan 2017~2019.","categories":[{"name":"专业技能","slug":"专业技能","permalink":"/categories/专业技能/"}],"tags":[{"name":"GMAT","slug":"GMAT","permalink":"/tags/GMAT/"},{"name":"Space","slug":"Space","permalink":"/tags/Space/"},{"name":"航天","slug":"航天","permalink":"/tags/航天/"},{"name":"任务分析","slug":"任务分析","permalink":"/tags/任务分析/"},{"name":"轨道设计","slug":"轨道设计","permalink":"/tags/轨道设计/"},{"name":"轨迹优化","slug":"轨迹优化","permalink":"/tags/轨迹优化/"},{"name":"NASA","slug":"NASA","permalink":"/tags/NASA/"},{"name":"GSFC","slug":"GSFC","permalink":"/tags/GSFC/"}]},{"title":"ORBITER 2016 发布","slug":"orbiter2016","date":"2016-08-31T15:11:09.000Z","updated":"2019-02-27T15:31:01.638Z","comments":true,"path":"2016/08/31/orbiter2016/","link":"","permalink":"/2016/08/31/orbiter2016/","excerpt":"ORBITER 2016 基本说明 经过长达 6 年之久的开发,ORBITER 2016 正式版本已于今日发布,小伙伴们又可以捣鼓捣鼓了。啥?还不知道 ORBITER 是神马东东?赶快跳转 ORBITER 模拟航天入门攻略 - Ch00。 ORBITER 2016 相对于 ORBITER 2010 有许多改进,但最为重大的改进当属高清数字高程地形(DEM)的加入,这使得行星地表看起来更加清晰,用户体验更加逼真。 此外,ORBITER 2016 重写了物理引擎,增强了碰撞检测,改进了默认机型 Delta-glider MK.4 。废话少说,上视频,直观地感受一下新版本在模拟航天方面实实在在看得见的进步。","text":"ORBITER 2016 基本说明 经过长达 6 年之久的开发,ORBITER 2016 正式版本已于今日发布,小伙伴们又可以捣鼓捣鼓了。啥?还不知道 ORBITER 是神马东东?赶快跳转 ORBITER 模拟航天入门攻略 - Ch00。 ORBITER 2016 相对于 ORBITER 2010 有许多改进,但最为重大的改进当属高清数字高程地形(DEM)的加入,这使得行星地表看起来更加清晰,用户体验更加逼真。 此外,ORBITER 2016 重写了物理引擎,增强了碰撞检测,改进了默认机型 Delta-glider MK.4 。废话少说,上视频,直观地感受一下新版本在模拟航天方面实实在在看得见的进步。 ORBITER 2016 高清演示 ORBITER 2016 功能简介 Martin 先生在更新 ORBITER 版本的同时,不忘更新 ORBITER 首页,Martin 先生列出了 9 个 ORBITER 的功能或特性,当然 ORBITER 的神奇并不仅仅局限于此。 © Copyright by Spacefan 2016~2019.","categories":[{"name":"模拟飞行","slug":"模拟飞行","permalink":"/categories/模拟飞行/"}],"tags":[{"name":"Space","slug":"Space","permalink":"/tags/Space/"},{"name":"ORBITER","slug":"ORBITER","permalink":"/tags/ORBITER/"},{"name":"模拟航天","slug":"模拟航天","permalink":"/tags/模拟航天/"}]},{"title":"ORBITER 模拟航天入门攻略 - Ch00","slug":"orbiter-intro","date":"2016-03-25T11:49:59.000Z","updated":"2019-02-27T15:31:32.341Z","comments":true,"path":"2016/03/25/orbiter-intro/","link":"","permalink":"/2016/03/25/orbiter-intro/","excerpt":"基本简介 ORBITER 是一款功能异常强大的免费太空飞行模拟器,它可以带你冲破卡门线,驶入浩瀚的星空,体味驾驶宇宙飞船的快感。 ORBITER 的核心部分由 Dr. Martin Schweiger 团队开发,第一个版本于 2000 年 11 月 27 日发布,最新稳定版本为 ORBITER 2016。通常,官方发布的 ORBITER 版本只是基础版(Base Edition),用户要想获得绝佳的飞行体验还需要下载第三方扩展插件,如 DanSteph 开发的 OrbiterSound,及社区开发用于支持 DirectX9 图形渲染的 D3D9Client 客户端。 ORBITER 能够十分真实地模拟航天器在轨运行的轨迹,这源于隐藏在视觉背后的航天动力学理论知识。当用户驾驶飞船翱翔在太阳系时,实际上是沉侵于太阳强大的引力场中。下面让我们用三个视频来更为直观地认识 ORBITER。","text":"基本简介 ORBITER 是一款功能异常强大的免费太空飞行模拟器,它可以带你冲破卡门线,驶入浩瀚的星空,体味驾驶宇宙飞船的快感。 ORBITER 的核心部分由 Dr. Martin Schweiger 团队开发,第一个版本于 2000 年 11 月 27 日发布,最新稳定版本为 ORBITER 2016。通常,官方发布的 ORBITER 版本只是基础版(Base Edition),用户要想获得绝佳的飞行体验还需要下载第三方扩展插件,如 DanSteph 开发的 OrbiterSound,及社区开发用于支持 DirectX9 图形渲染的 D3D9Client 客户端。 ORBITER 能够十分真实地模拟航天器在轨运行的轨迹,这源于隐藏在视觉背后的航天动力学理论知识。当用户驾驶飞船翱翔在太阳系时,实际上是沉侵于太阳强大的引力场中。下面让我们用三个视频来更为直观地认识 ORBITER。 A FILM BY TEX - ORBITER 2006-P1 EDITION ALR-4 - MISSION TO VENUS A FILM BY TEX - Jupiter Odyssey (: 肿么样! 有没有感觉到:高、大、上 :) 影响力 经过十多年的开发,ORBITER 日益成熟,在国内外得到了广大模拟飞行爱好者的青睐。在国外,ORBITER 已经广泛用于教学辅助,产生了巨大的反响。在 Yutube 上,众多 ORBITER 爱好者发布有相关的教学视频,帮助初学者快速进入角色。 ORBITER 的发展离不开强大的社区,其中最值得一提的是由 Tex 组建的官方论坛 ORBITER Forum。在这里中,众多 ORBITER 爱好者齐聚一堂,相互学习、相互帮助、协同开发,共同推动着 ORBITER 向前发展。 开放度 ORBITER 虽然可以免费获取,但它并不是一款开源软件,它的开放性体现在 SDK (Software Development Kits,软件开发套件)。通过 SDK 预设的 API,开发者可以进行二次开发,创建出各种各样属于自己的箭船、地景、星球、MFD 以及其它各种各样的插件。 任务类型 ORBITER 之所以受到广大模拟飞行爱好者的青睐,是因为其具有丰富的任务类型。你无需担心来自外星人的攻击,也无需为提高等级而“过关斩将”。你唯一需要做的就是自己设定好飞行任务,然后飞到太阳系中任何你想去的地方。通常情况下,用户可以在 ORBITER 中执行以下几类基本任务: 驾驶各色各样的飞行器奔向太空; 在太空中进行各种形式的轨道机动; 执行各种航天任务,如交会对接、太空行走(EVA)、载荷部署、空间目标捕获及空间站组建等,当然还有欣赏太空那迷人的美景; 进行星际航行,访问太阳系内的行星或卫星; 从太空返回并降落,当然最好是能安全降落。 内建航天器 ORBITER 基础版本含有丰富的内建航天器,包含真实世界中存在的航天器和概念航天器。 真实世界存在的航天器 1. “阿特兰蒂斯号” 航天飞机 (Space Shuttle Atlantis) 阿特兰蒂斯号 是美国航天飞机梯队中的一员,由 NASA 运行维护。由于航天飞机维修花费巨大,且安全系数较低,已于2011年退出历史舞台。在 ORBITER 中,阿特兰蒂斯号 航天飞机是唯一一架玩家可操作的、基于真实设计参数构建的飞行器模型。 2. “和平号” 空间站 (Space Station Mir) 和平号 空间站是前苏联发展的第三代空间站,象征着空间站走向实用阶段。前苏联解体后,和平号 空间站由俄罗斯接管,并超期服役至2001年,最终坠入太平洋。在 ORBITER 中,和平号 空间站并未坠毁,而是被放置在了一个近椭圆轨道。这样做的初衷是为了让 和平号 间站成为早期 ORBITER 版本中进行星际航行较好的出发点,当玩家驾驶着飞船与 和平号 空间站对接后,可以自动加注燃料,向更远的星际空间飞去。另外,玩家也可以从 和平号 空间站转移到最终的目标轨道。 3. 国际空间站 (International Space Station,ISS) 运行在与真实世界相同轨道上并组装完成的 国际空间站,包括当前已经取消安装计划的模块。 4. 哈勃太空望远镜 (Hubble Space Telescope,HST) 真实比列的 哈勃太空望远镜模型,在 ORBITER 中通常作为航天飞机的载荷。 5. 长期暴露装置 (Long Duration Exposure Facility,LDEF) LDEF 是 NASA 为研究空间环境对航天器性能影响作用机理而发射的实验卫星,在将近 6 年的暴露时间里,LDEF 经历了各种空间环境的作用,为 NASA 研究人员提供了宝贵的实验数据。和 哈勃太空望远镜 一样,LDEF 是 ORBITER 中航天飞机极佳的有效载荷之一。 概念航天器 1. Delta-glider MK.4 德尔塔 三角翼空天飞机是 ORBITER 经典的入门级飞行器,它十分容易操作,所以被 ORBITER 用作默认飞行器。有两种型号的 德尔塔,一种是 Delta-glider Mk.4 (DG),另一种是 Delta-glider-S MK.4 (DG-S)。DG-S 在 DG 的基础上加装了超燃发动机,使得其可以在高层大气进行超音速飞行。由于德尔塔的设计过程中采用了超高比冲的推进剂和超低燃料消耗率的发动机,所以它可以很轻松地实现单级入轨,并具备星际航行的能力。 2. Shuttle-A Shuttle-A 是 ORBITER 中的小型概念太空货运飞船,可以运输六个总重高达120吨的大型货箱。它没有气动操纵面,主要用于月球和火星测探。空载时,Shuttle-A 可以从地球起飞,并降落在地面上。但由于其缺乏气动升力,加上地球的引力和大气阻力,使得 Shuttle-A 从地面起飞、降落变得困难,且十分消耗燃料。 Shuttle-A 的货箱带有自动降落伞,因而可以在高层大气释放货物。Shuttle-A 的惯性大,空气动力学性能极差,致使其比 德尔塔更难在大气层内飞行。 3. Shuttle-PB Shuttle-PB 是 ORBITER 中的小型个人航天器,其敏捷性高,外形设计具有前瞻性。由于主要作为 SDK 样例供插件开发者参考,所以相对于 ORBITER 中的其它内建飞船,Shuttle-PB 缺乏具体的细节,如 2D/3D 座舱和动画显示功能。 4. Dragonfly Dragonfly 是 ORBITER 中为空间站组件而设计的一种构造复杂的载人航天运载器,它对多个子系统进行了仿真设计,其复杂度胜过 ORBITER 其它所有内建航天器。Dragonfly 作为 SDK 技术实现层面的绝佳示例,其源代码包含在 ORBITER/SDK 安装包内。Dragonfly 的飞行模型设计参数可以用当前的航天技术实现,所以称 Dragonfly 是一种接近现实的航天器。 5. Luna-OB1 Luna-OB1 是 ORBITER 中的一座科幻轮状月球轨道空间站,其设计灵感来自《2001: A Space Odyssey》片头中的 Space Station V。由于 Luna-OB1 以固定的旋转角速度运动,所以与其对接是一件极具挑战性的任务。 6. Carina Carina 是一种小型的概念卫星,在 ORBITER 中作为航天飞机的有效载荷,但目前还属于毫无用途的载荷类型。 操作复杂度 ORBITER 并不像多数商业化太空游戏,只具备十分粗糙的物理模型,其内部采用的是精确的航天动力学模型,包括 Kepler 二体轨道、非球形摄动(只考虑带谐项)、大气阻力摄动(高达 2000km)及太阳光压摄动。如果你想真正理解 ORBITER 的运行方式,需要有一定的轨道力学基础。 此外,虽然 ORBITER 可以连接飞行摇杆,但绝大多数操作需要使用快捷键,这在某种程度上也增加了 ORBITER 的入门难度。 总而言之,ORBITER 是一款十分严谨的太空飞行模拟器,掌握 ORBITER 需要大量的实践操作,以及对轨道力学的深刻理解。 文档完善度 ORBITER 经过十多年的发展,拥有数量相当可观的用户群,相关的教程也较为完善。除了官方发布的文档外(位于 ORBITER 安装根目录下的 \\Doc 子文件夹内),互联网上可以找到很多关于 ORBITER 的学习资料。但由于绝大多数教程由英文写成,且专业性较强,所以 ORBITER 的学习曲线仍然相当陡峭。 最后需要说明的是,要想成为一名顶级的 ORBITER 玩家,需要大量的时间和持久的耐心进行实践操作,在此过程中一定要坚持,不气馁、不放弃。永远记住,这是真正的太空模拟飞行,而不只是游戏。毕竟,我们选择在 ORBITER 中模拟飞行,不是因为它简单,而是因为它难。 © Copyright by Spacefan 2016~2019.","categories":[{"name":"模拟飞行","slug":"模拟飞行","permalink":"/categories/模拟飞行/"}],"tags":[{"name":"Space","slug":"Space","permalink":"/tags/Space/"},{"name":"ORBITER","slug":"ORBITER","permalink":"/tags/ORBITER/"},{"name":"模拟飞行","slug":"模拟飞行","permalink":"/tags/模拟飞行/"}]},{"title":"GMAT 入门攻略 - Ch00","slug":"GMAT-intro","date":"2016-03-14T16:25:41.000Z","updated":"2019-02-27T15:21:25.673Z","comments":true,"path":"2016/03/15/GMAT-intro/","link":"","permalink":"/2016/03/15/GMAT-intro/","excerpt":"基本情况 GMAT 是一套由 NASA 戈达德太空飞行中心(Goddard Space Flight Center, GSFC) 主导开发的通用航天任务仿真工具,作为一款开源的通用航天任务分析仿真软件, 其功能涵盖了基本的航天任务分析需求,如轨道设计、轨道优化、飞行任务分析、星座设计及行星际飞行仿真等。GMAT 的仿真精度可以与 AGI/STK 相媲美,足以将其直接应用于通用航天任务的分析与仿真工作之中。 项目起源 GMAT 为 G eneral M ission A nalysis T ool 的首字母缩写,由 GSFC 从 2002 年开始开发。 随后在 NASA 的号召下,Thinking System. Inc、Computer Sciences Corporation 以及 Honeywell Technology Solutions. Inc 等公司参与了该软件的开发,目前 NASA 仍在继续寻找开源伙伴合作参与该项目的进一步研发。","text":"基本情况 GMAT 是一套由 NASA 戈达德太空飞行中心(Goddard Space Flight Center, GSFC) 主导开发的通用航天任务仿真工具,作为一款开源的通用航天任务分析仿真软件, 其功能涵盖了基本的航天任务分析需求,如轨道设计、轨道优化、飞行任务分析、星座设计及行星际飞行仿真等。GMAT 的仿真精度可以与 AGI/STK 相媲美,足以将其直接应用于通用航天任务的分析与仿真工作之中。 项目起源 GMAT 为 G eneral M ission A nalysis T ool 的首字母缩写,由 GSFC 从 2002 年开始开发。 随后在 NASA 的号召下,Thinking System. Inc、Computer Sciences Corporation 以及 Honeywell Technology Solutions. Inc 等公司参与了该软件的开发,目前 NASA 仍在继续寻找开源伙伴合作参与该项目的进一步研发。 主要特性 GMAT 的主要特性包括: 高仿真度航天动力学模型; 图形和报表生成; 任务优化及目标定位; MATLAB & Python 编程接口; Apache License Version 2.0 开源许可协议; 跨平台:支持Windows/MacOS X/Linux; 内建脚本编程; 用户自定义函数; 以及二次开发等。 当前最新版本为2017年7月18日发布的 GMAT R2017a。经过十多年的持续开发,GMAT 的 用户手册 已经相当完善,但由于文档皆用英文撰写,所以学习起来存在一定的语言障碍。 © Copyright by Spacefan 2016~2019.","categories":[{"name":"专业技能","slug":"专业技能","permalink":"/categories/专业技能/"}],"tags":[{"name":"GMAT","slug":"GMAT","permalink":"/tags/GMAT/"},{"name":"Space","slug":"Space","permalink":"/tags/Space/"},{"name":"航天","slug":"航天","permalink":"/tags/航天/"},{"name":"任务分析","slug":"任务分析","permalink":"/tags/任务分析/"},{"name":"轨道设计","slug":"轨道设计","permalink":"/tags/轨道设计/"},{"name":"轨迹优化","slug":"轨迹优化","permalink":"/tags/轨迹优化/"},{"name":"NASA","slug":"NASA","permalink":"/tags/NASA/"},{"name":"GSFC","slug":"GSFC","permalink":"/tags/GSFC/"}]},{"title":"世界你好!","slug":"hexo-hello-world","date":"2016-03-14T16:25:00.000Z","updated":"2019-02-27T15:22:09.356Z","comments":true,"path":"2016/03/15/hexo-hello-world/","link":"","permalink":"/2016/03/15/hexo-hello-world/","excerpt":"很高兴使用 Hexo! 这是我的第一篇博文。查看 documentation 可以获取更多关于 Hexo 的信息。如果你在使用 Hexo 的过程中遇到问题,可以访问 troubleshooting 或者在 GitHub 上询问 Hexo 的作者。 快速开始创建新博文1$ hexo new \"My New Post\" 更多信息: Writing 运行服务1$ hexo server 更多信息: Server 生成静态文件1$ hexo generate","text":"很高兴使用 Hexo! 这是我的第一篇博文。查看 documentation 可以获取更多关于 Hexo 的信息。如果你在使用 Hexo 的过程中遇到问题,可以访问 troubleshooting 或者在 GitHub 上询问 Hexo 的作者。 快速开始创建新博文1$ hexo new \"My New Post\" 更多信息: Writing 运行服务1$ hexo server 更多信息: Server 生成静态文件1$ hexo generate 更多信息: Generating 部署至远程站点1$ hexo deploy 更多信息: Deployment","categories":[{"name":"Hexo建站","slug":"Hexo建站","permalink":"/categories/Hexo建站/"}],"tags":[{"name":"Hexo","slug":"Hexo","permalink":"/tags/Hexo/"}]}]}