5 Replies Latest reply on Feb 3, 2011 2:01 PM by dan.siewers

    Quaternion C Library

    dan.siewers

      I'm not sure if this should be posted elsewhere but...

         

       Does anyone know of any quaternion libraries or functions geared towards microcontrollers like PSOC5?
      It would be nice if Creator came with some extended math libraries for robotics or other 3D applications.

        • 1. Re: Quaternion C Library
          robert.teufel

          I'm not sure if this should be posted elsewhere but...

             

           Does anyone know of any quaternion libraries or functions geared towards microcontrollers like PSOC5?
          It would be nice if Creator came with some extended math libraries for robotics or other 3D applications.

             

           

             

          Hi,

             

          did you find quaternion routines that are available either in "C" source or even better already tested on an ARM-Cortex core? It would be nice to share information like robotic related software here on this forum.

             

          Robert

          • 2. Re: Quaternion C Library
            victor.andres.argote.fuertes

            Here is some source code for making Quaternion operations in C and other languages, i think you can take the code from here and create an own library.

               

             

               

            http://rosettacode.org/wiki/Simple_Quaternion_type_and_operations

               

             

               

            Regards,

               

            Victor Andres

            • 3. Re: Quaternion C Library
              dan.siewers

              Thanks for the link!

                 

              I've been using matrix math as a workaround for now.
              Eventually I'll get motivated enough to develop some quaternion functions for the PSOC5 when the dreaded gimbal lock gives me no other choice.

                 

              Of course if Cypress wants to help out the robotics and graphics community it would be much appreciated

                 

              It's not only useful for robotics though: http://www.youtube.com/watch?v=O-E0BgYP0qw

              • 4. Re: Quaternion C Library
                kiku

                 Hi,

                   

                 

                   

                Your video seems very interesting. Could you give some more details on what are all the interfaces you have made and how exactly you are using PSoC for your application?

                   


                Regards,

                   

                Kishore.

                • 5. Re: Quaternion C Library
                  dan.siewers

                   I'll try.

                  Basically I'm working on a memory expansion module for the Vectrex (an 80's video game machine).
                  Vectrex games came on a cart with up to 32K of ROM. The Vectrex itself has 2K of RAM of which only 874 bytes are available to the programmer. This setup gives the Vectrex an extra 18K of RAM that is also visible to the PSOC5.

                  The system has 3 components. The PSOC, a 32K SRAM chip (from Cypress of course) and a game cartridge.
                  The Vectrex address bus, data bus and sync signals are extended out to all components. The PSOC logic blocks are designed to arbitrate these signals between all the devices. The PSOC can take control of the external RAM chip while allowing the Vectrex to keep reading the 32K game cart. In effect acting like a co-processor (of sorts).

                     

                  The Vectrex can send "commands" to the PSOC by using memory registers in the expanded RAM. A read or write to a certain address will cause an interrupt event for the PSOC. The PSOC then performs the operation and flags the Vectrex when it's done. Meanwhile the Vectrex is free to perform other tasks that do not use external RAM and doesn't have to wait for the PSOC.

                     

                  The Y-tube video shows the Vectrex using the PSOC to perform 3D rotations of objects it stores in the external RAM.