LoginSignup
3
2

More than 3 years have passed since last update.

WindowsでPX4の開発環境を整える

Last updated at Posted at 2020-05-18

はじめに

この記事では,PX4公式でも推奨されているUbuntu環境でのbuildを実現するためにWSLを用いたWindows 10での環境構築環境構築までの流れを書いていきます.基本的にはwsl環境の構築に加えて,公式の内容をまとめただけになります.
wsl+githubといった感じです.

特にGit周りは間違った理解が大いにあり得るので,ぜひ指摘して教えてください.

WSLおよびvscodeの導入

こちらの記事通りに進めていけばできます.
以前まではVMwareにUbuntuを載せたり,GitBashを使ったりしてました.
先の話ですが,PX4でSITLをする場合,この方法ではできませんGUIのUbuntuを用意する必要があります.(GazeboがWindowsに対応していないので)
参考:Visual Studio Codeで競プロ環境構築(導入編) - Qiita

Firmwareを自分のPCに入れる

PX4のFirmwarはGithubで開発されている.とりあえずコードが見てみたい,というだけならまずこれを自分のPCにcloneします.

本家のサイトの右の緑のClone or Downloadからhttpsのアドレスを取得して,git clone <取得したもの>とします.
image.png

git clone https://github.com/PX4/Firmware.git

folk+branchでしっかり環境を整える

この参考先通りにやればできます.
参考:GIT Examples · PX4 Developer Guide

アカウントを作りfolkする

まずGitHubの自分のアカウントを作ります.その後本家に行き,右上のfolkを押します.
これは,既存のリポジトリ(今回でいうところのPX4/Firmware)の複製を作る行為です.これがされてない他人様のリポジトリには書き込むことができませんが,folkしたものは自分の所有物なので自由に更新ができます.pullリクエストなどは今は置いておきます.とりあえずコピーをもらってきたという感じです.

image.png

folkしたリポジトリをローカルにcloneする

先程と違い,folkしたリポジトリをcloneします.これによって,リモートでもローカルでも自分の好きなように開発ができます.(さっきのだとローカルのみ)

cd ~/wherever/
git clone https://github.com/<your git name>/Firmware.git

cloneしたらcdでFirmwareのdirectoryに移動して,submoduleを更新します.
このサブモジュールは(自分の理解があっているかわかりませんが),とあるリポジトリ(今回でいうFirmware)を動かしている一部moduleが,独立してリポジトリとして開発されているという状態.つまり元のリポジトリでは,Winでいうところのショートカットのようなものが設定されている状態.
このアップデートは,その参照先のアップデートをFirmwareにも適用させるよーという感じでしょうか…たぶん…ざっくりと…

三行目もあんまりちゃんと理解してないですが,本家の進行状況も見れるように追跡できるようにしておいて,本家がなんか変更されたら自分のリポジトリに本家の変更を反映させる,的なやつだと思います,ざっくり.

cd Firmware
git submodule update --init --recursive
git remote add upstream https://github.com/PX4/Firmware.git
git remote -v

二個のリポジトリが出ると思います.一つはupstreamでPX4のFirmwareを指しています.もう一つはさっき自分がfolkしたリポジトリを指しています.

branchを作る

基本的プロジェクトの本筋の最新版はmasterというbranchです.ここから枝を伸ばして自分のbranchを作ります.
そしてそのbranchに移動します.

git checkout -b <your feature branch name>

git statusで自分の今いるbranchが確認できます.自分が作ったbranchになっているはずです.

さて,このbranchの名前ですが,基本的には自分が変更したものがわかるものにするのが一般的です.例えば新しいセンサのドライバを新しく追加したなら,add_xxxsensor_driverみたいな感じですかね.まあでも本家に貢献せず(本来は貢献が前提ですが),自分でいろいろ開発するだけなら好きな名前でいいと思います.

commit&pushする

まず用語から.
add
- ローカルでローカルで変更して,これは確定やな変更したろ,と思う項目をcommitするためのリスト?に追加する
commit
- 自分のローカル環境の変更(addで指定されたもの)をローカルのリポジトリに書き込む
- ここ変ったよーっていう内容を手元にメモする感じ
push
- ローカルのリポジトリにcommitされたものを,リモートに反映させる
- そするとGithubに反映される

という流れです.それでは...

git add <file name>

これで変更を反映したいファイルなどを指定します.

git commit -m "<your commit message>"

-mはメッセージをつけるというオプションです.これを書くと,リモートのそのファイルの横にメッセージが載ります.(これが新しいドライバでっせーみたいな)

これでひとまず完了.chrome等で自分のGitHubのfolkしたリポジトリを見ると,ちゃんとbranchが追加され,変更が反映されているはずです.

本家の変更をfolkしたリポジトリにも反映させたい

PX4はかなり活発に開発が進められているOSSですから,知らぬ間に新しい機能やらバグ修正やらいろんなアップデートがされています.しかし(僕の理解だと)folkリポジトリは,ほっといてもそれを参照してくれないので,それを更新する作業が必要です.(たとえば3年前にfolkしたら,今見ても三年前の状態で変わっていないはず)

これをrebaseというコマンドを使ってやります.
まずは一旦masterブランチに移動します.

git checkout master

ここで,先程追っかけ用と言っていたupstreamに最新版の変更を反映させます.pullというコマンドを使います.

git pull upstream master

これで,ローカルのmasterが更新されました.自分のブランチに戻ります.

git checkout <your feature branch name>

ここで,rebaseです.rebaseってなんぞや?てかたはこちらがわかりやすかったのでぜひ参照してみてください.

image.png
参照:3.6 Git のブランチ機能 - リベース

git rebase master

これで無事自分のブランチのローカルが更新されました.
これをリモートにも反映させます.

git push origin <your feature branch name>

おわりに

やっと最近ちょこちょこ理解できるようになってきましたがまだまだ…gitの慣れが微妙ですね.
中のソースはpublish/subscribeシステムやCMakeによる自動化等,まだまだ理解しなくてはならないことが山のように…

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2