Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何在两个函数之间传递数组?_Python_Arrays_Function - Fatal编程技术网

在python中,如何在两个函数之间传递数组?

在python中,如何在两个函数之间传递数组?,python,arrays,function,Python,Arrays,Function,我希望将三个数组:xLinespace、yLinespace和zLinespace从函数cubicSplineInterpolate传递到函数trajectoryMover。但是,我不知道如何使用python实现这一点。在将数组传递给第二个函数之后,我打算模拟地迭代每个数组,以改变机器人的位置。我是否需要在每个函数中将数组设置为参数 class example_application: def cubicSplineInterpolate(self, x_axis, y_axis, z

我希望将三个数组: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)
根据注释:if trajectoryMover调用cubicSplineInterpolate

类示例\u应用程序:

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说函数应该用下划线分隔,即轨迹移动和三次样条插值

你的问题不清楚,这里的代码太多了。但是,如果您需要将项传递给函数,那么是的,它们当然需要是参数。我的意思是,我需要将xLinespace、yLinespace和zLinespace设置为每个函数的参数吗?为什么不使用self.xLinespace,这样就可以在不同的类函数之间共享它们。所以在这两个函数中,都是:self.xLinespace.appendself.funcx_轴[m-1],x_轴[m],t,U[m-1],U[m],m-1,我假设您缺少一些代码,因为这是ROS,通常有一个订阅函数,然后是一个回调函数?但它们不需要是cubicSplineInterpolate函数中的参数?不,因为这是创建它们的地方否,相反;轨迹移动器调用CubicSplineInterpolioh!对不起,我误解了。修好了。