get_posts() forcing ignore sticky posts on main loop

From the function reference for get_posts():

For full parameters list see WP_Query.

From the WP_Query reference:

ignore_sticky_posts (boolean) – ignore sticky posts or not (available with Version 3.1, replaced caller_get_posts parameter). Default value is 0 – don’t ignore sticky posts. Note: ignore/exclude sticky posts being included at the beginning of posts returned, but the sticky post will still be returned in the natural order of that list of posts returned.

So, with that, if you add ignore_sticky_posts => 0 to your array of arguments being passed to get_posts() your sticky posts should be output at the top as expected.