なるべくGUIをRaspberry Piに入れたくない.
クロスコンパイルの環境構築もしたくない.
でも開発は,使い慣れたエディタでやりたい.
そしてどうせgitで管理している.
で,以下のような開発を行っているので,一応紹介.
前提
- PC(Ubuntu Desktop)上のホームディレクトリに関する情報
- サーバ名
- home
- ユーザ名
- user1
- プログラムのあるディレクトリ
- /home/user1/ros2/test_program
- サーバ名
準備
raspberry pi上
raspberry piにログインし以下を実行.
$ ssh-keygen
~/.ssh/id_rsa.pubをPCにコピー.ファイルコピーでもいいし,中身を表示(cat ~/.ssh/id_rsa.pub)し,文字列をコピーして貼り付けてもいい.
PC上
上記のraspberry pi上のid_rsa.pubの中身をPC上の~/.ssh/authorized_keysに追加.ファイルがなければ作成.
文字列をコピーした場合,エディタなどで最後に追加.ファイルをコピーした場合はid_rsa.pubのある場所で以下を実行.
$ cat id_rsa.pub >> ~/.ssh/id_rsa.pub
最初のclone
PC上でプログラム作成.それをraspberry pi上でclone.
以下はraspberry pi上で実行.
$ git clone ssh://user1@home/home/user1/ros2/test_program
構文は以下のとおり
git clone ssh://[ユーザ名]@[コンピュータ名][対象ディレクトリを絶対パスで指定]
運用
- PC上で作業
- PC上でgit commit -a -m "message"
- raspberry pi上でgit pull
- raspberry pi上でビルド・実行・テスト
- 問題なければgithub, gitlabにpush
branchの活用
PC上でbranchをきって開発する場合の手順.
branch名はdevelop-user1とする.
- PC$ git checkout -b develop-user1
- develop-user1の作成
- PC上で作業・編集
- PC$ git commit -a -m "message"
- raspberry$ git pull origin develop-user1:master
- raspberry pi上でビルド・実行・テスト.
- 問題がある or 一段落ついていないならば2.に戻り作業.一段落ついてれば7.へ
- PC$ git merge master
- コンフリクトがあれば修正
- PC$ git checkout master
- PC$ git merge develop-user1
- masterブランチをgithubやgitlabにpush
欠点
commitしてraspberry pi上にてpullするので,commit間隔が短くなる.もしくはraspberry pi上でビルドするまでビルドに成功したか否かが分からないので,ビルド不成功のものもcommitしてしまう.