Source code for udaan.utils.vfx.quadrotor_cspayload_vfx

import numpy as np
import vpython as vp

from .quadrotor_vfx import QuadrotorVFX


[docs] class QuadrotorCSPayloadVFX(QuadrotorVFX):
[docs] def __init__(self, l=1, rate=200, retain=100): super().__init__(rate=rate, retain=retain) self._title = "udaan::Quadrotor payload" self.payload = vp.sphere( color=vp.color.blue, radius=0.05, make_trail=True, retain=self._retain ) self.cable = vp.arrow(color=vp.color.black, shaftwidth=0.01, retain=1) self.l = l
[docs] def reset(self, x=np.zeros(3), q=np.array([0.0, 0.0, -1.0]), R=np.eye(3)): self.payload.clear_trail() self.goal.clear_trail() self.update(x, q, R)
[docs] def update(self, pL=np.zeros(3), q=np.array([0.0, 0.0, -1.0]), R=np.eye(3)): self.payload.pos = vp.vector(pL[0], pL[1], pL[2]) vect = self.l * q x = pL - vect self.point.pos = vp.vector(x[0], x[1], x[2]) self.cable.pos = self.point.pos self.cable.axis = vp.vector(vect[0], vect[1], vect[2]) self._update_quadrotor(x, R)
[docs] def update_goal(self, xd=np.zeros(3)): self.goal.pos = vp.vector(xd[0], xd[1], xd[2])