Как передать массив между двумя функциями в Python? - PullRequest
0 голосов
/ 02 июля 2019

Я хочу передать три массива: xLinespace, yLinespace и zLinespace из функции cubicSplineInterpolate в функцию trajectoryMover. Однако я не уверен, как достичь этого с помощью Python. После передачи массивов во вторую функцию я намерен итерировать все массивы одновременно, чтобы изменить положение робота. Нужно ли устанавливать массивы в качестве аргументов в каждой функции?

class example_application:

    def cubicSplineInterpolate(self, x_axis, y_axis, z_axis):

        m=1
        xLinespace=[]
        yLinespace=[]
        zLinespace=[]
        while m<len(x_axis):
            for t in np.arange(m-1,m,1/float(100)):
                xLinespace.append(self.func(x_axis[m-1],x_axis[m],t,U[m-1],U[m],m-1,m))
                yLinespace.append(self.func(y_axis[m-1],y_axis[m],t,V[m-1],V[m],m-1,m))
                zLinespace.append(self.func(z_axis[m-1],z_axis[m],t,W[m-1],W[m],m-1,m))
            m=m+1

    def trajectoryMover(self):
        newPose = Pose()
        xLinespace=[]
        yLinespace=[]
        zLinespace=[]
        x_axis = [0.01, 0.02, 0.033, 0.0044, 0.0001, 0.10]
        y_axis = [0.002, 0.00033, 0.1014, 0.01512, 0.14316, 0.015143]
        z_axis = [0.003, 0.2124, 0.15417, 0.15615, 0.01241, 0.151561]
        self.cubicSplineInterpolate(x_axis,y_axis,z_axis)
        print(self.cubicSplineInterpolate.xLinespace)

        for x, y, z in zip(x_axis, y_axis, z_axis):

            newPose.position.x = x
            newPose.position.y = y
            newPose.position.z = z
            newPose.orientation.x = -0.907106781172
            newPose.orientation.y = -0.0707106781191
            newPose.orientation.z = 2.59734823723e-06
            newPose.orientation.w = -2.59734823723e-06
            self.set_position_cartesian.publish(newPose)
            rospy.loginfo(newPose)
            rospy.sleep(1)

1 Ответ

1 голос
/ 02 июля 2019

Из комментариев: если trajectoryMover звонит cubicSplineInterpolate

class example_application:

def cubicSplineInterpolate(self, x_axis, y_axis, z_axis):

    m=1
    xLinespace=[]
    yLinespace=[]
    zLinespace=[]
    while m<len(x_axis):
        for t in np.arange(m-1,m,1/float(100)):
            xLinespace.append(self.func(x_axis[m-1],x_axis[m],t,U[m-1],U[m],m-1,m))
            yLinespace.append(self.func(y_axis[m-1],y_axis[m],t,V[m-1],V[m],m-1,m))
            zLinespace.append(self.func(z_axis[m-1],z_axis[m],t,W[m-1],W[m],m-1,m))
        m=m+1

        return(xLinespace, yLinespace, zLinespace)

def trajectoryMover(self):
    newPose = Pose()
    x_axis = [0.01, 0.02, 0.033, 0.0044, 0.0001, 0.10]
    y_axis = [0.002, 0.00033, 0.1014, 0.01512, 0.14316, 0.015143]
    z_axis = [0.003, 0.2124, 0.15417, 0.15615, 0.01241, 0.151561]
    xLinespace, yLinespace, zLinespace = self.cubicSplineInterpolate(x_axis,y_axis,z_axis)
    print(self.cubicSplineInterpolate.xLinespace)

    for x, y, z in zip(x_axis, y_axis, z_axis):

        newPose.position.x = x
        newPose.position.y = y
        newPose.position.z = z
        newPose.orientation.x = -0.907106781172
        newPose.orientation.y = -0.0707106781191
        newPose.orientation.z = 2.59734823723e-06
        newPose.orientation.w = -2.59734823723e-06
        self.set_position_cartesian.publish(newPose)
        rospy.loginfo(newPose)
        rospy.sleep(1)

Также обратите внимание (хотя это и не супер важно): я считаю, что PEP8 говорит, что функции должны быть разделены подчеркиванием, т.е. trajectory_mover и cubic_spline_interpolate ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...