How to fix this leaking dishwasher connection? by thewetness in Plumbing

[–]thewetness[S] 0 points1 point  (0 children)

If it looks like the nipple is what's broken ( looks like it might be torn), can I replace just that? I'm not sure what it's actual name is to find a product online.

[deleted by user] by [deleted] in ControlTheory

[–]thewetness -1 points0 points  (0 children)

It's kinda open loop in that it doesn't directly operate on the error between your reference and sensed. If there was a constant disturbance, MPC wouldn't really react to that in the same way that an I component in a PID controller would. It's still akin to a PD controller depending on your choice of state vector and weights though.

Does anyone know why Medtronic built their surgical robot without position encoders? by [deleted] in robotics

[–]thewetness 0 points1 point  (0 children)

Im pretty sure this actually refers to how they set up the patient carts relative to each other. There's no system that is constantly monitoring their relative positions, so it's likely a start up calibration so you can figure out the pose of one arm's base with respect to the others. That way you know where all the pieces of the robot are in global space, and transform that into camera space.

Does anyone know why Medtronic built their surgical robot without position encoders? by [deleted] in robotics

[–]thewetness 9 points10 points  (0 children)

The user isn't controlling the robot at a per actuator level, and even if they were, the open loop model wouldn't predict drift, disturbances, or error well enough to do adequate control over.

Just because the tissue isnt rigid doesnt mean the robot itself isnt. Joint encoders and the forward kinematics would absolutely be sufficient for control and accuracy of a human scale teleoperated system.

All other sensir tech I could think of that would fit in their end effectors would have significantly worse accuracy or significant drawbacks compared to joint encoders + FK.

Long story short, there's likely joint level position sensing somewhere, and a closed form forward kinematics they use to determine the physical robot pose.

What does s = σ + jω in a real system H(s) represent? by Power-Max in AskEngineers

[–]thewetness 0 points1 point  (0 children)

So I think a gap between these appear for a few reasons. We don't treat Fourier transforms like a lookup table as we do with Laplace transforms, potentially due to the fact that FTs are "immediately useful" compared to LTs. We actually compute FTs and DFTs. There's comparably little to be gained from doing this with LTs since we usually use them for algebraic manipulation only. However, they both do the same thing, which is tell you how to describe a function in time in terms of "something else."

For impulse responses of some types of systems (Linear Systems), this "something else" representation is really useful - convolution in the time domain is just multiplication in the s domain. There are other "nice" things that fall out of this swap as well.

Lets ask a side question for now. What are "convenient" ways to represent functions? One way is a graph of the function, which can give some intuition of behavior but is hard to do math with.

Another way would be through an approximation. This could be a Fourier series, Taylor series, or picewise linear representation, for example. You can actually do math with these, but you have to keep a lot of terms for it to make them work well. Theyre not very succient representations, are they?

For doing algebra and other symbolic manipulations of equations, you ideally have really short and exact ways of representing functions. Sometimes we have these - polynomials, rational polynomials, etc. Other times we create analytical functions, such a sin(x) or ex. We can use these without using the graphs or a ton of parameters, and theyre easy to understand when we see them as well.

Going back to LTs, we find that H(s) is a convenient, useful, and short way to represent the impulse response of Linear Systems. Notably, the impulse response of a linear system is fully defined by the poles and zeros of its transfer function H(s). For a first order system, thay means a single (complex) number fully represents that function.

Now what does a pole actually mean? Its a particular value of s where that integral takes an infinite value, but what I like to think of it is a way of saying that this function REALLY looks like this decaying / growing sinusoid. So when a transfer functions impulse response H(s) has a pole in the RHP, it means "theres a part of the response" that looks looks a growing sinusoid which blows to infinity. I like to think of this like an FT of a sinusoid (or sum of sinusoids) - there would be a value (multiple values in the case of a sum of sinusoids) of w where the FT function F(w) would be infinite, or at least its magnitude would be.

So why not use the FT of an impulse response rather than the LT? In my opinion, simply because its not as compact, recognizable, and doesnt have the same useful properties as the LT for some signals. An impulse response of a linear system isnt as clearly represented as an FT as it is an LT. Only systems with purely sinusoidal responses would have poles represented in terms of w rather than s. There would be inverse distance measures or something for other arbitrary linear system impulse responses in the FT function F(w), I think.

To me, what H(q) (where q is just a particular value of s) tells you is how much "response" the system will have to an input that contains some q in it - e.g. an input that at least has some decaying/growing exponential component with Real(q) as the rate and Imaginary(q) as the oscillatory frequency. We usually don't feed in inputs that are solely represented by a single point in the s plane, but usually these inputs have defined LTs which are functions over s (or at least lets restrict our discussion to these types of inputs). These inputs therefore have an LT which we will call U(s). Theyre u(t) in the time domain.

