隠居エンジニアのものづくり

自転車 電子工作 ラジコン ロボカップジュニア CAD レーザー加工機

マインドストームEV3の後継機? その2 (機体紹介)

履帯型でビジュアル的・メカ的に楽しい

25度傾斜路+バンプの走行シーンです。

サスペンションが機能的に動作していてメカ的に楽しい感じになっているのではないでしょうか?

講習会用ロボットの傾斜路+バンプのクリア

駆動部の確実な動作(制御性が良く、履帯脱落が生じない構造)

バッテリーの持続時間と、ロボットの再現性を確認する為に、手持ちのエネループNi-MH)フルチャージにて周回コースを走行させました。

4時間49分(約350週)走行して最後は傾斜路のバンプを突破する力を失って進行停止となりました(勿論、バッテリー切れまで一度もミスしていません)。

ソフトウエアの醍醐味を楽しめる駆動部に仕上がっていると思います。

講習会用ロボットの再現性・稼働時間確認 1週目

 

講習会用ロボットの再現性・稼働時間確認 4時間49分後の進行停止

次回は、製作についてです。

マインドストームEV3の後継機? その1 (仕様編)

マインドストームEV3

エデュケーションキットの定番”レゴマインドストームEV3の生産が2021年6月30日に終了しました。

レゴマインドストームEV3基本セット”は値段相応(税込み7万円弱)の高性能です。

付属のギヤードモータは回転数が低い領域でも充分なトルク得られる回転速度制御仕様で、簡単に4輪駆動や履帯型のロボットの製作ができます。

ハードとソフトの切り分けが困難な初心者には、確実に動作するハードを準備することは必須であり、ロボットに興味を持って貰う最初の一歩だと考えます。

その意味では、非常に洗練されたキットだったと思います。

後継機

マインドストームの系譜は途絶えたようです。

SPIKEプライムを後継機とするようですが、駆動用に2個付属するギヤードモータのスペックは停動トルク:1,835gf-cm 停動電流:800mA +/-15%とあります。

私がロボット作りに愛用しているPololu 200:1 プラスチックギヤードモータの停動トルクは7,203gf-cm 停動電流は800mAです。

同じ停動電流でトルクが4倍違います。

パワーや効率より小型化に特化して設計されているのだと想像します。

コンパクトなのでデスクトップに展開できる大きさのコースでライントレースのカット&トライができるなど、コンセプトは素晴らしいのですが、25度の傾斜路やバンプなど障害物をクリアするRCJラインには、やや不向きに思えます。

(ちなみにギヤードモータの価格は税込み¥7,645:¥913と8.4倍です。)

この様な状況の中、”EV3の代わりになるエデュケーションキットを作れないか”と言う相談を受けました。

価格は2万円程度なら嬉しいとの事ですが、”SPIKE プライム 基本セット 税込 61,050円”からは結構遠いので、仕様の絞り込みが必要です。

マインドストームの良い所は4輪駆動や履帯型などビジュアル的・メカ的に楽しい&確実な動作によりソフト的にも楽しい事でしょう。

仕様としては

〇履帯型でビジュアル的・メカ的に楽しい

〇駆動部の確実な動作(制御性が良く、履帯脱落が生じない構造)

革新的エデュケーションプログラミングソフトC-StyleC-Styleについては↓)

ロボット教室 0回目  - 隠居エンジニアのものづくり (hatenablog.com)

〇ブロックの様な組み換え機能は省く

(とは言え一応、足回りのユニットはネジ4本(片側2本)で交換できる構造です)

 

と言う事で、ロボット入門の敷居を下げる目的で開発されたダイセン電子工業さんの "α-Xplorer" (税込み8,800円)にメカ的に楽しい履帯ユニットを付ける事で、ライントレースを学習できる講習用ロボットを提案したいと思います。

 

正確な制御・再現性の高い動作の為に

”ソフトウエアの意図”した通りにハードウエアは動かない

走行中のロボットのモータドライバに0%を指示しても”速度0m/s”にはなりません。

実際には、完全な静止状態まで0.1秒程度の時間のズレが発生します。

時間のズレはロボットの重さやギヤ比によって異なります。

この時間のズレを少なくするには、加速・減速の性能が良い”高いギヤ比”のギャードモータを選択する事が効果的です(以下でギヤ比80:1を提案)。

ロボカップジュニア サッカーライトウエイトのモータにいて - 隠居エンジニアのものづくり

この他にも機構の摩擦ロスや”ガタ”なども制御性を悪くする要因となります。

 

駆動部の片持ち

