Well the base stack uses aruco markers that are just simpler QR codes and that’s about all it can do.
The ideas is to have something that’s distinctive and can be easily identified while being a fixed size so distance can be calculated based on that and the camera’s intrinsic and extrinsic parameters. Each marker needs to also have a fixed unique identifier so that it’s possible to tell it apart from the others (in essence the QR or AR code is just a number when decoded which is the identifier).
There are some drop in alternatives like the STag markers which can be identified even if the marker is partially obscured, but aren’t identified as easily when skewed or far away. Depends on the use case you need.
So if you want to use penguins you’d have to create a penguin detector that can calculate a certain penguin’s position relative to the camera after it detects it, publish it using the same ros messages and the nav stack should be able to use it. And you’d also need to find some way to have different penguins.