7月17日に金沢工業専門学校にて行われた金沢草の根大会に参加しました。金沢草の根大会は今回で6回目です。参加者は年々増えており、今回は40人を超す参加者が集まりました。金沢大会ではYoutubeLiveにてインターネット配信が行われました。表彰クラシックの迷路は、名古屋城とその周辺をモチーフに設計されたそうです。前半は直線、後半はターンが多いコースです。大会では配信が直前まで不安定だったり、初出場の学生さんが出走直前にLiPoバッテリの端子をショートさせてしまい煙が出るというハプニングもありましたが、無事終了しました。大会の結果はこちら(NTFマイクロマウス大会結果)から確認できます。Pi:Coシリーズが2台以上出走したため、Pi:Co杯対象となり佐野さんの「さのうす」がPi:Co賞を獲得しました。今大会では当社のキットであるRaspberryPiMouseV2が初の公式大会出走しました。からくり工房A:Macの猪野さんです。風邪を押しての出場でしたが、結果は残念ながらバッテリー切れのためリタイアでした。今後、出走台数が増えればRaspberryPiMouse杯も検討するそうなのでがんばってもらいたいです。金沢工専の吉澤さんです。彼は製作中に2台も発煙し、今大会で出走するのは3台目だそうです。センサの調子が悪かったのか、結果はリタイアでした。マウス女子が全国レベルで増えているようです。今回出走したpica2。関西大会よりもセンサを下げてみました。なんとなく調整しやすくなった気がします。ハードの改造はPi:Co杯の資格は失いますが、マイクロマウスのレギュレーション的には問題ないので速くかつ安定するよう、どんどん改造していきたいと思います。ソフトは最短走行時のスラロームを実装してみました。雑な実装だったため、スムーズな動きには程遠いカクカクした速度調整になってしまいましたが、デフォルトの超信地旋回のみの時に比べ3割ほど速くなりました。次の大会までにはもうちょっときれいなスラロームにしたいと思います。sotaみなさまおひさしぶりです。7月10日、マイクロマウス関西地区大会(http://mmk.rulez.jp/)に参加してきました。今回の会場は大阪のアジア太平洋トレードセンター(ATC)内、ODPデザインギャラリーにて開催されました。試走会と大会当日(7/9-10)はATC内にてデジタルものづくりメーカーズのための展示会イベント「メーカーズバザール大阪」(http://makersbazaar.jp/)が同時開催されました。昼休憩の少しの時間だけしか見れなかったのですが、面白そうなガジェットが多数展示・販売されており、1日中楽しめそうなイベントでした。自分は地方大会は初の参加だったのですが、予想以上に参加者が多く驚きました。参加者は前回と比べ地元大阪の学生が多数参加されていたそうです。前日の試走会も多くの参加者がおられ、おのおの調整をされていました。今回出走したPi:Co(pita2)です。Pi:CoClassic2にPi:CoClassic3の開発時にあまった基板やCPUなどを使い組み合わせてあります。プログラムは今回はほぼサンプルで、パラメータの調整とwaitなどを削り、できるだけPi:CoClassic3のままのアルゴリズムでどこまで速くできるかを試してみました。前日、社内ではちゃんと走っていたのですが、会場ではセンサまわりのエラーに苦しみ、ほぼセンサの調整だけで終わってしまいました。(後日判明したのですが、CPUボードの故障でした。前に、バッテリのバランスコネクタがピンに当たった時にバチッと音がしたので、その時かも)当日は片側センサだけの情報を使った姿勢制御に変更してなんとか完走することができました。姿勢制御は片側だけでもとても安定してまっすぐ走ってくれました。ロボトレースは赤尾さんの「楓II」が優勝、マイクロマウスクラシックは宇都宮さんの「紫電改」、ハーフは松井の「Fantom」が優勝されました。写真は去年の優勝機体「Sapphire」Pi:Coシリーズが2台以上参加されていたため、Pi:Co杯も行われ、益田さんの「でじまる」(Pi:CoClassic2)がPi:Co賞を獲得されました。「でじまる」はスラロームも実装されており、とても速かったです。Pi:Co賞はSIXPADでした。現在、今週末の金沢大会に向けて簡易スラロームの実装に挑戦中です。indigoをインストールする方法を掲載しました。今回は、その環境に弊社が開発したデバイスドライバをインストールする方法です。indigoの環境では、SPIがdisableになっています。RapberryPiMouseのセンサはSPI通信を使用してセンサの値を取得しているためSPIのenableにする必要があります。SPIがdisable時のlsmodの結果/boot/config.txtに以下のコマンドを追加します。一度rebootします。lsmodでSPIがenableになっていることを確認します。spi_bcm2835があればOK。githubからコンパイルされたデバイスドライバを入手します。-rで確認できます)と思いますのででデバイスドライバのインストールができます。センサの値取得などができようになります。改造例(1)では、7セグを使用した改造例を示しましたが、今回は、その7セグの制御のハード側の設計について語ります。Tekivi社の2381BGを使用しました。秋月電子通商で100円で売っているものです。アノードコモンはLEDの電源側(VDD)が共通になっていてカソード側で点滅の制御をするタイプです。下の回路図が今回開発した7セグとPICの回路図です。回路図から3桁の7セグとPIC16F687とPchFETと抵抗で構成していることが分かると思います。先ほど、アノードコモンの7セグはカソード側で点滅を制御すると書きましたが、3桁の7セグは、カソード側も共通化されているため、アノード側も制御する必要があります。アノード側をすべて電源(VDD)につなげてしまうと3つとも同じにしか点灯しません。何となく想像がつきますよね。3つの7セグを個々に点灯をさせるには、アノード側で電源のON/OFFを切り替えて制御します。アノード側で電源のON/OFFすると三つ同時に点灯できないのではないか?という疑問が沸くかと思います。実際には、3つ同時には点灯していません。3つ同時に点灯しているように見えているだけです。改造例(1)のブログの2枚目の写真で”115′′と表示されてると思います。~く見ると左の”1′′が暗く、右の”5′′が明るくなっているのが分かると思います。これは、撮影する角度の問題も少しはありますが、7セグの点灯方法によるものです。どこかでPWMの言葉を聞いたことがあるかと思います。ロボコンマガジン2016.9号のマイクロマウスではじめようロボットプログラミングwithロボット女子会でPWMについて解説していますので、ご参考に見ていただけると幸いです。PWMという用語を持ち出してきたかというと、PWMはON/OFFだけで、LEDの明るさの調整やモーターの速度の調整に使用されています。前者のLEDの明るさの調整にPWMを使用していますが、LEDがチカチカとしていません。この技術を使用して7セグを3つ順番にON/OFFして点灯の制御をしています。左図が7セグとPICのブロック図になります。7セグの電源を制御するのにPchのFETを使用していますが、PNPのトランジスタでもOKです。Pchはローアクティブです。ローアクティブとは、FETのゲートに”0′′を入力したときにFETがONになることを言います。逆に、Nchのアクティブはハイです。Nchはゲートに”1′′を入れたときFETがONになります。1.93Vで、電源が3.3Vで10mA程度流そうと抵抗値を決めました。7セグの直流電流は20mAとなっていますが、MAXで流すと壊れやすくなるため半分にしています。パルスでは100mAまで流せますが、デバッグ中は何が起きるかわからないので直流で計算した方が無難です。入手しやすい抵抗値にすると120Ωと150Ωが近いですが、安全をとって抵抗値が大きい150Ωを選択しています。最初は、PICなので、大電流を流せる(マイコンの中ではI/Oからまたは、I/Oに大電流を流せることで有名)と思いFETが必要ないと思って設計していましたが、マニュアルをみると1portあたり25mAしか流せないことが分かりました。カソード側は7本バラバラなので問題なのですが、アノード側は7個すべて点灯すると10mA×7=70mA必要になるのでFETスイッチングするようにしました。150Ωでは少し暗めでしたので100Ωぐらいがいいのかなぁと思います。次回は、PICのプログラミングについて語ります。masatakePi:Co3が発売されて、もう1.5か月が過ぎようとしています。皆さんは、どのくらいマイクロマウスの開発が進みましたか?さて、本日は、Pi:Co3のデバックの方法について語ります。通常、マイコンの開発のデバックというと、JTAGという端子を使ってマイコン内部のレジスタの内容を見たり書き換えたり途中で中断することができるエミュレータという機械を使っています。マイクロマウスの場合、止まっているときと動ているときの状態があります。止まっているとき、エミュレータを使ってデバックすることが可能ですが、動いているときにエミュレータをもってデバックすると、エミュレータのケーブルに引っ張られて走行の挙動がちがってしまいほしいデータが取得できないことがあります。Pi:Coの場合は、LEDが前方に4つあるので走行中でも0~15の値を表示するとは可能です。0~15しか表示できないため、センサの値を表示することはできません。Pi:Co3のセンサの値は、50~2500ぐらいまで変化することと、4つのセンサがあるからです。Pi:Co3にはシリアル通信やUSBがあるではないか?と思いますが、有線の場合は、先ほどのエミュレータと同じ結果になります。上級者はどのようにしてデバックをしているのかというとデバックの方法の1つして、マイコン内のSRAMやEEPROMなどにログを記録してあとで、吸い出して解析しています。今回は、ソフトウェアによるデバックの方法ではなく、ハードウェアを使ったデバック方法を紹介します。Pi:Coで使用できるLEDは最大6個(前方のLED4つと電源監視用LED2色)。これでは、表示できるものは少ないです。そこで、7セグという表示機能を使用してみました。7セグは7個のLEDで0~9までの数字とそれなりのアルファベットを表示することができます。RT-RX631の余りのピンで7セグの制御することがぎりぎり可能ですが、7セグ1つでは、先ほどと同じように表示できることが少ないため、複数使用したくなります。そこでPIC16F687を使用して、7セグを3つ制御するようにしました。RX631には、I2CやSPIなどの最新の通信機能が内蔵されていますが、Pi:Co3の余りポートに、I2CやSPI機能を用意していないため、むかしながらのUART(SCI)を使ってPICにデータを送っています。7セグに電圧を表示(.はまだ未実装)実験的に製作したため7セグの明るさが少し暗いですが、7セグがあるのとないのとでは別次元になります。2進数を読むことに苦労している方は、お~という感動があると思います。LEDに2進数の”13′′と7セグに”13′′を表示されてみました。いま、この7セグを使って改良したプログラムのデバック中です。他にいろいろと、改造をしているので、続きは後ほど。ROSの組み合わせが出てきません。RaspberryPi3でUbuntu14.04を動いたという報告があったので試してみました。Pi2で起動し、カーネルとブートローダーをアップデータする方法で試してみました。1.RaspberryPi2用のUbuntuイメージ(2015-04-06-ubuntu-trusty.zip)をダウンロードます。私はwindowsユーザーなので、Win32DiskImagerを使ってイメージファイルをMicroSDに書き込んでいます。2.RaspberryPi2用のubuntuなのでスムーズにubuntuが起動します。SSHからコマンドを入力できるように、先にSSHをインストールしました。3.rpi-updateコマンドでカーネルを更新するのでrpi-updateとcurlをインストールします。curlのところでproblemが発生!!証明書がないため怒られているようなのででSSHの確認を無効化することで解決しました。4.rpi-updateの後にrpi-firmwareのリポジトリのコミット履歴から該当するSHAを指定します。指定したバージョンは4.1.19-v7+になります。5.初期RAMディスクの設定をアップデートとeth0を認識させるため以下のファイルを削除します。6.シャットダウンします。ここまでRaspberryPi2で作業です。ここからは先ほど作成したMicroSDカードをRaspberryPi3に挿入してubuntuを立ち上げます。7.パッケージの更新をします。IndigoをROS.orgを参考にインストールします。8.source.listを設定する9.キーの設定10.ROSベースをインストールします。11.rosdepの初期化12.ROSの環境設定13.ROSCORで起動できることを確認しました。ubuntu上でデバイスドライバをコンパイルについては、今度掲載します。