セミナーも終盤です。

各自、自分で組み立てたクローラーロボットの制御を行うプログラムを作成しています。
この時は、プログラムを穴あきで用意して、「どこに何を埋めるか」を考えていただきました。

単に用意されたプログラムを書き込むだけでは、ただの作業なので何も考える部分がありませんが、全体の流れや使うコマンドなどがわからないと適切に埋められないので皆さん、真剣な表情で考えていました。

mac での写真のぼかし加工

ネットで見つけた方法が古くてswiftがよくわからなかったけど、なんとかなったのでソースを貼っておきます。

let ぼかし具合 = 10.0 ; // デフォルト 10.0 数値が大きいほどぼかし効果が高くなります。
let pbCopy = true

import Cocoa
import CoreImage
let pb = NSPasteboard.generalPasteboard();
let readData = pb.dataForType(NSPasteboardTypeTIFF);
if( readData == nil ){
print(“クリップボードへ写真・画像をコピーしてください。”)
exit(1)
}
var ciクリップボードイメージ = CIImage(data: readData!)
let nsimage = NSImage(data: readData!)

let filter = CIFilter(name:”CIGaussianBlur”)
filter?.setDefaults()
filter?.setValue(ciクリップボードイメージ, forKey:”inputImage”)
filter?.setValue(ぼかし具合, forKey:”inputRadius”)

let outputImage = filter?.outputImage
let cropRect = CGRect(origin: CGPoint(x:0,y:0), size: ciクリップボードイメージ!.extent.size)

let bmImg = NSBitmapImageRep( CIImage:outputImage!.imageByCroppingToRect(cropRect))

if( pbCopy ){
pb.clearContents();
pb.setData(bmImg.TIFFRepresentation, forType: NSPasteboardTypeTIFF)
}

1/6スケールで大きさを検証

プロトタイプ製作をするときに、実際の製品のサイズ感を確認するために1/6スケールで造形します。


動作する実物は実際のサイズの1/3ですが、階段を超えるのが厳しかったので、1.3倍したものを1/6モデルにしました。

1.16倍くらいでも良かったかも?大きく感じます。

さて、なぜ1/6で作るのかというと、ちょうどいいフィギアが1/6なのでそうしてます。
このフィギアは身長180cmを想定していて約30cmあります。
このフィギアと造形物のスケールを合わせておくと、実際のサイズ感を掴むことができます。

うーん、かなり大きいロボットになってしまったなぁ。

実際にWRSを考えたときにこれほどの上半身は要らないですね。
また、センサーも制御も実際は遥かに小さいですし。

テーブルを設置

事務所に打ち合わせなどの来客時に使えるテーブルがなかったので持ち込みました。

1/6フィギアとロボットの記念撮影。
このサイズの場合、ロボットの身長は2mを超える感じです。

カメラユニットを搭載

上半身の変更がうまくいき、走行に支障もでなくなったので、頭部のカメラユニットを収納するケースを造形しました。

カメラは単独で接続することもできますが、既設のwifiルーターにつなぐこともできます。

先ほど、草むらと砂利を走行させましたが、安定して走行できました。

バッテリーパックを付けてみたものの

ロボットの背中に背負う感じでバッテリーパックをつけてみましたが、これが大失敗でした。
上半身が重くなりすぎてバランスが悪く、メインクローラーの旋回動作をさせると姿勢を直すことができません。

要素開発をしている間は問題になりませんが、ロボットが完成に近づいてくると重さとの戦いになります。

4回目のセミナーの初回が終わりました。

本日は午後1時半からロボット分科会のセミナーでした。

今回はクローラーロボットの

・前後動作に旋回動作を追加
・ミサイルを発射する動作を追加

これらを、参加者が自分たちで考えてプログラムを書いてみるという作業を行ってみました。
arduinoなのでincludeでservo.hを読み出せば、servo変数を設定し、ピンをattachして、writeで位置決めができます。
模型用サーボは信号幅で位置決めをしていること、ボリュームをつないでアナログ入力した時に、繋ぐデバイスによっては入力値が0〜1023段階では入力できないので、その数値を演算で丸めて使う方法などを説明しました。

みなさん、早々に目的の動作を行うことができました。

4回目のセミナーになると、プログラムを読みだして書いて、シリアルモニタで結果を確認してくださいというだけでちゃんと操作できるようになります。
まったくarduinoを知らない(というかマイコンもしらない)方々のためのセミナーですが、回を重ねるごとに成長を感じることができました。

上半身用のモーション設定アプリの作成を開始しました

移動用の下半身の動作と異なり、上半身はある程度、定形の動作を行うようになります。
そのためには各軸を個別に設定して、パターンとして記録できるアプリがあった方が良いのでwindows用アプリを製作開始しました。

図のような感じで、各軸の番号を振った絵を見ながら、実際に動作させてパターンデータを生成します。