Robotics StackExchange | Archived questions

Have you typed 'make' in [lex_common_msgs]?

ROS Lunar on 64 bit Ubuntu 16 LTS.

After many failures to install the following node (https://github.com/aws-robotics/lex-ros1) from source I installed using Apt-get. Install from source requires colcon, AWS SDK, and other dependencies that are generating issues. I have put many hours over several days into this.

Installed the Kinetic apt binary as no Lunar version available and moved the files to the opt/ros/lunar folder.

The node starts, logs into AWS, and provides the expected services

b2@b2:~/catkin_ws$ rosservice list
/lex_node/get_loggers
/lex_node/lex_conversation
/lex_node/set_logger_level
/rosout/get_loggers
/rosout/set_logger_level

When I use the service to set logger level it works. When I attempt to use the service for conversation I get the following:

b2@b2:~/catkin_ws$ rosservice call /lex_node/lex_conversation "{content_type: 'text/plain; charset=utf-8', accept_type: 'text/plain; charset=utf-8', text_request: 'Make a reservation', audio_request: {data: ''}}" && sleep 1
ERROR: Unable to load type [lex_common_msgs/AudioTextConversation].
Have you typed 'make' in [lex_common_msgs]?

I have referenced other threads online regarding "Have you typed 'make' in...? "and most responses center around sourcing the bash file which I have done.

The AudioTextConversation.srv file is located in the lexcommonmsgs folder.

I just don't know what to do with the 'make' question. There are no cpp or py files in the folder. The lexcommonmsgs folder has a subfolder with 4 cmake files in it.

So I'm stuck with the questions:

  1. Is this never going to work because I am trying to use a Kinetic binary moved to Lunar folder?
  2. Is there a way to use a Kinetic binary from Kinetic folder in Lunar?
  3. What is the proper way to address the 'Have you typed 'make' in ...? - And yes, I did actually try to simply type 'make' in that folder.

I have a lot of time and effort already into the machine on Lunar. While I have considered changing to Kinetic to get this to work, I'm not confident that doing so would prevent this particular issue and it would take a week or more to get everything else running again.

Any help is truly appreciated.

Asked by billy on 2019-09-29 00:00:10 UTC

Comments

Answers

It's almost impossible to comment on this without sounding pedantic, but there are some things here worth nothing:

  1. Lunar is EOL (since May this year) and thus no longer supported. Kinetic runs on the same version of Ubuntu and would be a better target.
  2. Amazon supports Kinetic and Melodic for this exact reason.
  3. Lunar != Kinetic. Copying binaries from one version to another is brittle at best. I would not be surprised if there are some hard-coded paths in some of the binaries pointing to /opt/ros/kinetic.
  4. and you probably had valid reasons, and this is not directed at you, more for future readers of this Q&A, but:

    Install from source requires colcon, AWS SDK, and other dependencies that are generating issues. I have put many hours over several days into this.

    is exactly why building packages from source is generally discouraged.

  5. Install from source requires colcon, [..]

    The readme may explain how to use colcon to build the packages, but I doubt it's actually required. I don't see anything in those packages that would make them require colcon as a build tool. I would expect catkin_make and catkin build to work just as well.

Having written all of that:

ERROR: Unable to load type [lex_common_msgs/AudioTextConversation].

This seems to imply that either:

  1. you don't have lex_common_msgs installed
  2. the Kinetic version you copied has hard-coded paths to locations in /opt/ros/kinetic
  3. you copied the files to incorrect locations
  4. you didn't copy everything that was needed

Especially this:

The AudioTextConversation.srv file is located in the lex_common_msgs folder.

makes me think it's something related to bullet #4.

This is all fixable I believe, but I'd first like to know your rationale for wanting to use Lunar so badly.


Edit:

you don't have lex_common_msgs installed - this is in same package as the lex node

You may already be aware, but just to make it extra clear: there is a difference between the package being hosted in the same repository and the messages actually being part of the same package. The messages are actually in a separate package, so copying files of the lex_node package would not include the message and service files.

And in this case I believe it's not the .srv files that are important, but the .h and .py files generated from those. That's what I meant with "you may not have it all installed" and "you didn't copy everything that was needed".

there is indeed a hard coded Kinetic line in one of the CMAKE files in the lex_common_msgs folder - " set(lex_common_msgs_INSTALL_PREFIX /opt/ros/kinetic)"

That line is from a .cmake file in the share/lex_common_msgs folder. That is only a single folder which contains some metadata consumed by other ROS packages, and the original .srv files. Those are actually not used by other packages, as I mentioned earlier.

I would suggest not to copy files around. Instead, do the following:

  1. remove whatever you have copied of the lex_common_msgs
  2. place a copy of the sources of lex_common_msgs package in your Catkin workspace (just that package, you could download the zip of the master branch and extract it and keep just that package)
  3. build the workspace using regular catkin_make or catkin build (Colcon is not needed, see also my earlier comment on that)

make sure to source /path/to/your/catkin_ws/devel/setup.bash, then try the following:

rossrv show lex_common_msgs/AudioTextConversation

This should display this (just about).

If that command is successful, you would now have a properly build and 'installed' (depending on whether you're using an install space or not) the package, and anything depending on it should be able to find it.

Given I'm not positive this issue would be corrected by changing to Kinetic I'm extra hesitant to start over with new distro.

I'm not going to be able to give you a 100% guarantee, but seeing as everything is actually released for Kinetic, at least the AWS stuff should be an apt install away. The Tensorflow bits I can't say anything about of course.

4 . you didn't copy everything that was needed - possible - I will go review again

It's possible that you didn't copy the generated Python package from /opt/ros/lunar/lib/python2.7/dist-packages/lex_common_msgs and the associated egg-info file.

But again: please just build lex_common_msgs in your Catkin workspace.

Asked by gvdhoorn on 2019-09-29 06:19:00 UTC

Comments

Thanks for the reply. I'm not married to Lunar. But I have Lunar installed and invested a lot of time and effort getting other things to work on it, like tensorflow and a ros package for tensorflow/ros integration.

Given I'm not positive this issue would be corrected by changing to Kinetic I'm extra hesitant to start over with new distro.

To your 4 thoughts

  1. you don't have lex_common_msgs installed - this is in same package as the lex node

  2. the Kinetic version you copied has hard-coded paths to locations in /opt/ros/kinetic - there is indeed a hard coded Kinetic line in one of the CMAKE files in the lex_common_msgs folder - " set(lex_common_msgs_INSTALL_PREFIX /opt/ros/kinetic)" and that folder also exists in the kinetic path

  3. you copied the files to incorrect locations - I was pretty careful - the node mostly works - but will go back and check again

  4. you didn't copy everything that was needed - possible - I will go review again

Thanks again

Asked by billy on 2019-09-29 17:53:58 UTC

@gvdhoorn - I'm really humbled by how much time you have put into helping me with this question. I will carefully study your response and get back to you on how it goes. I think I have a couple days of work to followup on your update. Thank you again for all your effort. Amazing.

Asked by billy on 2019-09-30 12:53:47 UTC

@gvdhoorn - first test I ran after your help was

rossrv show lex_common_msgs/AudioTextConversation

and I got the expected output.

I then deleted the lex_common_msgs from opt/ros/lunar and built in catkin_ws and it was successful in building. Immediately after reran rossrv show and got same response as before building in catkin_ws. But the original error remained.

I gave up and installed SYSTEMBACK and set a restore point. After installing Kinetic, the LEX node ran from source without issue. So now I will start again getting the tensorflow bit working.

Thank you again for your time on this. I will never again try to mix distros in this way. It totally jacked some database and Kinetic would not install. I needed to hand install about 20 packages. These and others: ros-kinetic-genmsg ros-kinetic-roscpp ros-kinetic-gennodejs ros-kinetic-rosconsole ros-kinetic-message-generation ros-kinetic-cpp-common ros-kinetic-rosgraph-msgs ros-kinetic-roscpp-ser

Asked by billy on 2019-10-03 00:01:00 UTC

I then deleted the lex_common_msgs from opt/ros/lunar and built in catkin_ws and it was successful in building. Immediately after reran rossrv show and got same response as before building in catkin_ws. But the original error remained.

you may have had to remove the build and devel folder after having removed those copied files. It's often that paths get cached and then things can't be found when you change them afterwards.

I will never again try to mix distros in this way. It totally jacked some database and Kinetic would not install

This would probably also have been fixable but it seems you found another way to get things to work.

Asked by gvdhoorn on 2019-10-03 01:56:45 UTC

I'm not sure what the best way to close this out would be.

It doesn't seem like I really solved your problem, but it does seem like we figured out that copying files -- while possible -- should not be needed and most likely also should be avoided.

Normally we mark resolved questions as answered by clicking the checkmark, but perhaps closing it with a "no longer relevant" might be more appropriate here.

Asked by gvdhoorn on 2019-10-03 01:59:42 UTC