猿问

rosrun命令不执行python文件

该rosrun命令没有执行我的 python 文件。该命令只是被跳过。我已经使用命令使 python 脚本可执行 sudo chmod +x controller.py。我无法运行任何 python 文件或 rosrun 命令。即使是Python代码也没有错误。可能的问题是什么?我是ROS的新手,所以请指导我。


controller.py包含以下代码:


import rospy

from geometry_msgs.msg import Twist

#from sensor_msgs.msg import LaserScan

from nav_msgs.msg import Odometry

from tf.transformations import euler_from_quaternion

import math



def odom_callback(data):

    global x,y,pose,ebot_theta

    x  = data.pose.pose.orientation.x

    y  = data.pose.pose.orientation.y

    z = data.pose.pose.orientation.z

    w = data.pose.pose.orientation.w

    pose = [data.pose.pose.position.x, data.pose.pose.position.y, euler_from_quaternion([x,y,z,w])[2]]

    ebot_theta=euler_from_quaternion([x,y,z,w])[2]

#def laser_callback(msg):

    #global regions

    #regions = {

     #   'bright':      ,

      #  'fright':  ,

       # 'front':   ,

       # 'fleft':   ,

        #'bleft':       ,

    #}

def Waypoints(t):

    if t == 0:

        h = 0.74

        k = 0.488

    elif t == 1:

        h = 1.42

        k = 1.289   

    elif t == 2:

        h = 1.911

        k = 1.54

    elif t == 3:

        h = 2.45

        k = 1.2

    elif t == 4:

        h = 3.141 

        k = 0 

    elif t == 5:

        h = 3.91 

        k = -1.289

    elif t == 6:

        h = 4.373

        k = -1.54 

    elif t == 7:

        h = 5.02

        k = -1.125

    elif t == 8:

        h = 5.72

        k = -0.297

    elif t == 9:

        h = 6.283

        k = 0 

    else:

        pass

  

    return [h,k]  



def control_loop():

    rospy.init_node('ebot_controller',anonymous=True)

    

    pub = rospy.Publisher('/cmd_vel', Twist, queue_size=10)

    #rospy.Subscriber('/ebot/laser/scan', LaserScan, laser_callback)

    rospy.Subscriber('/odom', Odometry, odom_callback)

    

    rate = rospy.Rate(10) 


    velocity_msg = Twist()

    velocity_msg.linear.x = 0

    velocity_msg.angular.z = 0

    pub.publish(velocity_msg)

    i=0

    while not rospy.is_shutdown() & i<10:

        

        [x1,y1]=[x,y]

        [x2,y2]=Waypoints(i)



牛魔王的故事
浏览 140回答 2
2回答

皈依舞

#!/usr/bin/env&nbsp;python添加此线路伙伴;)

慕勒3428872

你的 python 脚本实际上并没有运行任何东西。可以说它的主要功能是空的。if&nbsp;__name__&nbsp;==&nbsp;'__control_loop__':需要是if&nbsp;__name__&nbsp;==&nbsp;'__main__':请参阅https://docs.python.org/3/library/__main__.html。另一件错误的事情是你使用的&时候你可能意味着and:>>>&nbsp;False&nbsp;&&nbsp;0<10 True >>>&nbsp;False&nbsp;and&nbsp;0<10 False所以改变:&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;not&nbsp;rospy.is_shutdown()&nbsp;&&nbsp;i<10:到&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;not&nbsp;rospy.is_shutdown()&nbsp;and&nbsp;i<10:您还需要将 a 添加spin_once到循环中。否则,不会处理任何 ROS 通信。
随时随地看视频慕课网APP

相关分类

Python
我要回答