2025年6月30日月曜日

知能ロボコン2025参加

6月14、15日、知能ロボットコンテスト2025にロボット「逡巡」で出場しました。

昨年同様、新ROBO-剣用のロボットを最小限の改造で流用、基礎的なプログラムの開発を進めるとともに実運用して問題点を洗い出すという目的でした。

結果は決勝戦まで進出、チャレンジ技術賞を受賞しました。ロボットを1つのロボコンで終わらせず工夫して活用しているということが、技術的チャレンジとして評価されました。

新ROBO-剣参加時と異なる点は以下の通りです:

  • 竹刀を吸引装置と交換(剣の刀身部分も交換、本来は柔軟な竹ひご)
  • 足元のボールが見えるようにカメラの取り付け方を変更
  • スタートスイッチとして使っている無線ゲームコントローラーをロボットに搭載
    (知能ロボコンルール上はロボットのパーツの一部、よって単独型)
  • プログラムの一部 (ボール認識、アームの動き、知能ロボコン競技のための動作シーケンス等)
結果として、アームが不必要に長い上に本来ないはずの大きな質量を先端に増やしてしまっており、ロボットの性能としては良くない状態なのですが、その反面動きも見た目も「本来の用途と違うロボットを改造した」という感じがして特徴的になったのではないかと思います。

決勝戦の映像です

昨年より主にソフトウェアの開発を進め、またセンサーを追加して一応の完成といえる状態まで進めることができました。しかしながら、対象物エリアの全面を探索するための最終的なアプリケーション部分が完成しなかったため、エリア半分ぐらいまでのところでプログラムとしてはシーケンス終了となり、時間を残して競技終了となりました。満点を狙える程にするためには個別の動作、特に対象物探索をシームレスに行うなどしなければならないので、単純に探索範囲を追加するだけでは難しかったと思います。

知能ロボコン参加ロボットとしての昨年からの実質的な改良点は以下のような事項があります:

  • アームのモーション
ボールをゴールへ投入する際、昨年は後方に投げるようにしていました(去年の動画参照)。この動きは実はとても速いのですが、ボールを地面に跳ねさせるため若干不確実性があると考え、今回はゴール前まで持っていき、地面の高さまで下げてから落とすようにしました。このとき、ボールを上に保持する姿勢から下げた姿勢へと単に各々の関節角度を遷移すると、肘と肩が同時に伸展した状態を経由するためにゴールネットに接触してしまいます。そのため、キーフレームをいくつか追加して先に肘を下げるような動きとしました。(映像で見てください)
また、ボールを拾う際にも、吸い付けたボールが更に前方にある壁やボールと干渉しないように、少し引き付けながら持ち上げているのも注意深く見るとわかると思います。
  • LiDARによる自己位置補正
LiDARのYDLIDAR GS2を車体下部前方に追加しました。これはもともと(2年前から)ROBO-剣で相手または床を検出するようにと用意していたものでしたが、今回ようやくロボットに取り付けられた形です。スキャン面は水平面内に向けて、LiDARの最大距離まで壁を検出できるようにしました。
  • 3色のゴールに運搬する処理を実装
昨年は移動制御がちゃんとしておらず、長い距離を移動するとどうせ失敗するだろう、ということで常に最も近い赤ゴールに投げていました。上記、自己位置補正が入ったことで半永久的に動き続けることが可能となったので、色分けして捨てる機能を実装しました。色の認識は、実はボールを拾う際にカメラで位置と同時に色も認識しているため、昨年から変更ありませんでした。
  • 目標地点への移動制御

昨年時点では、PID制御すらフルに実装されておらず、ほぼP制御(本来は目的地から遠いときに速度ベクトル方向を与えるための処理の流用)しかなく、かつ駆動輪モーターのバックラッシによる発振を抑制するために、停止位置誤差も数cm許容していたような状態でした。そのため対象物の拾い上げもよく失敗していました。今回、目標地点付近では位置を目標位置にする普通のPID制御(但しx,y方向独立)を導入し、パラメータ調整をちゃんとすることで、目的地に正確に停止できるようにしました。移動終了判定の誤差が1cm以内となっています。映像でも、一旦止まったように見えてその後じわっと微速で動き出して調整する様子が見えると思いますが、これがPIDの積分項が効いている効果です。

画像をもとにボールを拾う位置に移動するときも同様のことを行っています。これにより確実にボールを拾えるようになりました。やはり自動制御ロボットでは基本的な動作を順に積み上げていかないといけないという好例ではないかと思います。

