目录

STK12与Python联合仿真一环境搭建

STK12与Python联合仿真(一):环境搭建

这个各大博主都有讲解,附上几个链接吧

@ 知乎 豆先生

@ CSDN 怎么会有不写代码的小朋友呢

1. python安装时一定要选择让pip在系统的环境变量里

2. 要记住自己Python的安装路径,后面有用

在STK的安装目录里找到:STK\bin\AgPythonAPI里面的agi.stk12-12.2.0-py3-none-any.whl

我的是 F:\STK\bin\AgPythonAPI

路径栏中输入cmd,表示在当前目录中打开命令行

https://i-blog.csdnimg.cn/blog_migrate/3cfa1344fcb0319a2136a3890d42faaa.png

输入 pip install <TAB> 然后 Enter安装(TAB键是自动补全,因为该目录下就这一个文件,所以会很轻易的自动补全)

https://i-blog.csdnimg.cn/blog_migrate/c9be70ac8aafdf8004259a2e030f3f76.png

其实STK也可以不配置,看个人喜好,按照官网的视频要求是要配置的

  1. 打开STK,如图,先把创建场景的弹窗关掉,然后点击Python的那个图标

    https://i-blog.csdnimg.cn/blog_migrate/1c1f1b1cee9ee36f89bf28b7d88e50a7.png

  2. 配置 Python路径,前文所说要记住自己Python路径的作用就有了

    https://i-blog.csdnimg.cn/blog_migrate/b242ffd606c76d6a1abd7cf974aedd0e.png

    这是我自己Python的路径,第一个路径选中Python.exe就对了

    https://i-blog.csdnimg.cn/blog_migrate/60a1e1291f3aee0ecefdc8b55ab60235.png

    第二个就是Scripts文件了,就在同一级目录,然后双击进去后点击确定就可以了

    https://i-blog.csdnimg.cn/blog_migrate/a0805245a656cd3b1332b97c69913543.png

    配置完之后Lunch就可以了,另外那两个勾我是都勾上的

    https://i-blog.csdnimg.cn/blog_migrate/3e57ad1dd1bea58db2ff2ddf780bf2bd.png

  3. 然后你就得到一个在软件里面的,狭小的notebook

    https://i-blog.csdnimg.cn/blog_migrate/f432578f236389432fdd3e99fd1472c3.png

  4. 先不管这个,先完成其他的配置,我们新建一个场景,随便起个名字

    File > New > Name任意 > OK

    https://i-blog.csdnimg.cn/blog_migrate/149ec426e1c8ce8690341b55743e8618.png

    进入的时间要卡一会,等一会就好了,进去后如下:

    https://i-blog.csdnimg.cn/blog_migrate/9774410ef733b925265d2fce47cef9f0.png

    先把插入的那个close掉

然后在Edit > Preference 里面找到 Intergrated Jupyter Notebooks for Python

https://i-blog.csdnimg.cn/blog_migrate/c9fd33a43ad48de40f2c5dbd0402a60b.png

注意这个localhost,每个人可能不一样,我们把他复制下来,打开你的浏览器,直接输进浏览器的地址行,回车进入

https://i-blog.csdnimg.cn/blog_migrate/3a4add7d639e32a282de0f1ab3649cc7.png

https://i-blog.csdnimg.cn/blog_migrate/6797ab857138db422a04aea57d04d89c.png

这里需要登录,不过没关系啊,我们按照他的说法,随便打开一个命令,输入 jupyter notebook list 找到localhost和你一样的那一个,这里我的是5281,然后把token复制下来(在命令行中,选中完成后右击一下即可完成复制)

https://i-blog.csdnimg.cn/blog_migrate/66b24a5453b598faae64eb930eeb0eb7.png

粘贴在这里

https://i-blog.csdnimg.cn/blog_migrate/68c54820ee6d4c787af44613fdc26b04.png

然后 New Password随便输入就可以了,123都行,点击下面的Log in and …

https://i-blog.csdnimg.cn/blog_migrate/38813372267156c15c141229770d2865.png

点击进入StarterScripy

就能看到舒适版的了

这个方法我自认为有点繁琐,而且路径不能自己定义,以下方法可以自己创建notebook并且链接上去

我们新建一个场景后,可以用如下方式打开Python 视窗

  1. View>Toolbars>Intergrate … (如图)

    https://i-blog.csdnimg.cn/blog_migrate/c5a576b7e44c68febc5f2b58e27e5d86.png

    然后,就会多出来这个

    https://i-blog.csdnimg.cn/blog_migrate/f93629e35c086d5e692afb29cd3313cc.png

    点一下那个Python的图标,就会弹出来了

    https://i-blog.csdnimg.cn/blog_migrate/feca3756aa0ae0d2fced3a15208387c0.png

    然后进入绿色已开启的笔记本,在最后一行加入STK_PID

    运行

    记住这个PID,这里是40556,每个人的可能不一样

    https://i-blog.csdnimg.cn/blog_migrate/b08d4b4ce215949bcf39e184bb6796d0.png

    然后,自己新建笔记本,我的方法是直接在想要放的路径中,打开cmd用ipython notebook

输入以下代码,要修改的就是那个STK_PID,这个是根据刚才那一步得到的

from agi.stk12.stkdesktop import STKDesktop
from agi.stk12.stkobjects import *
from agi.stk12.stkutil import *
from agi.stk12.vgt import *
import os
STK_PID = 40556  # 根据自己刚刚得到的PID
stk = STKDesktop.AttachToApplication(pid=int(STK_PID))
# stk = STKDesktop.StartApplication(visible=True) #using optional visible argument
root = stk.Root
print(type(root))

https://i-blog.csdnimg.cn/blog_migrate/7f8b2e3a8db8998ed2207c1189e9cc62.png

如果允许成功了,就说明连接到STK了

由于我们已经创建了场景

因此,我们只要让代码连结现有的场景就可以了

scenario = root.CurrentScenario # 链接当前场景
scenario.SetTimePeriod('Today','+24hr') # 日期设置为今天
root.Rewind() # 复位

新建两个简单的组件

# 添加地面站
target = AgTarget(scenario.Children.New(AgESTKObjectType.eTarget,"GroundTarget"))
target.Position.AssignGeodetic(50,-100,0)
# 添加卫星
satellite = AgSatellite(root.CurrentScenario.Children.New(AgESTKObjectType.eSatellite,"LeoSat"))
print(scenario.StartTime)
print(scenario.StopTime)
root.ExecuteCommand('SetState */Satellite/LeoSat Classical TwoBody "' + 
                    str(scenario.StartTime) + '" "' + str(scenario.StopTime) + 
                    '" 60 ICRF "' + str(scenario.StartTime) + '" 7200000.0 0.0 90 0.0 0.0 0.0');

STK会同步更新组件

https://i-blog.csdnimg.cn/blog_migrate/f3ec38ac75667333e7618e9859849ef9.png