<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.2">Jekyll</generator><link href="https://tjstienstra.github.io//feed.xml" rel="self" type="application/atom+xml" /><link href="https://tjstienstra.github.io//" rel="alternate" type="text/html" /><updated>2022-10-03T10:30:12+00:00</updated><id>https://tjstienstra.github.io//feed.xml</id><title type="html">GSoC 2022 Blog</title><subtitle>Blog sharing my progress in GSoC 2022.</subtitle><entry><title type="html">Final Overview</title><link href="https://tjstienstra.github.io//gsoc/2022/2022/10/03/final-overview.html" rel="alternate" type="text/html" title="Final Overview" /><published>2022-10-03T10:00:00+00:00</published><updated>2022-10-03T10:00:00+00:00</updated><id>https://tjstienstra.github.io//gsoc/2022/2022/10/03/final-overview</id><content type="html" xml:base="https://tjstienstra.github.io//gsoc/2022/2022/10/03/final-overview.html">&lt;p&gt;This will be my last post with a full overview of all my contributions during GSoC 2022.&lt;/p&gt;

&lt;h1 id=&quot;project-synopsis&quot;&gt;Project Synopsis&lt;/h1&gt;
&lt;p&gt;The aim of this project was to further develop the construction of systems from bodies and joints. This was done in three phases with a preparation on beforehand. The first phase focused on fixing existing bugs and adding documentation in order to make the joints framework ready for the upgrades. The second face consisted of implementing the intermediate frames in combination with a joint axis, which allows for more complex joint definitions. In the third phase multiple new joints were added, namely the cylindrical joint, planar joint and at last the spherical joint.&lt;/p&gt;

&lt;h1 id=&quot;contribution-overview&quot;&gt;Contribution Overview&lt;/h1&gt;
&lt;p&gt;This section discusses my GSoC 2022 related contributions to SymPy. The contributions are split in four parts: (0) Preparation phase of GSoC. (1) Improved documentation. (2) Enhanced joints definition. (3) New joints. In order to make the overview more clear the following color coding is used: &lt;span style=&quot;color:red&quot;&gt;open issue&lt;/span&gt;, &lt;span style=&quot;color:blue&quot;&gt;open PR&lt;/span&gt; and &lt;span style=&quot;color:green&quot;&gt;merged/closed PR or issue&lt;/span&gt;.&lt;/p&gt;

&lt;h2 id=&quot;gsoc-preparation&quot;&gt;GSoC preparation&lt;/h2&gt;
&lt;p&gt;During the application progress of GSoC I have done the following contributions, which were mainly focused on fixing existing bugs and issues:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Raised and closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23358&quot;&gt;#23358&lt;/a&gt; on the incorrect velocity calculation of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.vel&lt;/code&gt; with merged PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/23362&quot;&gt;#23362&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:blue&quot;&gt;Opened draft PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23359&quot;&gt;#23359&lt;/a&gt; proposing a zero velocity check to the velocity and acceleration theorems.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:red&quot;&gt;Raised issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23382&quot;&gt;#23382&lt;/a&gt; which advises to compute the velocity in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.vel&lt;/code&gt; method in a recursive way.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/22956&quot;&gt;#22956&lt;/a&gt; on incorrect &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PinJoint&lt;/code&gt; velocity with &lt;span style=&quot;color:green&quot;&gt;merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23392&quot;&gt;#23392&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Raised and closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23393&quot;&gt;#23393&lt;/a&gt; which was a discussion on what the definition of a velocity in a frame is.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;improved-documentation&quot;&gt;Improved Documentation&lt;/h2&gt;
&lt;p&gt;In the first official phase of GSoC the focus lay on improving the documentation together with fixing existing bugs. The major contributions during this phase was writing &lt;a href=&quot;https://docs.sympy.org/latest/modules/physics/mechanics/joints.html&quot;&gt;documentation of the joints framework in general&lt;/a&gt; including images explaining the joints. One of the main issues I ran into during this phase was the sub-optimal definition of a joint in general, which became the main focus of phase 2. Below is a list of all contributions during phase 1.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Participated in the still &lt;span style=&quot;color:red&quot;&gt;open issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/21964&quot;&gt;#21964&lt;/a&gt; on making the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; analogous to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Reviewed still &lt;span style=&quot;color:blue&quot;&gt;open PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23580&quot;&gt;#23580&lt;/a&gt; on returning kinematic equations implicitly in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KanesMethod&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23628&quot;&gt;#23628&lt;/a&gt; which enhances the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.acc&lt;/code&gt; method to also compute the acceleration if the velocity is not yet defined.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23705&quot;&gt;#23705&lt;/a&gt; adding the four-bar-linkage example using the joints framework.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:red&quot;&gt;Raised issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23706&quot;&gt;#23706&lt;/a&gt; on the visibility of images when using the new dark theme.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/21705&quot;&gt;#21705&lt;/a&gt; on the need of a figure explaining the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; arguments with &lt;span style=&quot;color:green&quot;&gt;merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23730&quot;&gt;#23730&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:red&quot;&gt;Raised issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23741&quot;&gt;#23741&lt;/a&gt; discussing how &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point&lt;/code&gt; should go about saving states.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23890&quot;&gt;#23890&lt;/a&gt; converting the joint images introduced in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23730&quot;&gt;#23730&lt;/a&gt; to svg.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;enhanced-joint-definition&quot;&gt;Enhanced Joint Definition&lt;/h2&gt;
&lt;p&gt;During phase 1 I ran into a suboptimal definition in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; class. Namely, that a so called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;parent_axis&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;child_axis&lt;/code&gt; were used to almost magically create an intermediate frame from which the joint was defined.&lt;/p&gt;

&lt;p&gt;In the by my mentors advised paper by &lt;a href=&quot;https://link.springer.com/article/10.1007/s11071-010-9717-3&quot;&gt;Seth &lt;em&gt;et al.&lt;/em&gt;&lt;/a&gt; a mobilizer definition is proposed. One of the notable differences between the mobilizer definition and the joint definition in SymPy at the time is the use of intermediate frames for both the parent body and child body. So after some discussing it was chosen to implement these intermediate frames (abbreviated interframes) in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; class. However one of the major advantages of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;parent_axis&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;child_axis&lt;/code&gt; was there intuitive and simple use. In order to keep this advantage, the options that one can supply a vector to an interframe argument was added. If done so the interframe is oriented such that its &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;X&lt;/code&gt; axis aligns with this provided vector.&lt;/p&gt;

