tomstewart89 / geometry Goto Github PK
View Code? Open in Web Editor NEWAn Arduino library for representing where things are in relation to other things in 3D space
License: MIT License
An Arduino library for representing where things are in relation to other things in 3D space
License: MIT License
If we have an indentity matrix and get the euler angles, theta is set to -90°.
The method does not cover the case if (*this)(2,0) is 0. In this case the method executes the last else case that should only executed if (*this)(2,0) is 1. The first if statement should be changed. ?!
`Matrix<3,2> Rotation::ToEulerAngles()
{
Matrix<3,2> ret;
if((*this)(2,0) != 0)
{
ret(1,0) = -asin((*this)(2,0));
ret(1,1) = M_PI - ret(1,0);
ret(0,0) = atan2((*this)(2,1) / cos(ret(1,0)),(*this)(2,2) / cos(ret(1,0)));
ret(0,1) = atan2((*this)(2,1) / cos(ret(1,1)),(*this)(2,2) / cos(ret(1,1)));
ret(2,0) = atan2((*this)(1,0) / cos(ret(1,0)),(*this)(0,0) / cos(ret(1,0)));
ret(2,1) = atan2((*this)(1,0) / cos(ret(1,1)),(*this)(0,0) / cos(ret(1,1)));
}
else
{
ret(2,0) = ret(2,1) = 0;
if((*this)(2,0) == -1)
{
ret(1,0) = ret(1,1) = M_PI_2;
ret(0,0) = ret(0,1) = atan2((*this)(0,1),(*this)(0,2));
}
else
{
ret(1,0) = ret(1,1) = -M_PI_2;
ret(0,0) = ret(0,1) = atan2(-(*this)(0,1),-(*this)(0,2));
}
}
return ret;
}`
Is this library compatible with your Basic LinearAlgebra 4.x library?
Hi Tom,
Thanks for this great library. I'm currently tinkering with it and just wondering what's the license for the software?
Cheers!
I've found a compilation problem in my configuration while compiling the IntegrateGyroData example.
Board: ESP32 4MB
Geometry version 1.0.0
BasicLinearAlgebrea 1.2.0 -> 2.0.0
Arduino IDE 1.8.10
Example Code: IntegrateGyroData.ino
Under BasicLinearAlgebra version 1.2.0, I get no compilation errors. When I compile with 2.0.0, I get the following errors:
In file included from C:\Users\The_o\Documents\Arduino\libraries\Geometry/Geometry.h:5:0,
from C:\Users\The_o\Documents\Arduino\libraries\arduino_174989\examples\IntegrateGyroData\IntegrateGyroData.ino:1:
C:\Users\The_o\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:292:102: error: redeclaration of 'Matrix<rows, cols, ElemT, Array<rows, cols, ElemT> > Matrix<rows, cols, ElemT, MemT>::Inverse(int*)' may not have default arguments [-fpermissive]
Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > Matrix<rows,cols,ElemT,MemT>::Inverse(int *res = NULL)
^
Multiple libraries were found for "Geometry.h"
Used: C:\Users\The_o\Documents\Arduino\libraries\Geometry
Not used: C:\Users\The_o\Documents\Arduino\libraries\arduino_174989
Multiple libraries were found for "BasicLinearAlgebra.h"
Used: C:\Users\The_o\Documents\Arduino\libraries\BasicLinearAlgebra
exit status 1
Error compiling for board ESP32 Dev Module.
BTW, I'm not sure if it's related to the "multiple libraries" issue at the bottom, so I left it in the output listing. It is selecting the correct library location.
This compiles just fine if I select BasicLinearAlgebra version 1.2 (which is how I'm working around this for now).
Hi,
I would like to use your graph mimic for our sky to telescope pipeline.
But currently the example doesn't compile on a teensy 4.0
here is the link to my project:
https://groups.io/g/TeenAstro/wiki/Home
Hi,
I'm fairly new to Arduino Programming and my C++ is quite rusty ...
I found your awesome library and that's exactly what I need for my project.
I tried to install via the official Arduino library manager and it didn't work.
Then I tried to download the current versions from here (BLA & Geometry, unpacked both manually) and got the same error:
In file included from C:\Users<...>\Documents\Arduino\libraries\Geometry-master\examples\HowToUse\HowToUse.ino:1:0:
C:\Users<...>\Documents\Arduino\libraries\Geometry-master/Geometry.h:10:28: error: expected template-name before '<' token
class Point : public Matrix<3,1,float>
^
C:\Users<...>\Documents\Arduino\libraries\Geometry-master/Geometry.h:10:28: error: expected '{' before '<' token
C:\Users<...>\Documents\Arduino\libraries\Geometry-master/Geometry.h:10:28: error: expected unqualified-id before '<' token
Sure I searched for the errors and found some stack overflow questions, but before I tinker around with the libs, I'll ask here. Maybe it's a more fundamenal error.
Line 256, the erroneous extra j
parameter in p(i,j)
causes Point p
to print as {0, 0, 0}
when printing a Transformation. Removing it resolves the issue:
Replace line 256
strm << ((i == 3)? 1 : obj.p(i,j));
with
strm << ((i == 3)? 1 : obj.p(i));
Hi, I'm new to robotics but would like to use the Geometry library to control my dynamixel ax12a servos. i'd like to calculate and set the pose to put the end effector in a particular x/y/z position (why is this called the end effector pose and not the nose pose?). I see there is documentation for how to describe a chain of servos, and an inverse dynamics example, but I think I need to do inverse kinematics rather than dynamics. However I'm not a mathematician and am at a bit of a loss to work out how to approach this. Any pointers much appreciated!
Hi Tom;
Would like to know if the frame coordinate you are using for the 3D geometry code is left- or right-handed? I know Microsft's DirectX 3D transformations are based on the LHS coordinate.
Rgds
Fun Wey
Hi!
When compiling for the DUE I get the following error:
In file included from e:\Andre\Downloads\conversion\conversion.ino:1:0:
E:\Andre\Documentos\Arduino\libraries\Geometry/Geometry.h:12:22: error: reference to 'Matrix' is ambiguous
class Point : public Matrix<3,1>
I changed the library files so that all Matrix occurences had a prepending BLA:: (like advised on BasicLinearAlgebra git) and the compilation error vanished.
Still didn't test to see if the calculations are correct with this change.
Is line 53 in Geometry.cpp supposed to say: theta = 1.0e-5 ??
I am trying to match up your code with the algorithm description in: https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-696.html
Also, you have a class called AngularVelocity, but I think the values are supposed to be gyro rates * integration time ? Otherwise, how do you account for the delta-T in order to integrate the angular rates?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.