def version_check(self):
"""
Verifies the version of the software running on the robot is
compatible with this local version of the Intera SDK.
Currently uses the variables in intera_interface.settings and
can be overridden for all default examples by setting CHECK_VERSION
to False.
@rtype: bool
@return: Returns True if SDK version is compatible with robot Version, False otherwise
"""
param_name = "/manifest/robot_software/version/HLR_VERSION_STRING"
sdk_version = settings.SDK_VERSION
# get local lock for rosparam threading bug
with self.__class__.param_lock:
robot_version = rospy.get_param(param_name, None)
if not robot_version:
rospy.logwarn("RobotEnable: Failed to retrieve robot version "
"from rosparam: %s\n"
"Verify robot state and connectivity "
"(i.e. ROS_MASTER_URI)", param_name)
return False
else:
# parse out first 3 digits of robot version tag
pattern = ("^([0-9]+)\.([0-9]+)\.([0-9]+)")
match = re.search(pattern, robot_version)
if not match:
rospy.logwarn("RobotEnable: Invalid robot version: %s",
robot_version)
return False
robot_version = match.string[match.start(1):match.end(3)]
if robot_version not in settings.VERSIONS_SDK2ROBOT[sdk_version]:
errstr_version = """RobotEnable: Software Version Mismatch.
Robot Software version (%s) does not match local SDK version (%s). Please
Update your Robot Software. \
See: http://sdk.rethinkrobotics.com/intera/Software_Update"""
rospy.logerr(errstr_version, robot_version, sdk_version)
return False
return True
评论列表
文章目录