Exemplo n.º 1
0
 def setEmotionTo(self, emotion):
     inputIntegers = []
     inputFloats = []
     inputStrings = [emotion]
     inputBuffer = bytearray()
     sim.simxCallScriptFunction(self.clientID, 'Screen', sim.sim_scripttype_childscript, 'setEmotionTo',
                                inputIntegers, inputFloats, inputStrings, inputBuffer, sim.simx_opmode_blocking)
Exemplo n.º 2
0
 def moveTiltTo(self, degrees, speed):
     inputIntegers = [degrees, speed]
     inputFloats = []
     inputStrings = []
     inputBuffer = bytearray()
     sim.simxCallScriptFunction(self.clientID, 'Tilt_Motor', sim.sim_scripttype_childscript, 'moveTiltTo',
                                inputIntegers, inputFloats, inputStrings, inputBuffer, sim.simx_opmode_blocking)
Exemplo n.º 3
0
 def resetWheelEncoders(self):
     inputIntegers = []
     inputFloats = []
     inputStrings = []
     inputBuffer = bytearray()
     sim.simxCallScriptFunction(self.clientID, 'Left_Motor', sim.sim_scripttype_childscript, 'resetWheelEncoders',
                                inputIntegers, inputFloats, inputStrings, inputBuffer, sim.simx_opmode_blocking)
Exemplo n.º 4
0
 def moveWheelsByTime(self, rspeed, lspeed, duration):
     inputIntegers = [rspeed, lspeed]
     inputFloats = [duration]
     inputStrings = []
     inputBuffer = bytearray()
     sim.simxCallScriptFunction(self.clientID, 'Left_Motor', sim.sim_scripttype_childscript, 'moveWheelsByTime',
                                inputIntegers, inputFloats, inputStrings, inputBuffer, sim.simx_opmode_blocking)
Exemplo n.º 5
0
 def setLEDColor(self, led, color):
     inputIntegers = []
     inputFloats = []
     inputStrings = [led, color]
     inputBuffer = bytearray()
     sim.simxCallScriptFunction(self.clientID, 'Back_L', sim.sim_scripttype_childscript, 'setLEDColor',
                                inputIntegers, inputFloats, inputStrings, inputBuffer, sim.simx_opmode_blocking)
Exemplo n.º 6
0
    def moveWheelsByDegrees(self, wheel, degrees, speed):

        inputIntegers = [degrees, speed]
        inputFloats = []
        inputStrings = [wheel]
        inputBuffer = bytearray()
        sim.simxCallScriptFunction(self.clientID, 'Left_Motor', sim.sim_scripttype_childscript, 'moveWheelsByDegrees',
                                   inputIntegers, inputFloats, inputStrings, inputBuffer, sim.simx_opmode_blocking)
Exemplo n.º 7
0
 def commandMagnetOnOff(self):
     if self.craneStatus and self.connectionStatus:
         sim.simxCallScriptFunction(self.clientID, 'Base',
                                    sim.sim_scripttype_childscript,
                                    'AtuadorIma', [], [], [], bytearray(),
                                    sim.simx_opmode_blocking)
         self.magnetStatus = not self.magnetStatus
     return self.magnetStatus
Exemplo n.º 8
0
 def ptp(self, joints):
     ba = bytearray()
     res = vrep.simxCallScriptFunction(self.clientId, 'UR10',
                                       vrep.sim_scripttype_childscript,
                                       'setRobotGoal', [], joints, ['ptp'],
                                       ba, vrep.simx_opmode_blocking)
     while True:  # waiting for result
         res = vrep.simxCallScriptFunction(self.clientId, 'UR10',
                                           vrep.sim_scripttype_childscript,
                                           'isReached', [], [], [''], ba,
                                           vrep.simx_opmode_blocking)
         if res[1][0] == 1: break
         time.sleep(0.1)
