Error when trying to catkinbuild

Hello, I am getting the following error and I dont think it is related to my coding, althought it could be :

Could someone help? @marco.nc.arruda ?

Hi @r.franklinismail ,

What are you trying to build in your workspace?
I could see some libs about msg generator, isn’t it?

Hi @r.franklinismail, seems like you are trying to create an srv msg, the error says that you are not using the syntax correctly, Here is a very simple example of a service that takes in a string and returns a string::

string str
---
string str

For more information: Create your own srv.

1 Like

I still get an error. I had more than ranges prior, but cut it out now for simplicity

Please update on the error you are getting. Also, before building again, try to:

rm -rf build/ devel/

Errors << turtlebot:cmake /home/user/catkin_ws/logs/turtlebot/build.cmake.006.log
/opt/ros/noetic/share/genmsg/cmake/pkg-genmsg.cmake.em:56: error: <class ‘genmsg.base.InvalidMsgSpec’>: /home/user/catkin_ws/src/turtlebot/msg/servicemessage.srv: Invalid declaration: —
Traceback (most recent call last):
File “/opt/ros/noetic/lib/python3/dist-packages/genmsg/msg_loader.py”, line 287, in load_msg_from_file
return load_msg_from_string(msg_context, text, full_name)
File “/opt/ros/noetic/lib/python3/dist-packages/genmsg/msg_loader.py”, line 266, in load_msg_from_string
field_type, name = _load_field_line(orig_line, package_name)
File “/opt/ros/noetic/lib/python3/dist-packages/genmsg/msg_loader.py”, line 225, in _load_field_line
raise InvalidMsgSpec(“Invalid declaration: %s”%(orig_line))
genmsg.base.InvalidMsgSpec: Invalid declaration: —

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/em.py”, line 3302, in
if name == ‘main’: main()
File “/usr/lib/python3/dist-packages/em.py”, line 3300, in main
invoke(sys.argv[1:])
File “/usr/lib/python3/dist-packages/em.py”, line 3283, in invoke
interpreter.wrap(interpreter.file, (file, name))
File “/usr/lib/python3/dist-packages/em.py”, line 2295, in wrap
self.fail(e)
File “/usr/lib/python3/dist-packages/em.py”, line 2284, in wrap
callable(*args)
File “/usr/lib/python3/dist-packages/em.py”, line 2359, in file
self.safe(scanner, done, locals)
File “/usr/lib/python3/dist-packages/em.py”, line 2401, in safe
self.parse(scanner, locals)
File “/usr/lib/python3/dist-packages/em.py”, line 2421, in parse
token.run(self, locals)
File “/usr/lib/python3/dist-packages/em.py”, line 1425, in run
interpreter.execute(self.code, locals)
File “/usr/lib/python3/dist-packages/em.py”, line 2595, in execute
_exec(statements, self.globals, locals)
File “”, line 38, in
File “/opt/ros/noetic/lib/python3/dist-packages/genmsg/deps.py”, line 45, in find_msg_dependencies_with_type
spec = genmsg.msg_loader.load_msg_from_file(msg_context, msg_file, full_type_name)
File “/opt/ros/noetic/lib/python3/dist-packages/genmsg/msg_loader.py”, line 289, in load_msg_from_file
raise InvalidMsgSpec(’%s: %s’%(file_path, e))
genmsg.base.InvalidMsgSpec: /home/user/catkin_ws/src/turtlebot/msg/servicemessage.srv: Invalid declaration: —
CMake Error at /opt/ros/noetic/share/catkin/cmake/safe_execute_process.cmake:11 (message):

