Arduinoでドローンを制御! 1からドローンを自作しよう – プロローグ

今回はプロローグ回です。

すべてのはじまり

僕はArduinoが大好きだ。

ライブラリが豊富で、簡単に環境を構築できて、作りたいものをすぐに作れる。

今日は何作ろうかなぁ、と、考えていたら、思いついてしまった。

ドローンを作ろう!!!!!!!!

そして、早速製作に取り掛かったのであった。。。。。。。。。。



これがなんと、1年半程前の話である。開発には想像以上に時間を要した。なぜなら、Arduinoの既存のOSS(MultiWiiなど)を利用してドローンを作る、要は殆ど組み立てるだけの記事はあっても、ドローンの制御部分から作る記事は見当たらなかったのだ!

そもそも僕は情報系の学部生である(当時1年生)。機械系ですらない。ましてや制御のことなんて全然わからない!かなり無謀な挑戦だったのだ。

そんな僕でも、海外のサイトをサーフィンしまくり、わからないなりに情報を集めて、ある程度形にすることが出来た。

制御に詳しくないからこそできる、ドローンの作り方を紹介する記事を、これから書いていこうと思う。

(それはつまり、間違った知識を書いてしまうこともあるということです。この記事をあまり鵜呑みにしないでください。間違い等を見つけましたら、是非コメントしてください。僕も勉強していきたいです)

1からって、どこから?

まずはそれを説明します。今回は、ドローンのフレーム、モーター、プロペラ、バッテリー、プロポは、市販のものを使います。

あくまでメインはArduinoでフライトコントローラーを自作する」ということです。0から作ると書くとフレームから作る羽目になるので、1からとはそういうことです!

前提知識は?

今回は、Arduinoで簡単なものを作れる状態」の人をターゲットにしようと思っています。簡単なものって何?と聞かれると難しいですが、Lチカができて、はんだができれば十分だと思います。

要はArduinoのインストール!からは始めない、ということです!そもそも僕自身全然知識がなく、ごまかしながら使っているので大丈夫です!イェイ!!

どんなことを書くの?

一応予定なので、今後変更があるとは思いますが、

1, ジャイロ、加速度センサを使おう

2, モーターを制御しよう

3, プロポを使おう

4, ドローンを組み立てよう

5, 姿勢制御をしよう

という大まかな流れで行こうと思ってます。

さいごに

と、いうわけで、こんな調子でこれからバンバン記事書いていこうと思います!全て書き終わるのにどれだけ時間がかかるかわかりませんが、どうぞお付き合いください!

はっぴーあるでゅいーのどろーんライフを送りましょう!!



Twenty Seventeenの記事一覧を記事タイトルのみにする



こんにちは。

ついにドメインを取得しました!

これからはtockn.comとしてやっていきます。よろしくお願いします。

初めてWordPressを使ったのですが、デフォルトのテーマ(Twenty Seventeen)、めちゃくちゃ良いですね。ハイパー好みです。

しかし幾つか気に入らないところが…。

今回はその中の1つ、記事一覧で本文全文も表示されちゃうところを、記事タイトルのみ表示されるよう変更していこうと思います。

これから紹介することを真似するのは、自己責任でお願いします。何かあっても僕は一切の責任を負いません…。万が一のために、必ずバックアップを取っておいてください。



themeフォルダを覗いてみよう

どうすればいじれるのか模索していると、/wp-content/themesというディレクトリを見つけました。中を覗くと、案の定今インストールされているテーマの情報が入っているディレクトリが見つかりました。

今回はTwenty Seventeenをいじるのでそれを覗くと、ヘッダーやフッターなど、それぞれのパーツを出力しそうなファイルがありました。

記事を出力するPHPを特定

その中のindex.phpを開いてみると、トップページを出力してそうなコードが!その65行目くらいから…


while( have_posts() ) : the_post();

........省略........

get_template_part('template-parts/post/content', get_post_format() );

........省略........

