Trajopt bluntly enforces joint limits after the optimization here. Shouldn't the optimization itself take care of this? And in case this fails or if a user has some other reason to do a simple joint limit enforcement, shouldn't something like the fix_state_bounds_profile. or the kinematic_limits_check_profile be used?