その他の写真:

今年は、競技中に自分で写真を撮るぐらいの余裕がありました。(動画記録用デジカメはまた別にあり)


今年初めて、パンフレット用のロボット紹介写真とデータがポスターとして掲示されていました。とてもわかりやすくて良かったと思います。


2025年6月29日日曜日

KONDOのロボット用シリアルサーボのためのUSB-ICS変換基板

KONDOのICSとは、 KONDOのロボット用サーボシリーズ(KRS-2500番台、4000、5000番台など)等に採用されている半二重調歩同調・CMOSレベルのシリアル通信規格です。技術資料が公開されています。1本の信号線で送受信を行い、同一バス上に複数のデバイス(主としてサーボ)を接続できます。IDを指定してサーボに目標位置の指令を送る他、現在位置や電流などの状態を取得したり、速度や電流のリミット等の動作パラメータを設定、更にはIDや通信速度等の設定をサーボ内の不揮発記憶に書き込む等の操作が行えます。

この通信はKONDOのロボット用マイコンボードRCB-4やKCB-5等が行う他、PCからシリアルポートとして認識させて直接通信を行うため専用のUSBインターフェースアダプタも市販されています。(KONDO Dual USBアダプター。ICS USBアダプター(No.02043)は販売終了)

今まで、「銀雲雀」「逡巡」「テーブルホッケーロボット」「インタラクティブ・ペンプロッタ」等のロボットでPCから少数のサーボを制御するため使用してきました。

KONDO純正のUSBアダプタはコネクタがUSB-Aで限定されること、RCB用のシリアルとの切り替え式となっていること、また価格もそれなりにする、などの理由でロボットに搭載するには不便なところもあるため、最近になって自作しました。


秋月のFT234X 超小型USBシリアル変換モジュール を使用しました。これにより難しいはんだ付けをすることなくUSBのmicroBコネクタを使うことができます。このモジュールには4本のピンに加えて、基板裏面のパッドにもう一つ、FT234のCBUS0端子が出ています。このCBUS0端子はI/Oであり、機能を選択して使えます。工場出荷時にはTXDENとなっています。

TXDENはRS485等のバスでの送信を許可するタイミングを出力する機能で、送信データのスタートビットの1ビット前からストップビットまでの間ONになる、となっています。ICSの半二重シリアル通信も「送信時のみ出力をONにする」という点で同じなので、スリーステートバッファの74HC126をこの信号で制御して使います。ブレッドボード上で確認して最大速(1.25Mbps)の通信速度でも動いたので、採用しました。


この基板はFT234Xモジュール基板とぴったり2枚重ねにして接続して使用します。ピンヘッダ接続用の4本のピンはそのまま上下に導線を通してはんだ付けできるのですが、CB0端子は表面にパッドがあるのみなので、ここははんだごての先が入る程の大きめのスルーホール穴を開けておいて基板同士を直接はんだ付けするようにしました。
なお本来このように基板に基板を直接ハンダ付けするような場合はM5Stampのように端面スルーホールにするとよりはんだ付け作業がしやすくはんだ付け状態も確認しやすいので確実なのですが、端面スルーホールは基板製造を注文する際に追加料金が発生するため、このような方法を採用しました。

上の回路は信号線とGNDのみを接続するものなので、実際にサーボに接続するにはサーボの電源を別途接続する必要があります。「逡巡」などのロボットではサーボハブ基板を作り、これにその機能を持たせています。(但し2025知能ロボコン時点では動作実績の確認が不十分だったため、このICS変換基板の採用は見送り、純正のUSB DUALアダプターを載せていました。)


(緑の基板左にある1個だけ離れた3ピンコネクタが信号線用で、左のUSB変換基板と接続する。残りのピンヘッダはサーボ、白いコネクタはサーボ電源)

2025年6月13日金曜日

VSCodeで[Enter]キーが単語補完機能に横取りされないようにする

Visual Studio Codeの単語補完機能は有用ですが、エディタの使い方によってはかえって文字入力の妨げになるケースもあります。

例として、新しい入力行の末に

len

と入力するとき、"len"が候補になく"length"が第一候補にある場合、最後に改行のenterを入力すると"length"に補完されてしまい、かつ改行文字の入力が1回無効化される形になります。これをさせず単に文字入力をするには、[Enter]入力の前にEscキーを押す等の追加の操作が必要となります。

これは [Accept Suggestion On Enter] という設定項目で制御されています。(control+[,]設定タブでacceptSuggestionOnEnterを検索)