execute_process(/home/user/catkin_ws/build/turtlebot/catkin_generated/env_cached.sh
“/usr/bin/python3” “/usr/lib/python3/dist-packages/em.py” “–raw-errors”
“-F”
“/home/user/catkin_ws/build/turtlebot/cmake/turtlebot-genmsg-context.py”
“-o” “/home/user/catkin_ws/build/turtlebot/cmake/turtlebot-genmsg.cmake”
“/opt/ros/noetic/share/genmsg/cmake/pkg-genmsg.cmake.em”) returned error
code 1
Call Stack (most recent call first):
/opt/ros/noetic/share/catkin/cmake/em_expand.cmake:25 (safe_execute_process)
/opt/ros/noetic/share/genmsg/cmake/genmsg-extras.cmake:303 (em_expand)
CMakeLists.txt:73 (generate_messages)

Hi @r.franklinismail ,

From the source code you pasted, it does not look to have syntax error.

There may be other things in your workspace that is preventing you from compiling the code properly.

If the syntax detector is pointing some error, there may be invalid characters there. It may happen if you copy the code from some other place (editor) that is configured to use a different encoding.

I can’t see further errors there, our team is analyzing it and will keep you posted

Hi,

Have you sourced the correct ROS version ?

I mean could you try to:

cd ~/catkin_ws
rm -rf build devel
source /home/simulations/public_sim_ws/devel/setup.bash
catkin_make
source devel/setup.bash
rospack profile

And then execute the script that uses those service messages?

The error with catkin_make is below.

Thank you guys for all your support!!!

– Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
/opt/ros/noetic/share/genmsg/cmake/pkg-genmsg.cmake.em:56: error: <class ‘genmsg.base.InvalidMsgSpec’>: /home/user/catkin_ws/src/turtlebot/msg/servicemessage.srv: Invalid declaration: —
Traceback (most recent call last):
File “/opt/ros/noetic/lib/python3/dist-packages/genmsg/msg_loader.py”, line 287, in load_msg_from_file
return load_msg_from_string(msg_context, text, full_name)
File “/opt/ros/noetic/lib/python3/dist-packages/genmsg/msg_loader.py”, line 266, in load_msg_from_string
field_type, name = _load_field_line(orig_line, package_name)
File “/opt/ros/noetic/lib/python3/dist-packages/genmsg/msg_loader.py”, line 225, in _load_field_line
raise InvalidMsgSpec(“Invalid declaration: %s”%(orig_line))
genmsg.base.InvalidMsgSpec: Invalid declaration: —

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/em.py”, line 3302, in
if name == ‘main’: main()
File “/usr/lib/python3/dist-packages/em.py”, line 3300, in main
invoke(sys.argv[1:])
File “/usr/lib/python3/dist-packages/em.py”, line 3283, in invoke
interpreter.wrap(interpreter.file, (file, name))
File “/usr/lib/python3/dist-packages/em.py”, line 2295, in wrap
self.fail(e)
File “/usr/lib/python3/dist-packages/em.py”, line 2284, in wrap
callable(*args)
File “/usr/lib/python3/dist-packages/em.py”, line 2359, in file
self.safe(scanner, done, locals)
File “/usr/lib/python3/dist-packages/em.py”, line 2401, in safe
self.parse(scanner, locals)
File “/usr/lib/python3/dist-packages/em.py”, line 2421, in parse
token.run(self, locals)
File “/usr/lib/python3/dist-packages/em.py”, line 1425, in run
interpreter.execute(self.code, locals)
File “/usr/lib/python3/dist-packages/em.py”, line 2595, in execute
_exec(statements, self.globals, locals)
File “”, line 38, in
File “/opt/ros/noetic/lib/python3/dist-packages/genmsg/deps.py”, line 45, in find_msg_dependencies_with_type
spec = genmsg.msg_loader.load_msg_from_file(msg_context, msg_file, full_type_name)
File “/opt/ros/noetic/lib/python3/dist-packages/genmsg/msg_loader.py”, line 289, in load_msg_from_file
raise InvalidMsgSpec(’%s: %s’%(file_path, e))
genmsg.base.InvalidMsgSpec: /home/user/catkin_ws/src/turtlebot/msg/servicemessage.srv: Invalid declaration: —
CMake Error at /opt/ros/noetic/share/catkin/cmake/safe_execute_process.cmake:11 (message):
execute_process(/home/user/catkin_ws/build/catkin_generated/env_cached.sh
“/usr/bin/python3” “/usr/lib/python3/dist-packages/em.py” “–raw-errors”
“-F”
“/home/user/catkin_ws/build/turtlebot/cmake/turtlebot-genmsg-context.py”
“-o” “/home/user/catkin_ws/build/turtlebot/cmake/turtlebot-genmsg.cmake”
“/opt/ros/noetic/share/genmsg/cmake/pkg-genmsg.cmake.em”) returned error
code 1
Call Stack (most recent call first):
/opt/ros/noetic/share/catkin/cmake/em_expand.cmake:25 (safe_execute_process)
/opt/ros/noetic/share/genmsg/cmake/genmsg-extras.cmake:303 (em_expand)
turtlebot/CMakeLists.txt:73 (generate_messages)

