fishros/ros2cn

自定义msg,srv编译不通过

Opened this issue · 1 comments

错误log如下,我仔细看了看,如它说的问题应该在文件**/opt/ros/foxy/lib/python3.8/site-packages/rosidl_adapter/parser.py**,这应该是解析idl文件中的代码吧,如果检测到int64这样的predefined的类型应该直接通过啊,这为什么会这样啊
--- stderr: tutorial_interfaces
CMake Error at /opt/ros/foxy/share/rosidl_adapter/cmake/rosidl_adapt_interfaces.cmake:60 (message):
execute_process(/usr/bin/python3 -m rosidl_adapter --package-name
tutorial_interfaces --arguments-file
/home/vslab/ros2_ws/build/tutorial_interfaces/rosidl_adapter__arguments__tutorial_interfaces.json
--output-dir
/home/vslab/ros2_ws/build/tutorial_interfaces/rosidl_adapter/tutorial_interfaces
--output-file
/home/vslab/ros2_ws/build/tutorial_interfaces/rosidl_adapter/tutorial_interfaces.idls)
returned error code 1:

Error processing 'int64 num' of 'tutorial_interfaces/Num': ''int64'
is an invalid message name. It should have the pattern
'^[A-Z][A-Za-z0-9]*$''

Traceback (most recent call last):

File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
  return _run_code(code, main_globals, None,
File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
  exec(code, run_globals)
File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_adapter/__main__.py", line 19, in <module>
  sys.exit(main())
File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_adapter/main.py", line 53, in main
  abs_idl_file = convert_to_idl(
File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_adapter/__init__.py", line 19, in convert_to_idl
  return convert_msg_to_idl(
File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_adapter/msg/__init__.py", line 28, in convert_msg_to_idl
  msg = parse_message_string(package_name, input_file.stem, content)
File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_adapter/parser.py", line 516, in parse_message_string
  Type(type_string, context_package_name=pkg_name),
File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_adapter/parser.py", line 276, in __init__
  super(Type, self).__init__(
File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_adapter/parser.py", line 204, in __init__
  raise InvalidResourceName(

rosidl_adapter.parser.InvalidResourceName: 'int64' is an invalid message
name. It should have the pattern '^[A-Z][A-Za-z0-9]*$'

Call Stack (most recent call first):
/opt/ros/foxy/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:130 (rosidl_adapt_interfaces)
CMakeLists.txt:23 (rosidl_generate_interfaces)

额,折腾了一下午,在Kubuntu上修改文件编码不带bom的UTF-8编码还是不通过,在Ubuntu上通过了,是编码问题