Enum in msg
Hi there,
does anybody know if there's a way to put an enum type into a message? How's it done?
Thanks!
Hendrik
ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
Hi there,
does anybody know if there's a way to put an enum type into a message? How's it done?
Thanks!
Hendrik
You can use constants in ROS messages:
http://www.ros.org/wiki/msg#Constants
They don't map explicitly to higher-level enum types in programming languages, but they generally let you deal with the same issues.
I know this is a very old chain, however has this been implemented? Could I have a look?
Here is an example from joystick_drivers https://github.com/ros-drivers/joystick_drivers :
$ rosmsg show sensor_msgs/JoyFeedbackArray
sensor_msgs/JoyFeedback[] array
uint8 TYPE_LED=0
uint8 TYPE_RUMBLE=1
uint8 TYPE_BUZZER=2
uint8 type
uint8 id
float32 intensity
There is nothing special or required about the constants TYPE_LED and TYPE_RUMBLE being capitalized or having a prefix in common with the field 'type' for which they are supposed to be the values it ought to have.
In https://github.com/ros-drivers/joystick_drivers/blob/groovy-devel/ps3joy/scripts/ps3joy_node.py the usage of the enum like fields is shown for Python:
rospy.Subscriber("joy/set_feedback",sensor_msgs.msg.JoyFeedbackArray,self.set_feedback)
...
def set_feedback(self,msg):
for feedback in msg.array:
if feedback.type == sensor_msgs.msg.JoyFeedback.TYPE_LED and feedback.id < 4:
self.led_values[feedback.id] = int(round(feedback.intensity))
elif feedback.type == sensor_msgs.msg.JoyFeedback.TYPE_RUMBLE and feedback.id < 2:
...
In C++ it would look like this:
if (msg->waveform == sensor_msgs::JoyFeedback::TYPE_RUMBLE)
...
Asked: 2011-03-15 06:14:13 -0600
Seen: 27,529 times
Last updated: Nov 29 '13
Sensor discovery on runtime with ROS?
PointCloud subscriber/publisher types
how to check if there are waiting messages in a callback queue?
Putting a sensor_msgs/Image into a message, getting it back, and converting it for OpenCV?
Why separation of *.py and *.h/*.lisp auto generated messages?
How to know where the next variable begins in a serialized message?