endwhile;

いかにも記事を出力しそうなループ文ですね。そしてその中の
get_template_part(‘template-parts/post/content’, get_post_format() );
これで実際に記事を出力するプログラムを呼び出しているようだ。どうやらtwentyseventeen/template-parts/post/にある、content.phpを呼び出しているようですね。早速覗いてみましょう。

content.phpの54行目から


<div class="entry-content">
<?php
/* translators: %s: Name of current post */
the_content( sprintf( __( 'Continue reading<span class="screen-reader-text"> "%s"</ span>', 'twentyseventeen' ),
get_the_title() ) );

wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', ' twentyseventeen' ), 'after' => '</div>', 'link_before' => '<spanclass="page-number">', 'link_after' => '</span>', ) );
?>
</div><!-- .entry-content -->

 

ここで本文全文を出力しているようです。

かといってここをコメントアウトしてしまうと、記事のページに飛んだ時も本文が表示されなくなってしまいます。どうしましょう…

やるべきことはこれ!

そこで、考えました

まずcontent.phpと同じディレクトリに、content-top.phpというファイルを作成して、中身をcontent.phpからコピペしましょう。

そして、content-top.phpから、先程載せた部分である54行目から69行目を削除(もしくはコメントアウト)しましょう。

次に、wp-content/themes/twentyseventeenに戻って、index.phpを開き、50行目あたりにある


get_template_part( 'template-parts/post/content', get_post_format() );

を、


get_template_part( 'template-parts/post/content', 'top' );

に書き換えましょう。

(近くに

get_template_part( ‘template-parts/post/content’, ‘none’ );

がありますが、これではありません。書き換えるのは

get_template_part( ‘template-parts/post/content’, get_post_format() );

です。)

これでトップページの記事一覧が、記事タイトルのみとなるはずです

さいごに

タイトルのみ表示されるように変更しましたが、少し寂しくなってしまいました。しかし、カスタマイズしていけば、どんどん良くなっていきそうです。

本文の一部を表示とかもできるんだろうな、もっといじってみよう!

それでは!



Raspberry PiでGitサーバ、Windowsからclone! 後編

こんにちは。前回に続き、今回は実際にRaspberry PiDebian 8.0)でGitサーバ(リモートリポジトリ)を構築し、Windows PCからcloneしてみます。

Git超初心者がRaspberry PiでGitサーバを構築して、Windowsでcloneするまで! 前編 Gitとは?



Raspberry Piにリモートリポジトリを作成

まずはRaspberry PiにGitをインストールします。

(Raspberry Pi)
apt-get install git

次に、Git専用のユーザーを作成しましょう。今回はgitというユーザーを追加します。

(Raspberry Pi)
useradd -m git
passwd パスワード

そして、リモートリポジトリを作成したいディレクトリ上で(今回は/home/git)

(Raspberry Pi)
cd /home/git
git init --bare --shared hoge.git

こうすることで/home/gitにhoge.gitという名前でリポジトリフォルダが作成されます。
–bareは作成するリポジトリをベアリポジトリとして、–sharedはみんな書き込みできるよ~というオプションです。
ベアリポジトリはフォルダ名に.gitを付けるのが慣例のようです。

ベアリポジトリについては前回の記事を参考に!

ls -a

で、”.git”というフォルダが作成されていることが確認できると思います。

 

一旦これでRaspberry Piでの作業は置いておきます。
次にWindowsでの作業に移ります。


Windows PCにローカルリポジトリを作成

Gitのインストール

まずはWindowsにGitをインストールしましょう。
こちらのページよりダウンロードできます。

git-for-windows.github.io

インストール後、私はCygwinからGitを使用していきますが、コマンドプロンプトでもほぼ同じ内容で作業ができると思います。

鍵の生成、登録

