<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def update(self):
        '''
        Updates Pose3d.
        '''
        pos = Pose3d()
        if self.hasproxy():
            pose = self.proxy.getPose3DData()
            pos.yaw = self.quat2Yaw(pose.q0, pose.q1, pose.q2, pose.q3)
            pos.pitch = self.quat2Pitch(pose.q0, pose.q1, pose.q2, pose.q3)
            pos.roll = self.quat2Roll(pose.q0, pose.q1, pose.q2, pose.q3)
            pos.x = pose.x
            pos.y = pose.y
            pos.z = pose.z 
            pos.h = pose.h
            pos.q = [pose.q0, pose.q1, pose.q2, pose.q3]

        self.lock.acquire()
        self.pose = pos
        self.lock.release()