What you are looking for requires that the carousel does not slide until your collapse element has finished hiding. I do not recommend using timer or a delay - instead, make use of bootstrap events to coordinate the hiding and animation of your bootstrap elements.
In your carousel's 'slide.bs.carousel' event handler (check events section here) call the eventObject's preventDefault so that no slide takes place.
In your collapse element's 'hidden.bs.collapse' event handler (check events section here) call $('#carousel').carousel(number) where number is the slide index corresponding to your menu.
The code might look something like this -
var shouldSlide = false;
$('#carousel').on('slide.bs.carousel', function (e) {
if (shouldSlide === false) {
e.preventDefault();
}
});
$('#collapse').on('hidden.bs.collapse', function (e) {
shouldSlide = true;
$('#carousel-example-generic').carousel(3)
});
Ofcourse, the code above is not a complete working example - you'll need to coordinate between the two event handlers to make sure everything works as expected. Hope this helps.