can I use z-score normalization even if it doesn't make sense for my data to be negative?
I think it doesn't really matter that there can be negative values after as long as you rescale your data correctly at the end.

Think about what positive/negative values mean for z-score. This has nothing to do with whether your use case (for example speed) can realistically have negative values or not. With z-score positive values simply mean that the value is above the group mean while negative values can be interpreted as the opposite.

As long as you are able to rescale after your model (to get your data back to the original interpretation) using z-score should be fine.