TL;DR I'm looking for someone to refactor a Mathematica notebook I've got from a fellow researcher so I can use it as a reliable reference implementation. I expect it's a few hours of work for the right person. I can offer financial compensation and/or my own technical expertise.
Hello Wolfram community!
I hope this is the right place for this kind of request. If not, my apologies!
I'm a PhD student in the final stage of my project, an attempt at closed-loop control of water jets from firefighting robots using UAV imagery as feedback. The controller design is based on the Smith predictor architecture, which requires a predictive model to compensate for the long dead time of the system. Accurately predicting the trajectory of water jets is far from trivial. One of the most promising models I could find is described in https://link.springer.com/article/10.1007/s10694-021-01175-1. The model is formulated as a system of ordinary differential equations.
I tried implementing it in Python so I can integrate it with my other components. It's almost complete, but despite several months of debugging I haven't been able to resolve the remaining issues. So I contacted the corresponding author. They confirmed some errors I found in the printed versions of the equations, and kindly provided their original Mathematica implementation. This helped, but my own implementation is still incomplete. The issues could stem from additional errors in the printed equations I/we haven't found yet, mistakes in my implementation, or differences in solver behavior (Mathematica's vs. SciPy's solve_ivp() function).
Unfortunately, the notebook is hard for me to follow and differs quite a bit from the published paper (structure, variable naming, angle conventions, etc.). I've never worked with Mathematica and don't have the time nor patience to properly learn it before my deadline.
The author is currently unable to provide further support, but since I'm getting more and more desperate to finish this subproject, I'm now seeking third-party help. I'm looking for someone to refactor the notebook into a clean, well-structured reference implementation. Specifically, I'd like them to
- remove unused and redundant code (many expressions are duplicated)
- improve structure
- improve documentation
- add small quality-of-life improvements if appropriate
- flag any noticeable discrepancies
The refactored version must reproduce the original results, in particular the figures shown in the paper. Ideally, it should make it easy to experiment with the equations and parameters. One specific goal is to verify whether the rearranged equation forms I use in Python (to match SciPy's solver interface) produce the same results as the original formulation.
If you're interested, I'll obtain the author's permission and share the notebook privately so you can assess the scope before we discuss compensation. Bonus points if you have experience with physics-based simulations and are open to occasional follow-up questions :)
Many thanks and regards!