-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathexamples.py
72 lines (57 loc) · 3.01 KB
/
examples.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# -*- coding: utf-8 -*-
"""
Created on Mon May 28 10:37:34 2018
@author: jack
"""
from mujoco_py import *
from PID import *
from Rotations import *
import time
import csv
import math
repeats = 20
class MUJOCO(object):
def __init__(self):
self._pid = [PID(),PID(),PID(),PID(),PID(),PID(),PID(),PID(),PID()]
self._linearVelocity = [0,0,0,0,0,0,0,0,0]
self._theta = [0,0,0,0,0,0,0,0,0]
self._positions =[]
self._convertdeg2rad = 57.295779578552
self._num_steps = 0
self._timestep = 0.0001
self._simulator = "Mujoco"
self._physics_engine = ""
self._experiment = ""
self._current_iteration = 0
self._model = load_model_from_path("/home/graspinglab/NearContactStudy/MDP/kinova_description/m1n6s300.xml")
self._sim = MjSim(self._model)
self._viewer = MjViewer(self._sim)
self._sim.model.opt.timestep = self._timestep
def set_current_iteration(self, iteration):
self._current_iteration= iteration
def set_experiment(self,experiment):
self._experiment = experiment
def set_num_steps(self):
self._num_steps = simSteps(self._experiment,self._timestep)
def run_mujoco(self):
self.set_num_steps()
for simStep in range(self._num_steps):
self._pid = set_target_thetas(self._num_steps, self._pid,self._experiment,self._simulator,simStep)
if simStep % 500 == 0:
for jointNum in range(6):
# print(self._sim.data.sensordata[jointNum])
self._theta[jointNum] = self._sim.data.sensordata[jointNum]
self._linearVelocity[jointNum] = self._pid[jointNum].get_velocity(math.degrees(self._theta[jointNum]))/self._convertdeg2rad
self._sim.data.ctrl[jointNum] = self._linearVelocity[jointNum]
# print('velocity',self._linearVelocity[jointNum])
self._positions.append([self._sim.data.get_body_xpos('m1n6s300_link_6')[0],self._sim.data.get_body_xpos('m1n6s300_link_6')[1],self._sim.data.get_body_xpos('m1n6s300_link_6')[2],self._sim.data.get_body_xquat('m1n6s300_link_6')[0],self._sim.data.get_body_xquat('m1n6s300_link_6')[1],self._sim.data.get_body_xquat('m1n6s300_link_6')[2],self._sim.data.get_body_xquat('m1n6s300_link_6')[3],self._sim.data.get_body_xpos('cube')[0],self._sim.data.get_body_xpos('cube')[1],self._sim.data.get_body_xpos('cube')[2],self._sim.data.get_body_xquat('cube')[0],self._sim.data.get_body_xquat('cube')[1],self._sim.data.get_body_xquat('cube')[2],self._sim.data.get_body_xquat('cube')[3]])
# print('positions:',self._positions)
self._sim.step()
self._viewer.render()
if __name__ == '__main__':
experiment = "Single"
for iteration in range(repeats):
simulate = MUJOCO()
simulate.set_current_iteration(iteration)
simulate.set_experiment(experiment)
simulate.run_mujoco()