ANYbotics/variant

Zero in message definitions are not accepted

kenji-miyake opened this issue · 1 comments

Hello, thank you for developing great tools!
When I was using rqt_multiplot, I found an issue similar to #4.

Problem

Some message fields are not shown as candidates, and this was because variant doesn't accept 0 in message definitions.

const boost::regex MessageDefinitionParser::messageTypeExpression =
boost::regex("^\\h*MSG:\\h*([a-zA-Z][a-zA-Z1-9_/]*).*$");
const boost::regex MessageDefinitionParser::memberNameExpression =
boost::regex("[a-zA-Z][a-zA-Z1-9_]*");
const boost::regex MessageDefinitionParser::memberTypeExpression =
boost::regex("[a-zA-Z][a-zA-Z1-9_/]*");

For example, this tool can't parse the following msg because it has 0(mobileye_560_660_msgs).

Header header
mobileye_560_660_msgs/Lane lane

Solution

Change 1-9 to 0-9.

How to test

  • Reproduce the problem
$ docker run --rm -it ros:melodic

# git clone https://github.com/kenji-miyake/variant.git -b add-test-packages-for-pr
# cd variant
# apt update
# rosdep install -y --from-paths . --ignore-src --rosdistro melodic
# apt install -y python3-colcon-common-extensions
# colcon build --symlink-install --catkin-skip-building-tests --cmake-args -DCMAKE_BUILD_TYPE=Release
# source install/setup.bash
# rosrun test_package test_package
[ INFO] [1605688556.366635179]: DataType: geometry_msgs/Quaternion
[ INFO] [1605688556.366657507]: getNumVariableMembers: 4
[ INFO] [1605688556.366662017]: member_0: x
[ INFO] [1605688556.366665324]: member_1: y
[ INFO] [1605688556.366667998]: member_2: z
[ INFO] [1605688556.366670546]: member_3: w

[ INFO] [1605688556.366741769]: DataType: test_msgs/Test
[ INFO] [1605688556.366748146]: getNumVariableMembers: 1
[ INFO] [1605688556.366751725]: member_0: header

-> member lane is not shown

  • Check if it's fixed
# git -c "user.name=test" -c "user.email=test@example.com" merge origin/allow-0-in-message-definition
# colcon build --symlink-install --catkin-skip-building-tests --cmake-args -DCMAKE_BUILD_TYPE=Release
# rosrun test_package test_package
[ INFO] [1605688585.422714139]: DataType: geometry_msgs/Quaternion
[ INFO] [1605688585.422737184]: getNumVariableMembers: 4
[ INFO] [1605688585.422741711]: member_0: x
[ INFO] [1605688585.422744748]: member_1: y
[ INFO] [1605688585.422747263]: member_2: z
[ INFO] [1605688585.422749755]: member_3: w

[ INFO] [1605688585.422904627]: DataType: test_msgs/Test
[ INFO] [1605688585.422910842]: getNumVariableMembers: 2
[ INFO] [1605688585.422928474]: member_0: header
[ INFO] [1605688585.422931243]: member_1: lane

-> member lane is shown

Question

  • Is there any reason for not accepting 0 in message definitions?
  • Can you change this behavior? I'll send a PR later.
remod commented

Closed with a1d9f1d