僕はよくProcessingで3Dの描画をして遊ぶのですが、
これが意外と簡単な割に「なんかすごい」感を出せる。
・キーボード操作 keycheck()
・XYZ軸の描画 drawAxis(float length);
・XYグリッド平面の描画 drawGrid(int size, float length);
という関数に分けて使い回しています。
キーボード操作は、
・矢印:左右回転、上下回転。
・Z,X:ズームイン、ズームアウト
変数を追加すればもっと操作を増やせます。
回転の向きは逆に感じる人もいるかもしれません。正負を逆にしてみてください。
Simple3D.pde (Google Drive)
https://goo.gl/quQW4O
2015年7月12日日曜日
2015年7月11日土曜日
パラシュートを作ろう
Cansatに使用するパラシュートを作ろうと思います。
パラシュートはいろんなところで利用されているので、パラシュートの研究ってのはたくさんされてて、理論的なことがネットにもたくさん書いてあります。
色々調べた結果がこれです。
・落下方向に垂直な面積が大きいほどゆっくり落ちる
・上に穴を開けると、風にながされにくく、安定する
・穴を大きくするだけ、はやく落ちる
いろんな数式をつかった理想的なパラシュート設計をしても、僕らが作れる限界というのがあるわけでして、「とにかくでかくていいの」という曖昧な目標でがんばります。
そこでここ最近考えていたのは、そもそもパラシュートを何枚かのパーツで作るには、その1枚の形ってどうつくればいいのだろうと。
ご存知のとおり、地球儀を平面地図にするように丸い球面は平面にできません。同様に平面からも球面をつくることもできません。(布とかを伸び縮みさせるならできなくはなさそう)
よって、平面の張り合わせで近似した球面をつくる方法を考えました。
試行錯誤の結果到達したのが、多角形を積み重ねる方式です。
(なんだそんなことか・・って思うかもだけど、結構なやみました。)
つまりどういうことかというと
このように球面に内接する6角形をつくって...

頂点を結びます。

これは単純に曲げただけの平面なので、平面にのばすとこんな感じに。

これはProcessingでゴリゴリ描いたのだけど、
もっとスマートに数式にするとこんな感じです。

とまぁ。こんな感じでパラシュートができるとうれしいな。
パラシュートはいろんなところで利用されているので、パラシュートの研究ってのはたくさんされてて、理論的なことがネットにもたくさん書いてあります。
色々調べた結果がこれです。
・落下方向に垂直な面積が大きいほどゆっくり落ちる
・上に穴を開けると、風にながされにくく、安定する
・穴を大きくするだけ、はやく落ちる
いろんな数式をつかった理想的なパラシュート設計をしても、僕らが作れる限界というのがあるわけでして、「とにかくでかくていいの」という曖昧な目標でがんばります。
そこでここ最近考えていたのは、そもそもパラシュートを何枚かのパーツで作るには、その1枚の形ってどうつくればいいのだろうと。
ご存知のとおり、地球儀を平面地図にするように丸い球面は平面にできません。同様に平面からも球面をつくることもできません。(布とかを伸び縮みさせるならできなくはなさそう)
よって、平面の張り合わせで近似した球面をつくる方法を考えました。
試行錯誤の結果到達したのが、多角形を積み重ねる方式です。
(なんだそんなことか・・って思うかもだけど、結構なやみました。)
つまりどういうことかというと
このように球面に内接する6角形をつくって...

頂点を結びます。

これは単純に曲げただけの平面なので、平面にのばすとこんな感じに。

これはProcessingでゴリゴリ描いたのだけど、
もっとスマートに数式にするとこんな感じです。