– Configuring incomplete, errors occurred!
See also “/home/user/catkin_ws/build/CMakeFiles/CMakeOutput.log”.
See also “/home/user/catkin_ws/build/CMakeFiles/CMakeError.log”.
Invoking “cmake” failed

is it something in my Cmake file? Ill paste tthat below:

> Blockquote

cmake_minimum_required(VERSION 3.0.2)

project(turtlebot)

## Compile as C++11, supported in ROS Kinetic and newer

# add_compile_options(-std=c++11)

## Find catkin macros and libraries

## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)

## is used, also find other catkin packages

find_package(catkin REQUIRED COMPONENTS

  rospy

  std_msgs

  message_generation

)

## System dependencies are found with CMake's conventions

# find_package(Boost REQUIRED COMPONENTS system)

## Uncomment this if the package has a setup.py. This macro ensures

## modules and global scripts declared therein get installed

## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html

# catkin_python_setup()

################################################

## Declare ROS messages, services and actions ##

################################################

## To declare and build messages, services or actions from within this

## package, follow these steps:

## * Let MSG_DEP_SET be the set of packages whose message types you use in

##   your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).

## * In the file package.xml:

##   * add a build_depend tag for "message_generation"

##   * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET

##   * If MSG_DEP_SET isn't empty the following dependency has been pulled in

##     but can be declared for certainty nonetheless:

##     * add a exec_depend tag for "message_runtime"

## * In this file (CMakeLists.txt):

##   * add "message_generation" and every package in MSG_DEP_SET to

##     find_package(catkin REQUIRED COMPONENTS ...)

##   * add "message_runtime" and every package in MSG_DEP_SET to

##     catkin_package(CATKIN_DEPENDS ...)

##   * uncomment the add_*_files sections below as needed

##     and list every .msg/.srv/.action file to be processed

##   * uncomment the generate_messages entry below

##   * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)

## Generate messages in the 'msg' folder

add_message_files(

   FILES

   servicemessage.srv

   FindWall.msg

   # Message1.msg

   # Message2.msg

 )

## Generate services in the 'srv' folder

# add_service_files(

#   FILES

#   Service1.srv

#   Service2.srv

# )

## Generate actions in the 'action' folder

# add_action_files(

#   FILES

#   Action1.action

#   Action2.action

# )

## Generate added messages and services with any dependencies listed here

generate_messages(

   DEPENDENCIES

   std_msgs  # Or other packages containing msgs

 )

################################################

## Declare ROS dynamic reconfigure parameters ##

################################################

## To declare and build dynamic reconfigure parameters within this

## package, follow these steps:

## * In the file package.xml:

##   * add a build_depend and a exec_depend tag for "dynamic_reconfigure"

## * In this file (CMakeLists.txt):

##   * add "dynamic_reconfigure" to

##     find_package(catkin REQUIRED COMPONENTS ...)

##   * uncomment the "generate_dynamic_reconfigure_options" section below

##     and list every .cfg file to be processed

## Generate dynamic reconfigure parameters in the 'cfg' folder