この項目はデフォルトでonになっていますが補完を入力するキーには他に[Tab]があるため、こちらを使う場合は上記設定をoffにしてもよく、私はこの設定で使うことにしました。

2024年10月6日日曜日

マイコン時計 静音化の検討

現状のHWでは稼働時(回転させて時間を見る時)に騒音が大きいという問題があります。これは主に駆動部のギヤから発生しています。モーターを横置きにしているため回転方向を90度変換する必要があり、そこにクラウンギヤを使用しているためです。一方でベルト(輪ゴム)とプーリによる駆動、ベアリングの回転音はほとんどなく静かです。

何故モーターが横置きなのかといえば、扁平な形状(円筒の高さが低い)のDCブラシモーターで安価に入手できるものがなかったためです。ブラシレスDCモーターであればこれに合う形状をしたものが多くあり、これを使うことを考えます。

電気電子機器の冷却用に使われるDCファンがドライバ込みでパッケージ化されており使えるかもしれないと思いましたが、トルクが十分でなかったので不採用としました。

ドローン(航空機)用の小さい3相ブラシレスDCモーターで使えそうなものがあったので、購入して試してみました。

出力、寸法共に良さそうなので、これで次のバージョンを設計します。 

上の実験では市販のドライバ基板(R/C用ESC)を用いました。性能自体は良いのですが、安全のため電源ON後は一旦スロットルをアイドルに入れてからしか回らず、またそれを知らせるためにしばらく回らずモーターから(回転子またはコイルの振動により)音を出す機能が入っています。時計に使うには不便ですので、DCブラシレスモーター駆動回路も適当なドライバICと共に自作回路基板に載せることにします。

2024年9月29日日曜日

KitMill BT200用の新PCセットアップ (Windows11でダウンロードしてコピーされたファイルが読まれない問題)

 今までThinkpad X60sで運用していましたがWindows10にアップデート後徐々に動作が怪しくなり、また起動時ファンエラーが出るなどハードウェアの故障も疑われるようになってきた上、ついに正常にログイン・ログアウトができなくなったため入れ替えることにしました。

中古PCショップで偶然見つけたARROWS Tabを購入しました。Windows11で新たに入ったと思われるセキュリティに対する設定が必要でした。

KitMillはCNCv4というソフトウェアを使用し、更に機械のパラメータ(送りネジとモーターのステップ等)やUI言語対応の設定ファイルをダウンロードしてコピーするように指示があります。

Windows11ではインターネットからダウンロードされたファイルはたとえデータファイルであっても(信頼性を担保できないので)一旦コンピューターのプログラムからのアクセスが制限されるようで、ファイルの[プロパティ]を見るとその旨が表示されていました。

ファイルの[プロパティ]から、上記の説明が書かれている部分で許可するチェックを入れて[OK]で適用することで読めるようになり、設定が適用されて使えるようになりました。

2024年9月17日火曜日

新版モータードライバ

 モータードライバ基板の新版を組み立てました。ロボット「逡巡」の2号機に搭載し、問題なく動作しました。


些細な問題として、新旧基板でモーターコネクタの極性が逆になりました。これは旧版を組み立てた際にコネクタのロック解除レバーが押しにくいことに気づき、組み立て段階で部品取り付け方向を逆にしていたためです。新版では回路図(部品の結線)は同じで基板設計だけ直したため、逆になりました。

またもう一つ、ハーフブリッジゲートドライバICのIRS2003IR2302Sをどちらでも使えるような設計にしたのですが、そのためジャンパ設定の説明をシルク印刷したものが逆でした。
この2つのICは機能とピン配置はほぼ同じで入力信号の形式が異なっています。
IRS2003: HINと~LIN:  ハイサイド・ローサイドを別々に指定する
IRS2302S: INと~SD: 上下どちらのFETをONするかと、シャットダウン信号
本回路の使い方ではフルブリッジで正転・逆転・ブレーキのいずれかとします。そのためIRS2003の場合はHINとLINに同じ信号を入力すれば良いのでこの2つをショート、IRS2302Sの場合はシャットダウン信号をまとめて別の信号で制御する、という風にして両対応できるようにした、という経緯でした。


知能ロボコン2025参加

6月14、15日、知能ロボットコンテスト2025にロボット「 逡巡 」で出場しました。 昨年同様、 新ROBO-剣 用のロボットを最小限の改造で流用、基礎的なプログラムの開発を進めるとともに実運用して問題点を洗い出すという目的でした。 結果 は決勝戦まで進出、 チャレンジ技術賞を...