Exemplo n.º 9
0
    def reset(self, is_dynamic=False, do_orientate=True):
        """Сбросить сцену

        Объекты сцены приобретают случайное положение в рабочей зоне манипулятора.
        Робот становится в начальную конфигурацию. Если do_orientate=True, то первая ось
        направляется в сторону объекта, иначе - принимает случайное значение в рабочем диапазоне.

        Parameters
        ----------
        is_dynamic : bool, optional
            Динамическая ли сцена, by default False
        do_orientate : bool, optional
            Следует ли повернуть робота в сторону объекта, by default True
        """

        # phi - угол сектора, в котором был сгенерирован целевой объект
        _, _, phi, _, _ = sim.simxCallScriptFunction(
            self.client, SCENE_CONTROLLER_NAME, sim.sim_scripttype_childscript,
            RESET_FUNC_NAME, [], [], [], bytearray(), sim.simx_opmode_blocking)
        pos = self.default_pos.copy()
        if do_orientate:
            offset = random.random(
            ) * 0.2 - 0.1  # небольшое отклонение в зоне видимости объекта
            pos[0] = phi[0] + offset
        else:
            pos[0] = random.random() * (self.joint_ranges[
                0, 1] - self.joint_ranges[0, 0]) + self.joint_ranges[0, 0]

        if is_dynamic:
            self.move(pos)
        else:
            self.set_position(pos)
Exemplo n.º 10
0
    def computePath(handle, location):
        # import pdb; pdb.set_trace()
        initPos, initRot = getAbsolutePose(handle, 'block')

        emptyBuff = bytearray()
        res, retInts, retFloats, retStrings, retBuffer = sim.simxCallScriptFunction(
            clientID,  # client
            'lumibot',  # scriptDescription
            sim.sim_scripttype_childscript,  # scriptHandleOrType
            'computePath',  # functionName
            [],  # ints
            [],  # floats
            [location],  # strings
            emptyBuff,  # buffer
            sim.simx_opmode_blocking,
        )
        # print(res, retInts, retFloats, retStrings, retBuffer)

        path = []
        for i in range(0, len(retFloats) - 3, 3):
            pos = (retFloats[i], retFloats[i + 1], initPos[2])
            rot = (initRot[0], initRot[1], retFloats[i + 2])
            path.append((pos, rot))

        return path, retFloats
Exemplo n.º 11
0
def callback(msg):

    pc = []

    len_msg = len(msg.points)

    for i in range(len_msg):

        pc.append(msg.points[i].x)
        pc.append(msg.points[i].y)
        pc.append((msg.points[i].z))  #pc.append((msg.points[i].z+40))

    emptyBuff = bytearray()
    t = [1, 2, 3]
    s = "envio concluido"
    returnCode, outInts, outFloats, outStrings, outBuffer = sim.simxCallScriptFunction(
        clientID=clientID,
        scriptDescription='Dummy',
        options=sim.sim_scripttype_childscript,
        functionName='callback_PointCloud',
        inputInts=[len_msg],
        inputFloats=pc,
        inputStrings=['Envio Concluido'],
        inputBuffer=emptyBuff,
        operationMode=sim.simx_opmode_blocking)
Exemplo n.º 12
0
def moveArmToJointsPosition(targetPosition):
    emptyBuff = bytearray()

    res, retInts, target1Pose, retStrings, retBuffer = sim.simxCallScriptFunction(
        clientID, 'LBR_iiwa_14_R820', sim.sim_scripttype_childscript,
        'commandIIWA', [], targetPosition, [], emptyBuff,
        sim.simx_opmode_oneshot_wait)
Exemplo n.º 13
0
def setEffector(val):
    # acciona el efector final
    # val es Int con valor 0 ó 1 para desactivar o activar el actuador final.
    res, retInts, retFloats, retStrings, retBuffer = sim.simxCallScriptFunction(
        clientID, "suctionPad", sim.sim_scripttype_childscript, "setEffector",
        [val], [], [], "", sim.simx_opmode_blocking)
    return res
Exemplo n.º 14
0
 def get_simulation_time_2(self):
     # We run a function in a child script in coppeliasim that returns the simulation time
     error_code, _, result_float, _, _ = \
         sim.simxCallScriptFunction(self.client_id, 'kuka_assembly', sim.sim_scripttype_childscript,
                                    'python_get_sim_time', [], [], '', bytearray(), sim.simx_opmode_blocking)
     # We return the simulation time
     return result_float[0]
