Ask Your Question
0

Have you typed 'make' in [lex_common_msgs]?

asked 2019-09-29 00:00:10 -0600

billy gravatar image

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 lex_common_msgs folder.

I just don't know what to do with the 'make' question. There are no cpp or py files in the folder. The lex_common_msgs 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.

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
1

answered 2019-09-29 06:19:00 -0600

gvdhoorn gravatar image

updated 2019-09-30 02:18:24 -0600

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 ...
(more)
edit flag offensive delete link more

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 ...

(more)
billy gravatar imagebilly ( 2019-09-29 17:53:58 -0600 )edit

@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.

billy gravatar imagebilly ( 2019-09-30 12:53:47 -0600 )edit

@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

billy gravatar imagebilly ( 2019-10-03 00:01:00 -0600 )edit

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.

gvdhoorn gravatar imagegvdhoorn ( 2019-10-03 01:56:45 -0600 )edit

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.

gvdhoorn gravatar imagegvdhoorn ( 2019-10-03 01:59:42 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2019-09-29 00:00:10 -0600

Seen: 23 times

Last updated: Sep 30