コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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
コード例 #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)
コード例 #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)
コード例 #10
0
ファイル: final.py プロジェクト: fmjohnson97/SCR_2021
    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
コード例 #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)
コード例 #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)
コード例 #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
コード例 #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]
コード例 #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]
コード例 #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]
コード例 #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]
コード例 #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]
コード例 #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
コード例 #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)
コード例 #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)
コード例 #22
0
ファイル: project2.3.py プロジェクト: fmjohnson97/SCR_2021
 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,
     )
コード例 #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
コード例 #24
0
ファイル: project2.2.py プロジェクト: fmjohnson97/SCR_2021
 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,
     )
コード例 #25
0
ファイル: project3.py プロジェクト: fmjohnson97/SCR_2021
 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
コード例 #26
0
ファイル: project2.3.py プロジェクト: fmjohnson97/SCR_2021
 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)
コード例 #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]
コード例 #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
コード例 #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
コード例 #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