Exemplo n.º 15
0
def setPose(client_id, display_name, transform=None, parent_handle=-1):
    """Set the pose of an object in the simulation

    # Arguments

        transform_display_name: name string to use for the object in the sim scene
        transform: 3 cartesian (x, y, z) and 4 quaternion (x, y, z, w) elements, same as sim
        parent_handle: -1 is the world frame, any other int should be a sim object handle
    """
    if transform is None:
        transform = np.array([0., 0., 0., 0., 0., 0., 1.])
    # 2. Now create a dummy object at coordinate 0.1,0.2,0.3 with name 'MyDummyName':
    empty_buffer = bytearray()
    res, ret_ints, ret_floats, ret_strings, ret_buffer = sim.simxCallScriptFunction(
        client_id, 'remoteApiCommandServer', sim.sim_scripttype_childscript,
        'createDummy_function', [parent_handle], transform, [display_name],
        empty_buffer, sim.simx_opmode_blocking)
    if res == sim.simx_return_ok:
        # display the reply from CoppeliaSim (in this case, the handle of the created dummy)
        print('SetPose object name:', display_name, ' handle: ', ret_ints[0],
              ' transform: ', transform)
    else:
        print('setPose remote function call failed.')
        print(''.join(traceback.format_stack()))
        return -1
    return ret_ints[0]
Exemplo n.º 16
0
 def readAccelerationSensor(self):
     inputIntegers = []
     inputFloats = []
     inputStrings = []
     inputBuffer = bytearray()
     array = sim.simxCallScriptFunction(self.clientID, 'Smartphone_Respondable', sim.sim_scripttype_childscript,
                                        'readAccelerationSensor', inputIntegers, inputFloats, inputStrings,
                                        inputBuffer, sim.simx_opmode_blocking)
     return array[2]
Exemplo n.º 17
0
 def readAllIRSensor(self):
     inputIntegers = []
     inputFloats = []
     inputStrings = []
     inputBuffer = bytearray()
     array = sim.simxCallScriptFunction(self.clientID, 'IR_Back_C', sim.sim_scripttype_childscript,
                                        'readAllIRSensor', inputIntegers, inputFloats, inputStrings, inputBuffer,
                                        sim.simx_opmode_blocking)
     return array[1]
Exemplo n.º 18
0
 def readTiltPosition(self):
     inputIntegers = []
     inputFloats = []
     inputStrings = []
     inputBuffer = bytearray()
     array = sim.simxCallScriptFunction(self.clientID, 'Tilt_Motor', sim.sim_scripttype_childscript,
                                        'readTiltPosition', inputIntegers, inputFloats, inputStrings,
                                        inputBuffer, sim.simx_opmode_blocking)
     return array[1][0]
Exemplo n.º 19
0
def create_robot(client_id: int, x: float, y: float, theta: float):
    current_path = os.path.dirname(os.path.abspath(__file__))
    model_path = os.path.join(current_path, 'p3dx.ttm')

    rc, out_ints, _, _, _ = sim.simxCallScriptFunction(
        client_id, 'Maze', sim.sim_scripttype_childscript, 'createRobot', [],
        [x, y, theta], [model_path], "", sim.simx_opmode_blocking)
    robot_handle = out_ints[0]

    return rc, robot_handle
Exemplo n.º 20
0
def call_func(name, ints=[], floats=[], strings=[]):
    '''
        Call a function from the robot.
        The functions can be found in the "functiones" file in the scene file
    '''

    return sim.simxCallScriptFunction(clientID, 'Funciones',
                                      sim.sim_scripttype_childscript, name,
                                      ints, floats, strings,
                                      bytearray('1', 'utf-8'),
                                      sim.simx_opmode_blocking)
Exemplo n.º 21
0
def moveTargetFrame(targetPosition, clientID):
    """[summary]

  Args:
      targetPosition ([type]): [description]
  """
    emptyBuff = bytearray()

    res, retInts, target1Pose, retStrings, retBuffer = sim.simxCallScriptFunction(
        clientID, 'target', sim.sim_scripttype_childscript, 'commandTarget',
        [], targetPosition, [], emptyBuff, sim.simx_opmode_oneshot_wait)
    print(res, retInts, target1Pose, retStrings, retBuffer)
