def test_motion_model(self): fs = FastSLAM() fpold = FilterParticle() fpold.state.pose.pose.position.y = 2.0 twist = Twist() twist.linear.x = 1 dt = rospy.Duration.from_sec(.1) fpnew = fs.motion_model(fpold, twist, dt) dy_expected = twist.linear.x * dt.secs dy_measured = fpnew.state.pose.pose.position.y - fpold.state.pose.pose.position.y error = abs(dy_measured - dy_expected) self.assertTrue(error < .01) twist.linear.x = 2 dt = rospy.Duration.from_sec(.1) fpnew = fs.motion_model(fpold, twist, dt) dy_expected = twist.linear.x * dt.secs dy_measured = fpnew.state.pose.pose.position.y - fpold.state.pose.pose.position.y error = abs(dy_measured - dy_expected) self.assertTrue(error < .02)