A method for maintaining a marine vessel at at least one of a target global position and a target heading in a body of water, the method being carried out by a control module and comprising: receiving measurements related to an attitude of the marine vessel; estimating roughness conditions of the body of water based on the attitude measurements; determining at least one of a difference between an actual global position of the marine vessel and the target global position and a difference between an actual heading of the marine vessel and the target heading; calculating at least one of a desired linear velocity based on the position difference and a desired rotational velocity based on the heading difference; based on the roughness conditions, filtering at least one of an actual linear velocity of the marine vessel and an actual rotational velocity of the marine vessel; determining at least one of a difference between the desired linear velocity and the filtered actual linear velocity and a difference between the desired rotational velocity and the filtered actual rotational velocity; calculating marine vessel movements that will minimize the at least one of the linear velocity difference and the rotational velocity difference; and operating a propulsion system of the marine vessel to carry out the calculated marine vessel movements; wherein the attitude measurements are vessel pitch measurements and vessel roll measurements, and further comprising: estimating the roughness conditions by calculating a variance of the pitch measurements and a variance of the roll measurements; filtering at least one of the position difference and the heading difference based on the roughness conditions; and calculating the at least one of the desired linear velocity based on the filtered position difference and the desired rotational velocity based on the filtered heading difference. receiving measurements related to an attitude of the marine vessel; estimating roughness conditions of the body of water based on the attitude measurements; determining at least one of a difference between an actual global position of the marine vessel and the target global position and a difference between an actual heading of the marine vessel and the target heading; calculating at least one of a desired linear velocity based on the position difference and a desired rotational velocity based on the heading difference; based on the roughness conditions, filtering at least one of an actual linear velocity of the marine vessel and an actual rotational velocity of the marine vessel; determining at least one of a difference between the desired linear velocity and the filtered actual linear velocity and a difference between the desired rotational velocity and the filtered actual rotational velocity; calculating marine vessel movements that will minimize the at least one of the linear velocity difference and the rotational velocity difference; and operating a propulsion system of the marine vessel to carry out the calculated marine vessel movements; wherein the attitude measurements are vessel pitch measurements and vessel roll measurements, and further comprising: estimating the roughness conditions by calculating a variance of the pitch measurements and a variance of the roll measurements; filtering at least one of the position difference and the heading difference based on the roughness conditions; and calculating the at least one of the desired linear velocity based on the filtered position difference and the desired rotational velocity based on the filtered heading difference. estimating the roughness conditions by calculating a variance of the pitch measurements and a variance of the roll measurements; filtering at least one of the position difference and the heading difference based on the roughness conditions; and calculating the at least one of the desired linear velocity based on the filtered position difference and the desired rotational velocity based on the filtered heading difference.