Exemplo n.º 22
0
 def setPause(pause):
     emptyBuff = bytearray()
     res, retInts, retFloats, retStrings, retBuffer = sim.simxCallScriptFunction(
         clientID,  # client
         'Bill',  # scriptDescription
         sim.sim_scripttype_childscript,  # scriptHandleOrType
         'setPause',  # functionName
         [pause],  # ints
         [],  # floats
         [],  # strings
         emptyBuff,  # buffer
         sim.simx_opmode_blocking,
     )
Exemplo n.º 23
0
def send_data(maze_array):
    """
	Purpose:
	---
	Sends data to CoppeliaSim via Remote API.

	Input Arguments:
	---
	`maze_array` :    [ nested list of lists ]
		encoded maze in the form of a 2D array returned by detectMaze() function
	
	Returns:
	---
	`return_code` 	:  [ integer ]
		the return code generated from the call script function remote API
	
	Example call:
	---
	send_data(maze_array)
	
	NOTE: You might want to study this link to understand simx.callScriptFunction() better
	https://www.coppeliarobotics.com/helpFiles/en/remoteApiExtension.htm
	"""

    global client_id

    return_code = -1

    ##############	ADD YOUR CODE HERE	##############

    inputInts = []
    cnt = 0

    for i in range(10):
        for j in range(10):
            inputInts.append(int(np.binary_repr(maze_array[i][j])))
            #print(inputInts[cnt])
            cnt = cnt + 1

    inputFloats = []
    inputStrings = []
    inputBuffer = ''

    return_code, retInts, retFloats, retStrings, retBuffer = sim.simxCallScriptFunction(
        client_id, 'Base', sim.sim_scripttype_customizationscript,
        'receiveData', inputInts, inputFloats, inputStrings, inputBuffer,
        sim.simx_opmode_blocking)

    ##################################################

    return return_code
Exemplo n.º 24
0
 def humanStep():
     # have the human move one step on its path
     emptyBuff = bytearray()
     res, retInts, retFloats, retStrings, retBuffer = sim.simxCallScriptFunction(
         clientID,  # client
         'Bill',  # scriptDescription
         sim.sim_scripttype_childscript,  # scriptHandleOrType
         'step',  # functionName
         [],  # ints
         [],  # floats
         [],  # strings
         emptyBuff,  # buffer
         sim.simx_opmode_blocking,
     )
Exemplo n.º 25
0
 def readSensors():
     emptyBuff = bytearray()
     res, retInts, retFloats, retStrings, retBuffer = sim.simxCallScriptFunction(
         clientID,  # client
         'lumibot',  # scriptDescription
         sim.sim_scripttype_childscript,  # scriptHandleOrType
         'readSensors',  # functionName
         [],  # ints
         [],  # floats
         [],  # strings
         emptyBuff,  # buffer
         sim.simx_opmode_blocking,
     )
     # print(res, retInts, retFloats, retStrings, retBuffer)
     return retFloats
Exemplo n.º 26
0
 def getPosOnPath(curpos):
     emptyBuff = bytearray()
     res, retInts, retFloats, retStrings, retBuffer = sim.simxCallScriptFunction(
         clientID,  # client
         'Bill',  # scriptDescription
         sim.sim_scripttype_childscript,  # scriptHandleOrType
         'getPositionOnPath',  # functionName
         [],  # ints
         [curpos],  # floats
         [],  # strings
         emptyBuff,  # buffer
         sim.simx_opmode_blocking,
     )
     # print(res, retInts, retFloats, retStrings, retBuffer)
     return list(retFloats)
