狼筝 2019-04-02 18:08 采纳率: 100%
浏览 602
已结题

想要在一个.py里调用另一个.py但是有错?

主程序如下,num想给图片编号,但是调用有问题

# -*- coding: UTF-8 -*- 
#!/usr/bin/env python


#前进1m,画边长( 0.6 )m的五边形
import rospy
from geometry_msgs.msg import Twist
from math import radians

import trying



class ROUTE():
    count = 0
    num = 0
    def __init__(self):
        # 初始化节点
        rospy.init_node('route', anonymous=True)


        # ctrl + c退出    
        rospy.on_shutdown(self.shutdown)

        self.cmd_vel = rospy.Publisher('cmd_vel_mux/input/navi', Twist, queue_size=10)

    # 5 HZ更新频率
        r = rospy.Rate(5);

    # 两个不同的Twist,转,直走

        # 0.5 m/s 前进
        move_cmd = Twist()
        move_cmd.linear.x = 0.2


        #旋转18 deg/s
        turn_cmd = Twist()
        turn_cmd.linear.x = 0
        turn_cmd.angular.z = radians(18);


        # 前进1M
        rospy.loginfo("我在找位置ing")
        for x in range(0,25):
            self.cmd_vel.publish(move_cmd)
            r.sleep()
        while not rospy.is_shutdown():
            #来拍照啊
            rospy.loginfo("123,茄子!")
            for x in range(0,15):
                trying.TakePhoto( num )
                num = num + 1
                r.sleep()

        #转54度
            rospy.loginfo("好丑~我换个角度哈~")
            for x in range(0,15):
                self.cmd_vel.publish(turn_cmd)
                r.sleep()            
            # 前进0.5M
            rospy.loginfo("我在找下一个位置ing")
            for x in range(0,15):
                self.cmd_vel.publish(move_cmd)
                r.sleep()
            # 转234度
            rospy.loginfo("就在这里拍啦!")
            for x in range(0,65):
                self.cmd_vel.publish(turn_cmd)
                r.sleep()            

            count = count + 1
            if(count == 5): 
                count = 0
            if(count == 0): 
                rospy.loginfo("是不是该结束了?好累哦~~")
            if( num > 7):
                rospy.loginfo("都要没电啦……停下来吧……机器人也很累呀!")

    def shutdown(self):
        # 停啦
        rospy.loginfo("停啦,么么哒,记得充电~~")
        self.cmd_vel.publish(Twist())
        rospy.sleep(1)

if __name__ == '__main__':
    try:
        ROUTE()

    except:
        rospy.loginfo("Bye~~")

    rospy.sleep(1)


调用的trying.py如下:

# -*- coding: UTF-8 -*- 
#!/usr/bin/env python


from __future__ import print_function
import sys
import rospy
import cv2
from std_msgs.msg import String
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError

class TakePhoto ( num ):
    def __init__(self):

        self.bridge = CvBridge()
        self.image_received = False

        # Connect image topic
        img_topic = "/camera/rgb/image_raw"
        self.image_sub = rospy.Subscriber(img_topic, Image, self.callback)

        # Allow up to one second to connection
        rospy.sleep(1)

    def callback(self, data):

        # Convert image to OpenCV format
        try:
            cv_image = self.bridge.imgmsg_to_cv2(data, "bgr8")
        except CvBridgeError as e:
            print(e)

        self.image_received = True
        self.image = cv_image

    def take_picture(self, img_title):
        if self.image_received:
            # Save an image
            cv2.imwrite(img_title, self.image)
            return True
        else:
            return False



# Initialize
rospy.init_node('take_photo', anonymous=False)
camera = TakePhoto()

# Take a photo

# Use '_image_title' parameter from command line
# Default value is 'photo.jpg'
img_title = rospy.get_param('~image_title', num+'.jpg')

if camera.take_picture(img_title):
    rospy.loginfo("保存啦 " + img_title)
else:
    rospy.loginfo("没有吧……")

    # Sleep to give the last log messages time to be sent
    rospy.sleep(1)

报错:
Traceback (most recent call last):
File "route.py", line 10, in
import trying
File "/home/hazel/helloworld/turtlebot/trying.py", line 13, in
class TakePhoto ( num ):
NameError: name 'num' is not defined

自己感觉没有错……前两次都是缩进的问题,现在专门全部改成了Tab键,就算吧num全部删掉,它也不调用直接退出了,我觉得是函数调用的问题

  • 写回答

2条回答 默认 最新

  • devmiao 2019-04-03 00:41
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?