Catkin: How to find auto-generated roslisp messages? [closed]
I'm currently migrating to using roslisp under groovy. For compiling bigger projects I use roslisp_repl with slime (a.k.a. "the REPL"). I have the problem that the REPL does not find auto-generated roslisp messages from wet packages __within__ my catkin workspace.
I did some digging into the code behind the REPL and learned that for compilation it searches all subdirectories of the ROS_PACKAGE_PATH and the ROSLISP_PACKAGE_DIRECTORIES for valid lisp-system (valid lisp-system are directories containing an asd-file).
My problem description:
- catkin workspace at ~/ros/groovy/catkin_ws
- .bashrc sources /opt/ros/groovy/source.bash and ~/ros/groovy/catkin_ws/devel/setup.bash
- wet package test_msgs in src-workspace with some message defintions
- catkin_make successfully builds messages and puts generated roslisp messages in ~/ros/groovy/catkin_ws/devel/share/common-lisp/ros/test_msgs.
- ROS_PACKAGE_PATH does not contain this path
- ROSLISP_PACKAGE_PATH is not set
- as a result the REPL complains that it cannot find the generated lisp-code
Here are my questions:
- Has ROSLISP_PACKAGE_DIRECTORIES been intentionally deprecated in groovy?
- If no, could it be used to contain /opt/ros/groovy/share/common-lisp/ros and all /devel/share/common-lisp/ros sub-directories of all overlays?
- If yes, how can lisp-compilers find the generated lisp-code in the devel-section of my overlay?
You do not have to source two setup.bash files. The second one will effectively override everything from the first. So sourcing the file from your custom workspace is enough.
Regarding the fact that the ROS_PACKAGE_PATH does not contain the path: after compiling your workspace you have to source the setup.bash file from the subfolder devel. Than ~/ros/groovy/catkin_ws/devel should be part of tour ROS_PACKAGE_PATH.
@Dirk: Thanks for clarifying that I need to source only one setup.bash-file. Regarding the ROS_PACKAGE_PATH: I just re-did the first catkin tutorial from ros.org (creating workspace). After sourcing devel/setup.bash after catkin_make ~/catkin_ws/devel is not part of the ROS_PACKAGE_PATH for me.
@Dirk: With regards to ROSLISP_PACKAGE_DIRECTORIES, is this environment variable deprecated or can we use it to point to both /opt/ros/<distro>/share/common-lisp/ros and ~/<workspace-dir>/devel/share/common-lisp/ros?
The
ROS_PACKAGE_PATH
is set byroslib
so if that is not in your underlay or in your workspace it will not be set: https://github.com/ros/ros/blob/groovy-devel/core/roslib/env-hooks/10.ros.sh.em#L33My previous comment was incorrect, the RPP only lists the source space - never devel. I don't know how ROSLISP_PACKAGE_DIRECTORIES is used and why at all. I have never used (ros)lisp. We should talk about that offline (via Google hangout/something else) to figure out how roslisp is supposed to work.
@Dirk: Sure. I'll send you message with my gmail-account.