Blog Archives

Raspberry Pi Mouse / Catを中継サーバー経由で遠隔操作

1.はじめに

こんにちは.鈴本です.
Raspberry Pi MouseとCatを遠隔操作するためのシステムを作りました.

  • 同一LANにいなくても操作できる
  • 複数台あったとしても中央集権的に管理できる

などの要求から,中継サーバーを挟んでPCから遠隔地のロボットを操作できるようにします.

2.全体像と要求

全体像は上図のような感じです.
遠隔地のLAN間でも操作できるように,PCとロボットがそれぞれ中継サーバー(ここではRaspberry Pi)につなぎに行きます.
そこでデータなどをやり取りして,遠隔操作を行おう,というものです.

要求は,

  • ロボット,操作PCは静的グローバルIPを必要としない.
  • 中継サーバー1台あれば,複数の通信セッションも開設できる.
  • データを中央で管理できる.
  • LANをまたいだ遠隔操作(NAT超え)も可能である.
  • 可能な限りリアルタイム性を追求する.

です.

3.構成
ロボット

  • Raspberry Pi Mouse / Cat
  • Ubuntu Server 16.04.5 LTS (Xenial Xerus)
  • Node.js v10.14.2
  • ROS kinetic
  • UVC対応カメラ:LOAS MCM-15W or C270 HD WEBCAM

PC

  • Microsoft Windows 10 Home 1803 (64bit)
  • Google Chrome 71.0.3578.80 (Official Build) (64bit)

中継サーバー

  • Raspberry Pi 3 Model B
  • Ubuntu Server 16.04.5 LTS (Xenial Xerus)
  • Node.js v10.14.2

通信プロトコル

  • WebSocket

のような構成にしました.

操作コンソールにはブラウザを用いて,リアルタイム性より通信プロトコルはWebSocketを採用しました.
Webを使うので,サーバーサイドとロボットサイドのコードはNode.jsで実装しています.

4.環境構築
ロボットと中継サーバーへのUbuntu Serverインストール