&lt;p&gt;Below is again a list of all contributions during phase 2.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Raised and closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23913&quot;&gt;#23913&lt;/a&gt; on the problem that the use of temporary relationships between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt;s in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; class can lead to deleting correct relations with &lt;span style=&quot;color:green&quot;&gt;merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;#23920&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;#23920&lt;/a&gt; changing the definition of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; to use intermediate frames.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Raised and closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23933&quot;&gt;#23933&lt;/a&gt; on the unnecessary dependency of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_pinjoin_arbitrary_axis&lt;/code&gt; on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_functions.py&lt;/code&gt; with &lt;span style=&quot;color:green&quot;&gt;merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/24028&quot;&gt;#24028&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23981&quot;&gt;#23981&lt;/a&gt; adding an optional frame argument to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RigidBody.parallel_axis&lt;/code&gt; and implementing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body.parallel_axis&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23982&quot;&gt;#23982&lt;/a&gt; changing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; to always have an inertia, also when representing a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Particle&lt;/code&gt;. This partially solves &lt;span style=&quot;color:red&quot;&gt;issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23269&quot;&gt;#23269&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;new-joints&quot;&gt;New Joints&lt;/h2&gt;
&lt;p&gt;In this final phase the main contributions were the implementation of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CylindricalJoint&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PlanarJoint&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SphericalJoint&lt;/code&gt;. One notable other change was reverting the in phase 2 introduced &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;JointAxisMixin&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;span style=&quot;color:red&quot;&gt;Raised issue&lt;/span&gt; &lt;a href=&quot;https://github.com/symengine/symengine/issues/1929&quot;&gt;#1929&lt;/a&gt; in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;symengine&lt;/code&gt; on the problem of stackability of null Matrices.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Raised and closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/24005&quot;&gt;#24005&lt;/a&gt; on the problem that a CI slow test 2 failed due to a timeout. However due to irreproducibility this issue was also closed.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/24028&quot;&gt;#24028&lt;/a&gt; implementing a generic coordinate generation helper.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/24037&quot;&gt;#24037&lt;/a&gt; implementing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CylindricalJoint&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/24046&quot;&gt;#24046&lt;/a&gt; implementing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PlanarJoint&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/24053&quot;&gt;#24053&lt;/a&gt; implementing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SphericalJoint&lt;/code&gt; in which &lt;a href=&quot;https://github.com/sympy/sympy/issues/24098&quot;&gt;#24098&lt;/a&gt; is also &lt;span style=&quot;color:green&quot;&gt;fixed&lt;/span&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/24080&quot;&gt;#24080&lt;/a&gt; reverting the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;JointAxisMixin&lt;/code&gt; for simplicity, which was introduced in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;#23920&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; [#24085], which simplifies the angular velocity computation in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;orient_body_fixed&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;orient_space_fixed&lt;/code&gt;, while also fixing &lt;span style=&quot;color:green&quot;&gt;closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23075&quot;&gt;#23075&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;conclusions&quot;&gt;Conclusions&lt;/h1&gt;
&lt;p&gt;When comparing the contributions to the initial proposal, it is fair to say that the proposed contributions have been met. However the number of implemented examples is a bit lower than anticipated, but at the same time there has also been chosen for a more flexible implementation than the quaternion support for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;parent_axis&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;child_axis&lt;/code&gt;. The final implementation actually uses a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt;, which can be created by using for example a quaternion. Furthermore there have also been multiple smaller contributions, which are outside the original scope of the proposal.&lt;/p&gt;

&lt;h1 id=&quot;future-work&quot;&gt;Future Work&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;Generalize the abstract class for method, i.e. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_Method&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Refactor the design of how bodies and loads are used
\begin{itemize}
    &lt;ul&gt;
      &lt;li&gt;Deprecate &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt;, instead create a abstract &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_Body&lt;/code&gt; for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RigidBody&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Particle&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Create classes for the loads, e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_Load&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Force&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Torque&lt;/code&gt;
\end{itemize}&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Implement a more easy method to add constraints in the joints framework&lt;/li&gt;
  &lt;li&gt;Implement a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kdes_choice = 'efficient'&lt;/code&gt; argument for the joints, which uses the most ideal choice of the generalized coordinates based on &lt;a href=&quot;http://dx.doi.org/10.1177/027836499601500507&quot;&gt;the paper of Mitiguy and Kane&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Add more examples on using the joints framework&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;acknowledgments&quot;&gt;Acknowledgments&lt;/h1&gt;
&lt;p&gt;This project would not have been possible without my mentors, who reviewed most of my PRs and helped me to make lots of design decisions. I would like to thank Jason K. Moore specifically for his push to always keep thinking about backwards compatibility. Sudeep Sidhu I would like to thank for providing the good initial setup of the joints framework. And Sam Brockie for his quick replies and the many reviews and discussions on what would be the best way to implement a certain feature. At last I would also like to thanks all contributors to SymPy for helping getting started, finding bugs, reviewing and so on.&lt;/p&gt;

&lt;!---Failing sphinx test                        ---&gt;
&lt;!---Revert JointAxisMixin                      ---&gt;
&lt;!---SphericalJoint                             ---&gt;
&lt;!---PlanarJoint                                ---&gt;
&lt;!---CylindricalJoint                           ---&gt;
&lt;!---auto coordinate generation helper          ---&gt;
&lt;!---CI timeout on slow test 2                  ---&gt;
&lt;!---interframe                                 ---&gt;
&lt;!---Body.inertia                               ---&gt;
&lt;!---parallel_axis                              ---&gt;
&lt;!---failed test in sep run                     ---&gt;
&lt;!---relation reset                             ---&gt;
&lt;!---PNG to SVG                                 ---&gt;
&lt;!---State saving                               ---&gt;
&lt;!---Joints framework explanation               ---&gt;
&lt;!---dark theme                                 ---&gt;
&lt;!---4BM example                                ---&gt;
&lt;!---Point.acc dependency                       ---&gt;
&lt;!---review implicit Kanes                      ---&gt;
&lt;!---PrismaticJoint velocity discussion         ---&gt;
&lt;!---Fix PinJoint velocity                      ---&gt;
&lt;!---Recursive velocity                         ---&gt;
&lt;!---Point.vel fix                              ---&gt;
&lt;!---@TJStienstra velocity constraint           ---&gt;
&lt;!---Incorrect velocity calculation in Point.vel---&gt;
&lt;!---Body KanesMethod compatibility             ---&gt;
&lt;!---Kdes orient_body_fixed                     ---&gt;
&lt;!---PinJoint incorrect velocity                ---&gt;
&lt;!---Body Frame analogy PR 2                    ---&gt;
&lt;!---Body Frame analogy PR 1                    ---&gt;
&lt;!---Body/Frame analogy proposal                ---&gt;
&lt;!---Body/Frame analogy                         ---&gt;
&lt;!---Abstract _Method                           ---&gt;
&lt;!---Joint explanation                          ---&gt;
&lt;!---@angadhn velocity constraint               ---&gt;

