<< return to Pixycam.com

Question's about software documentation

Hello together,

Is there some overview of the firmware of the pixy? I just cloned the repository and it is more complex than I imagined. It will take some time to understand which files I would need to change to implement new functionalities in the firmware.

Are there any other places where the programming pixy is discussed? I am a bit suprised by the lack of discussions here.

Regards,
Andy

Hi Andy,

I would suspect things will pick up here once Pixy’s start arriving to the backers, so be sure to check back soon.

Yes, Pixy can seem complicated underneath, so you just need to look out for the right files. Here are some hints:

  • Work from top to bottom. The “video”:https://github.com/charmedlabs/pixy/tree/ea622eca3dec82ecff1a25514ee5724a6a68f3f8/device/video project is a good place to start for this. It is the top level project that uses all of the libraries underneath, so its a good place to start drilling down
  • Ignore all of the lpc43xx* files. They are provided by the processor manufacturer and implement a lot of the basic low-level functionality. You probably won’t be modifying any of these.
  • Focus on the m4 code first. The m0 code is important, but 95% of what you probably care about is on the m4 side, which is the application code.

Hope this helps! Let me know if you have any other questions.

Scott

Hi Scott,

Thank for the information, great project btw. Hope there will be a lot of developers here, as soon as the boards arrive. I just could not wait :slight_smile: I wanted to look into the code before, to get a feeling what is possible.

I see the output of the sensor in raw RGB, getColor has uint8_t, i thought there is a 10-bit raw output, guess either 2-bits are discarded or some gamma correction on m0 is performed.

Do I understand correct that you could just call cam_getFrame (on the m4) to asyncronously let the m0 fill the buffer. I can also insert some camera configuration commands in the “command queue”, e.g. to change the exposure. Sounds, good hope it works :slight_smile:

So this would allow to do some image processing on full res image with a specified ROI with the full frame rate of 30Hz, e.g. for some edge detection (guess m0 is too slow for full res here). Wonder if the m0 handling of the getFrame buffer filling “intelligent” enough to sample multiple ROIs of one frame into multiple buffers?

Reagrds,
Andy

Hi Andy,

Yes, you are correct about cam_getFrame and the command queue.

I’m not entirely sure I understand what you mean by cam_getFrame being “intelligent”. Are you saying you want to split up a single frame in to different buffers?

Scott

Hello Scott,

Yes, in some situations it would be helpful to split up a single frame in to different buffers. I would like to have multiple cam_getFrames for one frame, to track multiple ROIs. But I would guess that cam_getFrame does not support this in the beginning.

Regards,
Andy

It does not support this feature yet, but we can look in to it.

Thanks for the feedback!

Scott