[Documentation] [TitleIndex] [WordIndex

ROS开发者指南

ROS是一个庞大的系统,许多人协同开发。为了合理的管理,我们已经写好了开发指导说明。请按照下面的指导说明,合理布局你的代码。

参考:

源代码管理

支持使用Git,Mercurial,Subversion, 和Bazaar进行代码管理。由于ROS社区是分散的,欢迎你将代码托管到任何公共访问的地方(比如GitHub, Bitbucket, Google Code). 主要的ROS基础代码会被发布到github.com的几个组织单元several organization units下面。关于建议的仓库使用说明参考RecommendedRepositoryUsage

Bug追溯

针对每一个功能包,利用单独的bug tracker,实现bug报告,增强请求,和任务分配。经常性的,在本站的页面上,你会看的一些具体的bug tracker的相关链接。

对于代码的托管GitHub作为一个仓库的通用的bug tracker。

代码维护者将会为每个报告的问题创建一个里程式标记(milestone)。当问题被定位时,可以给报告者一个合适的反馈。这些里程标记就是ROS正式版(比如 Groovy or Hydro) 或者细分版本(比如 Hydro beta 1). 更多的是,当问题没被修复时,会赋以标记untargeted。这可能是由于开发者的时间紧迫或者可靠性的考虑。

为了让用户表达自己的想法,针对已发布的软件版本,测试是否已经修复bug,维护者应该要么,在关闭问题报告的时候,发布一个尝试版本,要么为每一个更细化的版本设置标记,在下个里程标记之前,标记问题报告。这样一来,对用户来说,让所包含的问题本身来决定发布版的bug是否已经被修复。

当你发现一个bug时,开启一个指派(ticket)。当你需要新功能的时候,打开一个指派。邮件或者发布到answers.ros.org或者邮件列表都有可能被遗忘。但是,指派的方式反而就不会那么容易忘记。

如果你不确定出现问题时涉及的的功能包或者问题确实是一个bug,请首先访问answers.ros.org

代码布局

package功能包由代码组织而成,而功能包组成一个单独的仓库responsitory。功能包是作为代码构建的基本单位。

尤其注意!建议,在GitHub上,在仓库的根目录创建一个README.md,用来向用户说明代码仓库的具体细节。建议,在ROS wiki页面设置链接到指定的包含的软件包。参照 this article 获取更多的帮助.

功能包

ROS功能包和系统的构建依赖于manifest.xml

下面举一个roscpp节点的一个模板例子:

<package>
  <description brief="BRIEF DESCRIPTION">
     LONGER DESCRIPTION
  </description>
  <author>You/you@willowgarage.com</author>
  <license>BSD</license>
  <url>http://wiki/YOURPACKAGE</url>
  <depend package="roscpp"/>
</package>

下面是rospy的一个例子:

<package>
  <description brief="BRIEF DESCRIPTION">
     LONGER DESCRIPTION
  </description>
  <author>You/you@willowgarage.com</author>
  <license>BSD</license>
  <url>http://wiki/YOURPACKAGE</url>
  <depend package="rospy"/>
</package>

GUI 工具包

我们已经移植了所有最新的GUI到rqt,这些GUI都是QT基础的GUI框架。在fuerte使用wxWidgets之前,因交叉编译的兼容性太差,大部分已有的代码被重建。 因此对于新的GUI设计,考虑使用rqt。开发说明从这里获取(including license consideration when writing in python)。

代码构建

基本的代码构建工具是CMake(more).

证书

ROS 是开源.旨在让来自五湖四海的不同的用户和开发者们,从学生到企业家们,都可以得到帮助获取支持。

版权

遵循Berne Convention版权,作为作者自动拥有版权,而不管有没有一个正式的声明。无论如何,显式的版权声明有助于长期性项目的管理。

调试

ROS里的调试工具,包括但不限于:

一般性建议:

测试

我们进行两个级别的测试:

我们已经构建了best practices and policies ,进行编写和运行测试test。

如果你在ROS系统下,开发ros-pkg 或者wg-ros-pkg,安装build farm 启动测试构代码搭建和自动测试在不同的芯片体系下。如果在你提交后,搭建或者测试停止工作,你应该获得一封邮件来告知相关的错误,希望来修复它。参考AutomatedTesting指导说明。

文档汇总

正式发布

ROS社区代码的发布流程参考release页面

标准化

弃用规则

一旦有人使用的你的代码,你就有责任不要对他们所谓的对代码大幅改动,进行釜底抽薪。相反的,使用deprecation,意味着,对于它的移除用清单的形式,标记指定的特性或者内容不再支持。给用户些时间去适应,作为一个发布版的过程循环,就和移除一样。

弃用发生在多级情况下,包括:

大数据文件,大测试文件

大文件(大小超过1MB)经常不属于*-ros-pkg仓库代码,尤其是他们一般仅仅用在单元测试时。不管某些人是否构建了你的功能包,大的文件会影响checkout的仓库的时间和效率。

大的数据文件应该被托管到公共的web主网页。在web服务器上,你也可以仅仅放置你所需要的文件。文件的托管可以在download.ros.org. 请联系ros-release@lists.ros.org 获取更多信息。在你打开上传请求之前,鼓励你去查找是否已存在你所需要的文件。

下载文件,请使用catkin_download_test_data. 如果,你在更早的rosbuild时候,使用 rosbuild_download_test_data(URL MD5SUM) 宏定义。比如:

catkin_download_test_data(
    ${PROJECT_NAME}_saloon.bag
    http://downloads.foo.com/bags/saloon.bag
    DESTINATION ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}/test
    MD5 01603ce158575da859b8afff5b676bf9)

rosbuild_download_test_data(http://code.ros.org/svn/data/robot_pose_ekf/zero_covariance.bag test/zero_covariance.bag 0a51b4f5001f446e8466bf7cc946fb86)



2020-08-01 12:30