How to construct CMakeLists.txt for Snap creation?
I am trying to create a Snap of a ROS package. When I run snapcraft
, this is successful but when I launch the Snap I get the following error:
RLException: [manual_operation.launch] is neither a launch file in package [contamination_mapping] nor is [contamination_mapping] a launch file name
The traceback for the exception was written to the log file
This makes me wonder if there is a problem with my CMakeLists.txt
file or my snapcraft.yaml
file. Both are pasted below.
CMakeLists.txt
cmake_minimum_required(VERSION 2.8.3)
project(robot_brain)
cmake_policy(SET CMP0054 OLD)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
gazebo_ros
cartographer_ros
rosbridge_server
gazebo_ros REQUIRED
)
catkin_package(
INCLUDE_DIRS include
LIBRARIES ${PROJECT_NAME}
CATKIN_DEPENDS
roscpp
rospy
std_msgs
gazebo_ros
cartographer_ros
rosbridge_server
)
include_directories(
${Boost_INCLUDE_DIR} ${catkin_INCLUDE_DIRS} ${GAZEBO_INCLUDE_DIRS}
)
link_directories(
${GAZEBO_LIBRARY_DIRS}
)
catkin_install_python(PROGRAMS
src/scripts/node_script_a.py
src/scripts/node_script_b.py
src/scripts/node_script_c.py
src/scripts/node_script_d.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
install(DIRECTORY launch/
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch
PATTERN ".svn" EXCLUDE)
snapcraft.yaml
name: robot-brain
version: '0.1'
summary: ROS package.
description: |
This ROS package is a robot brain.
confinement: devmode
base: core18
grade: devel
parts:
brain:
plugin: catkin
source: https://github.com/user/robot-brain.git
source-branch: master
apps:
robot-brain:
command: roslaunch ros_package robot_brain_operation.launch
plugs: [network, network-bind]
Can anybody spot any errors?
Thanks!
Asked by Py on 2020-10-28 08:46:15 UTC
Comments
https://github.com/user/robot-brain.git
is of course not real so I don't know this for sure, but the source for the catkin plugin needs to be a ROS workspace, where various packages are contained within asrc
subdirectory (by default). If that repository doesn't meet that requirement, you could have issues. You might want to consider using a rosinstall file instead. For example, usesource: .
in the plugin and then alonside the snap folder create amy-stuff.rosinstall
file pointing at your repo. Then update thebrain
part to haverosinstall-files: [my-stuff.rosinstall]
. Then snapcraft will create a workspace and merge that in for you.Asked by kyrofa on 2020-10-28 14:15:18 UTC
Thanks very much. I'm just giving this a try (i.e. run
snapcraft
).... it seems to be taking a long time. Is this expected? The message being shown is:Asked by Py on 2020-10-29 06:55:35 UTC
It's hitting the network and downloading stuff at that point. Regarding how much time I would expect it to take, it really depends on how many repos are in the rosinstall file, how big they are, and what kind of network connectivity you have.
Asked by kyrofa on 2020-10-29 12:36:15 UTC