工作用部品の標準は、以下の様にギヤードモータとタイヤを”ねじ固定”するタイプです。

プラスチックオムニの片持ち

この固定方法を”片持ち”と言って、機構設計的には合理性がなければ避けたい固定方法です。

片持ちの場合、ギャードモータのシャフトがロボットの重さを支える事になります。

〇ギャードモータのシャフトと軸受けの摩擦力が大きくなる

〇ギャードモータのシャフトがしなって変形によるパワーロスが発生する

〇シャフト・ハブ(接続部)にストレスが溜まり破損する

などの不具合が発生する可能性があります。

 

両端支持

タイヤを両方から支える固定方法の場合、ロボットの重さを半分ずつ分担して支える事ができます。

ベアリングを用いて支えれば駆動部の摩擦ロスを大幅に軽減し、”しなり”や”遊び”が小さくなる事でソフトウエアの制御をよりダイレクトに反映することができます。

プラスチックオムニ両支持

出前授業にて両支持用ホイールの構造に関する質問がありましたので公開致します。

プラスチックオムニ組立図

タミヤ スポーツタイヤ ホイール 組立図

 

Arduino UNO もどき (Arduinoを用いたI2Cデバイス製作)

ArduinonのI2Cスレーブ動作

ArduinoにはI2Cスレーブデバイスとして動作させる為の関数が用意されています。

これを使えば、I2CモータドライバやI2Cセンサを作る事ができます。

例えば4chラインセンサを作る場合に必要なのはA/Dポート4個とSDA、SCLだけです。

コンパクトに仕上げる為にもATmega328PをArduino化した物を使うのがベターです。

 

Atmega328Pの動作確認

Arduinoブートローダ書込済(3.3V内蔵8MHz仕様)ATmega328Pを用いるのが、お手軽です。

I2Cデバイスに仕上げる為には、確実な動作になるまでのデバッグが必要です。

デバッグの方法としては

① I2Cデバイス側にArduino書込み機能を持たせる

Arduino UNOのATmega328PをI2Cデバイス用ATmega328Pに差し替えてデバッグする

Arduino書込み機能を持ったゼロプレッシャーソケット付き治具にてデバッグする

 

①はコンパクトに作りたい要求に反しますし、I2Cデバイスとして動作し始めると不要になる部分にコストが必要です。

意外とご存じない方が多いのですがソケット・コネクタには抜き差し回数が決まっています。

例えばデータシートに”挿抜保証:100回”と書かれています。

②は、手軽ですがArduino UNOの信頼性が低下(挿抜保証)して行くのは必至です。

そこで③の基板製作がお勧めです。

 

基板製作

エッチング方法については以下御覧下さい。

レーザー加工機でプリント基板を自作する方法 その2(エッチング編) - 隠居エンジニアのものづくり (hatenablog.com)

これで失敗した方々を取材して、失敗の原因特定ができてますので、要点説明を加える事にしました。

失敗しない為のその0

厚紙にレーザー加工して設計そのものに問題が無いかを確認します。

今回は特にゼロプレッシャーソケットのロックハンドルの稼働範囲に干渉する物が無いか確認しておく必要があります。

シリアルインターフェースの6pinコネクタにロックハンドルが当たらないのでOKとします。

パターンの確認

失敗しない為のその1

銅箔面の脱脂をしっかり行ってから黒色ラッカー塗装を行って下さい。

脱脂には、しみ抜きに使うベンジンを愛用しています。

購入から時間が経っていると写真の様に銅の錆も若干発生していますので、脂も錆も纏めてしっかり拭き取って下さい。

ラッカー塗装は薄塗で乾燥してから重ね塗りをしましょう!

一度に厚塗りをすると銅箔面付近が乾きにくくなります。

3日以上乾燥させると歯磨きとエッチングに耐える塗膜の強度が得られます。

基板銅箔面脱脂

失敗しない為のその2

レーザー加工のままでは薄膜が張った状態にあります。

このままエッチング作業を行うと、銅箔が溶けない状態に陥ります。

レーザー加工(歯磨き前)

そこで、使い古しの歯ブラシと歯磨き粉を用いて基板を磨きます。

研磨材の多い歯磨き粉が良く、”クリアクリーン”を愛用しています。

銅箔の輝きがでればOKです。

レーザー加工(歯磨き後)

ここから先の工程での失敗は無い様です。

エッチングの状態確認は基板の後ろから光を当てて透過光で確認すると見やすいです。

銅箔が残っている所は光が通らないので微妙な銅箔残りも見つけられます。

エッチング状態の確認(透過光による確認)