&lt;!---Symengine Matrix issue---&gt;</content><author><name></name></author><category term="GSoC" /><category term="2022" /><summary type="html">This will be my last post with a full overview of all my contributions during GSoC 2022.</summary></entry><entry><title type="html">Week 37</title><link href="https://tjstienstra.github.io//gsoc/2022/2022/09/16/week-37.html" rel="alternate" type="text/html" title="Week 37" /><published>2022-09-16T16:00:00+00:00</published><updated>2022-09-16T16:00:00+00:00</updated><id>https://tjstienstra.github.io//gsoc/2022/2022/09/16/week-37</id><content type="html" xml:base="https://tjstienstra.github.io//gsoc/2022/2022/09/16/week-37.html">&lt;p&gt;Here is a short overview of the PRs merged and the ones opened:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/24028&quot;&gt;#24028&lt;/a&gt; implementing a generic coordinate generation helper, which is ready for merging.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/24037&quot;&gt;#24037&lt;/a&gt; implementing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CylindricalJoint&lt;/code&gt;, which will be ready for review as soon as &lt;a href=&quot;https://github.com/sympy/sympy/pull/24028&quot;&gt;#24028&lt;/a&gt; is merged.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:blue&quot;&gt;Opened PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/24046&quot;&gt;#24046&lt;/a&gt; implementing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PlanarJoint&lt;/code&gt;, which is almost ready for merging. Currently a decision should be made what inputs for defining the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rotation_axis&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;planar_vectors&lt;/code&gt; will be supported&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:blue&quot;&gt;Opened draft PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/24053&quot;&gt;#24053&lt;/a&gt; implementing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SphericalJoint&lt;/code&gt;, which will be ready for review as soon as &lt;a href=&quot;https://github.com/sympy/sympy/pull/24046&quot;&gt;#24046&lt;/a&gt; is merged.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As for what is next, I am almost finished with what is in my GSoC proposal. So now, I’m researching what I will focus on during my thesis, which I’d like to couple to SymPy.&lt;/p&gt;

&lt;!---SphericalJoint                             ---&gt;
&lt;!---PlanarJoint                                ---&gt;
&lt;!---CylindricalJoint                           ---&gt;
&lt;!---auto coordinate generation helper          ---&gt;
&lt;!---CI timeout on slow test 2                  ---&gt;
&lt;!---interframe                                 ---&gt;
&lt;!---Body.inertia                               ---&gt;
&lt;!---parallel_axis                              ---&gt;
&lt;!---failed test in sep run                     ---&gt;
&lt;!---relation reset                             ---&gt;
&lt;!---PNG to SVG                                 ---&gt;
&lt;!---State saving                               ---&gt;
&lt;!---Joints framework explanation               ---&gt;
&lt;!---dark theme                                 ---&gt;
&lt;!---4BM example                                ---&gt;
&lt;!---Point.acc dependency                       ---&gt;
&lt;!---review implicit Kanes                      ---&gt;
&lt;!---PrismaticJoint velocity discussion         ---&gt;
&lt;!---Fix PinJoint velocity                      ---&gt;
&lt;!---Recursive velocity                         ---&gt;
&lt;!---Point.vel fix                              ---&gt;
&lt;!---@TJStienstra velocity constraint           ---&gt;
&lt;!---Incorrect velocity calculation in Point.vel---&gt;
&lt;!---Body KanesMethod compatibility             ---&gt;
&lt;!---PinJoint incorrect velocity                ---&gt;
&lt;!---Body Frame analogy PR 2                    ---&gt;
&lt;!---Body Frame analogy PR 1                    ---&gt;
&lt;!---Body/Frame analogy proposal                ---&gt;
&lt;!---Body/Frame analogy                         ---&gt;
&lt;!---Abstract _Method                           ---&gt;
&lt;!---Joint explanation                          ---&gt;
&lt;!---@angadhn velocity constraint               ---&gt;

