"When men have realized that time has upset many fighting faiths... We've been wrong before, and we're likely going to be wrong again...That the ultimate good desired is better reached by free trade and ideas. In light of that knowledge that we may be wrong, the best course of action, the safest course of action, is to go ahead and listen to the ideas on the other side. The best test of truth is the power of the thought to get itself accepted in the competition of the market. Those are the ideas that we can safely act upon. Every year, if not every day, we have to wager our salvation upon some prophecy based on imperfect knowledge. That, at any rate, is the theory of our Constitution. It is an experiment, as all life is an experiment."
- Oliver Wendell Homes on the marketplace of ideas.
Unknown to most people, our modern idea of free speech was not founded by the constitution but by a judge of the name Oliver Wendell Homes. The history and story of how our modern concept of free speech came to be what is today is very relevant to the free speech problems faced by the ACLU.
In a nutshell, there are only 24 hours in a day and humans have limited cognitive capacity; news and factual assertions tend to propagate fastest based on perceived significance and urgency, and it's easy to fake those qualities.
Informally, consider the existence of tabloid newspapers and clickbait advertising on most news sites. I'm sure you're familiar with companies like Taboola and Outbrain that put up ads with iconic imagery and headlines like 'cure unwanted medical condition with this one weird trick' or 'Insider secret revealed: professionals hate him' etc. etc. Now, you can block ads with the help of an extension if you're technically competent, but let's face it, the web is awash in fake content. If you go to a popular news site without any adblocking software, it's absolute hot garbage, and sadly you can easily find a correlation between particular ideological tendencies and the incidence of garbage.
The bottom line here is that that dishonesty is profitable and in marketplace of ideas terms that means it's easier to sell a defective product than a reliable one, because people prioritize emotional activation over truth. So picture the marketplace of ideas a a bunch of ideologues shouting out their thoughts on everything from the right end from which to eat an egg to what humanity's overall priorities should be. Now picture that the more successful ideologues purchase megaphones, platforms, and eventually gian sound systems. A naive consumer entering this marketplace is naturally going to accord the greatest weight to the loudest signals because it requires a tremendous amount of work to do otherwise.
Any post that challenges dang will likely get voted down. This is normal given his position and it's the price of admission (see my other reply to his post). People also rarely vote on how substantive your post is but on whether they agree with it or not. It's not in the spirit of HN to do this but you really can't control human behavior and people do this without being fully aware of it.
Due to how human voting behavior sort of deviates from the spirit of HN, it's a good excuse to have some people moderate the site as having an emotional mob control everything could have the entire site turn into reddit. The problem is the people moderating the site are also human and also victims of their own biases and business interests so you get hella sketchy stuff like this pinned post.
Still it's sorta good that this post wasn't outright deleted.
> "Any post that challenges dang will likely get voted down."
While this may be the case, the comment you reply to is a particularly poor example on which to hang this comment. It's a snarky, insubstantive insinuation, regardless of whom it's in response to, and was edited to complain about downvotes.
> "Still it's sorta good that this post wasn't outright deleted."
It's likely it wasn't flagged and removed because it was in response to 'dang, as he is generally leaves responses to his comments in place even when they're quite bad, even if he doesn't follow-up with a reply in what I take to be added transparency.
Oh don't worry, not complaining about downvotes. Just baffled that the community stands by that characterization of the issue at hand. Plays into crummy stereotypes about the tech community and their general naivety regarding social issues / norms (or perhaps worse, apathy?).
It's neither snarky nor insubstantive. It gets straight to the heart of the issue in few words. It does speak volumes. Few words can given context and choice.
The thread is a shitshow of bluster, vague accusations, mob down voting and carefully selected facts on both sides but it's interesting that it is still possible to piece together what actually happened by reading a selection of the comments from both sides.
My impression is that one side is slightly more keen on obscuring the full facts than the other without outright giving the impression that that is what they are doing.
> Normally, of course, we'd downweight this sort of petty drama.
Down weight? So you guys internally pick and choose topics to weight down? I thought HN was purely community driven with only comments being moderated.
Of course on the surface you guys say you only downweight petty drama but I truly wonder if that's actually true. The fact that you guys downweight anything without trusting the community makes me question how fair, balanced and unbiased things are on HN.
Additionally the person who this tweet was about posted here: https://news.ycombinator.com/item?id=27400221 and it doesn't seem like drama. It seems like injustice and misinterpretation and stubborn refusal. His only option is to appeal to the public but of course YC has to color it with their bias.
It really looks like he was kicked out over a tweet from his perspective. Getting kicked out of YC may seem petty to YC but it is not petty to the person who was kicked out. Even Dang calling this kind of thing "petty drama" does unparalleled damage to his reputation.
The right way to deal with this is not to touch this post and let paul make blog post or something and see if the community votes it up on HN.
> I thought HN was purely community driven with only comments being moderated
HN is a curated site, always has been, and has never claimed otherwise.
It is an interaction between three subsystems: community, software, and moderators. All three are necessary. If you or anyone would like to know more, here are some links to past explanations to start with. If there are still questions after familiarizing yourself with that material, I'd be happy to answer them.
You changed what I said into "Of course on the surface you guys say you only downweight petty drama". That was (a) a massive distortion—you can trivially see from https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que... that there are many other kinds of downweighting. On top of that, (b) you added snark ("of course") and insinuation ("on the surface") in a way that strikes me as particularly uncharitable.
You've done it again with "Seems reasonable to say, don't trust news about YC on HN", implying that we somehow intervene to distort that, when the truth is that we do exactly the opposite—as I'd just explained in the comment you were replying, as well as on many previous occasions: https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu....
Can you address the semantic intent of your use of the word only and what Dan said please: the substantive point to me is you implied only == specific == evidence of bias and as Dan said it is well established they down weight for more than one reason which implies != only which I think, personally you haven't adequately addressed. You're basically wrong.
You're not addressing the point. You said he only downweights for one reason. Plainly, he has declared consistency in downweighting for many reasons. No amount of self justification changes the fact you said he ONLY downweights for one reason, and that's factually incorrect.
What he did in this specific case? Different matter. What he does as a matter of both stated policy and declared intent and I would suggest, evidence is different. He downweights for a range of reasons.
Why can't you just accept that and say so? What's blocking you from acknowledging your own words are just incorrect?
>Why can't you just accept that and say so? What's blocking you from acknowledging your own words are just incorrect?
Very simple logic. He's in a position where he can lie. Conflict of interest. He's paid by the company who sponsors this news site. Why can't you get this simple logic through your head?
>You said he only downweights for one reason.
Please read my post. I said what I meant WAS THIS: The only thing Dang can say is that when he downweights posts he can only SAY that he does so in the interest of the HN community. That's it. Mainly the point is because this is ONLY what he can SAY (keyword) you can't trust what he says, because of a CONFLICT of INTEREST. Get it? Take note I capitalized some words for emphasis to help you understand exactly what I'm saying. The language I use is specific and exact.
>You're not addressing the point.
I am addressing the point. The point is I'm not wrong at all and I'm telling you why. That's really all you need to get through your head.
>What he did in this specific case? Different matter.
What he did in this specific case IS ENTIRELY the point. It is NOT a different matter. ANY thing off this point is off topic. My initial post is completely and only addressing the point. I think your mind is wandering from point to point not latching on the main topic.
>What he does as a matter of both stated policy and declared intent and I would suggest, evidence is different. He downweights for a range of reasons.
Your suggestion is noted. And I suggest there's a conflict of interest here. There.
> Why can't you get this simple logic through your head?
Everyone knows he's paid by YC and almost everyone is taking his decade long track record into consideration as an excellent moderator + that he literally didn't do anything wrong here. You're trying to defend your allegation and everyone else doesn't agree with you.
> That's really all you need to get through your head
Please chill. If you've never moderated a forum, you should start realizing that moderation is key to having a good community.
Cherry-picking statements and acting like this is not appreciated.
Fyi: I've been banned once and thought it was justified. They've done an amazing job to keep the community healthy and that's really hard to do.
What Dang mentioned seems pretty clear: we won't moderate this because it involves us, but this isn't the place for gossip.
YC has > 150 companies per year. Not everything is perfect, not everything is known and people will always try to say their POV of the story. That's life, we'll see how this goes, but I'd rather see it on Reddit than here.
It's perfectly reasonable things may never go perfect. However. Things become sketchy when Dang changes the title and pins his own opinion at the head of the comment section.
Gossip and news are literally the same thing. It feeds and lights up the same areas of the brain. It's hard to say whether this is gossip or news because from this guys post it looks like he got kicked out of YC for trivial reasons. It can potentially say as much about the reputation of YC as it does about the guy who got kicked out. That sounds like news to me.
>Cherry-picking statements and acting like this is not appreciated.
You know I make a huge effort not to cherry pick anything. But it's inevitable things are usually interpreted this way because of the medium of communication or my own trouble with articulating the meaning of what I say. My experience is that when you "think" someone is cherry picking words on HN, usually he's not doing it on purpose and that's how he actually interpreted what you said.
Look carefully at what I wrote. The only thing I am doing here is presenting a valid opinion that goes against the grain of public opinion. There's nothing else going on yet it's exploding into some kind of drama where you're telling me to "chill".
Consider the fact that the bias lies with you. You interpreted my comment as not "chill" when I'm literally just calmly typing my thoughts. I am calm, but why did you insert emotion into my words where none initially existed? Because you are biased. My guess is that you injected hostility into my words because my opinion is simply against your opinion.
It's normal human behavior to interpret a difference of opinion as an attack. I point this out to you so you can better understand yourself and to not classify a unique opinion as an attack. This is my interpretation of what's going on with you and I think it's pretty accurate.
He also added ~"there's 2 sides of a story". I don't see why Dang wouldn't be allowed to add a comment regarding this topic.
Every post about a company has an employee/CEO stating an opinion and often even stating their side.
Even if you would think Dang's opinion is subjective ( which i didn't interpret as such). Why would that suddenly be a problem?
I said chill for example because of this:
> Down weight? So you guys internally pick and choose topics to weight down? I thought HN was purely community driven with only comments being moderated.
You seemed ignorant to the basic fact that every half decent forum is moderated. And you "attack" them on something that is known by ( almost appearantly) everyone and the very thing that makes+keeps this community interesting.
Good moderation is too much undervalued from my POV. You only notice it when it's gone.
If I'm free to give my opinion, you seem to frustrated because people don't agree with you. I understand, it's normal and human behavior. You are not above it.
As an example your most recent comment
(first line)
> Any post that challenges dang will likely get voted down.
Ugh.
(Last line)
> Still it's sorta good that this post wasn't outright deleted.
Full of human behavior ( as you like to mention), because it doesn't fit your endgoal. Downplaying that the post isn't deleted, while admitting that the moderation was fair.
To be honest. Dang could have just moderated this thread. Reactions such as ours are the reason why and don't have any meaningful content.
But he choose not to. Even though he probably knew it would lead to content as this.
>He also added ~"there's 2 sides of a story". I don't see why Dang wouldn't be allowed to add a comment regarding this topic.
The fact that it's the top post is the most questionable thing here, it seems pinned to the top.
The statement is seemingly fair and balanced but make no mistake it's not. A common technique among corporations and public relations experts is to try to seemingly be fair about things that are obviously wrong. A good example of this is educational creationism in the US. Many schools want to teach a fair and balanced view of biology by teaching both evolution and creationism. Like dang himself said, there are two sides to every story after all.
I never said Dang should be banned from commenting. It is a dictatorship after all. His opinion and comment and the fact that it's the top comment in this thread makes the whole thing sketchy. And that is all I am remarking on.
If I were him and my intentions were to be neutral I woulda just left the topic completely alone.
>Good moderation is too much undervalued from my POV. You only notice it when it's gone.
This is off topic. I'm not talking about moderation here as something to get rid of. My topic is the conflict of interest that has to do with this thread and dangs comment on it. That's it.
>If I'm free to give my opinion, you seem to frustrated because people don't agree with you. I understand, it's normal and human behavior. You are not above it.
You are, and I appreciate your opinion. I never said I was above it. But here you are again, after telling me to chill you tell me that I seem frustrated. Again it's your bias talking and inserting false emotions into places where none exists. I am simply explaining why I disagree with you.
>As an example your most recent comment, first line:
>> Any post that challenges dang will likely get voted down.
>It's snarky against a highly respected member that is part of the team that makes this forum HN.
It's not snarky dude. It's true. If I call someone who murdered 10 people a killer am I being snarky? No. I'm remarking on a fact. Now I admit I'm criticizing him but open and polite criticism is part of the spirit of HN.
Anyway this subthread has already degraded to uninteresting talk that's against the spirit of HN. I would say normally dang would probably kill this subthread if he saw it, but he may not in effort to appear fair and balanced. That's a good thing. But that doesn't mean you should just ignore the conflict of interest at play here. Either way, it's best not to continue this debate, I've made my point and you evidently disagree but neither of us can definitively prove whether censorship is happening or if it isn't so let's end it here.
>Full of human behavior ( as you like to mention), because it doesn't fit your endgoal. Downplaying that the post isn't deleted, while admitting that the moderation was fair.
And what is my endgoal? I have repeatedly said he could not be censoring things and that he also could Why didn't you bring those up? Are you CHERRYPICKING??? No you're not, you're simply not clear about what I am saying so I am clarifying the facts to you.
My end goal here is to remark that the actions dang took here are a conflict of interest and that makes his post highly sus. Does it mean dang doesn't do good things? No. Does it mean dang has never done no evil? No. It means that what he is doing here for this specific post is sketchy. THAT is my end goal.
>Useless content :)
See. This is rude and the smiley face is truly snark. This is actually against the rules of HN. A deliberate violation. I wonder how dang would react to this kind that kind of remark. Truly a test of his ability to stay centered and unbiased. Most likely he won't do anything given the context.
Giving someone with a conflict of interest good faith is extremely unwise. I advise even for you never to do it.
In essence you can say my faith in him is 50% not 100% as good faith seems to imply. So with 50% faith, engagement is still has value. I never met a person who never lied, so every single person I've ever talked to in my life I technically never had 100% good faith towards. I expect everyone to lie and be untrustworthy at some point. For some people it's big things, for other people it's minor white lies. For someone with a conflict of interest I'd be more careful.
Additionally even someone completely untrustworthy can still be communicated with. You can still glean information from such a person by observing his actions. For example if dang censors this thread by deleting the whole thing, that would say a lot. Him not deleting the thread also says a lot.
What I don't understand about you is how you can say you don't "understand" something and then suddenly say "good evening" as if you're leaving. Wouldn't the goal be for you to "stay" and "understand" Or is the goal simply to debate and win or leave if you can't win?
No instead of blind faith I choose to not trust someone with a conflict of interest. You choose to give him your blind faith and call any form of doubt a conspiracy bubble.
He's probably not deleting or flagging anything because he's aware it will make him look biased. This is a common strategy. Dang picking and choosing only to censor the most insidious things remains an open possibility.
Also, what decade long track record? You have a record of posts that were deleted or censored? That would be a track record. But guess what? none exists. That's a fact.
All I'm saying is that a conflict of interest exists and because of this conflict of interest, dangs comment is pure sketch.
Am I going to let my neighbor borrow a million dollars just because he has good credit? No. It would be unwise to do so and you blindly trusting dang is highly, highly unwise.
All forms of faith are blindness.
I claimed multiple times that it looks like this was pinned. Whether it was actually pinned is open for debate. So you make a claim it wasn't pinned, why don't you prove it with something other than blind faith in dang saying he never pinned it.
You're response to my appreciation of moderation is ( while you are protesting against any moderation outside of the community ):
> This is off topic.
You are literally comparing things with ( in 1 post): China, covid, dictatorship, serial killers, censorship, educational creationism, biology in schools, ...
¯\_(ツ)_/¯
It's an upvoted comment by a moderator... Nothing more, nothing less.
>You are literally comparing things with ( in 1 post): China, covid, dictatorship, serial killers, censorship, educational creationism, biology in schools, ...
Those are called examples. Examples in service of helping to illustrate a point that is still on topic.
You on the other hand wanted to talk about things that were never remarked upon or even true. I never said anything about how dang should stop moderating anything. You brought that up out of nowhere. Hence. Off topic.
>As I said before: chill.
>Ps. Still useless content :)
Then stop replying. Stop being rude. There's no point if it's useless for you.
>What I've found, from famous books by famous philosophers all the way to pop philosophy books to vague philosophical discussions... is some of the muddiest and most convoluted self-indulgent thinking i've ever seen.
I find philosophy to be highly irrational. It studies topics that are uniquely different yet it categorizes these topics as the same thing.
Aesthetics aka beauty is a philosophy, and so is logic. How do these things exist on the same level? Aesthetics is a human attribute and a human opinion and made up concept, logic is an observable phenomenon fundamental to the universe.
The infinite regressions are also pointless paths to explore. By induction we know it's infinite already so why continue to explore?
That's applied math though. It is categorically on another level in the hierarchy.
Why would one specific application of math, the application of math in beauty be placed by philosophy on the same level as logic fundamentally. Math is derived from logic after all. Why isn't philosophy placing the study of the application of math to origami in the same category? Why does beauty arbitrarily take precedence over origami?
No conjectures in math are called theorems and they are based off of made up assumptions called axioms. Whether the axiom is true from an observational standpoint is irrelevant to math.
For example euclidean geometry is observably not true. Einsteins General relativity shows that the observable geometry of our universe is not euclidean. Yet the field of euclidean geometry is still intensely studied and a valid mathematical field.
You need to realize that there exists the possibility of being both good and bad.
Pushing this narrative without considering the obvious facts is a simple minded view.
Cheaper products are good for the working class because it means they can afford more products. Automation leads to cheaper products. Common sense.
That is the good side of automation for the working class.
So the answer is far more complicated then the simpleton answer you came up with here. The more you automate things the cheaper things get but the less jobs are available.
The gradient is somewhere in the middle you can't completely have no automation otherwise every product will be custom made and expensive as hell.
You can't have 100 percent automation either otherwise there's no one around to have jobs and make money to buy the product.
So economically speaking automation is both good and bad for the working class and only a cost benefite analysis can find the right amount automation that is best.
There free education for you. A lesson in basic math (see my other replies to your misguided views on quaternions) and economics in one day. I'm not so bold Like you as to run around offering paid consulting work for these trivial lessons.
Guys I work at a company that uses Quaternions for rotations of physical objects. PTUs we call them (Pan Tilt Units).
I am telling you Quaternions have HUGE issues. These issues become much more apparent when you deal with physical objects.
Here's the thing Quaternions don't exist in reality. It represents an orientation of rotation but it completely masks the path took to achieve that orientation.
For every gimbal in reality there is an actual YawPitchRoll (YPR) that was executed to achieve that orientation. AS soon as you convert that real YPR into a Quaternion you lose the YPR that was needed to achieve that orienation.
So let's say I need to have one gimbal imitate the position of another gimbal. I take the YPR given to me by gimbal "A" convert the YPR to a Quat, send that Quat over the wire to Gimbal "B" and convert that Quat back to YPR to feed to the gimbal so it can rotate itself to imitate the orientation of gimbal A.
The quat is a higher entropy form of information. Now when converting back to YPR there are MULTIPLE YPRs that yield the same orientation. You can derive a YPR that is out of bounds of the physical gimbal.
Literally you can get a YPR that tells your gimbal to Yaw 190 and pitch all the way back past 90 to 170 degrees and roll 180 degrees until it's right side up. This YPR is identical to a yaw of 10, a pitch of 20 and 0 roll. Quaternions hide the original YPR, you lose information so when you receive a Quaternion it's hard to translate it into a physical realization of the orientation.
The company I work for doesn't realize this. They used Quaternions from day one and we have all kinds of headaches like this when we try to extract the YPR and use these orientations in the real world. Actually I should say only I have these headaches. A lot of people haven't figured out this problem yet.
The only time you should use Quats are if you need to transform an orientation or you're dealing with virtual objects that have no rotational limits. Everybody thinks quats are magic and better. They are not. They have huge downsides. Huge.
If you have actual, possibly motorized, physical rotation axes to keep track of, then of course you need to keep track of the actual angles of each separate rotation, somewhere.
Compressing it all into one orientation may work for some use cases, but generally one should not expect that. Similarily one wouldn't try to represent all of the axes of a KuKa arm robot with just one orientation. You need info about the individual axes when you want to control it.
Your company can still use quaternions to represent the rotations of each axis, tho. Might help in convincing them going forward, as they don't have to let go of them (they are good fellas actually).
I meant when you want to compute the final orientation (lets ignore position): Each axis results in some orientation change which can be expressed as a quaternion. The final orientation can then be computed by combining the quaternions into one quaternion.
This is very similar to the computation of forward kinematics (https://en.wikipedia.org/wiki/Forward_kinematics) for robots, which just have additional translations for the transformations.
As said before you still want to retain the actual angles somewhere.
Depending on your physical configuration one of the Euler angle variants (Tait–Bryan angles is another term to search for) could perfectly describe your case and you could just use these to store the angles.
Euler angles can also be converted to quaternion. But you can't recover the original used angles from the quaternion alone because of the 2pi wrapping of angles.
For others still wondering why quaternion or orientation alone won't suffice, here is a different example: Imagine an axis which can rotate more than only one revolution, i.e. can have angles like 4 pi, for example motorized volume knobs. An orientation alone can't represent that as it wraps the angles to 2pi. User manually turns the knob to two full revolutions (4pi) and then increases the value by remote control, which results in motorized knob to rotate. Should the knob turn back to nearly zero revolutions (rotate back 4pi) plus the increase? No, it should rotate to 4pi+increase.
By the way, when you have internally stored the "multi revolution" angle and have a sensor reading in range [0..2pi[ you can recover an multi revolution angle equivalent to the sensor reading with wrapToPiSeq( angle in radians before, sensor reading).
# to equivalent angle in [0,2pi[ range
def wrapTo2Pi(rad):
return rad % (2*pi)
# to equivalent angle in ]-pi,pi] range
def wrapToPi(rad):
return wrapTo2Pi(rad + pi) - pi
# angle difference between rad0 and rad1, in range ]-pi,pi]
def angleDiff(rad0, rad1):
r0 = wrapToPi(rad0)
r1 = wrapToPi(rad1)
return wrapToPi(r1-r0)
# rad1 to equivalent angle so the jump from rad0won't be greater than |PI|
def wrapToPiSeq(rad0, rad1):
r0 = wrapToPi(rad0)
r1 = wrapToPi(rad1)
diff = wrapToPi(r1-r0)
return rad0+diff
I get what what your saying here. So use 3 quaternions to represent the orientation rather then 1. Right?
But doesn't that magnify the problem by 3x? Extracting the angle from the quat again can yield multiple possibilities. If you have 3 quats you now have 3x more possibilities. This can only be done if you assume certain restrictions for each quat such that they yield a singular axis angle when you do a back conversion.
Additionally doesn't that technique yield more possibility to encode axises that are incorrect? A quaternion representing the x axis can be accidentally encoded with rotations along other axises. It's better to keep the type of your domain restricted to be able to encode only possible answers.
Still this can be done as a valid-ish workaround. I give you credit for that, I wouldn't of thought of this so thanks for ur explanation. Although I might use this idea it is far from ideal imo because of the problems I mentioned above. That is if I interpreted what you're saying correctly?
Also addressing your example, the bigger problem in my mind is that there are still issues that arise even if the physical gimbal is restricted on all axises to (0, 2pi). Any gimbal that can go 4pi likely can go infinite pi and that knob will likely be the same so losing rotational information greater than 2pi is ok for most cases in my mind. (If the system yawed 790pi, users are usually only interested in some value under 2pi). The insidious thing imo, is that information is lost even in (0, 2pi) and a lot of people don't realize this.
Represent your axes with the actual angles. These probably correspond to motor position or revolutions.
Use the quaternions only when you want an orientation for these angles.
Maybe you want to know in which direction the PTU is pointing for a particular set of motor positions, or axis angles. Compute the kinematic chain by multiplying the quaternions corresponding to each axis in the order they are physically applied, but multiply from right to left. Your final result is one quaternion representing the direction the PTU is pointing at. (You could also use 3x3 matrices or other representations) Depending on your physical configuration one of the Euler angle variants (Tait–Bryan angles is another term to search for) could perfectly describe your case and you could just use these to store the angles and compute the orientation.
If you don't actually need the final orientation, then you can omit the quaternions altogether.
If you have orientations as input and need to control the motors so the PTUs are pointing in the required direction:
I would compute the current orientation of the PTU. Then compute a trajectory of quaternions interpolating from the current orientation to the target orientation (use quaternion slerp for interpolation).
Then at each timestep you compute the required motor positions using inverse kinematics [1].
It is a common problem that multiple motor positions are possible and actually an unfinished research problem.
Now that I wrote this, I think this might be the problem you are encountering.
For PTU I think it would be ok to try to recover the current target angles from the target quaternions of the trajectory using one of the Euler configurations. There are papers [2] listing all together, so one can try which is correct.
Having a configuration chosen there is still the problem of multiple solutions. In this case use the one closest to the actual current angles. For cases when all angles are possible for an axis, use the current angle as target (i.e. motor doesn't change). When you then have an target angle use `wrapToPiSeq` to get an equivalent angle close the current actual angle as input for the motor controller.
[1] https://en.wikipedia.org/wiki/Inverse_kinematics
In computer animation and robotics, inverse kinematics is the mathematical process of calculating the variable joint parameters needed to place the end of a kinematic chain, such as a robot manipulator or animation character's skeleton, in a given position and orientation relative to the start of the chain.
[2] In the past I used this (but be careful in which direction they apply the transformations, I stumbled over this):
Diebel, J. (2006). Representing attitude: Euler angles, unit quaternions, and rotation vectors. Matrix, 58(15-16), 1-35.
https://www.astro.rug.nl/software/kapteyn/_downloads/fa29752...
When switching target orientation while already approaching one I would use quadratic bezier splines to get a smooth switch (https://ibiblio.org/e-notes/Splines/bezier.html). These just use linear interpolation, multiple times.
In the case of quaternions replace the linear interpolations with quaternion slerps and you get quadratic bezier splines over orientations.
I'm not sure how we do it in this case. I know we already follow a trapezoidal velocity profile when approaching a target, but mid switch to another target I'm not sure what we're using. Thanks for this, I will look into it.
> In this case use the one closest to the actual current angles. For cases when all angles are possible for an axis, use the current angle as target (i.e. motor doesn't change). When you then have an target angle use `wrapToPiSeq` to get an equivalent angle close the current actual angle as input for the motor controller.
Yeah that's how I solved this issue. But still if we avoided quaternions we wouldn't have this problem all together, which is my point.
Specifically what's going on is that we're sending quaternion values over the network and the person on the receiving end needs YPR so we're basically like wtf, there's no transformations being performed on the quat, the source of info is a YPR and the output is needed is the same exact YPR so we're only converting to a company wide Quat Protobuf type to send over the wire. I submitted a request to make a new protobuf type that included YPR but I was met with huge company resistance from other engineers saying that a YPR was redundant to a Quat (It's not).
>In computer animation and robotics, inverse kinematics is the mathematical process of calculating the variable joint parameters needed to place the end of a kinematic chain, such as a robot manipulator or animation character's skeleton, in a given position and orientation relative to the start of the chain.
Interesting, but yeah the application in my company is just a single gimbal so there's no chain of "joints" here. I don't think this would apply to our my specific case.
>> For every gimbal in reality there is an actual YawPitchRoll (YPR) that was executed to achieve that orientation. AS soon as you convert that real YPR into a Quaternion you lose the YPR that was needed to achieve that orienation.
I would say you obscure it. You can certainly calculate it from the 4 quaternion parameters.
SolveSpace (Free CAD software) can be used to design assemblies and mechanisms from a set of parts with constraints. You can certainly build a gimbal with it by constraining the pieces. If you do it correctly, it will be possible to re-orient the final 3DoF part and the constraint solver will solve for the angles (assuming you built it that way).
Internally we treat all object orientations as quaternions, so this would just be using the algebraic constraint solver to find the angles. In practice there will be closed form solutions - with problems at gimbal lock.
Nope. The only thing you need to specify is the order the YPR angles are applied (that more a convention than an assumption). In SolveSpace the assembly constraints would effectively encode the order of application.
>If you really need this problem solve I might know someone willing to do paid consulting on it.
If you really need education in math and how to properly do trigonometry I will help you solve this problem for free. Just ask me questions. I'm super nice and won't go around fraudulently espousing an expertise in math and demanding people pay me to solve trivial math problems.
Frankly you are not even qualified to solve the problem yourself or give me a recommendation.
Especially when this problem is basically impossible to solve. I'll give you 10 thousand dollars if you can give me a quaternion that doesn't have multiple yprs here on HN. Literally, give me your venmo.
>Nope. The only thing you need to specify is the order the YPR angles are applied (that more a convention than an assumption). In SolveSpace the assembly constraints would effectively encode the order of application.
The term "yaw pitch roll" ALREADY has the order of the Euler angles applied. Let me tell you that order, it's: yaw, pitch and then roll.
Ypr is different from straight up Euler angles in that ypr has order fixed; hence the term "ypr"
With the order of angles fixed you still get multiple answers for a single quaternion. Why don't you try it in 3D space in your own head. Given A rotational orientation in 3D, find at least two yprs needed to arrive there.
Here maybe this will help you: a ypr of (0,0,0) is the same as a ypr of (180, 180, 180). These two yprs can only be represented by a single quat. Think about it. Given only a quat you cannot determine which ypr was used by the physical gimbal to realize this orientation. For solve space to know it must be making assumptions or holding onto information outside of the quat.
There free education for you and I didn't even ask you for a dime.
No, no, no. Wrong again. Please study basic trigonometry and read your own sources. Your own link proves you wrong.
The formula for conversion from quat to ypr involves arctan and arcsin. These functions yield multiple answers.
Additionally your own Wikipedia link explicitly states the existence of multiple answers, and that traditionally atan and asin in programming languages yield only one answer. I quote:
"Note, however, that the arctan and arcsin functions implemented in computer languages only produce results between −π/2 and π/2, and for three rotations between −π/2 and π/2 one does not obtain all possible orientations. To generate all the orientations one needs to replace the arctan functions in computer code by atan2"
Either way you misunderstand the math behind quaternions and you lack a basic grasp of trigonometry. Assuming you read your own Wikipedia link, what I said is categorically true.
Interesting to read about experience with a physical gimble, thanks. In this case the "problems" of Euler angles are actually an accurate model of the problem space.
You can design a hardware ptu that when given a quat it figures out its own ypr to arrive at that orientation. That would make quats feasible for hardware.
However, how the Ypr was picked by the hardware must be explicitly encoded as an assumption that must be part of every conversion from quat to ypr that happens downstream.
I'm sure it does, I'll give you the benefit of the doubt even though the article makes no mention of Quaternions. My point is, using Quaternions for physical devices is using a hammer on a screw. Huge mistake, but it can be done by people who don't know any better. I'm guessing you worked on this and bought in to the whole Quaternion BS?
I'm in the defense industry as well and guess what? Basically most people don't know any better.
If your asian there was the whole subtle Asian thing a couple years back that generated tons of sub groups like subtle Asian rock climbing.
Don't have to be asian too join and I'm positive there's groups outside of the whole subtle Asian thing.