とまぁ。こんな感じでパラシュートができるとうれしいな。
2015年7月2日木曜日
能代宇宙イベントに参加します
久しぶりの投稿です。
今年の8月、能代宇宙イベントに参加します。
ピクトラボの使用許可がおりたので、これからはピクトラボで活動します。
とはいっても残り1ヶ月ちょっとしかないので結構あせってます。
必要なモノとかの発注が間に合うかどうか。
試作の試作みたいな段階です。
でもまぁ勝算はあります。
頭で考えるより実際に作らないとわからないことだらけなのに、
頭やメモ帳で考えてばかりで、モノができてない状況。
今週末までに何かできてればうれしい。
今年の8月、能代宇宙イベントに参加します。
ピクトラボの使用許可がおりたので、これからはピクトラボで活動します。
とはいっても残り1ヶ月ちょっとしかないので結構あせってます。
必要なモノとかの発注が間に合うかどうか。
試作の試作みたいな段階です。
でもまぁ勝算はあります。
頭で考えるより実際に作らないとわからないことだらけなのに、
頭やメモ帳で考えてばかりで、モノができてない状況。
今週末までに何かできてればうれしい。
2015年3月9日月曜日
春休み2015予定
来年度からは大学院に進学します。
春休みは研究室のデモ用ロボットの修繕とか趣味のプログラミングとかをして過ごします。
研究室のデモ用ロボットはLEGOでつくられていて、今まではUNIXのPCで動いてたのだけど、老朽化というか研究系のシステム移行により見放されてしまったという悲しいモノです。
そこで、最近流行のLinuxボード、BeagleBone Blackをつかって復活させようというのを僕がやります。復活したころには僕も多少は新しいことを学んでいることでしょう。
あとは、プログラミングの勉強を兼ねて、評価値を基準に解を探索するプログラムをつくります。大学院に入ったら機械学習とかも勉強したいので、それまでは泥臭い方法を学んでおきたいです。
どちらも経過で学んだことは公開していきます。
春休みは研究室のデモ用ロボットの修繕とか趣味のプログラミングとかをして過ごします。
研究室のデモ用ロボットはLEGOでつくられていて、今まではUNIXのPCで動いてたのだけど、老朽化というか研究系のシステム移行により見放されてしまったという悲しいモノです。
そこで、最近流行のLinuxボード、BeagleBone Blackをつかって復活させようというのを僕がやります。復活したころには僕も多少は新しいことを学んでいることでしょう。
あとは、プログラミングの勉強を兼ねて、評価値を基準に解を探索するプログラムをつくります。大学院に入ったら機械学習とかも勉強したいので、それまでは泥臭い方法を学んでおきたいです。
どちらも経過で学んだことは公開していきます。
BeagleBone Black
2014年11月10日月曜日
[GPSRCC]ToCoStickでRaspberryPiと通信
ロボットカーをRaspberryPiで動かすので大変だったのはwifi環境。
家ではwifi使えるのでそれで良いのだけれど、外ではwifiがないから動かない。
(大会ではwifiルーターを持参して通信してました。)
wifiに頼らない開発環境を!ということで、以前買っておいたToCoStickと、今回買ってもらったToCoStickを使って何とかしてやろうじゃん?っていう記事です。
もちろん家ではwifiでsshが最強なのでwifiを使います。
【ToCoStickとは】
TWE-LITEっていう通信用のモジュールをUSBに挿せるようになってるやつ。
今まで有線だったシリアル通信を無線化できるでしょ?っていう感じ。
チャットとか色んな機能があるんだけど、正直いらない。
【ToCoStickの準備】
ざっくり基礎知識(細かいとこは自分で調べて)
・ToCoStickやTWE-LITEはアプリ(ファームウェア?)を書き込んで動かす。
・最初に入ってるのはIOとか制御するアプリ。ToCoStickだとほぼ意味ない。
・シリアル通信専用アプリの「透過モード」が一番便利そう。
(http://tocos-wireless.com/jp/products/TWE-ZERO/App_Uart/)
・書き込み用ソフトがWindowsにしか対応してない(おこ)
【ToCoStickを使う】
Macに1つ、RaspberryPiに1つ挿します。
Macでは「CoolTerm」を使ってシリアル通信します。
RaspberryPiでは、おなじみ?の「minicom」でシリアル通信します。
親機の設定(どっちでもいいからとりあえずMac側にしてる)
・i: Device IDを121に。
・m: uart modeをT(透過モード)に。
・そして S: save Configuration 設定を保存
子機の設定
・i: Device IDを1に。
・m: uart modeをT(透過モード)に。
・そして S: save Configuration 設定を保存
なんか文字とか打つと1文字ずつ転送される。これでオッケー。
【コンソールを使う】(こっからが本題)
このままで、デバッグ情報をシリアルで送ってくれたりするようにできます。
競技中はそれでいいんだけど、RaspberryPiの場合はまずプログラムを起動しなきゃいけないですね。
シリアル通信でコンソールをいじれる必要があるわけです。
RaspberryPiの場合はGPIOピンに有線でつなぐとコンソールをいじれます。
USBでもこの機能を使わない訳にはいきませんね。
ここのブログでは逆に、シリアルで繋ぐとコンソールになっちゃうのを回避しています。
(http://www.soramimi.jp/raspberrypi/rs232c/index.html)
/etc/inittab の最後のttyAMA0をttyUSB0に変えましょう。
...
一応、再起動してToCoStickで通信はじめると、Mac側のシリアル通信ソフトにコンソールが飛んできます。
という訳で、wifi環境がなくても開発が可能になりました。
TWE-LITEの仕様のせいで使いにくい分はあるけど、特に問題はないです。
もちろん家ではwifiでsshが最強なのでwifiを使います。
アディオス!
家ではwifi使えるのでそれで良いのだけれど、外ではwifiがないから動かない。
(大会ではwifiルーターを持参して通信してました。)
以前はこんな感じ
wifiに頼らない開発環境を!ということで、以前買っておいたToCoStickと、今回買ってもらったToCoStickを使って何とかしてやろうじゃん?っていう記事です。
これからはこうします
もちろん家ではwifiでsshが最強なのでwifiを使います。
【ToCoStickとは】
TWE-LITEっていう通信用のモジュールをUSBに挿せるようになってるやつ。
今まで有線だったシリアル通信を無線化できるでしょ?っていう感じ。
チャットとか色んな機能があるんだけど、正直いらない。
きれいなんだけど、もうちょっと小型化できないのかな。
【ToCoStickの準備】
ざっくり基礎知識(細かいとこは自分で調べて)
・ToCoStickやTWE-LITEはアプリ(ファームウェア?)を書き込んで動かす。
・最初に入ってるのはIOとか制御するアプリ。ToCoStickだとほぼ意味ない。
・シリアル通信専用アプリの「透過モード」が一番便利そう。
(http://tocos-wireless.com/jp/products/TWE-ZERO/App_Uart/)
・書き込み用ソフトがWindowsにしか対応してない(おこ)
【ToCoStickを使う】
Macに1つ、RaspberryPiに1つ挿します。
Macでは「CoolTerm」を使ってシリアル通信します。
RaspberryPiでは、おなじみ?の「minicom」でシリアル通信します。
親機の設定(どっちでもいいからとりあえずMac側にしてる)
・i: Device IDを121に。
・m: uart modeをT(透過モード)に。
・そして S: save Configuration 設定を保存
子機の設定
・i: Device IDを1に。
・m: uart modeをT(透過モード)に。
・そして S: save Configuration 設定を保存
なんか文字とか打つと1文字ずつ転送される。これでオッケー。
【コンソールを使う】(こっからが本題)
このままで、デバッグ情報をシリアルで送ってくれたりするようにできます。
競技中はそれでいいんだけど、RaspberryPiの場合はまずプログラムを起動しなきゃいけないですね。
シリアル通信でコンソールをいじれる必要があるわけです。
RaspberryPiの場合はGPIOピンに有線でつなぐとコンソールをいじれます。
USBでもこの機能を使わない訳にはいきませんね。
ここのブログでは逆に、シリアルで繋ぐとコンソールになっちゃうのを回避しています。
(http://www.soramimi.jp/raspberrypi/rs232c/index.html)
/boot/cmdline.txt のttyAMA0をttyUSB0に変えましょう。
dwc_otg.lpm_enable=0 console=ttyUSB0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait /etc/inittab の最後のttyAMA0をttyUSB0に変えましょう。
...
#Spawn a getty on Raspberry Pi serial line
T0:23:respawn:/sbin/getty -L ttyUSB0 115200 vt100
一応、再起動してToCoStickで通信はじめると、Mac側のシリアル通信ソフトにコンソールが飛んできます。
という訳で、wifi環境がなくても開発が可能になりました。
TWE-LITEの仕様のせいで使いにくい分はあるけど、特に問題はないです。
もちろん家ではwifiでsshが最強なのでwifiを使います。
アディオス!
2014年10月28日火曜日
[エレコン]Arduino IDEとLeonardoでAVRマイコンに書き込み
こんにちは。
この度、AVRマイコン(ATMEGA328P,ATtiny2313,ATtiny13A)を買ったり買ってもらったりして、どのように使っていこうか考えていました。
【ことのいきさつ】
Arduinoを使って書き込む方法があると知る
KosakaLab
探すとここに行き当たる。丁寧な解説つきでとてもありがたい。
でもどこの説明もArduino UNOでやってる。
僕のArduino UNOは現在故障中で使えない
スイッチサイエンスの永久保障
Arduino UNO R3の永久保障の内容が最強。みんなここで買うべきっしょ。
(はやく直してもらえばいいのに)
Arduino LeonardoはUNOとほぼ同等なボード。
使ってる人はUNOより少ない。ちょっと安い。
Arduino Leonardoでやってるページを見つける
G2SS Diary: LeonardoでAttiny85にスケッチを書き込んでみた http://g2ss.blogspot.jp/2013/01/leonardoattiny85.html
できないことはないけど、一手間必要なんだなと知る。
Arduino Leonardoでやる詳細のページも見つける
Arduino Leonardo as ISP :
英語だけど絵がいっぱいで一番くわしくわかりやすい
できた!
というわけで僕もG2SS Diaryさん同様、やり方の手順を公開します。
0. 準備 用意するもの
・Arduino Leonardo USBケーブル・AVRマイコン(上記3つで動作を確認)
・ブレッドボードとジャンパ線
・確認用LEDと抵抗
・パソコン(OSはMacOSX、Windows7で確認)
・Arduino IDE1.0.6 (1.5.8 BETAではうまくいかない)
1. Leonardoを書き込み装置にしよう
[ファイル]->[スケッチの例]->[Arduino ISP] を開く。内容を書き換える。(SS->10 , 9->13)
[Arduino ISP Leonardo]とか別名で保存しておくといい。
hardware.zipをダウンロード&解凍&[Arduino]ディレクトリの中に置いておく。
(http://make.kosakalab.com/arduino/use/source/hardware.zip)
Arduino IDEを再起動して[ツール]->[マイコンボード]でなにやらたくさん出てきたらオッケー。
[hardware]ディレクトリの中に[leofix]というディレクトリをつくります。
[leofix]ディレクトリの中に[programmers.txt]というテキストファイルをつくります。
テキストファイルには以下の4行を書いておく。
arduinoispleo.name=Arduino as ISP (Leonardo)
arduinoispleo.communication=serial
arduinoispleo.protocol=arduino
arduinoispleo.speed=19200
再起動すると[ツール]->[書き込み装置]に[Arduino as ISP (Leonardo)]がある。
2. マイコンと配線しよう
Arduino Leonardo側 <ーーー> マイコン
SCK <--> SCK
MISO <--> MISO
MOSI <--> MOSI
10 <--> RESET
5V <--> VCC
GND <--> GND
0(RX1) <--> RX (必要ないかも)
まず、前述のArduinoISPLeonardoをLeonardoに書き込む
設定は マイコンボード:Arduino Leonardo
ポート:Leonardoを認識してるポート
書き込み装置:AVRISP mkII
次に、前述のLEDチカチカスケッチをマイコンに書き込む
設定は マイコンボード:ATtiny2313 (internal 8MHz clock) <-- 自分の使うマイコン
ポート:Leonardoを認識してるポート
書き込み装置:Arduino as ISP (Leonardo)
LEDチカチカスケッチ
void setup( ) {ピンで2番を指定しているので、RXD,TXD,の隣くらいのピンにLEDを刺しておくと光る
pinMode(2, OUTPUT);
}
void loop( ) {
digitalWrite(2, HIGH);
delay(125);
digitalWrite(2, LOW);
delay(125);
}
という感じで僕はできました。
Arduinoの関数とかがどの程度使えるのか分からないので、今後検証していきたいと思います。
以上、Arduino IDEとLeonardoでマイコンに書き込みしてみようのコーナーでした。
2014年10月19日日曜日
[GPSRCC]GPSロボットカーコンテスト2014が終わりました!
GPS・GNSSロボットカーコンテスト2014に出場してきました。
結果は
ダブルパイロンレース:棄権
QZスクランブル:災害通知の受信をできずリタイア
でした。
くやしい結果ですが機体としてはいいものができて満足です。
GarlicToastでいい結果を残せたら新しい機体を作る事を考えていましたが、この現状では今後もGarlicToastで調整を進めることにします。本来ならハードウェア的な問題点を作り直す必要があるのですが、今回は満足しているので基本の枠組みは変えずに続投です。
ちょっとリベンジしたい気持ちもあるので、来年も使えるレベルに手直ししてから封印するつもりです。
以降反省です。
【ハードウェア】
・最終的には満足のいくものができてよかった。(もう少し早くできていれば・・。)
・インホイールモーターは期待通りに動いてよかった。
・分解組み立てが少々面倒なところが難点。
・電圧最大でストールすると配線が電流を許容できなさそう。
・キガタメール(木固め剤)については今後の経過を見て評価。
・ギア比をあげればもっと電流を抑えて同じ挙動ができるかもしれない。
【回路】
・今後の課題が一番多い部分
・安価なモータードライバICではパワーが足りずにMOS-FETを使ったが今後はそれでいい。(逆転はできない仕様はローバーの機構上問題はない)
・大電流を許容できる配線、基板を作成する。
今後は基板発注,電源の完全な分離をおこなう
・基板間の配線をちゃんとまとめる。RasberryPi<-->モータドライバ基板間は一本にまとめる。
・モータードライブ用にマイコンがあっても良いかもしれない。
・確実な無線通信をできるようにする
【ソフトウェア】
・Pythonでの記述に慣れることができた。
・マルチプロセスは強い。今までにない制御周期を実現できた。
・プログラムをモジュール化しすぎてデバッグが大変になってしまった。
一斉実行するためのプログラムが必要
・プログラム間通信を何か考えないといけない。
・簡単にパラメータを変更できる仕組みも必要
・欲を言えばグラフィカルに挙動を確認したい。
【しまう前にしておくべき手直し】
・電源回路の修復
・プログラムの簡略化・自動実行できるように
・QZスクランブルの通知信号の受信問題の解決
・通信をもっと楽に行う
【おまけ】
結果は
ダブルパイロンレース:棄権
QZスクランブル:災害通知の受信をできずリタイア
でした。
GarlicToastでいい結果を残せたら新しい機体を作る事を考えていましたが、この現状では今後もGarlicToastで調整を進めることにします。本来ならハードウェア的な問題点を作り直す必要があるのですが、今回は満足しているので基本の枠組みは変えずに続投です。
ちょっとリベンジしたい気持ちもあるので、来年も使えるレベルに手直ししてから封印するつもりです。
また来年もよろしくお願いします
以降反省です。
【ハードウェア】
・最終的には満足のいくものができてよかった。(もう少し早くできていれば・・。)
・インホイールモーターは期待通りに動いてよかった。
・分解組み立てが少々面倒なところが難点。
・電圧最大でストールすると配線が電流を許容できなさそう。
・キガタメール(木固め剤)については今後の経過を見て評価。
・ギア比をあげればもっと電流を抑えて同じ挙動ができるかもしれない。
【回路】
・今後の課題が一番多い部分
・安価なモータードライバICではパワーが足りずにMOS-FETを使ったが今後はそれでいい。(逆転はできない仕様はローバーの機構上問題はない)
・大電流を許容できる配線、基板を作成する。
今後は基板発注,電源の完全な分離をおこなう
・基板間の配線をちゃんとまとめる。RasberryPi<-->モータドライバ基板間は一本にまとめる。
・モータードライブ用にマイコンがあっても良いかもしれない。
・確実な無線通信をできるようにする
【ソフトウェア】
・Pythonでの記述に慣れることができた。
・マルチプロセスは強い。今までにない制御周期を実現できた。
・プログラムをモジュール化しすぎてデバッグが大変になってしまった。
一斉実行するためのプログラムが必要
・プログラム間通信を何か考えないといけない。
・簡単にパラメータを変更できる仕組みも必要
・欲を言えばグラフィカルに挙動を確認したい。
【しまう前にしておくべき手直し】
・電源回路の修復
・プログラムの簡略化・自動実行できるように
・QZスクランブルの通知信号の受信問題の解決
・通信をもっと楽に行う
【おまけ】
今回のタイヤのスポンジはこれ。これで100円は去年のウレタンフォームより安い。
前日の試走会にも行ってきました。このときはバッテリーやらの問題でうまく走らず。
登録:
投稿 (Atom)

















