The simple demonstration of using the intera_interface. Lights class.
Contents
Introduction
Run this example with default argument: head_green_light and watch the green light on the head blink on and off while the console echos the state. Use the light names from Lights.list_all_lights()
to change lights to toggle. If you would like to follow along with the actual source code for the example on GitHub, it can be found through this link for lights blink example.
Usage
Run the example as following command:
$ rosrun intera_examples lights_blink.py
Pressing Control-C
at any time will stop and exit the example.
Arguments
See the lights_blink.py available arguments on the command line by passing the -h
, help argument:
$ rosrun intera_examples lights_blink.py -h
usage: lights_blink.py [-h] [-l]
Intera SDK Lights Example: Blink
Toggles the Lights interface on then off again
while printing the state at each step. Simple demonstration
of using the intera_interface.Lights class.
Run this example with default arguments and watch the green
light on the head blink on and off while the console
echos the state. Use the light names from Lights.list_all_lights()
to change lights to toggle.
optional arguments:
-h, --help show this help message and exit
-l, --light_name name of Light component to use (default: head_green_light)
Code Walkthrough
Now, let's break down the code.
import argparse import rospy from intera_interface import Lights
This imports the intera interface for accessing the Lights
class.
def test_light_interface(light_name='head_green_light'):
"""Blinks a desired Light on then off."""
l = Lights()
rospy.loginfo("All available lights on this robot:\n{0}\n".format(
', '.join(l.list_all_lights())))
rospy.loginfo("Blinking Light: {0}".format(light_name))
on_off = lambda x: 'ON' if l.get_light_state(x) else 'OFF'
rospy.loginfo("Initial state: {0}".format(on_off(light_name)))
# turn on light
l.set_light_state(light_name, True)
rospy.sleep(1)
rospy.loginfo("New state: {0}".format(on_off(light_name)))
# turn off light
l.set_light_state(light_name, False)
rospy.sleep(1)
rospy.loginfo("New state: {0}".format(on_off(light_name)))
# turn on light
l.set_light_state(light_name, True)
rospy.sleep(1)
rospy.loginfo("New state: {0}".format(on_off(light_name)))
# reset output
l.set_light_state(light_name, False)
rospy.sleep(1)
rospy.loginfo("Final state: {0}".format(on_off(light_name)))
The function list all available lights. Blink the desired light with the state of the light printed out in terminal.
def main(): """Intera SDK Lights Example: Blink Toggles the Lights interface on then off again while printing the state at each step. Simple demonstration of using the intera_interface.Lights class. Run this example with default arguments and watch the green light on the head blink on and off while the console echos the state. Use the light names from Lights.list_all_lights() to change lights to toggle. """ epilog = """ Intera Interface Lights """ arg_fmt = argparse.RawDescriptionHelpFormatter parser = argparse.ArgumentParser(formatter_class=arg_fmt, description=main.__doc__, epilog=epilog) parser.add_argument( '-l', '--light_name', dest='light_name', default='head_green_light', help=('name of Light component to use' ' (default: head_green_light)') ) args = parser.parse_args(rospy.myargv()[1:])
The argument for light name, default light is 'head_green_light'.
rospy.init_node('sdk_lights_blink', anonymous=True) test_light_interface(args.light_name) if __name__ == '__main__': main()
The node is initialized and blink the desired light using the test_light_interface()
method as explained above.