Python Ошибка сегментации (ядро сброшено) с ROS - PullRequest
1 голос
/ 10 марта 2020

Я использую Ubuntu 18 с ROS-мелоди c и программным обеспечением. Мой код работал нормально до того, как я произвел слияние git с другой ветвью, которая была главной для моей дочерней ветви, но это не главная ветка для всего проекта. По какой-то причине я продолжаю получать ошибку сегментации, когда пытаюсь запустить свой код, но я не уверен, откуда исходит ошибка. Ниже приведен мой код, который вызывает ошибку сегментации, все остальные коды, связанные с этим, не имеют проблем.

#!/usr/bin/env python

import rospy
import threading

from geometry_msgs.msg import PoseWithCovarianceStamped
from geometry_msgs.msg import PoseStamped
from geometry_msgs.msg import Pose
from geometry_msgs.msg import PoseArray
from std_msgs.msg import String
from std_msgs.msg import Empty
from std_msgs.msg import UInt32

from PoseData import PoseData
from save_file import save_file


class RecordNode:

    def __init__(self):
        rospy.init_node("RecordNode",anonymous=True)
        self.saved_poses = []
        self.current_pose = None
        self.last_saved_pose = None
        self.stop = False
        self.distance_value = 1.0
        self.savefile = save_file()

        self.pose_sub = rospy.Subscriber("current_pose",PoseStamped, self.pose_callback)

    def pose_callback(self, data):
        pose = data.pose
        #print(pose)
        self.current_pose = PoseData.from_pose(pose)

    def record_new_path(self):
        self.last_saved_pose = self.current_pose
        self.saved_poses.append(self.last_saved_pose)
        print("Starting saving.")
        #debug -------------------------
        #print(self.distance_value)
        #debug -------------------------
        while self.stop == False:
            distance_comp = self.last_saved_pose.distance(self.current_pose)
            #debug -------------------------
            #print(self.last_saved_pose.distance(self.current_pose))
            #print(distance_comp)
            #debug -------------------------
            if distance_comp >= self.distance_value: 
                self.last_saved_pose = self.current_pose
                self.saved_poses.append(self.last_saved_pose)
                #debug -------------------------
                print("Saved poses in array: {}").format(len(self.saved_poses))
                #print(self.last_saved_pose)
                #print(self.distance_value)
                #debug -------------------------

        print("Waypoints saved to array, save to file?.")
        self.savefile.saved_poses_file = self.saved_poses
        self.savefile.set_save_file_loc()
        self.savefile.write_data(self.saved_poses)
        self.saved_poses = []

    def start_thread(self):
        self.thread = threading.Thread(target = self.record_new_path)
        self.thread.start()


def main():
    node = RecordNode()


    rospy.spin()

if __name__=="__main__":
    try:
        main()
    except rospy.ROSInternalException:
        pass
...