&lt;!---Symengine Matrix issue---&gt;</content><author><name></name></author><category term="GSoC" /><category term="2022" /><summary type="html">Here is a short overview of the PRs merged and the ones opened: Merged PR [#24028] implementing a generic coordinate generation helper, which is ready for merging. merged PR [#24037] implementing the CylindricalJoint, which will be ready for review as soon as [#24028] is merged. Opened PR [#24046] implementing the PlanarJoint, which is almost ready for merging. Currently a decision should be made what inputs for defining the rotation_axis and planar_vectors will be supported Opened draft PR [#24053] implementing the SphericalJoint, which will be ready for review as soon as [#24046] is merged.</summary></entry><entry><title type="html">Week 36</title><link href="https://tjstienstra.github.io//gsoc/2022/2022/09/09/week-36.html" rel="alternate" type="text/html" title="Week 36" /><published>2022-09-09T16:00:00+00:00</published><updated>2022-09-09T16:00:00+00:00</updated><id>https://tjstienstra.github.io//gsoc/2022/2022/09/09/week-36</id><content type="html" xml:base="https://tjstienstra.github.io//gsoc/2022/2022/09/09/week-36.html">&lt;p&gt;Decided to make my posts on Friday, so it is more of a reflection of past week (in this case a little more). Besides that I’m also gonna try to keep using the format of my midterm overview. So what has happened:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23981&quot;&gt;#23981&lt;/a&gt; adding an optional frame argument to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RigidBody.parallel_axis&lt;/code&gt; and implementing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body.parallel_axis&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23982&quot;&gt;#23982&lt;/a&gt; changing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; to always have an inertia, also when representing a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Particle&lt;/code&gt;. This will partially solve &lt;span style=&quot;color:red&quot;&gt;issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23269&quot;&gt;#23269&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;#23920&lt;/a&gt; changing the definition of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; to use intermediate frames. Something that was specifically added last week was the support for supplying an axis with which the interframe should align its X axis. Something which surprisingly gives the exact same results as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;parent_axis&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;child_axis&lt;/code&gt; did (means that those rotations were actually chosen more logical than I thought).&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23913&quot;&gt;#23913&lt;/a&gt; on the problem that the use of temporary relationships between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt;s in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; class can lead to deleting correct relations. Was also fixed in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;#23920&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:red&quot;&gt;Raised issue&lt;/span&gt; &lt;a href=&quot;https://github.com/symengine/symengine/issues/1929&quot;&gt;#1929&lt;/a&gt; in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;symengine&lt;/code&gt; on the problem of stackability of null Matrices.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Raised and closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/24005&quot;&gt;#24005&lt;/a&gt; on the problem that a CI slow test 2 failed due to a timeout. However due to irreproducibility this issue was also closed.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:blue&quot;&gt;Opened PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/24028&quot;&gt;#24028&lt;/a&gt; implementing a generic coordinate generation helper, which is ready for merging.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:blue&quot;&gt;Opened draft PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/24037&quot;&gt;#24037&lt;/a&gt; implementing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CylindricalJoint&lt;/code&gt;, which will be ready for review as soon as &lt;a href=&quot;https://github.com/sympy/sympy/pull/24028&quot;&gt;#24028&lt;/a&gt; is merged.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you can see from the list above, quite a few things have happened and I’m happy with the progress. A lot of this progress is also due to the help in reviewing and conceptual problem solving I got from Sam Brockie, who is now also able to work full time on SymPy. Next week I also hope to publish the PRs of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PlanarJoint&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SphericalJoint&lt;/code&gt;. And probably also finish of that state saving issue &lt;a href=&quot;https://github.com/sympy/sympy/issues/23741&quot;&gt;#23741&lt;/a&gt; by just going for the easy solution, namely leaving almost everything as is and just removing the to aggressive relation deletion of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame._dcm&lt;/code&gt; (&lt;a href=&quot;https://github.com/sympy/sympy/issues/23913&quot;&gt;#23913&lt;/a&gt;).&lt;/p&gt;

&lt;!---CylindricalJoint                           ---&gt;
&lt;!---auto coordinate generation helper          ---&gt;
&lt;!---CI timeout on slow test 2                  ---&gt;
&lt;!---interframe                                 ---&gt;
&lt;!---Body.inertia                               ---&gt;
&lt;!---parallel_axis                              ---&gt;
&lt;!---failed test in sep run                     ---&gt;
&lt;!---relation reset                             ---&gt;
&lt;!---PNG to SVG                                 ---&gt;
&lt;!---State saving                               ---&gt;
&lt;!---Joints framework explanation               ---&gt;
&lt;!---dark theme                                 ---&gt;
&lt;!---4BM example                                ---&gt;
&lt;!---Point.acc dependency                       ---&gt;
&lt;!---review implicit Kanes                      ---&gt;
&lt;!---PrismaticJoint velocity discussion         ---&gt;
&lt;!---Fix PinJoint velocity                      ---&gt;
&lt;!---Recursive velocity                         ---&gt;
&lt;!---Point.vel fix                              ---&gt;
&lt;!---@TJStienstra velocity constraint           ---&gt;
&lt;!---Incorrect velocity calculation in Point.vel---&gt;
&lt;!---Body KanesMethod compatibility             ---&gt;
&lt;!---PinJoint incorrect velocity                ---&gt;
&lt;!---Body Frame analogy PR 2                    ---&gt;
&lt;!---Body Frame analogy PR 1                    ---&gt;
&lt;!---Body/Frame analogy proposal                ---&gt;
&lt;!---Body/Frame analogy                         ---&gt;
&lt;!---Abstract _Method                           ---&gt;
&lt;!---Joint explanation                          ---&gt;
&lt;!---@angadhn velocity constraint               ---&gt;

&lt;!---Symengine Matrix issue---&gt;</content><author><name></name></author><category term="GSoC" /><category term="2022" /><summary type="html">Decided to make my posts on Friday, so it is more of a reflection of past week (in this case a little more). Besides that I’m also gonna try to keep using the format of my midterm overview. So what has happened: Merged PR [#23981] adding an optional frame argument to RigidBody.parallel_axis and implementing Body.parallel_axis. Merged PR [#23982] changing Body to always have an inertia, also when representing a Particle. This will partially solve issue [#23269]. Merged PR [#23920] changing the definition of a Joint to use intermediate frames. Something that was specifically added last week was the support for supplying an axis with which the interframe should align its X axis. Something which surprisingly gives the exact same results as parent_axis and child_axis did (means that those rotations were actually chosen more logical than I thought). Closed issue [#23913] on the problem that the use of temporary relationships between ReferenceFrames in the Joint class can lead to deleting correct relations. Was also fixed in [#23920]. Raised issue [#1929] in the symengine on the problem of stackability of null Matrices. Raised and closed issue [#24005] on the problem that a CI slow test 2 failed due to a timeout. However due to irreproducibility this issue was also closed. Opened PR [#24028] implementing a generic coordinate generation helper, which is ready for merging. Opened draft PR [#24037] implementing the CylindricalJoint, which will be ready for review as soon as [#24028] is merged.</summary></entry><entry><title type="html">Midterm overview</title><link href="https://tjstienstra.github.io//gsoc/2022/2022/08/29/midterm-overview.html" rel="alternate" type="text/html" title="Midterm overview" /><published>2022-08-29T12:35:00+00:00</published><updated>2022-08-29T12:35:00+00:00</updated><id>https://tjstienstra.github.io//gsoc/2022/2022/08/29/midterm-overview</id><content type="html" xml:base="https://tjstienstra.github.io//gsoc/2022/2022/08/29/midterm-overview.html">&lt;p&gt;It seemed good to me to make a midterm overview of what I have done. It would have been better if I would have done this a week earlier, before my midterm, but this will in the end also be helpful for the final evaluation.&lt;/p&gt;

&lt;h1 id=&quot;github-references&quot;&gt;GitHub references&lt;/h1&gt;
&lt;p&gt;Below I summarize the issues and PRs that I’ve worked on. The following color coding has been used: &lt;span style=&quot;color:green&quot;&gt;merged/closed PR or issue&lt;/span&gt;, &lt;span style=&quot;color:red&quot;&gt;open issue&lt;/span&gt; and &lt;span style=&quot;color:blue&quot;&gt;open PR&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;In preparation of GSoC:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Raised and closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23358&quot;&gt;#23358&lt;/a&gt; on the incorrect velocity calculation of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.vel&lt;/code&gt; with merged PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/23362&quot;&gt;#23362&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:blue&quot;&gt;Opened draft PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23359&quot;&gt;#23359&lt;/a&gt; proposing a zero velocity check to the velocity and acceleration theorems.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:red&quot;&gt;Raised issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23382&quot;&gt;#23382&lt;/a&gt; which advises to compute the velocity in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.vel&lt;/code&gt; method in a recursive way.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/22956&quot;&gt;#22956&lt;/a&gt; on incorrect &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PinJoint&lt;/code&gt; velocity with &lt;span style=&quot;color:green&quot;&gt;merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23392&quot;&gt;#23392&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Raised and closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23393&quot;&gt;#23393&lt;/a&gt; which was a discussion on what the definition of a velocity in a frame is.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;During GSoC period:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Participated in &lt;span style=&quot;color:red&quot;&gt;issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/21964&quot;&gt;#21964&lt;/a&gt; on making the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; analogous to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Reviewed still &lt;span style=&quot;color:blue&quot;&gt;open PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23580&quot;&gt;#23580&lt;/a&gt; on returning kinematic equations implicitly in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KanesMethod&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23628&quot;&gt;#23628&lt;/a&gt; which enhances the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.acc&lt;/code&gt; method to also compute the acceleration if the velocity is not yet defined.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23705&quot;&gt;#23705&lt;/a&gt; adding the four-bar-linkage example using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt;s.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:red&quot;&gt;Raised issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23706&quot;&gt;#23706&lt;/a&gt; on the visibility of images when using the new dark theme.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Closed issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/21705&quot;&gt;#21705&lt;/a&gt; on the need of a figure explaining the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; arguments with &lt;span style=&quot;color:green&quot;&gt;merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23730&quot;&gt;#23730&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:red&quot;&gt;Raised issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23741&quot;&gt;#23741&lt;/a&gt; discussing how &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point&lt;/code&gt; should go about saving states.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:green&quot;&gt;Merged PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23890&quot;&gt;#23890&lt;/a&gt; converting the joint images introduced in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23730&quot;&gt;#23730&lt;/a&gt; to svg.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:red&quot;&gt;Raised issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23913&quot;&gt;#23913&lt;/a&gt; on the problem that the use of temporary relationships between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt;s in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; class can lead to deleting correct relations.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:blue&quot;&gt;Opened PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;#23920&lt;/a&gt; changing the definition of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; to use intermediate frames.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:red&quot;&gt;Raised issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23933&quot;&gt;#23933&lt;/a&gt; on the unnecessary dependency of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_pinjoin_arbitrary_axis&lt;/code&gt; on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_functions.py&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:blue&quot;&gt;Opened PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23981&quot;&gt;#23981&lt;/a&gt; adding an optional frame argument to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RigidBody.parallel_axis&lt;/code&gt; and implementing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body.parallel_axis&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;span style=&quot;color:blue&quot;&gt;Opened PR&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/pull/23982&quot;&gt;#23982&lt;/a&gt; changing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; to always have an inertia, also when representing a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Particle&lt;/code&gt;. This will partially solve &lt;span style=&quot;color:red&quot;&gt;issue&lt;/span&gt; &lt;a href=&quot;https://github.com/sympy/sympy/issues/23269&quot;&gt;#23269&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;short-reflection&quot;&gt;Short reflection&lt;/h1&gt;
&lt;p&gt;Overall I’m quite happy with this list. Multiple things have been improved (&lt;span style=&quot;color:green&quot;&gt;green&lt;/span&gt;), for which I also have to thank my mentors. Especially the advise of reading &lt;a href=&quot;https://link.springer.com/article/10.1007/s11071-010-9717-3&quot;&gt;this paper&lt;/a&gt; was really good, partially because it also lead to &lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;#23920&lt;/a&gt; and maybe more. And there are also some open PRs ready for review (&lt;span style=&quot;color:blue&quot;&gt;blue&lt;/span&gt;), so still work in progress :)&lt;/p&gt;

&lt;h1 id=&quot;recommendation&quot;&gt;Recommendation&lt;/h1&gt;
&lt;p&gt;When going over the list a few things can be noticed.&lt;/p&gt;

&lt;p&gt;Firstly a decision how to go around with state saving should be made. Since this affects: &lt;a href=&quot;https://github.com/sympy/sympy/issues/23741&quot;&gt;#23741&lt;/a&gt;, &lt;a href=&quot;https://github.com/sympy/sympy/issues/23913&quot;&gt;#23913&lt;/a&gt;, &lt;a href=&quot;https://github.com/sympy/sympy/pull/23359&quot;&gt;#23359&lt;/a&gt; (follow up of &lt;a href=&quot;https://github.com/sympy/sympy/pull/12322&quot;&gt;#12322&lt;/a&gt;), &lt;a href=&quot;https://github.com/sympy/sympy/issues/23382&quot;&gt;#23382&lt;/a&gt; and probably also some other issues and PRs from the past. Personally I would like a system, where only methods used by the user to create a relationship (e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.set_vel&lt;/code&gt;) may store a state in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;state dict&lt;/code&gt;s (e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_dcm_dict&lt;/code&gt;). While the other methods, which compute a requested relationship (e.g. Point.vel) store the states in a separate &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cache dict&lt;/code&gt; (e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_vel_cache&lt;/code&gt;). Overwriting a state in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;state dict&lt;/code&gt; results in resetting all &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cache dict&lt;/code&gt;s to be the same as the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;state dict&lt;/code&gt;s, while in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;state dict&lt;/code&gt;s only the edited state will be updated. So, if the user did use the previous state to save another state, than this state will not be affected.&lt;/p&gt;

&lt;p&gt;A second more like set of problems, which is not entirely notable in this list, is that the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; class is currently underdeveloped. Namely a clear decision should be made and executed on how analogous a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; should be to a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt;. This mainly affects: &lt;a href=&quot;https://github.com/sympy/sympy/issues/21964&quot;&gt;#21964&lt;/a&gt;, which has multiple open PRs: &lt;a href=&quot;https://github.com/sympy/sympy/pull/21974&quot;&gt;#21974&lt;/a&gt;, &lt;a href=&quot;https://github.com/sympy/sympy/pull/22926&quot;&gt;#22926&lt;/a&gt;. Another problem is that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; is currently not fully compatible with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KanesMethod&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LagrangeMethod&lt;/code&gt; (&lt;a href=&quot;https://github.com/sympy/sympy/issues/23269&quot;&gt;#23269&lt;/a&gt;). However this is mainly a problem that should be fixed within &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_Method&lt;/code&gt; (&lt;a href=&quot;https://github.com/sympy/sympy/issues/21772&quot;&gt;#21772&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Lastly, there is also still a need for more joint types, so that is also where I’m currently working on.&lt;/p&gt;

&lt;!---PinJoint incorrect velocity---&gt;
&lt;!---Incorrect velocity calculation in Point.vel---&gt;
&lt;!---PrismaticJoint velocity discussion---&gt;
&lt;!---Joint explanation---&gt;
&lt;!---dark theme---&gt;
&lt;!---Recursive velocity---&gt;
&lt;!---State saving---&gt;
&lt;!---Body/Frame analogy---&gt;
&lt;!---Body KanesMethod compatibility---&gt;
&lt;!---relation reset---&gt;
&lt;!---failed test in sep run---&gt;
&lt;!---Abstract _Method---&gt;
&lt;!---@angadhn velocity constraint---&gt;
&lt;!---@TJStienstra velocity constraint---&gt;
&lt;!---Fix PinJoint velocity---&gt;
&lt;!---Point.vel fix---&gt;
&lt;!---4BM example---&gt;
&lt;!---Point.acc dependency---&gt;
&lt;!---Joints framework explanation---&gt;
&lt;!---review implicit Kanes---&gt;
&lt;!---PNG to SVG---&gt;
&lt;!---interframe---&gt;
&lt;!---parallel_axis---&gt;
&lt;!---Body.inertia---&gt;
&lt;!---Body Frame analogy PR 1---&gt;
&lt;!---Body Frame analogy PR 2---&gt;
&lt;!---Body/Frame analogy proposal---&gt;</content><author><name></name></author><category term="GSoC" /><category term="2022" /><summary type="html">It seemed good to me to make a midterm overview of what I have done. It would have been better if I would have done this a week earlier, before my midterm, but this will in the end also be helpful for the final evaluation.</summary></entry><entry><title type="html">Week 34</title><link href="https://tjstienstra.github.io//gsoc/2022/2022/08/29/week-34.html" rel="alternate" type="text/html" title="Week 34" /><published>2022-08-29T06:22:00+00:00</published><updated>2022-08-29T06:22:00+00:00</updated><id>https://tjstienstra.github.io//gsoc/2022/2022/08/29/week-34</id><content type="html" xml:base="https://tjstienstra.github.io//gsoc/2022/2022/08/29/week-34.html">&lt;p&gt;This week I finally set &lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;this PR&lt;/a&gt; on intermediate frames as ready to review. Besides that I have also created &lt;a href=&quot;https://github.com/sympy/sympy/pull/23981&quot;&gt;a PR&lt;/a&gt;, which adds the optional frame argument to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RigidBody.parallel_axis&lt;/code&gt; and also implements the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;parallel_axis&lt;/code&gt; method for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; class. As well as &lt;a href=&quot;https://github.com/sympy/sympy/pull/23982&quot;&gt;a PR&lt;/a&gt; which partially fixes &lt;a href=&quot;https://github.com/sympy/sympy/issues/23269&quot;&gt;the issue&lt;/a&gt; of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KanesMethod&lt;/code&gt; not being compatible with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; objects, which represents a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Particle&lt;/code&gt;. This is done by changing the inertia of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; representing a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Particle&lt;/code&gt; to zero. Besides that &lt;a href=&quot;https://github.com/sympy/sympy/pull/23982&quot;&gt;this PR&lt;/a&gt; also adds a central inertia setter to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RigidBody&lt;/code&gt;. As a last thing I have been working on is the implementation of new joint types, mainly the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SphericalJoint&lt;/code&gt;. However I have not yet published a PR for this, since my implementation is currently dependent on &lt;a href=&quot;https://github.com/sympy/sympy/pull/23890&quot;&gt;the PR&lt;/a&gt; on intermediate frames.&lt;/p&gt;

&lt;p&gt;Issues and PRs I’m working on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;This PR&lt;/a&gt; which switches the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; definition to use intermediate frames.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23981&quot;&gt;This PR&lt;/a&gt; which implements the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;parallel_axis&lt;/code&gt; method for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; class.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23982&quot;&gt;This PR&lt;/a&gt; which changes the inertia of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; representing a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Particle&lt;/code&gt; to zero.&lt;/li&gt;
  &lt;li&gt;Raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23933&quot;&gt;issue&lt;/a&gt; about the dependency between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_pinjoin_arbitrary_axis&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_functions.py&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23913&quot;&gt;issue&lt;/a&gt; about a problem that defining a new joint in a certain way can lead to a deletion of a previous joint.&lt;/li&gt;
  &lt;li&gt;Raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23741&quot;&gt;issue&lt;/a&gt; about the inconsistency in storing velocity and acceleration data in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point&lt;/code&gt; class.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/21964#issuecomment-1173893507&quot;&gt;My comment&lt;/a&gt; on how we could make the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; class more analogous to a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some other opened issues an PRs, which I have open, but am not currently working on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23580&quot;&gt;PR&lt;/a&gt; I reviewed (awaiting changes)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23706&quot;&gt;Issue&lt;/a&gt; about image readability in the new dark theme.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23382&quot;&gt;Issue&lt;/a&gt; about using a recursive calculation of the velocity in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.vel&lt;/code&gt; method&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23359&quot;&gt;Draft PR&lt;/a&gt; which adds a check on the velocity and acceleration theories as mentioned in &lt;a href=&quot;https://github.com/sympy/sympy/pull/12322&quot;&gt;the old PR&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Needs a decision as mentioned in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23359#issuecomment-1155023883&quot;&gt;this comment&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23269&quot;&gt;An issue&lt;/a&gt; I’m participating in, which is about making the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KanesMethod&lt;/code&gt; compatible with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; class.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><category term="GSoC" /><category term="2022" /><summary type="html">This week I finally set this PR on intermediate frames as ready to review. Besides that I have also created a PR, which adds the optional frame argument to RigidBody.parallel_axis and also implements the parallel_axis method for the Body class. As well as a PR which partially fixes the issue of KanesMethod not being compatible with Body objects, which represents a Particle. This is done by changing the inertia of a Body representing a Particle to zero. Besides that this PR also adds a central inertia setter to RigidBody. As a last thing I have been working on is the implementation of new joint types, mainly the SphericalJoint. However I have not yet published a PR for this, since my implementation is currently dependent on the PR on intermediate frames.</summary></entry><entry><title type="html">Week 33</title><link href="https://tjstienstra.github.io//gsoc/2022/2022/08/22/week-33.html" rel="alternate" type="text/html" title="Week 33" /><published>2022-08-22T13:45:00+00:00</published><updated>2022-08-22T13:45:00+00:00</updated><id>https://tjstienstra.github.io//gsoc/2022/2022/08/22/week-33</id><content type="html" xml:base="https://tjstienstra.github.io//gsoc/2022/2022/08/22/week-33.html">&lt;p&gt;Still working &lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;this draft PR&lt;/a&gt;, which is now close to ready to really get reviewed. Besides the change to the intermediate frames. This PR now also proposes to replace the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;parent_joint_pos&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;child_joint_pos&lt;/code&gt; arguments by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;parent_point&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;child_point&lt;/code&gt;, since that is way more intuitive. Besides that I’ve also opened &lt;a href=&quot;https://github.com/sympy/sympy/issues/23933&quot;&gt;this issue&lt;/a&gt;, which is about a dependency between two tests (an easy fix).&lt;/p&gt;

&lt;p&gt;Issues and PRs I’m working on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;This draft PR&lt;/a&gt; which switches the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; definition to use intermediate frames.&lt;/li&gt;
  &lt;li&gt;Raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23933&quot;&gt;issue&lt;/a&gt; about the dependency between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_pinjoin_arbitrary_axis&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_functions.py&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23913&quot;&gt;issue&lt;/a&gt; about a problem that defining a new joint in a certain way can lead to a deletion of a previous joint.&lt;/li&gt;
  &lt;li&gt;Raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23741&quot;&gt;issue&lt;/a&gt; about the inconsistency in storing velocity and acceleration data in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point&lt;/code&gt; class.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/21964#issuecomment-1173893507&quot;&gt;My comment&lt;/a&gt; on how we could make the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; class more analogous to a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some other opened issues an PRs, which I have open, but am not currently working on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23580&quot;&gt;PR&lt;/a&gt; I reviewed (awaiting changes)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23706&quot;&gt;Issue&lt;/a&gt; about image readability in the new dark theme.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23382&quot;&gt;Issue&lt;/a&gt; about using a recursive calculation of the velocity in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.vel&lt;/code&gt; method&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23359&quot;&gt;Draft PR&lt;/a&gt; which adds a check on the velocity and acceleration theories as mentioned in &lt;a href=&quot;https://github.com/sympy/sympy/pull/12322&quot;&gt;the old PR&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Needs a decision as mentioned in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23359#issuecomment-1155023883&quot;&gt;this comment&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23269&quot;&gt;An issue&lt;/a&gt; I’m participating in, which is about making the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KanesMethod&lt;/code&gt; compatible with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; class.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><category term="GSoC" /><category term="2022" /><summary type="html">Still working this draft PR, which is now close to ready to really get reviewed. Besides the change to the intermediate frames. This PR now also proposes to replace the parent_joint_pos and child_joint_pos arguments by parent_point and child_point, since that is way more intuitive. Besides that I’ve also opened this issue, which is about a dependency between two tests (an easy fix).</summary></entry><entry><title type="html">Week 32</title><link href="https://tjstienstra.github.io//gsoc/2022/2022/08/15/week-32.html" rel="alternate" type="text/html" title="Week 32" /><published>2022-08-15T09:55:00+00:00</published><updated>2022-08-15T09:55:00+00:00</updated><id>https://tjstienstra.github.io//gsoc/2022/2022/08/15/week-32</id><content type="html" xml:base="https://tjstienstra.github.io//gsoc/2022/2022/08/15/week-32.html">&lt;p&gt;Just before I went on vacation the documentation PRs, i.e. &lt;a href=&quot;https://github.com/sympy/sympy/pull/23705&quot;&gt;PR about adding a four bar linkage example&lt;/a&gt; and &lt;a href=&quot;https://github.com/sympy/sympy/pull/23730&quot;&gt;the PR explaining the joints framework using figures&lt;/a&gt; were merged. Also &lt;a href=&quot;https://github.com/sympy/sympy/pull/23628&quot;&gt;the PR&lt;/a&gt;, which improves the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.acc&lt;/code&gt; method, was merged. However, after my holiday I heard the request of making these figures a bit smaller in filesize. So, this last week I converted them to SVGs in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23890&quot;&gt;this already merged PR&lt;/a&gt;. After this I mainly did some reading up and investigating how we could introduce a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Mobilizer&lt;/code&gt; joint as described in &lt;a href=&quot;https://link.springer.com/article/10.1007/s11071-010-9717-3&quot;&gt;this paper&lt;/a&gt; by Seth, A., Sherman, M., Eastman, P., &amp;amp; Delp, S.&lt;/p&gt;

&lt;p&gt;This lead to raising &lt;a href=&quot;https://github.com/sympy/sympy/issues/23913&quot;&gt;this issue&lt;/a&gt;. But the main thing I started working on is &lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;this draft PR&lt;/a&gt;, which changes the definition of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; to be a bit more general. Where we were first using a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;parent_axis&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;child_axis&lt;/code&gt; to describe an intermediate frame and the joint axis. It is now changed to use a given intermediate frame for the parent as well as the child. And for the joint axis we use a separate argument &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;joint_axis&lt;/code&gt;. I would love to write and explain a lot more about this PR, but if you are interested you’d better just visit &lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;it&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Issues and PRs I’m working on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23920&quot;&gt;this draft PR&lt;/a&gt; which switches the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Joint&lt;/code&gt; definition to use intermediate frames.&lt;/li&gt;
  &lt;li&gt;Raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23913&quot;&gt;issue&lt;/a&gt; about a problem that defining a new joint in a certain way can lead to a deletion of a previous joint.&lt;/li&gt;
  &lt;li&gt;Raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23741&quot;&gt;issue&lt;/a&gt; about the inconsistency in storing velocity and acceleration data in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point&lt;/code&gt; class.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/21964#issuecomment-1173893507&quot;&gt;My comment&lt;/a&gt; on how we could make the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; class more analogous to a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some other opened issues an PRs, which I have open, but am not currently working on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23580&quot;&gt;PR&lt;/a&gt; I reviewed&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23706&quot;&gt;Issue&lt;/a&gt; about image readability in the new dark theme.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23382&quot;&gt;Issue&lt;/a&gt; about using a recursive calculation of the velocity in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.vel&lt;/code&gt; method&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23359&quot;&gt;Draft PR&lt;/a&gt; which adds a check on the velocity and acceleration theories as mentioned in &lt;a href=&quot;https://github.com/sympy/sympy/pull/12322&quot;&gt;the old PR&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Needs a decision as mentioned in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23359#issuecomment-1155023883&quot;&gt;this comment&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23269&quot;&gt;An issue&lt;/a&gt; I’m participating in, which is about making the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KanesMethod&lt;/code&gt; compatible with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; class.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><category term="GSoC" /><category term="2022" /><summary type="html">Just before I went on vacation the documentation PRs, i.e. PR about adding a four bar linkage example and the PR explaining the joints framework using figures were merged. Also the PR, which improves the Point.acc method, was merged. However, after my holiday I heard the request of making these figures a bit smaller in filesize. So, this last week I converted them to SVGs in this already merged PR. After this I mainly did some reading up and investigating how we could introduce a Mobilizer joint as described in this paper by Seth, A., Sherman, M., Eastman, P., &amp;amp; Delp, S.</summary></entry><entry><title type="html">Week 28</title><link href="https://tjstienstra.github.io//gsoc/2022/2022/07/14/week-28.html" rel="alternate" type="text/html" title="Week 28" /><published>2022-07-14T18:15:00+00:00</published><updated>2022-07-14T18:15:00+00:00</updated><id>https://tjstienstra.github.io//gsoc/2022/2022/07/14/week-28</id><content type="html" xml:base="https://tjstienstra.github.io//gsoc/2022/2022/07/14/week-28.html">&lt;p&gt;This is a short post, since I was busy this week with my last exam and preparing for my vacation next few weeks. This also means that I won’t make posts for the next few weeks. As for now I am currently focused partially on making the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; class better integrated within the mechanics, while awaiting reviews on some documentation PRs.&lt;/p&gt;

&lt;p&gt;Issues and PRs I’m working on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23705&quot;&gt;PR&lt;/a&gt;, which adds a four bar linkage example using the joints framework.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/21705&quot;&gt;This issue&lt;/a&gt; about creating a figure to explain the joint parameters is being solved in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23730&quot;&gt;this PR&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23628&quot;&gt;The PR&lt;/a&gt;, which would reduce &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.acc&lt;/code&gt; dependency on computed velocities.&lt;/li&gt;
  &lt;li&gt;Raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23741&quot;&gt;issue&lt;/a&gt; about the inconsistency in storing velocity and acceleration data in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point&lt;/code&gt; class.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/21964#issuecomment-1173893507&quot;&gt;My comment&lt;/a&gt; on how we could make the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; class more analogous to a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReferenceFrame&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some other opened issues an PRs, which I have open, but am not currently working on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23580&quot;&gt;PR&lt;/a&gt; I reviewed&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23706&quot;&gt;Issue&lt;/a&gt; about image readability in the new dark theme.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23382&quot;&gt;Issue&lt;/a&gt; about using a recursive calculation of the velocity in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.vel&lt;/code&gt; method&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23359&quot;&gt;Draft PR&lt;/a&gt; which adds a check on the velocity and acceleration theories as mentioned in &lt;a href=&quot;https://github.com/sympy/sympy/pull/12322&quot;&gt;the old PR&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Needs a decision as mentioned in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23359#issuecomment-1155023883&quot;&gt;this comment&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23269&quot;&gt;An issue&lt;/a&gt; I’m participating in, which is about making the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KanesMethod&lt;/code&gt; compatible with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Body&lt;/code&gt; class.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><category term="GSoC" /><category term="2022" /><summary type="html">This is a short post, since I was busy this week with my last exam and preparing for my vacation next few weeks. This also means that I won’t make posts for the next few weeks. As for now I am currently focused partially on making the Body class better integrated within the mechanics, while awaiting reviews on some documentation PRs.</summary></entry><entry><title type="html">Week 27</title><link href="https://tjstienstra.github.io//gsoc/2022/2022/07/08/week-27.html" rel="alternate" type="text/html" title="Week 27" /><published>2022-07-08T18:15:00+00:00</published><updated>2022-07-08T18:15:00+00:00</updated><id>https://tjstienstra.github.io//gsoc/2022/2022/07/08/week-27</id><content type="html" xml:base="https://tjstienstra.github.io//gsoc/2022/2022/07/08/week-27.html">&lt;p&gt;This is finally the first week that I could work full time on GSoC. Started this week with reviewing &lt;a href=&quot;https://github.com/sympy/sympy/pull/23580&quot;&gt;a PR&lt;/a&gt; for the first time. Furthermore I mostly focused this week on documentation. You already saw the draft of &lt;a href=&quot;https://github.com/sympy/sympy/pull/23705&quot;&gt;the four bar linkage example&lt;/a&gt; last week. During which I ran into various other things. First of the amazing dark theme available in the &lt;a href=&quot;https://docs.sympy.org/dev/index.html&quot;&gt;SymPy dev documentation&lt;/a&gt; causes some images to be barely readable (raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23706&quot;&gt;#23706&lt;/a&gt;). Another thing I already new I wanted to do is that there should be a real guide on the Joints Framework. So I made a &lt;a href=&quot;https://github.com/sympy/sympy/pull/23730&quot;&gt;draft PR&lt;/a&gt; about implementing a real guide on the Joints Framework in the physics/mechanics module (checkout the image below for a quick preview). Yesterday, I presented this to my mentors and got positive feedback. We also had a discussion about consistency within the code which raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23741&quot;&gt;this issue&lt;/a&gt;. Also the planning is to have either next week or after my holiday a discussion about what we actually have within the Mechanics module and what we actually want.&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
  &lt;img src=&quot;/assets/JointFrameworkGuidePreview.png&quot; width=&quot;80%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;Issues and PRs I’m working on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23580&quot;&gt;The PR&lt;/a&gt; I’m reviewing&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23705&quot;&gt;PR&lt;/a&gt;, which adds a four bar linkage example using the joints framework.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/21705&quot;&gt;This issue&lt;/a&gt; about creating a figure to explain the joint parameters is being solved in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23730&quot;&gt;this PR&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23628&quot;&gt;The PR&lt;/a&gt;, which would reduce &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.acc&lt;/code&gt; dependency on computed velocities.&lt;/li&gt;
  &lt;li&gt;Raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23741&quot;&gt;issue&lt;/a&gt; about the inconsistency in storing velocity and acceleration data in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point&lt;/code&gt; class.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some other opened issues an PRs, which I have open, but am not currently working on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23706&quot;&gt;Issue&lt;/a&gt; about image readability in the new dark theme.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23382&quot;&gt;Issue&lt;/a&gt; about using a recursive calculation of the velocity in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.vel&lt;/code&gt; method&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23359&quot;&gt;Draft PR&lt;/a&gt; which adds a check on the velocity and acceleration theories as mentioned in &lt;a href=&quot;https://github.com/sympy/sympy/pull/12322&quot;&gt;the old PR&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Needs a decision as mentioned in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23359#issuecomment-1155023883&quot;&gt;this comment&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><category term="GSoC" /><category term="2022" /><summary type="html">This is finally the first week that I could work full time on GSoC. Started this week with reviewing a PR for the first time. Furthermore I mostly focused this week on documentation. You already saw the draft of the four bar linkage example last week. During which I ran into various other things. First of the amazing dark theme available in the SymPy dev documentation causes some images to be barely readable (raised #23706). Another thing I already new I wanted to do is that there should be a real guide on the Joints Framework. So I made a draft PR about implementing a real guide on the Joints Framework in the physics/mechanics module (checkout the image below for a quick preview). Yesterday, I presented this to my mentors and got positive feedback. We also had a discussion about consistency within the code which raised this issue. Also the planning is to have either next week or after my holiday a discussion about what we actually have within the Mechanics module and what we actually want.</summary></entry><entry><title type="html">Week 26</title><link href="https://tjstienstra.github.io//gsoc/2022/2022/06/29/week-26.html" rel="alternate" type="text/html" title="Week 26" /><published>2022-06-29T18:15:00+00:00</published><updated>2022-06-29T18:15:00+00:00</updated><id>https://tjstienstra.github.io//gsoc/2022/2022/06/29/week-26</id><content type="html" xml:base="https://tjstienstra.github.io//gsoc/2022/2022/06/29/week-26.html">&lt;p&gt;Hi again, this is a quick post about my schedule for this GSoC. Made after meeting my mentors for a kickoff meeting, which was great by the way. As I already mentioned a bit in my first post is there a slight change. I will still be working on the documentation these first few weeks ‘till July 14. August 8 I hope to start working on the kinematic loops for which I will have to research some other solutions for as well. At last I hope to implement add some more joints. The part which I will probably skip is adding option to define the orientation of a joint using quaternions. But overall I think it is going to be a nice fun challenge.&lt;/p&gt;

&lt;p&gt;Issues and PRs I’ll be working on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Opened a &lt;a href=&quot;https://github.com/sympy/sympy/pull/23705&quot;&gt;draft PR&lt;/a&gt; adding four bar linkage example which uses the joints framework.&lt;/li&gt;
  &lt;li&gt;While working on the PR above I raised &lt;a href=&quot;https://github.com/sympy/sympy/issues/23706&quot;&gt;an issue&lt;/a&gt; on the visibility of images when using the new dark theme.&lt;/li&gt;
  &lt;li&gt;This week and next week I expect to work on &lt;a href=&quot;https://github.com/sympy/sympy/issues/21705&quot;&gt;the issue&lt;/a&gt; about creating a figure to explain the joint parameters.&lt;/li&gt;
  &lt;li&gt;Hope that &lt;a href=&quot;https://github.com/sympy/sympy/pull/23628&quot;&gt;this PR&lt;/a&gt;, which would reduce &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.acc&lt;/code&gt; dependency on computed velocities, can be merged.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some other opened issues an PRs, which I have open, but am not currently working on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/issues/23382&quot;&gt;Issue&lt;/a&gt; about using a recursive calculation of the velocity in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Point.vel&lt;/code&gt; method&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/23359&quot;&gt;Draft PR&lt;/a&gt; which adds a check on the velocity and acceleration theories as mentioned in &lt;a href=&quot;https://github.com/sympy/sympy/pull/12322&quot;&gt;the old PR&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Needs a decision as mentioned in &lt;a href=&quot;https://github.com/sympy/sympy/pull/23359#issuecomment-1155023883&quot;&gt;this comment&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><category term="GSoC" /><category term="2022" /><summary type="html">Hi again, this is a quick post about my schedule for this GSoC. Made after meeting my mentors for a kickoff meeting, which was great by the way. As I already mentioned a bit in my first post is there a slight change. I will still be working on the documentation these first few weeks ‘till July 14. August 8 I hope to start working on the kinematic loops for which I will have to research some other solutions for as well. At last I hope to implement add some more joints. The part which I will probably skip is adding option to define the orientation of a joint using quaternions. But overall I think it is going to be a nice fun challenge.</summary></entry></feed>