28pinソケット用の穴あけ加工は1ピンでもズレるとソケットが挿せなくなるので慎重を要します。

穴あけ用の治具を両面テープで基板に貼ってから穴あけ加工を行えば、問題になる程のズレは生じません。

再剥離 強接着両面テープ 日東電工No.5000NSを使えば治具を強力に固定できますし、剥がす時にテープが切れないので手間がかかりません。

穴あけ治具

穴あけ加工後は前出のベンジンを隙間に流し込んで5分程漬け置きしてから剥がすと簡単に剥がせます。

治具の取り外し(ベンジン漬け置)

穴の精度は御覧の通りです。

治具を用いた穴あけ加工

片面基板を製作している所(出前授業させて頂いた)で必ず耳にする”ジャンパー線の本数少ない自慢”ですが、ジャンパー線の本数を減らすのが目的になっていて、GNDをジャンパー線で飛ばしているパターンレイアウトを見かけます。

”GNDはジャンパーで飛ばさず、可能な限り細い所は作らない”を第一条件にパターンレイアウトを考えましょう!

同じ部品を使った基板でもパターンレイアウトの違いによって性能が異なります。

今回の基板は4本のジャンパー線を使用します。

基本的に抵抗・コンデンサは面実装タイプで設計していますが、リードタイプを混ぜるとジャンパー線を兼ねる事ができるので柔軟に考えましょう!

ジャンパー線

完成

この”Arduino UNOもどき”でI2Cデバイスの機構確認を充分行ってからI2Cデバイス基板にAtmega328Pを移して動作確認します。

I2Cデバイスに限らず、色々なセンサデバイスを作る事ができます。

これは特定の色を検出した場合にHIレベルを出力する画像処理センサです。

(ちなみに、このセンサはHとSの範囲にて判断していのでRGBやHSB(HSV)の指定がないロボカップジュニアでは使用できません)

バイス製作例:色判定センサ(イメージセンサ使用)

書込み部を持たない小型のサブマイコンボードを作る事も可能です。

 

シリアルインターフェイス部の6pinコネクタはArduino Pro Mini 仕様です。

FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)と組み合わせれば5V動作と3.3V動作の確認ができます。