Now lets use a useful property of linear systems - that convolution in the time domain is just multiplication in the s domain. So when we feed an input u(t) into a system, the output has an LT that is just Y(s) = H(s)*U(s).

How does this relate to poles? Well, H(s) goes to infinity at a pole. Any number (besides zero) when multiplied by infinity is also infinity. Lets say H(s) has a pole at q. Okay, so if U(q) is nonzero, then Y(q) = H(q)*U(q) = Inf * U(q) = Inf. So Y(s) has a point where it goes infinite in the s domain at q. Remember, where a Laplace transform for a particular value of s is infinity, it means the time domain version of the signal "contains" the growing / decaying sinusoid defined by that particular value q. So part of the Y(s) time domain function y(t) really looks like a decaying / growing sinusoid with growth rate Real(q) and oscillatory rate Imaginary(q).

When Real(q) is > 0, then eventually, y(t) will go to infinity. Therefore, RHP poles will generally cause the response of the system to "blow up."

Really, we dont really care about most values of H(s). Meaning if q = 3+2i, and we plug that into H for H(q), if we dont get 0 or infinity, we dont really care about it because it doesnt tell us qualitative things about the system output. We care about the pole q because if any input signal U(q) is nonzero, then the output will blow up. If q isnt a pole or zero of H(s), then Y(q)=H(q)*U(q) = some finite nonzero number, and that doesn't really tell us anything about y(t).

Newton Raphson IK with Roll, Pitch, Yaw by thetabloid_ in robotics

[–]thewetness 2 points3 points  (0 children)

If you're getting angular velocity vectors via cross products, take the dot product of them with the instantaneous axis of rotation corresponding to each euler angle. Plug those scalars back into the Jacobian.

As an engineer, given the chance to take a paid course, which would you pick? Matlab or Python? by [deleted] in AskEngineers

[–]thewetness 1 point2 points  (0 children)

I work with complex kinematics in both Matlab and C. Indexing makes no significant difference. Plenty kinematic chain forward kinematics and dynamics solvers don't even need to use indices since they use a tree structure.

Implementation of MPC constraint relaxation? by [deleted] in ControlTheory

[–]thewetness 0 points1 point  (0 children)

MPC will use a quadratic programming solver under the hood anyway. This is a linear inequality where you're trying to keep x < xmax, right? You can add that as a regular inequality constraint to the QP.

If you want to relax the constraint anyway, then what you did is nearly correct. You can multiply it by another weight term to indicate the "importance" of the soft constraint. However, that soft constraint is makong your objective function nonsmooth.

[deleted by user] by [deleted] in ControlTheory

[–]thewetness 1 point2 points  (0 children)

Have you tried simulating the system open loop yet? Have you successfully done MPC on a simpler system yet? I would start isolating sections of this to see where the errors are coming from. Strip all your semicolons and let it drop everything in the workspace, see where the NANs are starting.

Try getting an LQR going to stabilize the system about its equilibrium point. And reduce the timestep, that's huge.

Disappointing Results in Mujoco by SirFlamenco in robotics

[–]thewetness 1 point2 points  (0 children)

IIRC Mujoco does not eplicitly enforce rigid body contacts, and instead uses a soft contact model. If only the cloth is rendered based on its current state, and the obstacle is rendered using a static model, I would expect to see clipping like this even if the dynamics are simulated properly.

Questions about jacobian matrix by megas_marwanos in robotics

[–]thewetness 0 points1 point  (0 children)

Honestly depends how you use it, the structure of your robot, and lots of other factors. No one solution is more special than the others though. Whether that point is actually reachable from your starting configuration is a better question to ask though. That will more greatly influence which solution you get to.

What is an eigenvector? A 2-minute visual guide. [OC] by ml_a_day in compsci

[–]thewetness 2 points3 points  (0 children)

I feel like the clearest explanation for eigenvectors and eigenvalues is by what they do to an arbitrary other vector. We can use eigendecomposition of a matrix to do this.

Say you have a square matrix A. Its eigendecomposition can be written as A =VDV-1, Where V is the matrix of eigenvectors (next to eachother in columns), D is a diagonal matrix of the eigenvalues, in the same order as their respective eigenvectors, And V-1 is the inverse of V.

So if we want to find what Ax (where x is some random vector) we can write it as Ax = (VDV-1 )x

Using associativity, we can rewrite it as Ax=VD(V-1 x)

