Monthly Archives: 4月 2010

Robohan

こんばんは。全然更新できてませんが、近況報告を。

大学の授業が始まって2週間目ですが、中高の時の親友(一緒にロボカップジュニアに出場してました)とRobohanという大阪大学のロボコンチーム(大阪大学工学部研究科公認団体)に入部しました。まだ設立して新しいのでNHKロボコンには2回目の出場です。

現在は6月のNHKロボコンに向けてロボットを製作中です。(詳細は言えません)

個人的には教育用ボードの試作品は届きました。基幹部分は部品も実装し、動作確認もできました。3PinのXHコネクタが入荷すれば完成し、センサー入力等も確認できるはずです。

DCC関係は…進んでいません。ただこのボードができればデコーダのプログラム動作試験はやりやすいかと。

ではまた。

PHP 5.2.12 + GD

Mac OSX Server 10.5.8のアップデートをしたらPHPのバージョンが5.2.12にアップされていて、またGDが入っていなかったので再コンパイル。

GDぐらい一緒にコンパイルしておいて欲しいのですが…今回つかったライブラリのバージョンは以下の通り。

  • libpng 1.4.1
  • libjpeg jpeg-8a
  • gd 2.0.35
  • php 5.2.12

今回は前回のMacにおけるiconv関係バグに加え、DNS関係のバグ(Bug #50508)が有り、php-5.2.12/ext/standard/dns.c の58行目からを以下のように修正しました。前回のiconvについての修正も行う必要があります。

#if HAVE_ARPA_NAMESER_COMPAT_H
#include
#endif

#if HAVE_ARPA_NAMESER_COMPAT_H
#ifndef HAVE_ARPA_NAMESER_H
#include
#endif
#endif

に変更してから以下のようにコンパイルしました。

$ cd ~/Downloads/src/libpng-1.2.40
$ CFLAGS="-arch x86_64" CCFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" ./configure
$ make
$ sudo make install

$ cd ~/Downloads/src/gd-2.0.35
$ CFLAGS="-arch x86_64" ./configure
$ cp libtool ../jpeg-8a/
$ cd ../jpeg-8a/
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure --enable-shared
$ make
$ sudo make install

$ cd ~/Downloads/src/gd-2.0.35
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6 --with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6
$ make
$ sudo make install

$ cd ~/Downloads/src/php-5.2.12
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --with-apxs2=/usr/sbin/apxs --with-ldap=/usr --with-kerberos=/usr --enable-cli --with-zlib-dir=/usr --enable-trans-sid --with-xml --enable-exif --enable-ftp --enable-mbstring --enable-mbregex --enable-dbx --enable-sockets --with-iodbc=/usr --with-curl=/usr --with-config-file-path=/etc --sysconfdir=/private/etc --with-mysql-sock=/var/mysql --with-mysqli=/usr/bin/mysql_config --with-mysql=/usr --with-openssl --with-xmlrpc --with-xsl=/usr --without-pear --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/X11R6 --with-gd=/usr/local
$ make
$ make test
$ sudo make install

マイコン学習キット、基板発注

本日ATMeaga644Pを使ったマイコン学習キットの基板の試作品を発注しました。

日本時間で15時20分に発注メールをOLIMEXに送信したら、19時40分にPDFの注文書が送られてきました。

たぶん今までで最速!。こんなに早いとうれしいなぁ

教育用マイコンボード

中二の時に同級生数人とロボット同好会を学校で発足させたのですが、今では中学ロボット同好会はロボット研究部に昇格し、高校にもロボット同好会ができています。

で、ロボットを作るためにはマイコンでモーターを回す回路を設計したりプログラムを作れるようにならないといけません。

がこれまで、いちから独学で回路もプログラムもとなると相当の実力をつけているころには高校生ということになってしまっていました。

なぜそんなに時間がかかるか考えると、プログラムをするためにはマイコンボードができてないと学習できない、基板設計するにはプログラムでどういうことをするのか理解していないといけない…..という無限ループになるからだということになりました。

そこで、僕らの学年の部長だったT-Engineとクラブ向けの学習用マイコンボードがついたロボットキットをつくることになりました。

完成した基板があることによりプログラムの学習が早期からできるというのが目論見です。しかもマイコンは汎用マイコンを搭載しファームウエア等もあえて搭載しないので今後1から回路設計した場合でもそのときの経験はそのまま利用することができます。また回路図を読むことによりどういう回路ならこういうことが実現できるのかという教科書にもなるため回路の学習の基礎にもなればと思っています。

これを用いて中学初期あたりから学習すれば早期にロボット作成の基本が学習できる”はず”です。

構成としてはAVRマイコンと2チャンネルのモータードライバとUSBシリアル変換&書込回路をワンボードにしたマイコンボードとタミヤのユニバーサルプレートにギアボックスをセットにしたものになると思います。

拡張性を考えてI2C、デジタル入出力、アナログ入力ポートも備えています。

で、僕はマイコンボードの設計をするので以下のような感じになっています。

教育用マイコンボード

教育用マイコンボード

あと、AVRStudioを使って1からレジスタを操作してプログラムをするまえに、NQCのように簡単にプログラミングができるような開発環境も用意することにしたのでそちらも開発しています。

Windowsだけの対応ですがC#で開発しています。といってもコンパイル時にこっそり用意しておいたヘッダファイルをインクルードし、リンク時に用意しておいたライブラリをくっつけるという作業をしているだけなのですが…

それでも1から操作するよりは容易にプログラミングに慣れることができると思います。以下は開発中の開発環境です。一番大変なのは実際の動作とは全く関係のない部分なのですが、コードの色分けを実装するとこでしたね(笑)。できればVisualStudioのInteliSenceのような入力補完機能をつけるのが目標です。

教育用開発環境

教育用開発環境

インクルードが全くないのに用意された関数がつかえます。

これはコンパイル時にこっそり用意しておいたライブラリのヘッダファイルをインクルードし、ライブラリをリンクするという作業を裏で行うのことにより実現しています。というかただそれだけなのですが…

追伸

DCCデコーダの開発用のための実験基板ができました。AVRとモータードライバとBEMF用の回路が載っています。