Meaning of ARI LEDs colors and patterns#
There are four different LEDs displays in ARI, located on the ears, the microphone (on the front of the robot) and on the back.
Ears#
Both ears have the same behaviour and the ARI’s ear LEDs have two default meanings:
yellow and red blinking ears mean that battery level is under 20%. For more details check the battery how-to;
blue and red blinking ears mean that an error on the motors occured.
Back LEDs#
The back LEDs have three default meaning:
yellow and red blinking back LEDs mean that the batter level is under 20%. For more details check the battery how-to;
blue and red blinking back LEDs mean that an error on the motors occured;
if ARI is charging, back LEDs show the current charge level.
Microphone LEDs#
The microphone LEDs are blue by default.
You can change the microphone LEDs colours yourself: see Tutorial: Creating expressions with LEDs.
Example code#
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3
4# System imports
5import rospy
6from actionlib import SimpleActionClient
7from pal_device_msgs.msg import DoTimedLedEffectAction, DoTimedLedEffectGoal,
8LedEffectParams
9
10
11# led devices ids
12BACK = 0
13LEFT_EAR = 1
14RIGHT_EAR = 2
15RESPEAKER = 4
16
17MAX_PRIORITY = 255 # The maximum value for leds effect priority
18
19
20def init_clients():
21 """ Initializing the action clients. """
22
23 # Creating a client object to communicate
24 # with the LEDs action server
25 led_client = SimpleActionClient("/pal_led_manager/do_effect",
26 DoTimedLedEffectAction)
27 led_client.wait_for_server()
28
29 return led_client
30
31
32def show_fixed_color(client,
33 devices,
34 r,
35 g,
36 b,
37 a,
38 duration_secs,
39 duration_nsecs=0):
40 """ Setting up and sending a LedEffectGoal
41 for a fixed color leds effect
42 """
43 goal = DoTimedLedEffectGoal()
44 goal.devices = devices
45 goal.params.effectType = LedEffectParams.FIXED_COLOR
46
47 # Setting the colour parameters
48 goal.params.fixed_color.color.r = r
49 goal.params.fixed_color.color.g = g
50 goal.params.fixed_color.color.b = b
51 goal.params.fixed_color.color.a = a
52
53 # Setting non effect-specific parameters
54 goal.effectDuration.secs = duration_secs
55 goal.effectDuration.nsecs = duration_nsecs
56 goal.priority = MAX_PRIORITY
57 client.send_goal_and_wait(goal)
58
59
60if __name__ == '__main__':
61 try:
62 rospy.init_node('led_basic_tuto')
63 led_client = init_clients()
64 show_fixed_color(led_client,
65 [BACK, LEFT_EAR, RIGHT_EAR, RESPEAKER],
66 r=1,
67 g=0,
68 b=0,
69 a=1,
70 duration_secs=10)
71 except rospy.ROSInterruptException:
72 print("Abruptly finished!")
Code explanation#
We import the required LEDs-related messages.
7from pal_device_msgs.msg import DoTimedLedEffectAction, DoTimedLedEffectGoal,
8LedEffectParams
Then, we define the different LEDs IDs.
10# led devices ids
11BACK = 0
12LEFT_EAR = 1
13RIGHT_EAR = 2
14RESPEAKER = 4
15
16MAX_PRIORITY = 255 # The maximum value for leds effect priority
Now, we are defining a set of functions that will be used later
in __main__
. The first function we implement is
init_clients()
, to initialise the client-server
connection required to interact with the ROS action server involved
in the LEDs management.
19def init_clients():
20 """ Initializing the action clients. """
21
22 # Creating a client object to communicate
23 # with the LEDs action server
24 led_client = SimpleActionClient("/pal_led_manager/do_effect",
25 DoTimedLedEffectAction)
26 led_client.wait_for_server()
27
28 return led_client
We will go through the definition of the function that initialises and sets
the fields of a DoTimedLedEffectAction
object, that is, the object
sent by the node to the action server to request a specific LED effect.
In this example, we will see how to set the Fixed Color effect.
32def show_fixed_color(client,
33 devices,
34 r,
35 g,
36 b,
37 a,
38 duration_secs,
39 duration_nsecs=0):
40 """ Setting up and sending a LedEffectGoal
41 for a fixed color leds effect
42 """
43 goal = DoTimedLedEffectGoal()
44 goal.devices = devices
45 goal.params.effectType = LedEffectParams.FIXED_COLOR
46
47 # Setting the colour parameters
48 goal.params.fixed_color.color.r = r
49 goal.params.fixed_color.color.g = g
50 goal.params.fixed_color.color.b = b
51 goal.params.fixed_color.color.a = a
52
53 # Setting non effect-specific parameters
54 goal.effectDuration.secs = duration_secs
55 goal.effectDuration.nsecs = duration_nsecs
56 goal.priority = MAX_PRIORITY
57 client.send_goal_and_wait(goal)
At this point, we have all the functions that we need to run this example. In
__main__
, we can find how we call the two functions that need it.
62if __name__ == '__main__':
63 try:
64 rospy.init_node('led_basic_tuto')
65 print("init")
66 led_client = init_clients()
67 show_fixed_color(led_client,
68 [BACK, LEFT_EAR, RIGHT_EAR, RESPEAKER],
69 r=1,
70 g=0,
71 b=0,
72 a=1,
73 duration_secs=10)
74 except rospy.ROSInterruptException:
75 print("Abruptly finished!")
See also#
check the LEDs API to know more about the available LEDs effects;
check creating expressions with LEDs for a tutorial on using LEDs to enhance expressivity.