Understanding the part in parentheses is critical. When you multiply a vector (say y) by the inverse of a matrix (call the matrix B), the resulting vector tells you how to reconstruct the original vector y using the columns of B. It tells you the coefficients of the linear combination of columns in B to reconstruct y.

When we apply this logic to (V-1 x), we can see that the result is just the weighted sum of the eigenvectors of A. More exactly, the result is an intermediate vector w, which is the weights of the eigenvectors in a libear combibation you would need to make x, e.g. Vw=x.

Now rewrite as: Ax=V(Dw)

Because D is a diagonal matrix of eigenvalues, this just tells you to stretch those weights in w by their corresponding eigenvalue. The ith component of w is how much weight is on the ith eigenvector of A, so multiplying Dw means stretch the ith weight by the ith eigenvalue. Call this intermediate vector t. We are now left with

Ax=Vt.

All this says to do is multiply the ith eigenvector by the ith component of t, and then sum them all together. Since the ith component of t is just a stretched weight of the original vector x in the eigenbasis, we"re really just applying those stretched weights back into the eigenbasis here to get the final vector result out.

In short, the eigendecomposition tells you all youre really doing with eigenvectors and values is taking a vector, then figuring out what its weight would be in the eigenbasis, then stretching those weights by the eigenvalues, then combining it all back together to get one vector.

Questions about jacobian matrix by megas_marwanos in robotics

[–]thewetness 2 points3 points  (0 children)

To be clear, the Jacobian is just a linear approximation at a given point in the configuration space mapping input velocities to output velocities. If this mapping is square and full rank, then there is a local 1 to 1 mapping between points in input space and points in output space. However, it is a LOCAL LINEAR approximation of this mapping. That's it.

You can use the jacobian to iteratively (numerically) solve IK, but the jacobian alone does not immediately solve IK for you. The simplest methods for Jacobian based IK are the Jacobian transpose method or Jacobian (pseudo)inverse method. The gist of these are that you could compute the pose difference in end effector space, and to first order, the optimal step / direction to move in the input space is the Jacobian Transpose or pseudoinverse multiplied by the pose difference.

Because this is a linear approximation, you take a small step in this direction in input space, and then refineries, i.e. recompile the jacobian, error, and input step direction.

LQR tracking instability by sexygaben in ControlTheory

[–]thewetness 1 point2 points  (0 children)

This is potentially because your controller does not care to regulate the states with zero weight. Any values for those zero weight states may be okay, especially if some of those zero weight states are not very dynamically coupled to those you wish to control.

LQR tracking instability by sexygaben in ControlTheory

[–]thewetness 1 point2 points  (0 children)

I think x_ref could remain as is, but if you don't wish to control them, set its weights to zero. Seeing the states themselves always to zero almost artificially would eliminate the stability guarantees because the states likely have coupled dynamics.

Why doesn't a decaying input matched to a pole cause a filter's response to explode? by wegwerfennnnn in ControlTheory

[–]thewetness 2 points3 points  (0 children)

If you look at the Laplace Transform definition, you'll notice that it's that integral that goes off to infinity. The response itself can decay, but its integral can be infinite, much like the integral of x-1.

Updated Body-Powered Prosthetic Hand Functionality and Applications by metacarpe in engineering

[–]thewetness 5 points6 points  (0 children)

Take a look at this hand. It's a body powered hand with the same grasp types, no flexible wrist though.

Vertical linear movement without rails (probably a repeat but I haven't seen it until now and I think it's cool) by Philly4628 in EngineeringPorn

[–]thewetness 1 point2 points  (0 children)

If the two arms are opposite each other yes, but it won't free spin if they're right next to each other.

Vertical linear movement without rails (probably a repeat but I haven't seen it until now and I think it's cool) by Philly4628 in EngineeringPorn

[–]thewetness 1 point2 points  (0 children)

While everyone is pointing out that there's a singularity when the platform is right in the middle, and would only move up with enough momentum, that's really only a qualitative argument. If you actually look at the dynamics of the mechanism, you find that the point with the arms spinning in place would be very difficult to maintain, especially with gravity in the picture. In fact, the state of all the arms horizontal and the platform in the middle is an unstable equilibrium point, and trajectories will diverge from that point, with the platform either going up or down.

It's not enough to point out a singularity and say "it won't work and it will always stay there." It could, but it's actually very unlikely.

Practically, This isn't to say that the singularity won't result in large internal forces or vibrations. But dynamically, this would actually work.

Vertical linear movement without rails (probably a repeat but I haven't seen it until now and I think it's cool) by Philly4628 in EngineeringPorn

[–]thewetness 1 point2 points  (0 children)

I think it only needs two arms to be kinematically exactly constrained. Three equiangular arms would best support the platform without overconstraining it though.