MoveIt の本家リポジトリへコミットする方法(WMD 2019 in Tokyo 準備編)

著者:TanakaRyodo

MoveIt の本家リポジトリへコミットする方法(WMD 2019 in Tokyo 準備編)

0. はじめに

本記事は World MoveIt Day 2019 in Tokyo(WMD 2019 in Tokyo)へ参加するにあたり,MoveItのソースコードを変更し,コミットするためのやり方を紹介します.
MoveItにはPull Requestを送るためのルールがあるので,これに沿ったやり方が出来るよう解説します.WMD 2019 in Tokyoへ参加しない方でも,MoveItを使う方なら参考になると思うので,是非ご覧ください!
なお,今回想定しているROSのバージョンは,ROS1 melodicです.

1. ForkからPull Requestまでの流れ

  1. 自分のGitHubアカウントで MoveItのリポジトリ をFork
  2. Forkしてきたリポジトリでブランチを作成し,変更をPush
  3.  MoveItのリポジトリにPull Requestを出す

という流れで行います.
今回はmelodic-develブランチから作業ブランチを切ると想定します.
https://github.com/ros-planning/moveit/tree/melodic-devel

2. Pull Requestのルール

MoveItではいくつかPull Requestに至るまでの取り決めがあります.大前提として,コミット履歴は英語でつけましょう…!
英語のコミット履歴例文集としては下記が参考になるかもしれません.
https://anond.hatelabo.jp/20160725092419

2.0 ブランチ名

ブランチ名は,どんな機能実装が行われているかある程度想像できるものを付けましょう.
それ以上の制約はありませんが,どんなものが良いかわからなくなった場合は,実際のPull Requestを見てみると良いかもしれません.
https://github.com/ros-planning/moveit/pull/1692

2.1 Pull Requestの明白性と独立性の担保

一つ一つのコミット履歴は理論的に独立しているものにまとめてください.つまり,一つの機能実装を複数のコミットに分けて行わないでください.例えば,「一行ずつコミットする」などが複数のコミットに分けていることにあたります.
もし,親ブランチに更新があった場合などは,rebaseしてコミットしてください.その際,コミット履歴を”cleanup braces” や, ”address xyz’s feedback”としてPull Requestを送れば,MoveItのメンテナがそれらを一つのコミットとしてまとめてマージ(squash-merge)してくれます.

Pull Requestを出したい機能が理論的に独立しているなら,必ず別々にPull Requestを建ててください.例えば,Planning sceneの更新とPlan Executionに関するコミットは理論的に独立していますが,これらを一つのPull Requestにまとめないでください.
なお,第三者の目から見れば一見関係なさそうだが,同時にマージが必要な更新は,Pull Requestを建てる際にその説明をしてください.

2.2 なかなかPull Requestをマージしてもらえない場合(Ping)

自身のPull Requestにて, “ping” や,“Could someone please review/merge this?”とコメントしてください.

2.3 Pull Requestのレビューと承認

他人のPull Requestのレビューは積極的に行いましょう!メンテナだけでは到底見きれません…!Pull Requestのレビューも十分 WMD 2019 in Tokyo の成果になるので,是非挑戦してみてください!
なお,レビューについては下記基準で行ってください.

  • Pull Requestを出した人の言っている機能がきちんと動いているか?
  • MoveItのユーザー全員にとって必要な機能なのか?Pull Requestを出した人だけに必要な機能ではないか?
  • 思いつく限りの特異なケースについても対処できているか?(例えば,極端なJoint角度を入れてみる等)
  • 新しいインターフェースの提案の場合:将来的な変更にも十分対応できるものか?(取り入れる場合はAPIの書き換え等が必要になる)
  • MoveItコーディングスタイルを遵守しているか?

上記基準をすべて満たしている場合,GithubのPull Requestレビュー要項に沿って承認を行ってください.もし少しでも不明点等がある場合は,積極的にコメントして聞いてみてください.

3. ソースコードからビルドしてみる

ここまでルールについて述べました.少し長くなってしまいましたが,まずはやってみて色々対処していきましょう!ということで,MoveItをソースコードから取得し,ビルドする方法を説明します.
なお,< >で囲まれている部分は,適宜ご自身の環境に合わせて読み替えてください.

3.1 ソースコードのclone

ワークスペースを作成し,ソースコードをcloneします.

mkdir -p <moveit_ws>/src
cd <moveit_ws>/src
git clone -b melodic-devel https://github.com/ros-planning/moveit.git

3.2 wstoolによる依存パッケージのダウンロード

wstoolを使って依存パッケージをダウンロードします.

cd <moveit_ws>
wstool init src
wstool merge -t src src/moveit/moveit.rosinstall
wstool update -t src

3.3 rosdepによる依存パッケージのダウンロード

rosdepを使って依存パッケージをダウンロードします.

rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro melodic

3.4 ビルド&パス通し

最後に,ソースコードをビルドします!
また,必ずパス通し(source ./devel/setup.bash)を忘れずに行ってください.
ビルドには30分ほどかかる場合もありますので,是非,事前に環境を構築してからWMD 2019 in Tokyo にお越しください!!

catkin config --extend /opt/ros/melodic --cmake-args -DCMAKE_BUILD_TYPE=Release 
catkin build
source ./devel/setup.bash

参考リンク

World MoveIt Day 2019 in Tokyo を開催します!「準備編」
MoveItでPandaを動かそう:前編(WMD 2019 in Tokyo 準備編)

著者について

TanakaRyodo editor

コメントを投稿するにはログインしてください。