ロボットも中継サーバーもRaspberry Piなので,公式ページよりRaspberry Pi用のイメージファイルをダウンロードしてきて,SDカードに展開します.
ここでは Unofficial images の Raspberry Pi 3: ubuntu-16.04-preinstalled-server-armhf+raspi3.img.xz (4G image,

続きを読む ›

Posted in Raspberry Pi Cat, Raspberry Pi Mouse, ブログ


shotaのマイクロマウス研修10[オリジナルマウスの仕様を決める]

こんにちは、shotaです。

社員研修として、オリジナルマウスの製作を始めます。

[前回の記事]で、ESP32を使ったマウスを作る!!という目標を掲げました。

今回はより詳細な仕様を決めたいと思います。

仕様決めのルール

設計を楽にするため(妥協するため)、仕様を3段階に分けます。

  • 最低限必要な機能・性能
    • これがないとマウスじゃない
  • 重要な機能・性能
    • 目指すマウスの姿
    • 目標
    • 欲望
  • できればほしい機能・性能
    • あったら嬉しい
    • 妥協できるところ

最低限必要な機能・性能

これがないとマウスじゃないという機能・性能です。実現しないと大会に出場できません。

  • 迷路を直進・旋回できる
    • 実現しないと迷路を走れません
  • 壁を検知できる
    • 実現しないと角を曲がれません迷路を解けません
  • 迷路情報をフラッシュメモリに保存できる
    • 実現しないと競技中にマウスの電源を切れません
  • 電源スイッチがある
    • 実現しないと電源を切るためにバッテリーを引き抜かなければなりません
  • モード切替インタフェースがある
    • 実現しないと電源ONですぐに走り出しちゃいます

重要な機能・性能

目指すマウスの姿です。これらをすべて実現できるように頑張ります。

  • ESP-WROOM-32Dを使う
    • 一番重要な項目です。ESP32はマイクロマウスで使えない。なんてことにならないようにがんばります。
  • WiFi・Bluetoothが使える
    • ESP32の主な機能の一つです。ただ、マウスで使うにあたって注意事項があります。この記事の最後に書きます。
  • 組み込みOS(FreeRTOS)が使える
    • 組み込みでマルチタスクを使ってみます
  • AWSと接続して迷路データをクラウド(AWS)に送信できる
    • 番むずかしい仕様だと思います。
    • これまで使っていた[Pi:Co Classic3]では、マウスとPCをUSBで接続して、迷路情報を[Tera Term]に表示していました。
    • 無線で迷路情報をクラウドに送信し、いつでもどこからでも迷路情報を閲覧できるようにしたいです。
  • DCモータを使う
  • Linuxのターミナルで開発できる
    • (Windows使いたくない)
    • (好きなエディタ(NeoVim)を使いたい)

 

続きを読む ›

Posted in DCマウス研修, ブログ, 研修


shotaのマイクロマウス研修9[オリジナルマウスの製作開始]

こんにちは、shotaです。

社員研修として、オリジナルマウスの製作を始めます。

 

前回までの研修では[Pi:Co Classic3]を動かしていました。

Pi:Coはマイクロマウスキットなので、筐体設計・基板設計は不要です。

マウスに必要なプログラミング要素を学ぶことができました。

 

今回からはいよいよマウス研修の本番です。

筐体・回路・プログラムのすべてを設計・製作します。

 

研修の課題

は、オリジナルマウスで迷路を走る(完走?)、です。

つまり、クラシック競技でもハーフ競技でも、早いマウスでも遅いマウスでも、何でもOKということです。

 

課題がゆるふわだと製作するマウスもゆるふわになってしまうので、まずはどんなマウスを作りたいか(目標)を決めます。

 

どんなマウスを作りたいか(目標)

ESP32を使ったマウスを作る!!!

 

ESP32(ESP-WROOM-32D)って何?

秋月さんの販売ページの言葉を拝借すると、以下のとおりです。

ESP-WROOM-32は、WiFiとBluetoothが一つのモジュールに収まったワイヤレスモジュールです。SPI、UART、I2C、I2S、PWM、GPIO、SDIO、ADコンバータなど、多彩なインターフェースが内蔵されています。モジュールは工事設計認証(技適/TELEC)番号を取得済みですので安心してお使い頂けます。

http://akizukidenshi.com/catalog/g/gM-13318/

詳細な情報は[ESP-WROOM-32Dのデータシート]を読んでみてください。

 

また、秋月さんからはブレッドボードに差し込めるタイプの[開発ボード]が販売されています。

お手頃価格ですので、話題のIoTを始めたい方にはピッタリだと思います。

なぜESP32を使いたいか?

理由は主に3つです。

  • WiFiとBluetoothが使える
  • マウスに必要な機能(GPIO、ADコンバータ、PWM、I2C、SPI、フラッシュメモリ…etc)がある
  • 組み込みOS(FreeRTOS)に対応している

 

続きを読む ›

Posted in DCマウス研修, ブログ, 研修


shotaのマイクロマウス研修8[2018年の振り返り]

こんにちは、shotaです。

社員研修として、弊社が販売するマイクロマウス[Pi:Co Classic3]を動かしています。

前回は全日本マイクロマウス大会の結果について書きました。

[前回の記事はこちら]

 

今回は2018年度のマイクロマウス活動を振り返ります。(10月から始めたので2か月だけですが・・・)

まず、大会直前にやったこと/実装した機能の反省です。[詳しい内容はこの記事にまとめています]

その後、2カ月全体の振り返りをします。振り返りにはKPTを使います。

KPTはプロジェクトを振り返るための手法の一つで、

  • Keep(成功しておりこれからも継続すること)
  • Problem(問題があり改善が必要なもの)
  • Try(問題解決のために挑戦すること)

を軸に活動を分析します。

[KPTとは]

 

大会直前にやったことの振り返り

大会直前にやることリストを作成したので、ドタバタしたマウス作業になってしまいました。(反省)[こちらを参照]

次回からは、余裕を設けてやることリストを作成したいです。

全日本大会の申し込みをする

大会2週間以上前に申し込みできたのでOK。

running_maze_Dataflash_usbをベースに新規作成

壁情報をフラッシュメモリに保存できたのでOK。探索走行を終えた後にマウスの電源を切ることができると、心が穏やかになります。

Git管理を開始する

管理を開始できたのでOK。WindowsのGit環境に慣れていないので、使いやすい環境を用意するか、Linuxでマイクロマウス作業ができるようにしたいです。

探索・最短走行中断処理を入れる

走行中にボタンを長押しすることで、走行モードを抜ける処理を追加しました。しかし、探索を中断する直前の壁情報を消す機能は未実装なので、次回に取り入れます。

ゴール座標設定モードを追加

ボタン操作でゴール座標を変更できたのでOK。プログラムを書き直さなくてもいろんな迷路で練習できるようになりました。

直線走行_最高速度・加速度設定モードを追加

速度・加速度をそれぞれ5段階で変更できるようになりました。残念ながら大会本番では走行に失敗したので、速度・加速度を上げることはできませんでした。

センサ閾値半自動設定モードを追加

ボタン操作でセンサ閾値を設定できるようになりました。しかし、全日本大会ではセンサ閾値を変更すると走行に失敗するようになりました・・・バグがあるかもしれないのでプログラムを見直します。

探索時、既知の区間を走るときは加速度を上げる

既知区間加速は、今やるべきことではない。

 

続きを読む ›

Posted in Pi:Co Classic3 製作記, ブログ, 研修


shotaのマイクロマウス研修7[Pi:Co Classic3 全日本大会に出場]

こんにちは、shotaです。

社員研修として、弊社が販売するマイクロマウス[Pi:Co Classic3]を動かしました。

前回は、マイクロマウス全日本大会に向けてやることリストを作りました。

[前回の記事はこちら]

今回は全日本大会の結果を書きます。やることリストの反省は次回書きます。

 

全日本大会に出場しました

2018年12月1日、2日に開催された[第39回全日本マイクロマウス大会]に出場しました。

競技者はゼッケンをつけます。私はB競技台の7番目に走ります。

初日は会場で練習できます。会場が明るいのでセンサ値が心配でしたが走行できました。本番も期待できそう・・・

練習後はマウスパーティに参加しました。ものすごい人数と料理の数です。

マウスパーティ恒例の田代杯です。ハーフマウスを走らせるイベントです。

シンプルに見えるけども、エンコーダの誤差が蓄積するので意外と難しい迷路(通路)。

 

2日目が大会本番です。クラシックマウスのB競技台で走行しました。

クラシックマウス競技では5分間で5回までマウスを走らせます。私のPi:Coはこのように走りました。

  1. 迷路探索
  2. 最短走行(失敗)
  3. 最短走行(失敗)
  4. 最短走行(成功
  5. 時間切れのため走行なし

ギリギリセーフで最短走行を成功できました。結果は30.8秒です。A競技台では5秒台で迷路を走行しています。それと比べるとまだまだ改善できそうです。

大会の動画はこちらでご覧頂けます。

大会の結果はこちらに記載されています。

[マイクロマウス2018大会結果]

これからの活動について

大会も終わったので研修も終わり・・・ではなく、むしろここからが研修の本番です。2019年の大会に向けて、例年通りDCモータを使ったオリジナルマウスを作成します。

ハーフマウスにするのか、クラシックマウスにするのかは決まっていません。まずは、今回の大会を反省して、良かった点や改善点をまとめようと思います。

 

続きを読む ›

Posted in Pi:Co Classic3, ブログ, 研修


DCマウス研修(inukai編)[21] 最短走行を作りました

こんにちは!
inukaiです。

中部地区大会後制御を少し見直しつつ調整をしたのでその進捗を今回は簡単に書いていければと思います。

今までのスラローム探索は直線時に壁の姿勢制御に頼っていたため、ふらつきながら走っていました。
まず壁姿勢制御なしである程度走れるよう、スラロームを終えたところで角速度0 rad/s、角度π/2 radになるようスラロームの調整をしました。

調整した走行がこちら。まずは連続スラローム(壁姿勢制御なし)から。

置く位置によるオフセットがあるものの、壁の姿勢制御なしである程度の探索が可能になりました。

次にくしの探索。

ちなみにこちらは壁の姿勢制御はありませんが、前壁補正により停止時に壁との距離補正はしています。

 

 

前よりきれいに走れるようになったので、最短走行に挑戦しました。
ターンは探索と同じですが、直線の最高速度4 m/s、加速度9.8 m/s/sにしています。
こちらも壁の姿勢制御はないのですが、ターンをきれいに作っておいたおかげか、短い区間であればパラメータを上げるだけで走行できました。

最後ぶつかっているのは、本番のゴールだと1マス余裕がある分、できるだけはやい速度でゴールを切るためです。
(マウスに負担がかかるからこれからは気を付けます…)

最後は先ほどと同様のパラメータで吸引をした場合です。

吸引による影響でスラロームの軌道がずれているようです。
非吸引で走れている速度なので、あえて吸引する必要もないですが。
大会までにはターン速度を上げて、吸引したうえでのパラメータ調整をしていきたいと思います。

大会前で簡単な進捗報告にはなってしまいましたが、今回はここまで。
ではまた次回

続きを読む ›

Posted in DCマウス研修, DCマウス研修(吸引編), ブログ


shotaのマイクロマウス研修6[Pi:Co Classic3 全日本大会に向けてやること]

こんにちは、shotaです。

社員研修として、弊社が販売するマイクロマウス[Pi:Co Classic3]を動かしています。

前回はマイクロマウス東日本記録会の結果と、全日本大会に向けてやることについて書きました。

[前回の記事はこちら]

今回は全日本大会に向けてやることの詳細を書きます。

やることリスト

こちらが全日本大会に向けてのやることリストです。リストはGitHubのGistで編集しており、[ここ]に公開しています。

それぞれの項目について詳細を書きます。

全日本大会の申し込みをする

参加登録をしないと参加できません。(例年、登録を忘れて参加できなくなった人がいるようです。)

[こちらのページ]で登録しました。すでに登録締め切り日は過ぎています。

 

running_maze_Dataflash_usbをベースに新規作成

Pi:Co Classic3のサンプルプログラムには、迷路の壁情報をフラッシュメモリに保存できるものがあります(プログラム名:running_maze_Dataflash_usb)。

東日本記録会ではフラッシュメモリを使っていなかったので、Pi:Coの電源を切ると壁情報も消えていました。このままではPi:Coが暴走したときに電源を切ることもできないので、サンプルプログラムをベースにプログラムを作り直します。

 

Git管理を開始する

[git]はプログラムの変更履歴を記録・追跡できる分散型のバージョン管理システムです。

gitでPi:Coのプログラムを管理することで、正常に動いた時のプログラムを記録することができます。もし、プログラムを改造してPi:Coが動かなくなったときは、正常に動いた時のプログラムにすぐに戻すことができます。

ほかにもgitの良いところはたくさんあるので、興味のある方は調べてみてください。

 

迷路情報をフラッシュに保存する

サンプルプログラムに搭載されている機能です。

 

探索中断処理を入れる

サンプルプログラムでは、探索を終了したとき(ゴールに到着したとき、スタートに戻ったとき)に壁情報を記録します。そのため、ゴールに到着する直前でPi:Coが止まった場合、それまでに手に入れた壁情報がすべて消えてしまいます。

そこで、探索中断処理を追加し、探索途中で止まった場合も壁情報を保存できるようにします。

注意点としては、Pi:Coが暴走したり止まったりした時は、間違った壁情報を記録している可能性があります。その間違った壁情報を消す機能も搭載しなければなりません。

 

最短走行中断処理を入れる

最短走行中にボタンを押すことで、走行を中断できる機能を追加します。最短走行では壁情報を記録しないので、特別な処理は不要です。

 

ゴール座標設定モードを追加

ボタン操作でゴール座標を設定できる機能を追加します。練習ではゴール座標を頻繁に変えるので、作業効率が上がります。(今までは座標を変えるたびにプログラムを書き直していました・・・)

 

続きを読む ›

Posted in Pi:Co Classic3, ブログ, 研修


DCマウス研修(inukai編)[20] 新しいマウス紹介

こんにちは!
inukaiです。

以前の記事で新しいマウスをお披露目いたしましたが、今回は新旧のマウスを比較しながら新しいマウスについて紹介したいと思います。

金沢草の根大会で一応探索は成功したのですが、初の大会参加や他のマウスを拝見して課題が見つかったため、7-8月に作り直していました。
というわけで、左が新STRONG/ZER0、右が旧STRONG/ZER0です。

具体的な変更点をご紹介します。

まずは機械面から

モータマウントについて。
下の図のように、両方とも長穴を作ることで、ピニオンギアとスパーギアの間のバックラッシュを調整できるようにしてあります。
旧作では、走行時にタイヤが力を受ける方向に対して、タイヤの取付穴が長穴になっており、バックラッシュがずれることがありました。
1回目の試作であったため、いろいろなギア比を試す意図もあったのですが、新作ではここを改善しました。
ギア比を確定し、長穴をモータの取付穴側に変更して、モータを上下にずらすことでバックラッシュを調整できるようにしています。

ギアについて。
まず、軽量化のため材料を真鍮→POMにしています。
ギアのモジュールもM0.3にすることで、バックラッシュも小さくしています。
モータの軸はM2のネジだと少し不安だったのでM3にして強度を高めています。
ギア比は、40/9から71/19に変更しています。

その他の改善点

・基板とマウントの固定:ナットブロックによる固定から3Dプリントの一体型のフレームでの固定。
・バッテリーマウントを製作。
・できるだけ重心と回転中心を合わせる。

回路面について

①光センサ:左右の壁センサをより壁に近づけるように配置を変えて、センサのダイナミックレンジを大きくとれるようにしています。
②スイッチ:エンコーダと光センサによる操作に変更して部品を減らしています。
③後付けのコンデンサの削減:配線のGND強化および、制御と動力の電源分離を意識して配線することでノイズが問題にならなくなったため、なくしています。
④電流センサ:電流フィードバック系を作るより先にやるべきことが多かったので、一旦取り外して最低限の機能にまとめています
その他:配線の修正をしてUEWによるジャンパをなくしています。

 

ということで、旧作からのSTRONG/ZER0の改善点をご紹介しました。
基本性能はほとんど以前の記事の通りですが、車体性能としては下記が変わった点になります。

・車輪:2輪→変速4輪

・ギア比:40/9→71/19

・サイズ 99 mm × 67 mm × 30 mm

・重量 105g (ギアの軽量化や部品削減、3Dプリンタの一体パーツに変更などで重量はほぼ変わらず)

 

続きを読む ›

Posted in DCマウス研修(吸引編), ブログ, 研修


shotaのマイクロマウス研修5[Pi:Co Classic3 全日本大会出場決定!]

こんにちは、shotaです。

社員研修として、弊社が販売するマイクロマウス[Pi:Co Classic3]を動かしています。

前回はスラローム走行するための計算をしました。

[前回の記事はこちら]

 

今回はスラローム走行時の台形制御のシミュレーションについて・・・

ではなく、11月3日に開催されたマイクロマウス東日本記録会について書きます。

 

迷路を完走できました

マイクロマウス全日本大会に出場するためには、地区大会で迷路を完走しなければなりません。

[マイクロマウス各競技と全日本大会の今後について]

 

東日本記録会が今年最後の地区大会のため、自分にとっては最初で最後の大会です。

そして、無事完走できました!

走行時間から分かる通り、最短走行は失敗しています。スラローム走行で壁にぶつかりました・・・

 

全日本大会に向けて

全日本大会は12月1日に開催されます。あと1か月もありません・・・

[第39回全日本マイクロマウス大会のご案内]

残り少ない時間ですが、大会に向けてやることをまとめました。

次回から、このやることリストについてブログを書きます。

 

[おまけ]スラローム走行シミュレーションについて

Googleスプレッドシートでスラローム走行のシミュレータを作りました。

バブルチャート(真ん中の図)を使うと、走行軌跡と角速度の大きさを同時に描画できるので面白いです。

ここまで準備しましたが、大会では失敗しました・・・。プログラムを見直します。

続きを読む ›

Posted in Pi:Co Classic3, ブログ, 研修


DCマウス研修(inukai編)[19] 中部地区大会結果

こんにちは!
inukaiです。

タイトルの通り、週末にマイクロマウス中部地区大会に参加してきました。

時を少しだけさかのぼって大会前日。
ついに僕のところにも妖怪”ピニオンすべり”がやってきました…


ピニオンギアが滑り、位置がずれてしまっているのがわかります。
ということで、一回ばらしてメンテナンス。

縫い糸をほぐして一本だけ取り出し、ピニオンギアの穴に通して圧入します。

 

マウスを組みなおした後で、スラロームの調整して大会に臨みました。
大会は名古屋工学院専門学校で行われました。

試走会会場の様子(懇親会前)。

大会当日の写真は撮り忘れてしまいましたが、本番の走行は下記の通りです。

1走目:スラローム探索でゴール近くで失敗
2走目:保険の超信地旋回で探索するも、旋回時のずれの調整不足で失敗
3走目:スラローム探索でゴール(残り時間十数秒)

となり、最短走行を挑戦することができませんでした。
というわけで、結果はこちらです。
中部地区大会の迷路は探索の歩数が少し長めではあるものの直線が多く探索しやすい迷路ではあったと思います。
しかしながら探索失敗が多かったので、全日本に向けて制御の見直しと調整をしていきたいと思います。

それではまた次回

続きを読む ›

Posted in DCマウス研修(吸引編), ブログ, 研修