![](https://habrastorage.org/files/16b/d26/958/16bd269583c3465c8c35adf6e56edcf2.PNG)
Мне давно хочется заняться созданием роботов, но всегда не хватает свободных денег, времени или места. По этому я собрался писать их виртуальные модели!
Мощные инструменты, позволяющие это делать, либо сложно стыкуются со сторонними программами (
Modelica), либо проприетарны (Wolfram Mathematica, различные САПР), и я решил делать велосипед на
Julia. Потом все наработки можно будет состыковать с сервисами
ROS.
Будем считать, что наши роботы двигаются достаточно медленно и их механика находится в состоянии с наименьшей энергией, при ограничениях, заданных конструкцией и сервоприводами. Таким образом нам достаточно решить задачу оптимизации в ограничениях, для чего понадобятся пакеты "
JuMP" (для нелинейной оптимизации ему понадобится пакет "
Ipopt", который не указан в зависимостях (вместо него можно использовать проприетарные библиотеки, но я хочу ограничится свободными) и должен быть установлен отдельно). Решать дифференциальные уравнения, как в Modelica, мы не будем, хотя для этого есть достаточно развитые пакеты, например "
DASSL".
Управлять системой мы будем используя реактивное программирование (библиотеку "
Reactive"). Рисовать в «блокноте» (Jupyter), для чего потребуются "
IJulia", "
Interact" и "
Compose". Для удобства еще понадобится "
MacroTools".