0

I have a filter that tracks a robot. I want it to use a 2D coordinated turn polar velocity motion model (from page 15 here):

enter image description here

But I want to expand on this motion model: I want an additional velocity state that is orthogonal to the heading, and I also want acceleration states for the two velocities.

How do I find the resulting discrete-time linearized model easily? I guess I could someone smarter than me could find the find the continuous time differential equation by hand (by thinking really hard?), and then discretize/linearlize (or linearlize/discretize) it. But that seems like an awful amount of work. I think I can manage the "discretize/linearlize"-step, but I don't know how to start on the "find the continuous time model" step.

It would be nice if there were some program that takes my desired states as input and outputs a model. But my googling turns up nothing. Is it really hard to find motion models? Do I fail to see the gravity of the work if I feel like this could be done in an afternoon? What should my workflow look like? Where do I start?

  • Also, I'm having a hard time placing this question. Is it math? Physics? Maybe it should be at CrossValidated? Or Robotics? If anyone has input here, I'd be happy! – blåblomma May 25 '19 at 19:58
  • Well Blue Flower, I'm not that familiar with Kalmans so I'm not sure I can help, but your entreaty to "make the complicated be done easily" challenges me to read the paper. First glance says be careful with tan^{-1}(y/x), you want to use atan2(y,x) or unexpected results may ensue. Orthoganal to a direction in 3D means a plane, did you perhaps mean to constrain it to the osculating plane? – Cedron Dawg May 25 '19 at 23:40
  • If all you are looking for is a continuous mathematical model for a set of discrete inputs to match a set of outputs then "polyfit" is probably your best answer. It is a generalized function which produces a set of polynomial coefficients for a best fit solution. The nice thing about it being polynomial is that the coefficients for the derivative functions can be calculated directly from the results. – Cedron Dawg May 26 '19 at 12:12
  • Thanks for your replay @CedronDawg! The entire problem is in 2D, so by "orthogonal", I mean "not in the direction of heading/$\phi$". So I mean to constrain it to the plane. I think that the "discretize/linearlize" is the easy part. I'm not 100% sure about how to do it, but I guess something like "polyfit" would work well. The hard part seems to be to make the continuous mathematical model. I don't knmow how to do that or where to start. :s – blåblomma May 27 '19 at 08:05
  • First, orthogonal in 2D is easy. Simply reverse the coordinates and negate one of them. Second, if you can list your inputs and outputs as columns in a comma separated file, I have written a Python program that applies the polyfit and gives you the right coefficients. It's a little longish because it also generates C, Python, and VB code to implement the model. Send me an email to cedron at exede dot net and I can send you a copy. – Cedron Dawg May 27 '19 at 11:49
  • Thanks again @CedronDawg, but I think you are misunderstanding my problem. My biggest issue right now is finding the continuous-time model. I know what states I want, but I don't know how build the model based on them. – blåblomma May 27 '19 at 12:37
  • You are correct, I am not understanding what you really want. I half suspect you are trying to shoe horn your problem into a pre-existing solution. So, if you can take your description of what you think the solution should be out of it and try to explain the underlying problem, I and others, may be able to help you better. Feel free to send my anything you got and I will take a look at it. – Cedron Dawg May 27 '19 at 12:44
  • @CedronDawg I'll try to do what you are suggesting with a simplified problem (let's ignore the orthogonal speed for now). PROBLEM: I want my robot to be able to navigate in 2D, and its navigation sensors have measure equations that contain acceleration and heading. SOLUTION: I will add an acceleration state to the 2D coordinated turn polar velocity motion model. SUBPROBLEM: How do I do that? – blåblomma May 27 '19 at 13:08
  • What is the fundamental problem you are trying to solve? Is it "I want my robot to know where it is by the accelerations it has undergone." I would rather discuss this via email than the chat room we are about to be recommended to. I'll be gone here for about a half hour. – Cedron Dawg May 27 '19 at 13:25
  • @CedronDawg I'm sorry but I can't really be more specific about the problem than that. I know that there are alternative approaches, and I'm exploring some right now. I just want to know if "add acceleration to the 2DCT-model" is a Hard Problem. – blåblomma May 27 '19 at 13:32
  • I'm not the right person to address that. You may get some better responses if you repost it like that. – Cedron Dawg May 27 '19 at 14:10
  • @CedronDawg Thanks for your responses! I have posted a new, more focused, question here: https://physics.stackexchange.com/questions/482899/how-do-i-derive-complicated-kinematic-state-space-models – blåblomma May 28 '19 at 08:37
  • It turns out I was totally misunderstanding what you were asking. Seems you have it sorted now. I would recommend that you follow up by reading this article of mine https://www.dsprelated.com/showarticle/1190.php, then download (and install if you have Linux) the second programming example I provide in this forum posting https://forum.gambas.one/viewtopic.php?f=4&t=674 which models a projectile going through force fields and friction effects. – Cedron Dawg May 29 '19 at 13:50

0 Answers0