早速clone!と行きたいところですが、まだやらなければいけないことがあります。
Windowsから先ほど作成したRaspberry Piのgitユーザーでssh接続をできるようにします。
まずはWindows PCのわかりやすい場所に.sshというフォルダを作成し、そこに公開鍵とそれに対応する秘密鍵を作成しましょう。

 

Cygwin

(Windows)
mkdir .ssh
ssh-keygen -t rsa -C "コメント"
Generating public/private rsa key pair.
Enter file in which to save the key (//.ssh/id_rsa): ここに.sshのパスを入れる

すると、指定した.ssh内に「id_rsa」「id_rsa.pub」が生成されることが確認できると思います。この.sshのパスは覚えておいてください。

 

Raspberry Piに戻り、/home/git(ユーザー名)に「.sshディレクトリを作成し、authorized_keysというファイルを作成しましょう。
そして、「id_rsa.pub」の中身をauthorized_keysへコピーしましょう。

(Raspberry Pi)
mkdir /home/git/.ssh
cd /home/git/.ssh
vim authorized_keys
(id_rsa.pubの中身をコピーして保存)

これでsshの為の鍵の登録は完了しました。
Windowsに戻ります。

 

次に、clone等をする際に行うsshで使用する秘密鍵の場所を設定してあげます。

(僕はこれを忘れていて、
The authenticity of host ” can’t be established.
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
こんなエラーにしばらく悩まされましたとさ…)

(windows)
vim ~/.ssh/config

で設定ファイルを開き、

Host 任意のホスト名
Hostname ssh://(さっき作ったユーザー名):(パスワード)@(IPアドレス)(リモートリポジトリのパス)
User git
IdentityFile "(さっき鍵を作ったパス)"
Port 22

このように書き込みます。
IPアドレスの欄には、内部ネットワークから接続する場合はRaspberry PiのプライベートIPアドレスを、外部ネットワークから接続する場合はグローバルIPアドレスを入れましょう。
例えば

Host hoge
Hostname ssh://git:password@192.168.0.50/home/git/hoge.git
User git
IdentityFile "c:/Users/$user_profile/.ssh/id_rsa"
Port 22

こんな感じになります。


いざclone!

これでようやくcloneの準備が整いました。
ローカルリポジトリを作成したいディレクトリへ移動し、以下のコマンドを実行します

git clone ssh://(さっき作ったユーザー名):(パスワード)@(さっき設定した任意のホスト名)(リモートリポジトリのパス) (ローカルリポジトリフォルダ名)

例えば私の場合は

git clone ssh://git:password@hoge/home/git/hoge.git hoge

になります。

 

これでようやくcloneができましたね!(おそらく空のリポジトリをクローンしたよ!平気?という警告メッセージが出るかと思いますが、無視してください。)

ls -a

で、”.git”というフォルダが作成されていることが確認できると思います。

あとはこっちのモンだ

早速commit、pushしていきましょう!

ワーキングツリーで適当にファイルを作って…(ここではtest.txtを作りました)

(Windows)
git status

これで、インデックスに追加されていない変更内容を確認できます。

On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
test.txt
nothing added to commit but untracked files present (use "git add" to track)

test.txtが変更されてるけど追加されてないよ~って言ってますね

addでインデックスへ追加してあげましょう。

(Windows)
git add test.txt

そして

(Windows)
git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file:   test.txt

これで準備完了!commitしましょう。

git commit -m "test.txtを追加"

-mオプションを付けて、スペース空けて後ろにコメントを書きます。主にどのような更新をしたのかを記しましょう。

最後にpush!
初回のpushでは、-uオプションを付けましょう。

git push -u ssh://(さっき作ったユーザー名):(パスワード)@(IPアドレス)(リモートリポジトリのパス) master

無事pushできましたか?

 

ここで、毎回毎回pushの度にssh://~~を入力していたら大変ですよね。それを省略する機能を使いましょう。

git remote add origin ssh://(さっき作ったユーザー名):(パスワード)@(IPアドレス)(リモートリポジトリのパス)

このように、ホストをoriginという名前に対応させましょう。すると

git push

このように省略が可能になりました。

ちなみに、こう書けるのは対応した名前が”origin”の時のみで、別名を付けた場合は

git push 付けた名前

としましょう。

pullしたい時は、同じように

git pull

もしくは

git pull 付けた名前

するだけです。

終わった…

これで一通り環境が整ったのではないでしょうか!(書き忘れていることがあるような気がしますが…)

長かった…疲れた…後半はテキトーに書いてました。

ここが違うよ!できないよ!といった意見がございましたら、どしどしコメントをください!

 

それでは!良いGitライフを!!



Raspberry PiでGitサーバ、Windowsからclone! 前編

こんにちは。久しぶりの更新です。

今まで何かアプリケーションを開発する時、日付.zipやバージョン名.zipでクソ管理してきた僕ですが、ついにGitを使うときがやってきました。

訳あってGithub等の外部サービスにリモートリポジトリを置けない状況だったので、自宅にあるRaspberry Pi3でリモートリポジトリを作成し、手元のWindows PCにもGitを入れてそこからclone、pushできる環境を作りました。

Gitってなんだ?という状態から行ったこと、躓いたことを備忘録として書いていこうと思います。

 



Gitってなんだ!

Gitはプログラムのバージョン管理を楽に行っちゃおうっていうツールです。

例えば1人でアプリを開発する場合。新たに機能を追加したいけど、それで何か不具合が起きたら困るし…と、既存のプログラムをoldVersionなんて言う名前にしてバックアップを取り、新たな機能を開発する…。そんな事を繰り返していると、フォルダの中はoldVersion1, oldVersion2, oldVersion2 – コピーと、意味分からないファイルでいっぱい!

または複数人で開発する場合。うまく連携が取れず、気がついたら同じプログラムを複数人で編集してしまい、競合が発生!

こんな経験、ありませんか?
これを全て解決してくれるのが、Gitなのです。

Gitは主に「リモートリポジトリ」「ローカルリポジトリ」「インデックス」「ワーキングツリー」から構成されます。
リポジトリは、ファイルの変更履歴を保存する場所を指します。)

 