# generate_dynamic_reconfigure_options(

#   cfg/DynReconf1.cfg

#   cfg/DynReconf2.cfg

# )

###################################

## catkin specific configuration ##

###################################

## The catkin_package macro generates cmake config files for your package

## Declare things to be passed to dependent projects

## INCLUDE_DIRS: uncomment this if your package contains header files

## LIBRARIES: libraries you create in this project that dependent projects also need

## CATKIN_DEPENDS: catkin_packages dependent projects also need

## DEPENDS: system dependencies of this project that dependent projects also need

catkin_package(

  INCLUDE_DIRS include

  LIBRARIES turtlebot

  CATKIN_DEPENDS 

  rospy

  DEPENDS system_lib

)

###########

## Build ##

###########

## Specify additional locations of header files

## Your package locations should be listed before other locations

include_directories(

# include

  ${catkin_INCLUDE_DIRS}

)

## Declare a C++ library

# add_library(${PROJECT_NAME}

#   src/${PROJECT_NAME}/turtlebot.cpp

# )

## Add cmake target dependencies of the library

## as an example, code may need to be generated before libraries

## either from message generation or dynamic reconfigure

# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

## Declare a C++ executable

## With catkin_make all packages are built within a single CMake context

## The recommended prefix ensures that target names across packages don't collide

# add_executable(${PROJECT_NAME}_node src/turtlebot_node.cpp)

## Rename C++ executable without prefix

## The above recommended prefix causes long target names, the following renames the

## target back to the shorter version for ease of user use

## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"

# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")

## Add cmake target dependencies of the executable

## same as for the library above

# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

## Specify libraries to link a library or executable target against

# target_link_libraries(${PROJECT_NAME}_node

#   ${catkin_LIBRARIES}

# )

#############

## Install ##

#############

# all install targets should use catkin DESTINATION variables

# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html

## Mark executable scripts (Python etc.) for installation

## in contrast to setup.py, you can choose the destination

# catkin_install_python(PROGRAMS

#   scripts/my_python_script

#   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}

# )

## Mark executables for installation

## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html

# install(TARGETS ${PROJECT_NAME}_node

#   RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}

# )

## Mark libraries for installation

## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html

# install(TARGETS ${PROJECT_NAME}

#   ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}

#   LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}

#   RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}

# )

## Mark cpp header files for installation

# install(DIRECTORY include/${PROJECT_NAME}/

#   DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}

#   FILES_MATCHING PATTERN "*.h"

#   PATTERN ".svn" EXCLUDE

# )

## Mark other files for installation (e.g. launch and bag files, etc.)

# install(FILES

#   # myfile1

#   # myfile2

#   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}

# )

#############

## Testing ##

#############

## Add gtest based cpp test target and link libraries

# catkin_add_gtest(${PROJECT_NAME}-test test/test_turtlebot.cpp)

# if(TARGET ${PROJECT_NAME}-test)

#   target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})

# endif()

## Add folders to be run by python nosetests

# catkin_add_nosetests(test)

Here is a directory of my package. I can upload any file or script youdl like

image

Based on your CMake file and file system, I see a potential issue.

CMake:
You have placed your servicemessage.srv file inside of the add_message_files function instead of the add_service_files function just below. These are different functions for a reason.

File system:
Similarly, you placed the file “servicemessage.srv” in the msg/ folder instead of creating a /srv folder.

It can be confusing because we tend to refer to the contents of the .srv file as a “service message”, but I believe that they do need separated in the Cmake file and be placed in the expected file location

1 Like

Package complied!!

I did have to make a few other changes. I tjhink its inconsequential from reading online.

catkin_package(

INCLUDE_DIRS # include

LIBRARIES turtlebot

CATKIN_DEPENDS

rospy

#DEPENDS system_lib

)

1 Like

Thank you @_RM @marco.nc.arruda @duckfrost @u1802520 @bayodesegun !!!

3 Likes