# Help modeling attitude propagation using ModelingToolkit.jl

**URL:** https://discourse.julialang.org/t/help-modeling-attitude-propagation-using-modelingtoolkit-jl/66398
**Category:** General Usage
**Tags:** ode, modelingtoolkit
**Created:** [August 14, 2021, 6:32pm UTC](https://discourse.julialang.org/t/help-modeling-attitude-propagation-using-modelingtoolkit-jl/66398 "2021-08-14T18:32:44Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)
#### Post date: [August 14, 2021, 6:32pm UTC](https://discourse.julialang.org/t/help-modeling-attitude-propagation-using-modelingtoolkit-jl/66398/1 "2021-08-14T18:32:44Z")

</div>

Hi!

I am trying to model the attitude propagation with quaternions using ModelingToolkit.jl. I could make a very simple example as shown below:

```julia
using ModelingToolkit
using OrdinaryDiffEq
using ReferenceFrameRotations
using StaticArrays

function vectdquat(vq, w)
    q = Quaternion(vq)
    dq = dquat(q, w)
    return @SVector [dq[1], dq[2], dq[3], dq[4]]
end

@variables t vq[1:4](t) RHS[1:4](t)
@parameters w[1:3]
@register vectdquat(vq, w)
D = Differential(t)

@named att_prop = ODESystem(
    D.(vq) .~ vectdquat(vq, w),
)

prob = ODEProblem(
    att_prop,
    [vq[1] => 1.0, vq[2] => 0.0, vq[3] => 0.0, vq[4] => 0.0],
    (0.0, 100.0),
    [w[1] => 0.05, w[2] => 0.0, w[3] => 0.0]
)

sol = solve(prob, Tsit5())

```

Now, I need to add a constraint equation to force the quaternion to be in a unit sphere. It is something like `vq .~ vq ./ norm(vq)`. I tried extending the `ODESystem`, using a vector of equations (which does not seem to support variables that are vectors), and any other method I could find from the documentation. However, I always get an error when building the `ODESystem`. Can anyone help me?

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [August 14, 2021, 7:01pm UTC](https://discourse.julialang.org/t/help-modeling-attitude-propagation-using-modelingtoolkit-jl/66398/2 "2021-08-14T19:01:59Z")

</div>

That to me looks like an issue with symbolic array handling and worth an issue.

---

<div class="post-metadata">

### Author: ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)
#### Post date: [August 16, 2021, 2:03pm UTC](https://discourse.julialang.org/t/help-modeling-attitude-propagation-using-modelingtoolkit-jl/66398/3 "2021-08-16T14:03:57Z")

</div>

I just opened the issue, thanks @ChrisRackauckas ! I am not sure if I opened in the right repository 🙂

[https://github.com/SciML/ModelingToolkit.jl/issues/1203](https://github.com/SciML/ModelingToolkit.jl/issues/1203)
