Engee 文档
Notebook

模拟降落伞打开算法

在本演示中,我们将为好奇号漫游车建立一个降落伞模型。它是第三代漫游车 设计用于探索火星上的盖尔陨坑,是美国宇航局火星科学实验室任务的一部分。

该漫游车是一个自主化学 是一个自主化学实验室,其体积和重量都是之前的 精神号 "和 "机遇号 "探测器大几倍,也重几倍。与许多其他飞行器一样,它的降落伞使用了 根据高度自动打开的算法、 以及确定其速度。

降落伞的展开高度范围为 6,500 至 17000 м.

本例展示了该算法的两种变体。 的两种变体。在第一种情况下,我们使用来自 在第二种情况下,我们使用了 engee 函数。 下面是这两种算法的实现。

image.png

辅助函数声明

In [ ]:
# Подключение вспомогательной функции запуска модели.
function run_model( name_model)
    
    Path = (@__DIR__) * "/" * name_model * ".engee"
    
    if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
        model = engee.open( name_model ) # Открыть модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
    else
        model = engee.load( Path, force=true ) # Загрузить модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    end
    sleep(5)
    return model_output
end
Out[0]:
run_model (generic function with 1 method)

模型结果比较

In [ ]:
run_model("mars_para_block")
run_model("mars_para_julia")

out_block = collect(out_block)
out_julia = collect(out_julia)

out_time = out_block.time
out_block = out_block.value
out_julia = out_julia.value

A = plot(out_time, out_block)
plot!(out_time, out_julia)
xlabel!("Time")
ylabel!("State")

B = plot(out_block-out_julia, label="error")

plot(A,B)
WorkspaceArray("data_arr_1")
Building...
Progress 5%
Progress 24%
Progress 41%
Progress 57%
Progress 77%
Progress 94%
Progress 100%
Progress 100%
Building...
Progress 0%
Progress 7%
Progress 27%
Progress 44%
Progress 66%
Progress 87%
Progress 100%
Progress 100%
Out[0]:

结论

从图中我们可以看到,这两个系统的工作方式是相同的。 的时刻是一致的、 这表明实现的逻辑是相同的。