From 248b3ca375f7a096066c77cc3433e21af1c76a0b Mon Sep 17 00:00:00 2001 From: "David V. Lu" Date: Mon, 14 Jun 2021 13:50:27 -0400 Subject: [PATCH 1/4] Publish Diagnostics --- stretch_core/nodes/stretch_diagnostics.py | 127 ++++++++++++++++++++++ stretch_core/nodes/stretch_driver | 2 + stretch_core/package.xml | 6 + 3 files changed, 135 insertions(+) create mode 100644 stretch_core/nodes/stretch_diagnostics.py diff --git a/stretch_core/nodes/stretch_diagnostics.py b/stretch_core/nodes/stretch_diagnostics.py new file mode 100644 index 0000000..744fa4f --- /dev/null +++ b/stretch_core/nodes/stretch_diagnostics.py @@ -0,0 +1,127 @@ +import diagnostic_msgs + +import diagnostic_updater + +import stretch_body.hello_utils as hello_utils # For get_fleet_id + +# Shortcut constants +ERROR = diagnostic_msgs.msg.DiagnosticStatus.ERROR +WARN = diagnostic_msgs.msg.DiagnosticStatus.WARN +OK = diagnostic_msgs.msg.DiagnosticStatus.OK + + +def add_keyvalues_to_status(status, d, skip_keys=None): + """Add all the key value pairs in dictionary d (except those keys in skip_keys) to the diagnostic status.""" + for k, v in d.items(): + if skip_keys and k in skip_keys: + continue + status.add(k, str(v)) + + +def report_stats(status, d, skip_keys=None): + """Diagnostic update function that marks the summary as OK and just reports the stats from d.""" + status.summary(OK, 'OK') + add_keyvalues_to_status(status, d, skip_keys) + return status + + +def analyze_stepper(status, device): + """Diagnostic update function for device with stepper motor.""" + if not device.motor.hw_valid: + status.summary(ERROR, 'Hardware not present') + elif not device.motor.status['pos_calibrated']: + status.summary(WARN, 'Hardware not calibrated') + elif device.motor.status['runstop_on']: + status.summary(WARN, 'Runstop on') + else: + status.summary(OK, 'Hardware present and calibrated') + + add_keyvalues_to_status(status, device.status, ['motor']) + return status + + +def analyze_dynamixel(status, device, joint_name): + """Diagnostic update function for device with dynamixel motor.""" + motor = device.motors[joint_name] + if not motor.hw_valid: + status.summary(ERROR, 'Hardware not present') + elif not motor.is_calibrated: + status.summary(WARN, 'Hardware not calibrated') + else: + status.summary(OK, 'Hardware present and calibrated') + + add_keyvalues_to_status(status, motor.status) + + return status + + +def analyze_base(status, base): + """Diagnostic update function for the base.""" + for wheel in [base.left_wheel, base.right_wheel]: + if not wheel.hw_valid: + status.summary(ERROR, 'Hardware not present') + break + else: + status.summary(OK, 'Hardware present') + + add_keyvalues_to_status(status, base.status, ['left_wheel', 'right_wheel']) + return status + + +def check_range(status, device, key, lower_bound, upper_bound, out_of_bounds_status=ERROR): + """Diagnostic update function that checks if value(s) exceeds the specified bounds.""" + value = device.status[key] + if isinstance(value, list): + values = value + for i, value in enumerate(values): + status.add(f'{key}[{i}]', str(value)) + else: + status.add(key, str(value)) + values = [value] + + for value in values: + if value < lower_bound or value > upper_bound: + status.summary(out_of_bounds_status, f'{key}={value} | out of range [{lower_bound},{upper_bound}]') + return status + + status.summary(OK, 'OK') + return status + + +class StretchDiagnostics: + def __init__(self, node, robot): + self.node = node + self.robot = robot + self.updater = diagnostic_updater.Updater(node) + self.updater.setHardwareID(hello_utils.get_fleet_id()) + + # Configure the different update functions + self.updater.add('Pimu/Device', + lambda status: report_stats(status, self.robot.pimu.status, ['imu', 'transport'])) + + # TODO: Add IMU + self.updater.add('Pimu/Voltage', + lambda status: check_range(status, self.robot.pimu, 'voltage', + self.robot.pimu.config['low_voltage_alert'], 14.5)) + self.updater.add('Pimu/Current', + lambda status: check_range(status, self.robot.pimu, 'current', + 0.5, self.robot.pimu.config['high_current_alert'])) + self.updater.add('Pimu/Temperature', lambda status: check_range(status, self.robot.pimu, 'temp', 10, 40)) + self.updater.add('Pimu/Cliff', + lambda status: check_range(status, self.robot.pimu, 'cliff_range', + self.robot.pimu.config['cliff_thresh'], 20)) + + self.updater.add('Lift/Device', lambda status: analyze_stepper(status, self.robot.lift)) + self.updater.add('Lift/Motor', lambda status: report_stats(status, self.robot.lift.motor.status, ['transport'])) + self.updater.add('Arm/Device', lambda status: analyze_stepper(status, self.robot.arm)) + self.updater.add('Arm/Motor', lambda status: report_stats(status, self.robot.arm.motor.status, ['transport'])) + self.updater.add('Base/Device', lambda status: analyze_base(status, self.robot.base)) + self.updater.add('Base/LeftWheel', + lambda status: report_stats(status, self.robot.base.left_wheel.status, ['transport'])) + self.updater.add('Base/RightWheel', + lambda status: report_stats(status, self.robot.base.right_wheel.status, ['transport'])) + self.updater.add('Wacc/Device', lambda status: check_range(status, self.robot.wacc, 'ax', 8.0, 11.0)) + + for name, device in [('Head', self.robot.head), ('EndOfArm', self.robot.end_of_arm)]: + for jname in device.joints: + self.updater.add(f'{name}/{jname}', lambda status: analyze_dynamixel(status, device, jname)) diff --git a/stretch_core/nodes/stretch_driver b/stretch_core/nodes/stretch_driver index 126d05e..e79fb52 100755 --- a/stretch_core/nodes/stretch_driver +++ b/stretch_core/nodes/stretch_driver @@ -29,6 +29,7 @@ from std_msgs.msg import Header import hello_helpers.hello_misc as hm from hello_helpers.gripper_conversion import GripperConversion from joint_trajectory_server import JointTrajectoryAction +from stretch_diagnostics import StretchDiagnostics GRIPPER_DEBUG = False BACKLASH_DEBUG = False @@ -535,6 +536,7 @@ class StretchBodyNode: self.fail_out_of_range_goal = rospy.get_param('~fail_out_of_range_goal', True) self.joint_trajectory_action = JointTrajectoryAction(self) self.joint_trajectory_action.server.start() + self.diagnostics = StretchDiagnostics(self, self.robot) self.switch_to_navigation_mode_service = rospy.Service('/switch_to_navigation_mode', Trigger, diff --git a/stretch_core/package.xml b/stretch_core/package.xml index 9d1e5bb..ef081e1 100644 --- a/stretch_core/package.xml +++ b/stretch_core/package.xml @@ -51,6 +51,8 @@ catkin actionlib actionlib_msgs + diagnostic_msgs + diagnostic_updater geometry_msgs nav_msgs control_msgs @@ -62,6 +64,8 @@ tf2 actionlib actionlib_msgs + diagnostic_msgs + diagnostic_updater geometry_msgs nav_msgs control_msgs @@ -73,6 +77,8 @@ tf2 actionlib actionlib_msgs + diagnostic_msgs + diagnostic_updater geometry_msgs nav_msgs control_msgs From 7e80b9ff99731bcb6dc53c3bdce3e2ba2dc30cd7 Mon Sep 17 00:00:00 2001 From: "David V. Lu" Date: Mon, 14 Jun 2021 13:54:11 -0400 Subject: [PATCH 2/4] Diagnostic Aggregator Node --- stretch_core/config/diagnostics.yaml | 35 +++++++++++++++++++++++ stretch_core/launch/stretch_driver.launch | 5 +++- stretch_core/package.xml | 1 + 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 stretch_core/config/diagnostics.yaml diff --git a/stretch_core/config/diagnostics.yaml b/stretch_core/config/diagnostics.yaml new file mode 100644 index 0000000..cb386a6 --- /dev/null +++ b/stretch_core/config/diagnostics.yaml @@ -0,0 +1,35 @@ + type: diagnostic_aggregator/AnalyzerGroup + path: Stretch + analyzers: + hardware: + path: Hardware + type: diagnostic_aggregator/AnalyzerGroup + analyzers: + Lift: + type: diagnostic_aggregator/GenericAnalyzer + find_and_remove_prefix: ['stretch_driver: Lift'] + path: Lift + Arm: + type: diagnostic_aggregator/GenericAnalyzer + find_and_remove_prefix: ['stretch_driver: Arm'] + path: Arm + Base: + type: diagnostic_aggregator/GenericAnalyzer + find_and_remove_prefix: ['stretch_driver: Base'] + path: Base + EndOfArm: + type: diagnostic_aggregator/GenericAnalyzer + find_and_remove_prefix: ['stretch_driver: EndOfArm'] + path: EndOfArm + Head: + type: diagnostic_aggregator/GenericAnalyzer + find_and_remove_prefix: ['stretch_driver: Head'] + path: Head + Pimu: + type: diagnostic_aggregator/GenericAnalyzer + find_and_remove_prefix: ['stretch_driver: Pimu'] + path: Pimu + Wacc: + type: diagnostic_aggregator/GenericAnalyzer + find_and_remove_prefix: ['stretch_driver: Wacc'] + path: Wacc diff --git a/stretch_core/launch/stretch_driver.launch b/stretch_core/launch/stretch_driver.launch index 8fadf0f..e97c15a 100644 --- a/stretch_core/launch/stretch_driver.launch +++ b/stretch_core/launch/stretch_driver.launch @@ -40,5 +40,8 @@ - + + + + diff --git a/stretch_core/package.xml b/stretch_core/package.xml index ef081e1..6fd4549 100644 --- a/stretch_core/package.xml +++ b/stretch_core/package.xml @@ -79,6 +79,7 @@ actionlib_msgs diagnostic_msgs diagnostic_updater + diagnostic_aggregator geometry_msgs nav_msgs control_msgs From fe54d0ec8f3711d473b09e3d6a36adf8c0b6a4c1 Mon Sep 17 00:00:00 2001 From: "David V. Lu" Date: Mon, 14 Jun 2021 15:02:39 -0400 Subject: [PATCH 3/4] Extra ROS Interfaces for Driver --- stretch_core/nodes/stretch_driver | 45 ++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/stretch_core/nodes/stretch_driver b/stretch_core/nodes/stretch_driver index e79fb52..082d622 100755 --- a/stretch_core/nodes/stretch_driver +++ b/stretch_core/nodes/stretch_driver @@ -23,8 +23,8 @@ from std_srvs.srv import Trigger, TriggerResponse from std_srvs.srv import SetBool, SetBoolResponse from nav_msgs.msg import Odometry -from sensor_msgs.msg import JointState, Imu, MagneticField -from std_msgs.msg import Header +from sensor_msgs.msg import BatteryState, JointState, Imu, MagneticField +from std_msgs.msg import Bool, Header, String import hello_helpers.hello_misc as hm from hello_helpers.gripper_conversion import GripperConversion @@ -221,6 +221,28 @@ class StretchBodyNode: odom.twist.twist.angular.z = theta_vel self.odom_pub.publish(odom) + # TODO: Add way to determine if the robot is charging + # TODO: Calculate the percentage + battery_state = BatteryState() + invalid_reading = float('NaN') + battery_state.header.stamp = current_time + battery_state.voltage = float(robot_status['pimu']['voltage']) + battery_state.current = float(robot_status['pimu']['current']) + battery_state.charge = invalid_reading + battery_state.capacity = invalid_reading + battery_state.percentage = invalid_reading + battery_state.design_capacity = 18.0 + battery_state.present = True + self.power_pub.publish(battery_state) + + calibration_status = Bool() + calibration_status.data = self.robot.is_calibrated() + self.calibration_pub.publish(calibration_status) + + mode_msg = String() + mode_msg.data = self.robot_mode + self.mode_pub.publish(mode_msg) + # publish joint state for the arm joint_state = JointState() joint_state.header.stamp = current_time @@ -364,8 +386,7 @@ class StretchBodyNode: def calibrate(self): def code_to_run(): - self.robot.lift.home() - self.robot.arm.home() + self.robot.home() self.change_mode('calibration', code_to_run) ######## SERVICE CALLBACKS ####### @@ -392,6 +413,14 @@ class StretchBodyNode: message='Stopped the robot.' ) + def calibrate_callback(self, request): + rospy.loginfo('Received calibrate_the_robot service call.') + self.calibrate() + return TriggerResponse( + success=True, + message='Calibrated.' + ) + def navigation_mode_service_callback(self, request): self.turn_on_navigation_mode() return TriggerResponse( @@ -507,6 +536,10 @@ class StretchBodyNode: self.odom_pub = rospy.Publisher('odom', Odometry, queue_size=1) + self.power_pub = rospy.Publisher('battery', BatteryState, queue_size=1) + self.calibration_pub = rospy.Publisher('is_calibrated', Bool, queue_size=1) + self.mode_pub = rospy.Publisher('mode', String, queue_size=1) + self.imu_mobile_base_pub = rospy.Publisher('imu_mobile_base', Imu, queue_size=1) self.magnetometer_mobile_base_pub = rospy.Publisher('magnetometer_mobile_base', MagneticField, queue_size=1) self.imu_wrist_pub = rospy.Publisher('imu_wrist', Imu, queue_size=1) @@ -550,6 +583,10 @@ class StretchBodyNode: Trigger, self.stop_the_robot_callback) + self.calibrate_the_robot_service = rospy.Service('/calibrate_the_robot', + Trigger, + self.calibrate_callback) + self.runstop_service = rospy.Service('/runstop', SetBool, self.runstop_service_callback) From 49a69cbd85fde76ff07e0bbbbcceda79a30bed77 Mon Sep 17 00:00:00 2001 From: "David V. Lu" Date: Mon, 14 Jun 2021 15:38:49 -0400 Subject: [PATCH 4/4] Stretch Dashboard --- stretch_dashboard/CMakeLists.txt | 14 +++ stretch_dashboard/README.md | 13 +++ stretch_dashboard/Screenshot.png | Bin 0 -> 113463 bytes stretch_dashboard/package.xml | 23 +++++ stretch_dashboard/plugin.xml | 20 ++++ stretch_dashboard/scripts/dashboard | 12 +++ stretch_dashboard/setup.py | 11 +++ .../src/stretch_dashboard/__init__.py | 0 .../stretch_dashboard/stretch_dashboard.py | 90 ++++++++++++++++++ 9 files changed, 183 insertions(+) create mode 100644 stretch_dashboard/CMakeLists.txt create mode 100644 stretch_dashboard/README.md create mode 100644 stretch_dashboard/Screenshot.png create mode 100644 stretch_dashboard/package.xml create mode 100644 stretch_dashboard/plugin.xml create mode 100755 stretch_dashboard/scripts/dashboard create mode 100644 stretch_dashboard/setup.py create mode 100644 stretch_dashboard/src/stretch_dashboard/__init__.py create mode 100644 stretch_dashboard/src/stretch_dashboard/stretch_dashboard.py diff --git a/stretch_dashboard/CMakeLists.txt b/stretch_dashboard/CMakeLists.txt new file mode 100644 index 0000000..cfa21ff --- /dev/null +++ b/stretch_dashboard/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.0.2) +project(stretch_dashboard) + +find_package(catkin REQUIRED) + +catkin_python_setup() + +catkin_package() +install(FILES plugin.xml + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +) +catkin_install_python(PROGRAMS scripts/dashboard + DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +) diff --git a/stretch_dashboard/README.md b/stretch_dashboard/README.md new file mode 100644 index 0000000..60172ea --- /dev/null +++ b/stretch_dashboard/README.md @@ -0,0 +1,13 @@ +![Stretch ROS banner](../images/banner.png) + +# Stretch Dashboard +![screenshot](Screenshot.png) + + * Gear icon used for calibration + * Next button used for changing modes + * Battery shows voltage/current as a tooltip + +## To Run + rosrun stretch_dashboard dashboard + +*Note*: The first time you run it you may need to add the `--force-discover` arg to the end of the above command. diff --git a/stretch_dashboard/Screenshot.png b/stretch_dashboard/Screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..a504ad3c6fc6e89c0b7534327958fd0aa760282b GIT binary patch literal 113463 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ð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 literal 0 HcmV?d00001 diff --git a/stretch_dashboard/package.xml b/stretch_dashboard/package.xml new file mode 100644 index 0000000..08572c6 --- /dev/null +++ b/stretch_dashboard/package.xml @@ -0,0 +1,23 @@ + + + stretch_dashboard + 0.2.0 + + A Python GUI plugin for displaying a dashboard that displays and interacts with the Stretch robot. + + David V. Lu!! + Apache License 2.0 + + catkin + + rospy + rqt_gui + rqt_robot_dashboard + sensor_msgs + std_msgs + std_srvs + + + + + diff --git a/stretch_dashboard/plugin.xml b/stretch_dashboard/plugin.xml new file mode 100644 index 0000000..685e692 --- /dev/null +++ b/stretch_dashboard/plugin.xml @@ -0,0 +1,20 @@ + + + + A Python GUI plugin for displaying a dashboard that displays and interacts with the Stretch robot. + + + + + folder + Plugins related to specific robots. + + + emblem-important + + A Python GUI plugin for displaying a dashboard that displays and interacts with the Stretch robot. + + + + diff --git a/stretch_dashboard/scripts/dashboard b/stretch_dashboard/scripts/dashboard new file mode 100755 index 0000000..bf6b215 --- /dev/null +++ b/stretch_dashboard/scripts/dashboard @@ -0,0 +1,12 @@ +#!/usr/bin/env python3 +import sys + +from rqt_gui.main import Main + + +def main(): + sys.exit(Main().main(sys.argv, standalone='stretch_dashboard.stretch_dashboard.StretchDashboard')) + + +if __name__ == '__main__': + main() diff --git a/stretch_dashboard/setup.py b/stretch_dashboard/setup.py new file mode 100644 index 0000000..fb07c6d --- /dev/null +++ b/stretch_dashboard/setup.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python + +from distutils.core import setup +from catkin_pkg.python_setup import generate_distutils_setup + +package_info = generate_distutils_setup( + packages=['stretch_dashboard'], + package_dir={'': 'src'} +) + +setup(**package_info) diff --git a/stretch_dashboard/src/stretch_dashboard/__init__.py b/stretch_dashboard/src/stretch_dashboard/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/stretch_dashboard/src/stretch_dashboard/stretch_dashboard.py b/stretch_dashboard/src/stretch_dashboard/stretch_dashboard.py new file mode 100644 index 0000000..6e3bfe8 --- /dev/null +++ b/stretch_dashboard/src/stretch_dashboard/stretch_dashboard.py @@ -0,0 +1,90 @@ +import math + +import rospy + +from rqt_robot_dashboard.dashboard import Dashboard +from rqt_robot_dashboard.menu_dash_widget import MenuDashWidget +from rqt_robot_dashboard.widgets import BatteryDashWidget, ConsoleDashWidget, MonitorDashWidget + +from sensor_msgs.msg import BatteryState + +from std_msgs.msg import Bool, String + +from std_srvs.srv import Trigger + + +class CalibrateWidget(MenuDashWidget): + def __init__(self): + MenuDashWidget.__init__(self, 'Calibration', icons=[ + ['bg-grey.svg', 'ic-motors.svg'], # State 0: Unknown + ['bg-green.svg', 'ic-motors.svg'], # State 1: Calibrated + ['bg-yellow.svg', 'ic-motors.svg']]) # State 2: Not Calibrated + self.update_state(0) + self.setToolTip('Calibration') + + self.client = rospy.ServiceProxy('/calibrate_the_robot', Trigger) + self.status_sub = rospy.Subscriber('is_calibrated', Bool, self.status_cb, queue_size=1) + + self.add_action('Calibrate!', lambda: self.client.call()) + + def status_cb(self, msg): + if msg.data: + self.update_state(1) + else: + self.update_state(2) + + +class ModeWidget(MenuDashWidget): + def __init__(self): + # TODO: These could probably use custom icons + MenuDashWidget.__init__(self, 'Robot Mode', icons=[ + ['bg-grey.svg'], # State 0: Unknown + ['bg-green.svg', 'ic-steering-wheel.svg'], # State 1: Navigation + ['bg-green.svg', 'ic-wrench.svg'], # State 2: Manipulation + ['bg-green.svg', 'ic-runstop-off.svg']]) # State 3: Position + self.update_state(0) + self.setToolTip('Unknown Mode') + + self.mode_map = { + 'navigation': 1, + 'manipulation': 2, + 'position': 3 + } + + self.clients = {} + for mode in self.mode_map: + self.clients[mode] = rospy.ServiceProxy(f'/switch_to_{mode}_mode', Trigger) + self.add_action(f'Switch to {mode} mode', + lambda mode_arg=mode: self.clients[mode_arg].call()) + + self.status_sub = rospy.Subscriber('mode', String, self.status_cb, queue_size=1) + + def status_cb(self, msg): + if msg.data in self.mode_map: + self.update_state(self.mode_map[msg.data]) + self.setToolTip(msg.data.title() + ' Mode') + else: + self.update_state(0) + self.setToolTip('Unknown Mode') + + +class StretchDashboard(Dashboard): + def __init__(self, context): + super(StretchDashboard, self).__init__(context) + self.power_subscriber = rospy.Subscriber('/battery', BatteryState, self.battery_cb, 10) + + def get_widgets(self): + self.monitor = MonitorDashWidget(self.context) + self.console = ConsoleDashWidget(self.context) + self.calibrate = CalibrateWidget() + self.mode_w = ModeWidget() + self.battery = BatteryDashWidget(self.context) + + return [[self.monitor, self.console, self.calibrate, self.mode_w], [self.battery]] + + def battery_cb(self, msg): + # TODO: Incorporate logic if robot is plugged in + if not math.isnan(msg.percentage): + self.battery.update_perc(msg.percentage) + + self.battery.setToolTip('{:.2f} V\n{:.2f} A'.format(msg.voltage, msg.current))