ros创建package,ros打包成安装包

  ros创建package,ros打包成安装包

  解释:brbr

  这篇文章最初发表在Playfish博客上。转载请保留链接。

  在前言中,之前的博客介绍了ROS包的编写。本节将讲述如何将之前编写的ROS包打包到debian安装包中。debian安装包有多种打包形式,例如:

  将ros包开源到github,使用ros自动生成构建仓库(buildform)将ros包打包到debian本地,无需上传到github。方法1在之前的博客中已经描述过了。可以查看博客发布ROS1包到ROS版本或者ROS2到ROS版本。

  有时候为了项目的安全,有时候我们不想发布给ROS。这里就说第二种方法,就是把ROS打包到debian本地。第二种方法也有几种方式:

  生成的安装目录按照debian格式放在DEBIAN目录下,以dpkg -b格式打包,以checkinstall打包,以ROS提供的bloom-generate打包。

  该方法不是唯一的。这里使用bloom-generate进行打包,方法非常简单。在这里,我们举一个例子来说明。

  为了使用bloom-generate,你必须首先有ROS包。在解释之前,你必须先声明。有时候,在项目或个人代码中,或多或少会用到自定义消息。当您使用bloom-generate打包包含自定义消息的文件时,系统会提示您一个错误。因此,本教程将包括用于打包的自定义消息。

  也就是说教程里会有两个ROS debian包,一个是自定义消息包,一个是依赖自定义消息包的节点包。

  之前的ROS包不包含自定义消息包,所以不使用之前的教程节点包。在这里,重写包含自定义消息包的节点包:

  该例程应具有以下功能:重写ROS教程talker,并包含带有自定义消息的talker,说明如下:

  自定义消息包(

test_msgs

):该消息包是一个自定义消息包,主要服务于测试节点test node (test_node):该节点宝依靠自定义消息包提供包含自定义消息的主题。

  代码已经上传到github了,可以自己下载。链接是:https://github.com/Playfish/test_msgs.

  存储库包含两个ROS包,即定制消息包(test_msgs)和测试节点(test_node)。

  不要将代码粘贴到这里,而是在chu絮_ws/src下运行以下命令:

  ```

  git克隆https://github.com/Playfish/test_msgs

  ```

  下载完成后,运行以下命令进行编译:

  ```

  CD ~/柳絮_ws/src/

  柳絮_制作

  source devel/setup.bash

  ```

  安装bloom-generate以运行以下命令进行安装:

  ```

  sudo apt-get安装python-bloom fakeroot

  ```

  定制消息被切换到```` test _ msgs ```目录:

  ```

  roscd测试_msgs

  bloom-generate rosdebian-OS-name Ubuntu-ROS-distro kinetic

  ```

  运行上述命令后,您将在当前目录中获得一个名为` ` ` ` ` debian ` `的目录,其中包含创建Debian所需的编译文件和规则。使用以下命令将其打包:

  ```

  fakeroot debian/rules二进制

  ```

  完成后,你会得到一个名为` ` ` ROS-Kinetic-Test-MSGS _ 0 . 0 . 0-0x enial _ amd64 . deb的安装包。

  将自定义消息包安装到ROS环境中,该环境用于根据消息包的test_node包生成debian。

  ```

  sudo dpkg-I ~/柳絮_ ws/src/test _ msgs/ROS-kinetic-test-msgs _ 0 . 0 . 0-0x enial _ amd64 . deb

  ```

  将自定义消息链接到ROS取决于在所有位置写入

rosdep.yaml

。以本教程为例,在~/中创建

rosdep.yaml

。ros/目录。该文件的内容如下:

  ```

  测试消息:

  Ubuntu:[ROS-动力学-测试-消息]

  ```

  

注意

:这个格式比较严格,所以应该遵循上面的格式。

  写完后,将这个文件连接到rosdep的索引,即在` ` `/etc/ROS/ROSDEP/sources . list . d/` ` `目录下添加一个名为` ` ` 50-my-default.list ` `的文件,内容如下:

  ```

  yaml文件:///home/ubuntu/。ros/rosdep.yaml

  ```

  其中file指向上面写的rosdep.yaml的路径,ubuntu是用户名,换成你自己的。

  完成后,更新索引并将自定义消息加载到ros软件列表中:

  ```

  rosdep更新

  ```

  在前面生成test_node安装包的步骤中,已经在ROS环境中安装了自定义消息,并且已经将包的索引添加到ROS软件列表中。如果不执行上面的操作,后面的步骤会得到test_msgs包的索引没有到达的位置,不能生成安装包。

  这样,依赖于该消息包的节点包可以被打包:

  ```

  roscd测试节点

  bloom-generate rosdebian-OS-name Ubuntu-ROS-distro kinetic

  fakeroot debian/rules二进制

  ```

  以上操作完成后,会在前一个目录中生成```` ` ROS-Kinetic-Test-Node _ 0 . 0 . 0-0x enial _ amd64 . deb `` ``` `这个名称。

  生成之后,ros包可以以下列形式安装:

  ```

  sudo dpkg-I ROS-kinetic-test-node _ 0 . 0 . 0-0x enial _ amd64 . deb

  ```

  这样就可以把安装包发给别人安装,而不用发布到ROS building factory,保证了隐私。

ros创建package,ros打包成安装包