・ローカルリポジトリ
個人の変更履歴を保存する場所です。

・ワーキングツリー
ローカルリポジトリにあります。要は作業場です。ここにあるファイル(フォルダ)を編集していきます。

・インデックス
ローカルリポジトリへ変更内容を記録したいワーキングツリーのファイルを、まずはここに格納します。ここに格納されていないファイルは、変更内容がローカルリポジトリへ記録されません。

・リモートリポジトリ
サーバ等へ置き、みんなで共有するリポジトリ。みんなの変更履歴がどんどん追加されていく。基本的にリモートリポジトリはワーキングツリーを持たない。これをベアリポジトリという。

gitでは主なコマンドとして、

clone
add
commit
push
pull

があります。

・clone
リモートリポジトリを、個人(ローカル)のディレクトリへコピーする(クローンを生成する)コマンドです。それがローカルリポジトリとなります。

・add
指定したワーキングツリーのファイル(フォルダ)をインデックスへ格納するコマンドです。

・commit
インデックスにあるファイル(フォルダ)の前回commitからの更新内容をローカルリポジトリへ保存するコマンドです。普通はメッセージを付け、何をどう変更したのかを明白にします。

・push
ローカルリポジトリの中身をリモートリポジトリへ追加するコマンドです。

・pull
誰かが更新し、リモートリポジトリへ追加した内容を、自分のローカルリポジトリへ反映させるコマンドです。

 

他にもbranch等、大事な大事な機能がありますが、今はとにかくRaspberry Piでリモートリポジトリを作ってwinPCでcloneするのが目的なので、今回は省略!

もう文章だらけで飽きましたよね。

百聞は一見に如かず、次回はいよいよRaspberry Piでの作業に移ります!



後編はこちらから!

Raspberry PiでGitサーバ、Windowsからclone! 後編