<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def orbit_on_path(self, path=None, focus=None, step=0.5, viewup=None, bkg=True):
 """Orbit on the given path focusing on the focus point Parameters path : vtki.PolyData Path of orbital points. The order in the points is the order of travel focus : list(float) of length 3, optional The point ot focus the camera. step : float, optional The timestep between flying to each camera position viewup : list(float) the normal to the orbital plane """

        if focus is None:
            focus = self.center
        if viewup is None:
            viewup = rcParams['camera']['viewup']
        if path is None:
            path = self.generate_orbital_path(viewup=viewup)
        if not is_vtki_obj(path):
            path = vtki.PolyData(path)
        points = path.points

        def orbit():
            """Internal thread for running the orbit"""
            for point in points:
                self.set_position(point)
                self.set_focus(focus)
                self.set_viewup(viewup)
                time.sleep(step)


        if bkg:
            thread = Thread(target=orbit)
            thread.start()
        else:
            orbit()
        return