【ROS總結】發佈ROS1包到ROS版本

前言

在ROS開發過程中,想要發佈自己的包貢獻到ROS社區,也就是想要自己的包可以通過apt-get的形式進行下載,這樣可以避免每次源碼編譯的時候會遇到很多坑的情況,不過想要發佈ROS包到ROS社區需要如下能力:

  • 長期維護能力:ROS包會一直迭代更新,因此自己的包也應具有長期維護能力,當然,穩定版本後可以不用長期維護。
  • 開源精神:因爲ROS包遵循BSD協議,會要求將包開源後纔可以上傳到ROS社區,所以將自己的包發佈到ROS社區,最好有開源精神。
  • 文檔更新:包的更新也伴隨這文檔更新,當然也不是絕對的,不過最好有包的使用文檔,也就是wiki上。

如果以上的可以做到,那麼,恭喜你,可以作爲開源成員加入到ROS大家庭來,開源自己代碼,共享社區。

本教程只是單純的介紹如何發佈自己的包到ROS社區,並且,發佈後如何通過apt-get獲取下載,關於文檔界面編寫,也就是wiki說明,會在後面進行說明。

一般發佈自己ROS包有如下步驟:

  1. 具有github賬號與要發佈的存儲庫地址,發佈存儲庫(bloom-release生成的包路徑),wiki白名單(文檔界面做準備)
  2. 發佈前準備工作,bloom安裝(ROS1推薦使用bloom-release進行一鍵操作)
  3. 同步到ROS社區
  4. 等待ROS社區的ROS包版本迭代
  5. 編輯wiki文檔教程

以上步驟完成後,就可以進行apt-get形式下載自己的包了。假如自己的包爲cht10_node,那麼可以使用如下命令進行安裝:

sudo apt-get install ros-<rosdistro>-cht10-node

其中將<rosdistro>替換成自己的ROS版本,也就是自己的包發佈到的ROS版本中,比如自己的包發佈到了kinetic中,那麼就是:

sudo  apt-get  install ros-kinetic-cht10-node

注意:並不是自己把包發佈到ROS社區就等於所有的ROS版本都可以下載,只有發佈到對應ROS版本纔可以。也就是說要想把自己的包發佈到ROS所有版本,必須把自己的包發佈到所有的版本中,比如Indigo、Jade、Kinetic、Luna、Melodic中。

ROS發佈需要bloom-release包,我已經將ROS的bloom-release包如何使用翻譯到wiki上,大家可以查看教程

http://wiki.ros.org/cn/bloom

或者查看英文教程:

http://wiki.ros.org/bloom

以後會編寫如何發佈ROS2的包到ROS社區教程。

大家也可以看Mastering ROS for Robotics Programming中的Maintaining the ROS package 部分。

Mastering ROS for Robotics Programming書籍下載:https://download.csdn.net/download/u011118482/10402380

包含英文和中文翻譯。

沒有0積分下載,大家也可以進入ROS羣進行下載。

發佈前的準備

創建github存儲庫

登錄http://github.com/,創建自己的github賬號,創建完成後,創建要發佈的ROS存儲庫,例如包名爲之前教程的cht10_node,那麼創建cht10_node目錄。

我的存儲庫爲:https://github.com/Playfish/cht10_node


創建完成後,上傳自己的代碼到github的cht10_node存儲庫中。完成如上圖。

注意:發佈ROS包應有如下內容,否則無法發佈:

  • CHANGELOG.rst:必須有該文件,該文件內容,可以查看我寫的,格式一般爲包+版本(日期)+分隔符+修訂日誌
  • package.xml:內容必須有maintainer子項,版本號必須與CHANGELOG中的版本一致,比如都爲0.0.1,包名也一樣。
  • tag:版本標記。

生成tag用於以下發布ROS包追蹤:

點擊當前界面上的release按鈕,創建一個release tag:

保存。

創建github release存儲庫

創建要發佈的ROS完成後,爲ROS包創建生成的release存儲庫,我創建的名爲cht10_node_release,最好創建爲包名_release。這個存儲庫爲空即可,必須勾選初始化ReadeMe.md選項,生成的包版本更新日誌將存放在這裏。

完成後即可,不用再管這個存儲庫,後期發佈完成後,可以查看內容。

fork ROS社區版本包存儲庫

保證自己的github賬號處於登錄狀態,點擊:http://github.com/ros/rosdistro 。隨後點擊fork。

完成後,可以看到自己有了rosdistro存儲庫:

發佈ROS包

發佈前的準備完成後,在自己的Ubuntu下,安裝bloom_release包,安裝命令如下

sudo apt-get install python-bloom

安裝完成後,使用如下命令進行發佈:

以下配置只會在第一次產生。

運行以下命令進行發佈與配置ROS Release包,比如把cht10_node發佈到kinetic版本上:

bloom-release --rosdistro kinetic --track kinetic cht10_node

其中--rosdistro後的選項爲發佈到kinetic版本,--track選項爲追蹤選項,默認爲ROS分佈式版本,最後的cht10_node爲當前存儲庫名稱。

運行命令產生如下:


輸入之前創建的發佈的release存儲庫:https://github.com/Playfish/cht10_node_release.git

選擇Y確定創建追蹤。


輸入當前存儲庫名稱:cht10_node

輸入當前存儲庫地址:https://github.com/Playfish/cht10_node.git

隨後一路按下回車爲默認選項。直到遇到輸入用戶名、密碼爲止,在此過程中會遇到很多次輸入賬號密碼。


輸入github賬號密碼,回車。


產生debian配置文件:y

輸入當前github用戶名密碼繼續。

產生debian包後,輸入用戶名密碼發佈tag。

編輯當前ROS包另一個配置,文檔配置以及版本狀態,輸入默認即可。


注意:turn on pull request testing選擇默認爲N,如果選擇y需要額外配置,不需要打開,我這裏是爲以後做準備。

額外的配置查看:https://github.com/ros/rosdistro/pull/17576

向rosdistro存儲庫的kinetic目錄下的分佈式文件添加當前包內容。

隨後向rosdistro存儲庫提交請求,輸入當前github賬號密碼。

生成請求日誌。

完成後,將提示已經發布完成請求,大家可以點擊最後的鏈接查看當前請求。

確認工作

請求完成後,大家打開之前創建的空白髮布存儲庫,可以看到已經生成了很多生成deb包的規則文件,例如我的:

https://github.com/Playfish/cht10_node_release.git

大家可以到https://github.com/ros/rosdistro/pulls,查看發佈情況。


如果一切正常,ROS維護人員將合併當前請求,合併完成後。

到 討論論壇中https://discourse.ros.org/查看當前版本下的包迭代情況,一般爲一個月ROS包版本迭代一次。

迭代完成後,可以看到自己的包已經存放到了http://packages.ros.org下。

使用apt-get update 更新後,可以下載自己的包了,比如我的包可以用如下命令下載:

sudo  apt-get  install  ros-kinetic-cht10-node

ROS包的發佈過程這一節告一段落,下一步講述如何編輯cht10_node生成的wiki文檔

注意,如果要生成wiki文檔,需要在package.xml裏面添加url指向wiki。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章