我正在尝试做的事情非常简单:我正在尝试通过“cmd_vel”主题远程控制 Sphero RVR,并从 sphero 节点(IMU、里程计等)接收数据。该代码改编自 ROS2 变体,似乎在这方面效果很好。
我正在使用 Jetson Nano A02 板。我也在使用 ROS Melodic 和 Python 3.6.9,这意味着我不能真正舒适地使用 asyncio sphero_sdk 变体,它似乎工作得更好,因此我使用“观察者”变体。该代码大量改编自编写了可正常运行的 ROS2 脚本的人。
即使我从 Sphero SDK 代码示例中运行一些示例,也会发生错误,尽管错误的发生相当不一致,并且通常在我让脚本运行更长时间时发生。
如果我删除以下行:“self.rvr.sensor_control.start(interval=100)”,该错误似乎不再发生,它负责在给定的时间段发送传感器数据。
作为参考,这是 sphero_sdk 库:https ://github.com/sphero-inc/sphero-sdk-raspberrypi-python
这是 sphero 线程的代码(尽管即使运行一些更简单的示例也会发生错误,例如:https ://sdk.sphero.com/docs/how_to/raspberry_pi/rp_python_how_to/#sensor-streaming-multi-sensor-流 1):
#!/usr/bin/python3
#=========== Classic Python libraries ======#
from math import pi
import os
import sys
import time
from threading import Thread
#=========== Sphero libraries ==============#
from sphero_sdk import SpheroRvrObserver
from sphero_sdk import RvrStreamingServices
from sphero_sdk import ControlSystemTypesEnum
from sphero_sdk import ControlSystemIdsEnum
from sphero_sdk import SpheroRvrTargets
from sphero_sdk import BatteryVoltageStatesEnum as VoltageStates
#=========== ROS libraries =================#
import tf2_ros
import tf
import rospy
import geometry_msgs.msg
from geometry_msgs.msg import PoseWithCovariance
from geometry_msgs.msg import Pose
from geometry_msgs.msg import TwistWithCovariance
from geometry_msgs.msg import Twist
from geometry_msgs.msg import Point
from geometry_msgs.msg import Quaternion
from geometry_msgs.msg import Vector3
from nav_msgs.msg import Odometry
from sensor_msgs.msg import Imu
from std_msgs.msg import Header
def echo_handler(echo_response):
print('Echo response: ', echo_response)
def get_nordic_main_application_version_handler(nordic_main_application_version):
print('Nordic main application version (target 1): ', nordic_main_application_version)
def get_st_main_application_version_handler(st_main_application_version):
print('ST main application version (target 2): ', st_main_application_version)
def battery_percentage_handler(battery_percentage):
print('Battery percentage: ', battery_percentage)
def battery_voltage_handler(battery_voltage_state):
print('Voltage state: ', battery_voltage_state)
state_info = '[{}, {}, {}, {}]'.format(
'{}: {}'.format(VoltageStates.unknown.name, VoltageStates.unknown.value),
'{}: {}'.format(VoltageStates.ok.name, VoltageStates.ok.value),
'{}: {}'.format(VoltageStates.low.name, VoltageStates.low.value),
'{}: {}'.format(VoltageStates.critical.name, VoltageStates.critical.value)
)
print('Voltage states: ', state_info)
class SpheroThread(Thread):
def __init__(self):
#================ Thread parameters ================#
print("Initializing SpheroThread")
super(SpheroThread, self).__init__()
self.daemon = True
self._running = True
#================ Sphero parameters ================#
#=================== and start up ==================#
# may be changed
self.rvr = SpheroRvrObserver()
# Not really "components", but a plethora of things.
self.components_dict = {}
self.components_dict['uart_port'] = '/dev/ttyTHS1'
self.components_dict['cmd_vel'] = 'cmd_vel'
self.components_dict['imu_link'] = 'imu_link'
self.components_dict['imu'] = 'IMU'
self.components_dict['odom'] = 'odom'
self.components_dict['base_link'] = 'base_link'
self.components_dict['base_footprint'] = 'base_footprint'
self.components_dict['laser'] = 'laser'
self.received_components = set()
#================== ROS parameters =================#
rospy.Subscriber(self.components_dict['cmd_vel'], Twist, self.cmd_vel_cb)
self.imu = Imu(header=Header(frame_id=self.components_dict['imu_link']))
self.imu.orientation_covariance = [1e-6, .0, .0, .0, 1e-6, .0, .0, .0, 1e-6]
self.imu.angular_velocity_covariance = [1e-6, .0, .0, .0, 1e-6, .0, .0, .0, 1e-6]
self.imu.linear_acceleration_covariance = [1e-6, .0, .0, .0, 1e-6, .0, .0, .0, 1e-6]
self.imu_pub = rospy.Publisher(self.components_dict['imu'], Imu, queue_size=5)
self.acceleration = Vector3()
self.position = Point()
self.orientation = Quaternion()
self.pose = Pose(
position=self.position,
orientation=self.orientation,
)
self.pose_with_covariance = PoseWithCovariance(pose=self.pose)
self.linear = Vector3()
self.angular = Vector3()
self.twist = Twist(linear=self.linear,angular=self.angular)
self.twist_with_covariance = TwistWithCovariance(twist=self.twist)
self.odom = Odometry(
pose=self.pose_with_covariance,
twist=self.twist_with_covariance,
header=Header(
frame_id=self.components_dict['odom'],
),
child_frame_id=self.components_dict['base_footprint']
)
self.pub_odom = rospy.Publisher(self.components_dict['odom'], Odometry, queue_size=5)
self.odom_trans = geometry_msgs.msg.TransformStamped()
self.odom_trans.header.frame_id = self.components_dict['odom']
self.odom_trans.child_frame_id = self.components_dict['base_footprint']
self.laser_trans = geometry_msgs.msg.TransformStamped()
self.laser_trans.header.frame_id = self.components_dict['base_link']
self.laser_trans.child_frame_id = self.components_dict['laser']
self.laser_trans.transform.translation.x = 0.05
self.laser_trans.transform.translation.y = 0.0
self.laser_trans.transform.translation.z = 0.10
self.laser_trans.transform.rotation.x = 0.0
self.laser_trans.transform.rotation.y = 0.0
self.laser_trans.transform.rotation.z = 0.0
self.laser_trans.transform.rotation.w = 1.0
self.footprint_trans = geometry_msgs.msg.TransformStamped()
self.footprint_trans.header.frame_id = self.components_dict['base_footprint']
self.footprint_trans.child_frame_id = self.components_dict['base_link']
self.footprint_trans.transform.translation.x = 0.0
self.footprint_trans.transform.translation.y = 0.0
self.footprint_trans.transform.translation.z = 0.0
self.footprint_trans.transform.rotation.x = 0.0
self.footprint_trans.transform.rotation.y = 0.0
self.footprint_trans.transform.rotation.z = 0.0
self.footprint_trans.transform.rotation.w = 1.0
self.imu_trans = geometry_msgs.msg.TransformStamped()
self.imu_trans.header.frame_id = self.components_dict['base_link']
self.imu_trans.child_frame_id = self.components_dict['imu_link']
self.imu_trans.transform.translation.x = 0.0
self.imu_trans.transform.translation.y = 0.0
self.imu_trans.transform.translation.z = 0.0
self.imu_trans.transform.rotation.x = 0.0
self.imu_trans.transform.rotation.y = 0.0
self.imu_trans.transform.rotation.z = 0.0
self.imu_trans.transform.rotation.w = 1.0
self.br = tf.TransformBroadcaster()
def sphero_init(self):
'''
Check and an additional echo ping.
'''
self.rvr.wake()
rospy.sleep(2)
self.rvr.reset_yaw()
self.rvr.reset_locator_x_and_y()
self.rvr.drive_control.reset_heading()
control_system_type = ControlSystemTypesEnum.control_system_type_rc_drive
controller_id = ControlSystemIdsEnum.rc_drive_slew_mode
self.rvr.set_default_control_system_for_type(
control_system_type = control_system_type, controller_id = controller_id)
# set timeout for stopping
self.rvr.set_custom_control_system_timeout(command_timeout=75)
echo_response = self.rvr.echo(
data=[0, 1, 2],
handler=echo_handler,
target=SpheroRvrTargets.primary.value
)
self.rvr.get_main_application_version(
handler=get_nordic_main_application_version_handler,
target=SpheroRvrTargets.primary.value
)
rospy.sleep(0.5)
self.rvr.get_main_application_version(
handler=get_st_main_application_version_handler,
target=SpheroRvrTargets.secondary.value
)
self.rvr.get_battery_percentage(handler=battery_percentage_handler)
rospy.sleep(0.5)
self.rvr.get_battery_voltage_state(handler=battery_voltage_handler)
rospy.sleep(0.5)
def check_if_need_to_send_msg(self, component):
self.received_components.update(component)
if self.received_components >= {'locator', 'quaternion', 'gyroscope',
'velocity', 'accelerometer'}:
self.received_components.clear()
#self.rate = rospy.Rate(20)
try:
self.odom.header.stamp = rospy.Time.now()
self.pub_odom.publish(self.odom)
self.odom_trans.header.stamp = self.odom.header.stamp
self.odom_trans.transform.translation.x = self.position.x
self.odom_trans.transform.translation.y = self.position.y
self.odom_trans.transform.translation.z = self.position.z
self.odom_trans.transform.rotation = self.orientation
self.br.sendTransformMessage(self.odom_trans)
self.laser_trans.header.stamp = self.odom.header.stamp
self.br.sendTransformMessage(self.laser_trans)
self.footprint_trans.header.stamp = self.odom.header.stamp
self.br.sendTransformMessage(self.footprint_trans)
self.imu.header.stamp = self.odom.header.stamp
self.imu.orientation = self.orientation
self.imu.linear_acceleration = self.acceleration
self.imu.angular_velocity = self.angular
self.imu_pub.publish(self.imu)
self.imu_trans.header.stamp = self.odom.header.stamp
self.br.sendTransformMessage(self.imu_trans)
#self.rate.sleep()
except Exception as e:
print("Exception publishing transformations: " + str(e))
def sphero_handler(self, data):
#print("In sphero_handler...")
try:
received = set()
if 'Locator' in data:
received.add('locator')
# Sphero see forward towards Y as opposed to ROS,
# which see forward as X. Rotate 90 deg.
self.position.x = data['Locator']['Y']
self.position.y = -data['Locator']['X']
self.position.z = 0.0
if 'Quaternion' in data:
received.add('quaternion')
# Rotate 90 as per above.
self.orientation.w = data['Quaternion']['W']
self.orientation.x = data['Quaternion']['X']
self.orientation.y = data['Quaternion']['Y']
self.orientation.z = -data['Quaternion']['Z']
if 'Gyroscope' in data:
received.add('gyroscope')
# convert to radians
self.angular.x = data['Gyroscope']['X'] * 2.0 * pi / 360.0
self.angular.y = data['Gyroscope']['Y'] * 2.0 * pi / 360.0
self.angular.z = data['Gyroscope']['Z'] * 2.0 * pi / 360.0
if 'Velocity' in data:
received.add('velocity')
self.linear.x = data['Velocity']['X']
self.linear.y = data['Velocity']['Y']
if 'Accelerometer' in data:
received.add('accelerometer')
self.acceleration.x = data['Accelerometer']['X']
self.acceleration.y = data['Accelerometer']['Y']
self.acceleration.z = data['Accelerometer']['Z']
self.check_if_need_to_send_msg(received)
except Exception as e:
print('Exception processing {}: {}'.format(data, e))
def setup_listeners(self):
try:
self.rvr.sensor_control.add_sensor_data_handler(
service=RvrStreamingServices.locator,
handler=self.sphero_handler,
)
self.rvr.sensor_control.add_sensor_data_handler(
service=RvrStreamingServices.quaternion,
handler=self.sphero_handler,
)
self.rvr.sensor_control.add_sensor_data_handler(
service=RvrStreamingServices.gyroscope,
handler=self.sphero_handler,
)
self.rvr.sensor_control.add_sensor_data_handler(
service=RvrStreamingServices.velocity,
handler=self.sphero_handler,
)
self.rvr.sensor_control.add_sensor_data_handler(
service=RvrStreamingServices.accelerometer,
handler=self.sphero_handler,
)
self.rvr.sensor_control.add_sensor_data_handler(
service=RvrStreamingServices.imu,
handler=self.sphero_handler,
)
self.rvr.on_will_sleep_notify(handler=self.sleep_handler)
self.rvr.sensor_control.start(interval=100)
# Just give it some time, since we're not running asyncio, we can't
# schedule it nicely. :(
rospy.sleep(1)
print('Listeners in place')
except Exception as e:
msg = "Sphero thread setup error: " + str(e)
raise Exception(msg)
def sleep_handler(self):
# Do not let the RVR sleep while we are connected
try:
self.rvr.wake()
except Exception as e:
self.logger.error('Exception processing sleep: {}'.format(e))
def cmd_vel_cb(self, vel_cmd):
print('help')
angular_vel_deg = vel_cmd.angular.z * 360.0 / (2.0 * pi)
self.rvr.drive_rc_si_units(
linear_velocity=vel_cmd.linear.x,
yaw_angular_velocity=angular_vel_deg,
flags=0)
#=================== STOP RUNNING THREAD ================#
def stop(self):
self._running = False
self.rvr.drive_stop()
rospy.sleep(.5)
self.rvr.sensor_control.stop()
rospy.sleep(.5)
self.rvr.sensor_control.clear()
rospy.sleep(.5)
self.rvr.restore_initial_default_control_systems()
rospy.sleep(.5)
self.rvr.restore_default_control_system_timeout()
rospy.sleep(.5)
self.rvr.close()
#================= THEAD RUN GO BRRRR ===================#
def run(self):
self.sphero_init()
self.setup_listeners()
while self._running:
pass
这是错误的全部荣耀:
Fatal Python error: Cannot recover from stack overflow.
Thread 0x0000007f6affd1f0 (most recent call first):
File "/home/userName/catkin_ws/src/sphero/src/new_sphero.py", line 358 in run
File "/usr/lib/python3.6/threading.py", line 916 in _bootstrap_inner
File "/usr/lib/python3.6/threading.py", line 884 in _bootstrap
Thread 0x0000007f6b7fe1f0 (most recent call first):
File "/usr/lib/python3.6/threading.py", line 295 in wait
File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_pubsub.py", line 429 in _run
File "/usr/lib/python3.6/threading.py", line 864 in run
File "/usr/lib/python3.6/threading.py", line 916 in _bootstrap_inner
File "/usr/lib/python3.6/threading.py", line 884 in _bootstrap
Current thread 0x0000007f6bfff1f0 (most recent call first):
File "/usr/lib/python3.6/genericpath.py", line 130 in _splitext
File "/usr/lib/python3.6/posixpath.py", line 129 in splitext
File "/usr/lib/python3.6/logging/__init__.py", line 286 in __init__
File "/usr/lib/python3.6/logging/__init__.py", line 1413 in makeRecord
File "/usr/lib/python3.6/logging/__init__.py", line 1443 in _log
File "/usr/lib/python3.6/logging/__init__.py", line 1320 in warning
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/common/protocol/api_sphero_message.py", line 421 in from_buffer
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 34 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
File "/usr/local/lib/python3.6/dist-packages/sphero_sdk-1.0.0-py3.6.egg/sphero_sdk/observer/client/dal/observer_parser.py", line 51 in __read
...
Thread 0x0000007f8356c1f0 (most recent call first):
File "/usr/lib/python3.6/socket.py", line 205 in accept
File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_base.py", line 154 in run
File "/usr/lib/python3.6/threading.py", line 864 in run
File "/usr/lib/python3.6/threading.py", line 916 in _bootstrap_inner
File "/usr/lib/python3.6/threading.py", line 884 in _bootstrap
Thread 0x0000007f82d6b1f0 (most recent call first):
File "/usr/lib/python3.6/threading.py", line 299 in wait
File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/registration.py", line 298 in run
File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/registration.py", line 276 in start
File "/usr/lib/python3.6/threading.py", line 864 in run
File "/usr/lib/python3.6/threading.py", line 916 in _bootstrap_inner
File "/usr/lib/python3.6/threading.py", line 884 in _bootstrap
Thread 0x0000007f8256a1f0 (most recent call first):
File "/usr/lib/python3.6/selectors.py", line 376 in select
File "/usr/lib/python3.6/socketserver.py", line 236 in serve_forever
File "/opt/ros/melodic/lib/python2.7/dist-packages/rosgraph/xmlrpc.py", line 322 in _run
File "/opt/ros/melodic/lib/python2.7/dist-packages/rosgraph/xmlrpc.py", line 250 in run
Thread 0x0000007f85e53010 (most recent call first):
File "/home/userName/catkin_ws/src/sphero/src/new_main.py", line 22 in <module>
Aborted