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,保证了隐私。