Exemplo n.º 27
0
def drawLines(client_id,
              display_name,
              lines,
              parent_handle=-1,
              transform=None,
              debug=FLAGS.csimDebugMode,
              operation_mode=sim.simx_opmode_blocking):
    """Create a line in the simulation.

    Note that there are currently some quirks with this function. Only one line is accepted,
    and sometimes CoppeliaSim fails to delete the object correctly and lines will fail to draw.
    In that case you need to close and restart CoppeliaSim.

    # Arguments

        transform_display_name: name string to use for the object in the sim scene
        transform: 3 cartesian (x, y, z) and 4 quaternion (x, y, z, w) elements, same as sim
        parent_handle: -1 is the world frame, any other int should be a sim object handle
        lines: array of line definitions using two endpoints (x0, y0, z0, x1, y1, z1).
            Multiple lines can be defined but there should be 6 entries (two points) per line.
    """
    # 2. Now create a dummy object at coordinate 0.1,0.2,0.3 with name 'MyDummyName':
    empty_buffer = bytearray()
    res, ret_ints, ret_floats, ret_strings, ret_buffer = sim.simxCallScriptFunction(
        client_id,
        'remoteApiCommandServer',
        sim.sim_scripttype_childscript,
        'addDrawingObject_function',
        [parent_handle, int(lines.size / 6)],
        # np.append(transform, lines),
        lines,
        [display_name],
        empty_buffer,
        operation_mode)
    if res == sim.simx_return_ok:
        # display the reply from CoppeliaSim (in this case, the handle of the created dummy)
        if debug is not None and 'print_drawLines' in debug:
            print('drawLines name:', display_name, ' handle: ', ret_ints[0],
                  ' transform: ', transform)

        if transform is not None:
            # set the transform for the point cloud
            setPose(client_id, display_name, transform, parent_handle)
    else:
        print('drawLines remote function call failed.')
        print(''.join(traceback.format_stack()))
        return -1
    return ret_ints[0]
Exemplo n.º 28
0
 def call_remote(self,
                 function_name,
                 int_param=None,
                 float_param=None,
                 str_param=None,
                 mode=sim.simx_opmode_blocking):
     if str_param is None:
         str_param = []
     if float_param is None:
         float_param = []
     if int_param is None:
         int_param = []
     res, retInts, retFloats, retStrings, retBuffer = sim.simxCallScriptFunction(
         self.sim_client, 'remoteApiCommandServer',
         sim.sim_scripttype_childscript, function_name, int_param,
         float_param, str_param, self.empty_buff, mode)
     return res, retInts, retFloats, retStrings, retBuffer
Exemplo n.º 29
0
    def reset(self):

        # reset objects dynamically in lua script
        result, collision_state, retFloats, retStrings, retBuffer = sim.simxCallScriptFunction(
            self.clientID, "hexapod", sim.sim_scripttype_childscript,
            "reset_robot", [], [], [], emptyBuff, blocking)

        for link, angle in zip(self.links, [0, -30, 120]):
            for handle in link.values():
                sim.simxSetJointTargetPosition(self.clientID, handle,
                                               angle * (3.14 / 180), oneshot)
                sim.simxSynchronousTrigger(self.clientID)

        self.prev_pos = sim.simxGetObjectPosition(self.clientID,
                                                  self.hexapod_handle, -1,
                                                  buffer)[1]
        self.state = np.ones(self.state_size) * 120 * (3.14 / 180)
        return self.state  # hope coppeliaSim set them properly
Exemplo n.º 30
0
def send_data(maze_array):
    """
	Purpose:
	---
	Sends data to CoppeliaSim via Remote API.

	Input Arguments:
	---
	`maze_array` :    [ nested list of lists ]
		encoded maze in the form of a 2D array returned by detectMaze() function
	
	Returns:
	---
	`return_code` 	:  [ integer ]
		the return code generated from the call script function remote API
	
	Example call:
	---
	send_data(maze_array)
	
	NOTE: You might want to study this link to understand simx.callScriptFunction() better
	https://www.coppeliarobotics.com/helpFiles/en/remoteApiExtension.htm
	"""

    global client_id

    return_code = -1

    #####n#########	ADD YOUR CODE HERE	##############
    maze_array = np.array(maze_array)
    inputInts = maze_array.flatten()
    inputFloats = []
    inputStrings = []
    inputBuffer = bytearray()
    return_code, retInts, retFloats, retStrings, retBuffer = sim.simxCallScriptFunction(
        client_id, 'Base', sim.sim_scripttype_customizationscript,
        'receiveData', inputInts, inputFloats, inputStrings, inputBuffer,
        sim.simx_opmode_blocking)
    #  	if (return_code == sim.simx_return_ok):
    # 		print(return_code,retInts,retFloats,retStrings,retBuffer)
    ##################################################

    return return_code