Arduino UNO もどき回路図 (動作確認治具

はてなブログにはデータを貼る機能がないので、Eagleのプロジェクトを共有できません
が、ジャパンオープンにてブログで紹介した保護回路を画像(回路図・パターン)から製作したチームを見かけました。
お願いしてパターン図を見せて頂いたのですが、そこには全く異なるパターンレイアウトが、”ん~~~~あっ!”これは部品面からのレイアウトでは?

テープを貼ってパターンレイアウトしていた時代からCADへ移行したのでパターン面から描く事に違和感が無かったのですが、最初からCADだと部品を見たまま配置してもライブラリーによって裏面の配置を間違いなく引ける訳ですから、こちらが自然ですね。

と言う事で、このブログのパターンレイアウトはパターン側からの図ですので注意して下さい!

描き起こしする方がいるようなので、パターンの画像を少し多めに貼って見ました。

 

 

 

 

近藤科学シリアルサーボ(ICS)のメリット

ラジコン用サーボモータ

ラジコン用サーボモータは飛行機のラダー・エルロン・エレベータなどの操作や自動車のステアリング操作を行う目的で設計されています。

この為に”60度のスイングスピード”がいかに速いかが性能指標になっています。

電動ラジコンカー用のステアリングサーボの様にトルクの必要な場合は必要電流が大きくてもトルクとスピードの両立を目指しています。

1個使いの場合が殆どですし、動力に使用する電流が比較にならないくらい大きいのでサーボの仕様としては、ある程度必要電流が大きいのは問題になりません。

これをロボカップジュニアのロボットに使用するとサーボの要求する電流によってマイコンがリセットする不具合が発生します。

中立点やフルスイング範囲は送信機で調整可能ですので、サーボ自体の中立点の絶対位置はあまり気になりませんが、プログラムで制御するとなると問題があります。

 

ロボット用シリアルサーボモータ

自立歩行ロボットの脚部を中立点で直立する様に設計して組み立てた時に、中立点が左右で異なったり、フルスイングの範囲が異なるとプログラム以前の問題です。

この為、ロボット用サーボではエンコーダを内蔵して中立点やフルスイング範囲のバラツキが非常に小さくなる様に設計されています。

基本的に自重を支える場所に使われる前提なので高トルクです。

また多軸使用(12軸とか)前提ですので電流も控えめです。

 

何がおいしいのか?

レスキューラインの被災者救出の際に用いるアーム機構の待機位置や操作中の位置を決めるのにサーボ制御プログラムを作ってカット&トライで希望の位置に来るようにチューニングしますが、結構手間暇がかかります。

前回・前々回で紹介したKRS-3301の場合はDual USBアダプターHSとZH接続ケーブル2B(ArduioとKRS-3301を繋ぐケーブルなので別途用意しないで繋ぎ変えるのもありです)を準備、"ICS3.5Manager.exe"を起動して”FREE”ボタンを押すとリアルタイムにサーボホーンの位置をエンコーダで読み込んで表示してくれます。

ポジション取得

この値を使ってプログラムすれば一発で機構位置が決まります。

KRS-3301は指示された値に近づく様に動くので再現性良く指定位置に機構が動きます。

デイジーチェーン接続時が可能ですのでサーボの数が増えてもArduinoのポートは1セット分でOKです。

この際、サーボ全体の必要電流には気を付けて下さい。

 

 

 

近藤科学シリアルサーボ(ICS)をICS変換基板を使わずに制御する方法 (ソフトウエアシリアル)

Arduioでシリアルサーボを制御するメーカー推奨の方法

UNOの場合は”KSBシールド2 ”  + ”ICS変換基板”

Nano、Pro miniの場合は”ICS変換基板”を配線(以下のURL参照)

ICS変換基板 | 近藤科学 (kondo-robot.com)

デフォールトではプログラムの書き込み&シリアルモニタに使うTX、RXを兼用(スライドスイッチ切替)、送受信の切り替えに1個のGPIOが必要です。

この場合はシリアルモニタを見ながらロボットの動作確認を行う時にシリアルサーボは動かせません。

ソフトウエアシリアル・ライブラリを用いれば、この問題を解決をできますが、3個のGPIOが必要になります。

 

非推奨の方法

オシロスコープを見ながらカット&トライして得た結果ですので、安定動作を保証できる代物ではありません。

ハードウエア要求仕様を満たしてない状態ですのでライブラリのバージョンアップの際に動かなくなる可能性があります。

 

ハードウエアは、ICS-SIGとソフトウエアシリアル・ライブラリにてTX指定するGPIOを2.2kΩで繋ぐだけです。

ICS接続回路

以下が、動作確認済みのセットアップ部分ですが、loop() 内で A6はアナログ値を得れますし、13はLチカできます。

つまり、GPIOを1個でICS制御している訳です。


#include <IcsSoftSerialClass.h> 

const byte S_RX_PIN = A6;
const byte S_TX_PIN = 9;

const byte EN_PIN = 13;
const long BAUDRATE = 115200;
const int TIMEOUT = 0; 

IcsSoftSerialClass krs(S_RX_PIN, S_TX_PIN, EN_PIN, BAUDRATE, TIMEOUT); 

void setup()

{
   Serial.begin(115200);
    krs.begin();  
    krs.setPos(1, 7500);
    krs.setPos(0, 7500);
}

注意点としては、EN_PIN = 13;の部分はA6、A7の様な入力専用ピンのアサインでは正しく動作しません。

左:正常  右:EN-PINに入力専用ピンを設定した場合

動作確認に使用したライブラリ : ICS Library for Arduino ver.2 (Posted on 2018.01.19 in)

近藤科学シリアルサーボ(ICS)をICS変換基板を使わずに制御する方法 (ハードウエアシリアル)

Arduioでシリアルサーボを制御するメーカー推奨の方法

UNOの場合は”KSBシールド2 ”  + ”ICS変換基板”

Nano、Pro miniの場合は”ICS変換基板”を配線(以下のURL参照)

ICS変換基板 | 近藤科学 (kondo-robot.com)

デフォールトではプログラムの書き込み&シリアルモニタに使うTX、RXを兼用(スライドスイッチ切替)、送受信の切り替えに1個のGPIOが必要です。

 

KSBシールド2・ICS変換基板を使わない方法

ホビーで時々見かける回路ですが、シリアルサーボが送信した時にArduinoのTXと喧嘩しない様に抵抗で保護する方法があります。

Arduino へのプログラム書込みと兼用の為にスイッチを用いて切り替える所はオリジナルと同じです。

ライブラリーが動作(エラーにならない為)する為に、送受信の切り替えピンを1個設定する必要がありますので”空ピン”を指定して下さい。

お金は節約できますが、ノイズに弱くなるデメリットがある事は念頭に置いてください。

以下の回路にて V+に7.2Vニッケル水素バッテリーを用いてKRS-3301を3個繋いでレスキューロボットを動作させて問題ありませんでした。

ICS簡易回路