Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
きびだんご株式会社
常時更新中 Last updated 09/09/2020
はじめに 【注意】初期不良対応は受け取りから7日間となっておりますので、商品が届きましたら必ず中身をご確認下さい。
お問合せやご質問はこちらにお願い致します。メールでのお問い合わせ先:cs@kibidango.com
Last Updated: 07/30/2021
"life is like a box of Bittle." 🔍
組み立て済みのバイトルが届いた場合は、首を胴体に差し込んで、膝を自然な角度に曲げる必要があります。巻き線を膝側から肩側に引きずるようにして、膝関節が回転したときに圧迫感が出ないようにします。
電池のボタンを2~3秒長押しすると、電源のオン/オフができます。赤外線リモコンの電池の絶縁シートを抜くと、バイトルの動きをコントロールできるようになります。
組み立て済みのバイトルは、あくまでも粗調整されたものです。Arduino IDEをセットアップして、バイトルのセンサーを較正し、最高のパフォーマンスを発揮するためにジョイントを微調整する必要があります。
摩擦は、歩行時のダイナミックなバランスに重要な役割を果たします。シリコン製のつま先カバー(ソックス)は、グリップ力を向上させることができますが、テスト環境の予測不可能な表面の違いを増幅させてしまいます。そのため、通常の使用では、歩行を調整したり、特定の作業を行うために摩擦を必要とする場合を除き、ソックスなしでバイトルを走らせることをお勧めします。
組み立てられていないバイトルのキットを注文した場合、挑戦的で楽しいパズルを解かなければなりません。バイトルの設計論理を理解した上で、ロボット工学について学ぶことができます。詳しくは次の章をご覧ください。
工具
メモ
マイナスドライバーとプラスドライバー
For M2 (diameter = 2mm) screws M2(直径=2mm)のネジ用
Arduino IDEを搭載されたパソコン
最新の Arduino IDE をインストールしてください
USB充電ポート
5V 1Aの出力で十分です
工具
メモ
Soldering iron w/ accessories はんだこて(付属品付
For modifying the PCB if you are a hacker! プリント基板の改造には、ハッカーのような方におすすめです。
3D printer w/ accessories 3Dプリンターw(付属品付
Add your special design 特別なデザインの追加
Arduino/Raspberry Pi kit Arduino/Raspberry Pi キット
Add more gadgets to Bittle バイトルへのガジェット追加
Multimeter マルチメーター
Test and debug テストとデバッグ
Oscilloscope 発振器
Test and debug ストとデバッグ
Hot glue/super glue ホットグルー/スーパーグルー
Avoid using them. Bittle is designed to be glue-free! 使わないようにしましょう。バイトルは接着剤を使わないように設計されています
"Everything is connected." 🤝
"The whole is more than the sum of its parts." 🔩
実際に組み立てている動画はこちら。
以下のパーツを完成させて、後の章でまとめることができます。
ボディ
アッパーパーツ
Lower leg
頭部
肩サーボ
使用するパーツ:
首パーツ x 1
サーボアーム x 1
M2x8 ネジ x 2
下記の写真のようにサーボの歯が上に向くようにしてください。
ネジを二つ左右にしめてください。締めすぎには注意してください。
完成図
使用するパーツ:
組み立てた首部分のパーツ
シャーシ
プレート x 2
サイドショルダー x 2
シャーシには向きがあります。"A1"のマークがあるほうが後ろ(尻尾)です。
後ろのひっかけ部分を先に挿入してから、前のフックを音が鳴るまで優しく押し込んでください。
サーボやボディへのダメージを緩和するために衝撃が加わるとすぐ外れる仕様になっています。
シャーシに肩のパーツを挿入してください。その後、プレートを挿入し反対も同様に肩のパーツを挿入してください。
完成図
使用するパーツ
脚部パーツ x4
M2x8ネジ x 8
右側の脚部は以下の写真のように組み立てます。前足と後ろ足は同じ形になります。
長いケーブルがついたサーボを使てください。サーボの挿入する向きがありますのでご注意ください。
左側の脚部と右側の脚部でサーボを挿入する向きが異なります。
Materials:
顎パーツ x 1
頭部パーツ x 1
P1S サーボ (短いケーブル) x 1
M2x8ネジ x 2
サーボを写真のように顎パーツに挿入します。サーボのケーブルの向きに注意してください。サーボを挿入後ネジをしめてください。
次に頭部パーツを装着して完成です。
Materials:
P1S サーボ (短いケーブル) x 4
M2x8ネジ x 8
頭部
ボディー
脚部 x 4
下の写真のようにサーボを挿入し、組み立てたパーツを組み合わせてください。
側面図
トップ図
サーボを正しく挿入できていることを確認したらサーボと肩の部分をネジで固定してください。この時まだ、サーボのモーター部分のねじ止めは行わないでください。
"Who loves fried chips?" 🍟
4.1. NyBoard
説明書の「NyBoard」について内容を見つけて、の説明を読んでください。
注意!誤操作によるNyBoardに損害を与える可能性があります!
I2C装置(ジャイロ/加速度計,サーボドライバ, 外部暗号化EEPROM)のマスターをスライドスイッチで変更します。
デフォルトの "Arduino "では、NyBoardはオンボードのATmega328Pをマスターチップとして使用し、"Pi "では、I2Cポート(SDA、SCL)で接続された外部チップをマスターチップとして使用します。
どうしても起動できない場合は、もしかしたらスイッチを誤って「Pi」にしてしまったのかもしれません。
NyBoardは7.2Vのバッテリーでメタルギアサーボを直接駆動します。満充電時には8.4Vになります。NyBoardで自作のプラスチックギア付きサーボを直接駆動することはできません。
下記のサイトよりお使いのコンピューターのOSに対応するArduino IDEをダウンロードしてください。
最新バージョンのArduino IDEをダウンロードしてください。
Arduino IDEを起動したら、"Tools"タブの"Manage Libraries"をクリックしライブラリーマネージャーを開いてください。下記のライブラリーをインストールしてください。
Adafruit PWM Servo Driver (最新バージョン)
IRremote (バージョン2.6.1)
QList (任意)
IRremc
ファインダーからDocuments/Arduino/libraries/IRremote/src/IRremote.hのファイルをテキストエディタなどで開き、#define DECODENECと#define DECODE_HASHだけを1と入力し、それ以外は0と入力してください。
プログラミングスペースを確保するため、上記の操作を必ず行ってください。
下記のリンクからGitHub上のZipファイルをダウンロードしてください。ダウンロードしたらZipファイルを展開してください。
次にArduino IDEの”スケッチ”のタブから”ライブラリーをインクルード”内の”Zip形式のライブラリーをインストール”をクリックしてください。
フォルダ名”Arduino"内の"MPU6050"と12Cdev"のフォルダを追加してください。
次に"ツール”タブから使用するボード”(ボード:Arduino Uno)”を選択してください。予め選択されている場合もあります。
NyBoardのブートローダが崩壊した場合のみ
すべてのNyBoardは出荷前に機能チェックを行っているため、互換性のあるブートローダがインストールされているはずです。しかし、まれにブートローダが壊れてしまい、Arduino IDEからスケッチをアップロードできなくなることがあります。
スケッチのアップロードができないのは、必ずしもブートローダのせいではありません:
USBボードがデバイスからの大きな電流を検知して、USBサービス全体を停止させることがあります。この場合、USBサービスを再起動するか、コンピュータを再起動する必要があります。
UARTアップローダにFTDI USB 2.0のドライバをインストールする必要があります。
正しいポートを選択していない。
接触不良です。
運が悪かった。明日改めて試してください。
どうしてもブートローダを焼き直したいと思う場合は:
NyBoard V1_*の場合は、Arduino IDEのツールメニューでArduino Unoを選択するだけです。
プログラマーをNyBoardのSPIポートに接続します。接続するときは方向に注意してください。しっかり接触しているか確認してください。
ブートローダを書き込みます。初めての場合は、数本のパーセントバーが100%になり、メッセージが出なくなるまで1分ほど待ちます。
USBドングルを付属のケーブルでコンピューターに接続してください。USBドングルを差し込む向きに注意してください。DTRと記載されているピンがボードのDTRに挿入されるように差し込んでください。バッテリーはあらかじめ電源がオンになった状態で本体に接続しといてください。
バッテリーが未装着または電源が入っていない場合「ピー」と音が鳴ります。
USBドングルとコンピューターが正常に接続されたらツール>シリアルポート>/dev/cu.usbserial-xxxx(Macの場合)またはCOM#(Windowsの場合)をクリックしてください
接続してもポートが表示されない場合、CH340チップ用のドライバーをインストールする必要がある場合があります。
4.2.6
下記のリンクからライブラリーのインストールと同様にZipファイルをダウンロードをしてください。ダウンロードする際はすべてのファイルを一括でダウンロードしてください。コードのバージョンが異なると正常に動作しない場合があります。
ダウンロードしたZipファイルを展開してください。展開したファイルはOpenCat-mainというフォルダが表示されます。ファイル名をOpenCatに変更してください。
ファイル構造は以下のようになるようにしてください。
・ModuleTests フォルダには、いくつかの testX.ino コードがあります。これらをアップロードして、特定のモジュールを個別にテストすることができます。test "という接頭辞のついた testX.ino スケッチを開いてください。(最初のテストスケッチとして testBuzzer.ino を使うことをお勧めします。) ・シリアルモニターを開き、ボーレートを設定します。NyBoard V1_*の場合、ボードはArduino Unoを選択し、コードとシリアルモニターの両方でボーレートを115200に設定してください。 ・コードをコンパイルしてください。エラーメッセージは出ないはずです。スケッチをボードにアップロードすると、TxとRxのLEDが急速に点滅するのが見えるはずです。点滅が終わると、シリアルモニタにメッセージが表示されます。 ・コマンドを入力する前に、"No line ending "が設定されていることを確認してください。そうしないと、目に見えない '\n' や '\r'の文字が解析機能を混乱させてしまいます。
Linuxマシンでは、「permission denied」のようなエラーメッセージが表示されることがあります。Arduinoスケッチをコンパイルするためには、avr-gccに実行権限を付与する必要があります。
sudo chmod +x filePathToTheBinFolder/bin/avr-gcc
さらに、/bin内のすべてのファイルに実行権限を追加する必要があるので、次のようにコマンドを実行します
sudo chmod -R +x /filePathToTheBinFolder/bin
NyBoard と Arduino IDE を接続する USB/Bluetooth アップローダがあれば、NyBoard と通信してバイト単位で変更できる究極のインターフェイスになります。
NyBoard と Arduino IDE を接続する USB/Bluetooth アップローダがあれば、NyBoard と通信してバイト単位で変更できる究極のインターフェイスになります。
NyBoard のシリアル通信プロトコルを定義しました:
すべてのトークンは、その解析形式を指定するために、1つのAsciiエンコードされた文字で始まります。これらの文字は、大文字と小文字を区別し、通常は小文字である。
cコマンドやmコマンドのように、いくつかのコマンドは組み合わせることができます。 例えば 連続した「m8 40」、「m8 -35」、「m 0 50」は、「m8 40 8 -35 0 50」のように表記できます。同じ種類のコマンドは4つまで組み合わせることができます。正確には、文字列の長さは30文字以下でなければなりません。コード内で制限を変更することもできますが、シリアルバッファのシステム的な制約があるかもしれません。
hのように実装されていないトークンもあります。
Piをマスターコントローラーとして使用する場合のみ。バイトルはPiがなくても動きます。
NyBoardにラズペリーパイを適用する場合は2x5(10ピン)を利用してください。ペトイビトルでの推奨モデルはPi 3A+です
NyBoardにラズペリーパイを適用する場合は2x5(10ピン)を利用してください。ペトイビトルでの推奨モデルはPi 3A+です
ソケットに半田付けするとペトイビトルのカバーをつけれなくなるのでご注意ください。ソケットに半田付けするとペトイビトルのカバーをつけれなくなるのでご注意ください。
Ascii: takes 2 bytes to store Ascii characters '6' and '5'
Binary: takes 1 byte to store value 65, corresponding to Ascii character 'A'
Ascii: 2バイトでAscii文字の'6'と'5'を格納します。
Binary: 1バイトでAscii文字の'A'に相当する値65を格納します。
What about value -113? It takes four bytes as an Ascii string but still takes only one byte in binary encoding, though the content will no longer be printable as a character.
値-113はどうでしょうか?Ascii文字列では4バイト必要ですが、バイナリエンコーディングでは1バイトしか必要ありません。 明らかに、バイナリエンコーディングの方がAscii文字列よりもはるかに効率的です。
しかし、転送されるメッセージは、直接人間が読めるものではない。OpenCatのリポジトリには、NyBoardとPiの間のシリアル通信を処理できる簡単なPythonスクリプトardSerial.pyを置いています。
ラズパイのターミナルに”sudo raspi-config”を打ち込みます。
インターフェースオプションのもと、シリアルを選択しシリアルログインシェルを無効にしてシリアルインターフェースを有効にしてください。
Run raspi-config with sudo privilege: sudo raspi-config
.
Find Interface Options -> Serial Port.
At the option Would you like a login shell to be accessible over serial?
select 'No'.
At the option Would you like the serial port hardware to be enabled?
select 'Yes'.
Exit raspi-config and reboot for changes to take effect.
Sudo raspi-config を sudo 権限で実行します。
インターフェースオプション」→「シリアルポート」を探します。
Would you like a login shell to be accessible over serial?で「No」を選択します。
シリアルポートのハードウェアを有効にしますか」というオプションで「Yes」を選択します。
raspi-configを終了して再起動すると、変更が反映されます。
If you plug Pi into NyBoard's 2x5 socket, their serial ports should be automatically connected at 3.3V. Otherwise, pay attention to the Rx and Tx pins on your own AI chip and its voltage rating. The Rx on your chip should connect to the Tx of NyBoard, and Tx should connect to Rx.
PiをNyBoardの2x5ソケットに接続した場合、シリアルポートは自動的に3.3Vで接続されるはずです。そうでない場合は、自分のAIチップのRxとTxピンとその電圧定格に注意してください。チップの Rx は NyBoard の Tx に、Tx は Rx に接続する必要があります。
If you want to run it as a bash command, you need to make it executable:
bashコマンドとして実行したい場合は、実行可能な状態にしてください。
chmod +x ardSerial.py
You may need to change the proper path of your Python binary on the first line:
chmod +x ardSerial.py 1行目でPythonバイナリの適切なパスを変更する必要があるかもしれません。
#!/user/bin/python
NyBoard has only one serial port. You need to UNPLUG the FTDI converter if you want to control Bittle with Pi's serial port. NyBoard にはシリアルポートが 1 つしかありません。PiのシリアルポートでBittleを制御するには、FTDIコンバーターを外す必要があります。
Typing ./ardSerial.py <args>
is almost equivalent to typing <args> in Arduino's serial monitor. For example, ./ardSerial.py kcrF
means "perform skill crawl Forward".
./ardSerial.py を入力することは、Arduinoのシリアルモニタでを入力することとほぼ同じです。例えば、./ardSerial.py kcrFは「perform skill crawl Forward」という意味です。
Both ardSerial.py and the parsing section in OpenCat.ino need more implementations to support all the serial commands in the protocol.
ardSerial.pyとOpenCat.inoの解析セクションの両方とも、プロトコルのすべてのシリアルコマンドをサポートするために、さらに多くの実装が必要です。
Though you can program NyBoard directly with the USB uploader, external power is required to drive the servos. NyBoard は USB アップローダで直接プログラミングできますが、サーボの駆動には外部電源が必要です。
NyBoard requires 7.4~8.4V external power to drive the servos. We include our customized Li-ion battery with built-in charging and protection circuit in the Bittle kit. Short press the battery's button will show its status. Blue light indicates it has power, and red means the power is low. Long press the button for 2.5 seconds to turn on/off the battery.
NyBoard はサーボを駆動するために 7.4~8.4V の外部電源が必要です。バイトルのキットには、充電回路と保護回路を内蔵した当社オリジナルのリチウムイオン電池が付属しています。電池のボタンを短く押すと、電池の状態が表示されます。青色は電源が入っていることを示し、赤色は電源が低下していることを示します。ボタンを2.5秒長押しすると、バッテリーのオン/オフができます。
Be careful with the polarity when connecting the power supply. The terminal on NyBoard has an anti-reverse socket, so you won't be able to plug in the wrong direction. 電源を接続する際は、極性に注意してください。NyBoard の端子には逆転防止用のソケットが付いていますので、間違った方向に接続することはありません。
逆に接続すると、NyBoard が破損する恐れがあります!
It can last hours if you're mainly coding and testing postures, or less than 30 mins if you keep Bittle running.
The battery light will turn red when the power is low. The power will be cut off automatically.
主にコーディングや姿勢のテストをしている場合は何時間も持ちますし、Bittleを動かし続けている場合は30分以下になります。 電池残量が少なくなると、バッテリーランプが赤くなります。自動的に電源が切れるようになっています。
Use a 5V-1A USB charger to charge the battery. We don't recommend using fast chargers. The battery will NOT supply power during charging. Keep the battery in your sight when charging.
バッテリーの充電には、5V-1AのUSB充電器を使用してください。急速充電器の使用はお勧めできません。充電中は、バッテリーから電源が供給されません。充電中は、バッテリーを目の届くところに置いてください。
After playing, remember to turn off the battery. It's recommended to unplug the battery from the NyBoard's terminal. プレイ後は、忘れずにバッテリーをオフにしてください。NyBoard の端子からバッテリーを抜くことをお勧めします。
を参照してください。
Arduino IDEのダウンロードサイトは
Zipファイルのリンクは
●
ISP(In-System Programmer)を選択します。上のスクリーンショットでは、2つのポピュラーなプログラマーが表示されています。ハイライトされている USBtinyISP は安価なブートローダーで、チェックされている は通常の Arduino を ISP として使用できます。
Linuxの場合、アップローダがコンピュータに接続されると、シリアルポートリストに「ttyUSB#」が表示されます。しかし、アップロード時にシリアルポートエラーが発生することがあります。その場合は、シリアルポートに許可を与える必要があります。このリンクにアクセスして、指示に従ってください:
Mac:
Windows:
We keep updating the codes as an open-source project. You can star and follow our to get the newest features and bug fixes. You can also share your codes with worldwide OpenCat users.
Zipファイルのリンクは
通信プロトコルにあるようにArduino IDEのシリアルモニターは全てアスキー文字列でエンコードされています。一方でラズパイなどのマスターコンピューターは追加のコマンドがあります。その大部分はエンコードを効率化するためバイナリ文字列で組まれています。Nybbleとラズパイのシリアル通信についてはパイソンスクリプトに簡易的に示してあります。
Obviously, binary encoding is much more efficient than the Ascii string. However, the message transferred will not be directly human-readable. In the OpenCat repository, I have put a simple Python script that can handle the serial communication between NyBoard and Pi.
"A miss is as good as a mile." 🎯
Bittleが正常に動作するためには、キャリブレーションが不可欠です。
これまでのセクションでは、Bittleのボディパーツの準備をしましたが、サーボにネジ止めを行っていませんでした。これは、ボディパーツをサーボに正しい角度で取り付けるためのキャリブレーションが必要だからです。
サーボを取り付ける前にキャリブレーションを行わないと、ありとあらゆる方向に回転したり、スタックして動かなくなったり、サーボやボディにダメージを与えるなど、ロボットの手脚が正常に動作しなくなる可能性があります。
キャリブレーションは以下のステップで行われます。
定数を基板に書き込む
回路の電源を入れ、サーボを自由に回転させて、角度をゼロの状態にする/キャリブレーションを行う
サーボにボディパーツを取り付ける
ボディパーツの配置を微調整し、キャリブレーションの結果を基板に保存する
必ずバッテリーの電源を入れてからご使用ください。
The logic behind calibration can be found on the OpenCat forum. The principles are the same for Nybble and Bittle.
キャリブレーションの原理はOpenCatのフォーラムに書いてあります。ここではNybbleを例に説明していますが、原理はNybble、Bittle共一緒です。
ジョイントマッピングや回転方向、センサーピンといった組み立てに関する定数の大部分はOpenCat.hに保存されています。
MPU6050のオフセットやジョイント補正などのパラメーターはリアルタイムで基盤のEEPROMに保存されています。
姿勢、歩き方などのスキル関係のデータはInstinctBittle.hに保存されています。オリジナルのスキルを追加することも可能です。
WriteInstinct.inoの主な役割は定数を基盤またはI2C EEPROMに記録し、キャリブレーションデータを保存することです。WriteInstinct.inoは後でメインスケッチのOpenCat.inoに上書きされます。
OpenCatフォルダ内にあるOpenCat.inoとWriteInstinctフォルダ内のWriteInstinct.inoを開いてください。使用するボードがArduino UNOであることと適切なUSBポートが選択されていることを確認してください。OpenCat.hの”#define NyBoard_V*_*”における*の部分に対応するNyBoardのバージョンを入力してください。バージョンはボードのNyBoard上のロゴの横に記載されています。
シリアルモニタを開き、"No line ending"と"115200 baud"となっていることを確認してください。
NyBoard上のダイアルスイッチがPiではなく、Arduinoになっていることを確認してください。
WriteInstinc.inoをAruduino IDE上でマイコンボードに書き込み(アップロード)後、シリアルモニタを開いてください。開くと以下のような文言が出てきます。
Reset all joint calibration? (Y/n)
初めてPetoi Bittleで遊ぶ方は”Y”と入力してください。
Do you need to update Instincts? (Y/n)
”Y”と入力してください。
Calibrate MPU? (Y/n)
”Y”と入力してください。
プログラムが停止した場合はシリアルモニタを閉じ、NyBoard上のリセットボタンを押して再度試してください。
上記動作を終了後、OpenCat.inoをアップロードしてください。
バッテリーとサーボが正しく接続されていることを確認してください。
サーボのギア部分には何も接続しない状態にしてください。
リモコン上の"EQ"ボタンを押してください。
モーターが動いたのを確認後、作成した腕部分の黄色いサイドを肩のサーボに接続してください。体に対して垂直になるように装着してください。
装着中にサーボを回転させないように注意してください。
前腕部分も同様に先に装着した腕に対して垂直になるように接続してください。
同封されているL字のチューナーを用いて適切に接続できているか確認してください。
次に、ヘッドサーボの出力軸をネックのサーボアームに差し込みます。頭はなるべくまっすぐ前を向くように接続してください。
Bittleの体を空中に浮かせます。 IR remote controllerの 「1」ボタンを押して、Bittleに数回の "ストレッチ "をさせ、手足の動きに問題がないかを確認します。 直感的に動いているようであれば、平らな床の上に置いてください。 IR remote controllerのアクションボタンを何度か押して、Bittleを動かし、動きに違和感がないかを確認します。 その後、「EQ」ボタンを押すとキャリブレーションモードに戻ります。 上肢と下肢が直角になっているか、下肢が地面と平行になっているかを観察します。 足と頭の位置が合っていれば、マイナスネジを使って手足と頭をサーボに固定します。 そうでない場合は、手足を外して何度かキャリブレーションを繰り返します。 どうしてもうまくいかない場合は、6.3のより正確なキャリブレーションを行う必要があります。
初期位置はサーボ可動域の中央の場所として定義されています。
キャリブレーションモードに入るとすべてのサーボが初期位置に戻ります。脚部に関しては反時計回りの方向が正の向きとなります。
ペトイビトルで使用してるサーボには25個の歯があるので、1つの歯はおよそ14.4度となります。つまり、正確に90度にはなりません。
Arduino IDEを用いたキャリブレーションはWriteInstinct.inoまたはOpenCat.inoのファイルで実行可能ですが、WriteInstinct.inoのファイルで実行することを推奨しています。
WriteInstinct.inoまたはOpenCat.inoのファイルをアップロードしてください。そしてシリアルモニターを開き"c"を入力してください。
入力後サーボが初期位置まで戻ります。サーボが初期位置に戻ると本体からビープ音が鳴り、以下のような表が表示されます。
1列目はジョイントインデックス、2列目はキャリブレーションのオフセットを表しています。
NyBoardにおけるキャリブレーションのフォーマットは"cIndex Offset"です。また、それぞれの部位に対応するインデックスは以下の図の通りです。
例
"c8 6"と入力した場合8と割り振られたサーボが6度反時計回りに回転します。
オフセットの値が9以上になる場合はサーボを回転させないように一回取り外してください。そして、体に対して垂直になるように接続しなおして下さい。これによりオフセットの値がちいさくなります。
キャリブレーションが正確に行われたか確認するために付属の接続チューナーを下図のようにあわせてください。
キャリブレーション終了後、"s"と入力して保存します。保存しないで終了した場合、キャリブレーションのオフセットは適応されないので注意してください。
After calibration, type ‘d’ or ‘kbalance’ to validate the calibration. It will result in Bittle symmetrically moving its limbs between rest and stand state.
Please refer to the previous testing & validation section for the process.
You may need to do a few rounds of calibrations to achieve optimal states.
キャリブレーション後、「d」または「kbalance」と入力してキャリブレーションを検証します。これによりBittleは静止状態と起立状態の間で左右対称に手脚を動かすことになります。
このプロセスについては、前のテストと検証のセクションを参照してください。
最適な状態にするためには、何度かキャリブレーションを繰り返す必要があるかもしれません。
Try to understand how Bittle keeps balance even during walking. If you are adding new components to Bittle, try your best to distribute its weight symmetrically about the spine. You may also need to slide the battery holder back and forth to find the best spot for balancing. Because the battery is heavier in the front, you can also insert it in a reversed direction to shift the center of mass more towards the back.
Bittleが歩行中どのようにバランスを保っているかを理解してください。新しい部品を追加する場合は、背骨を中心に重さが対称になるように工夫してください。また、電池ホルダーを前後にスライドさせて、バランスをとるのに最適な場所を探す必要があるかもしれません。電池は前の方が重いので、逆に差し込んで重心を後ろに移動させることもできます。
You may need to recalibrate if there's a change to the center of mass.
重心に変化があった場合は、もう一度キャリブレーションが必要になります。
To lock in the head, use an M2x4 flat head screw to lock the servo shaft and the servo arm from the bottom side of the chassis.
頭部を固定するには、M2x4の平頭ネジを使って、サーボ軸とサーボアームをシャシーの下側から固定します。
キャリブレーションが終了したらサーボの回転部分をネジで固定してください。
ワイヤーシールドを装着する際は向きがあるので注意してください。挿入した際に脚部と平行になるのが正しい向きです。
下の図は間違った装着例です。
The 6-pin female socket is used for connecting the programmer and communication dongles. Carefully bend it forward in a smooth arc if you are not going to attach a Raspberry Pi.
6ピンの雌ソケットは、プログラマーや通信ドングルの接続に使用します。Raspberry Piを取り付けない場合は、慎重に滑らかな弧を描くように前に曲げてください。
"You can't direct the wind, but you can adjust your sails." ⛵️
Try the following serial commands in the serial monitor:
“ksit”
“m0 30”
“m0 -30”
“kbalance”
“kwkF”
“ktrL”
“d”
The quotation mark just indicates that they are character strings. Don’t type quotation marks in the serial monitor.
Only the position of the buttons matters, though those symbols can help you remember the functionalities. I’m going to define position related symbols to refer to those keys.
I’m using abbreviations for key definitions to reduce SRAM usage. Due to the limited keys of a physical remote, I always change the definitions for fun.
The following map is just an illustration. Check OpenCat.h for the actual key definitions in effect. They are also open to your customization.
Rest puts the robot down and shuts down the servos. It's always safe to click it if Bittle is doing something AWKWARD.
Gyro will turn on/off the gyro
Balance is the neutral standing posture. You can push Bittle from the side, or make it stand up will hind legs and tail. You can test its balancing ability on a fluctuating board. Actually balancing is activated in most postures and gaits.
Pressing F/L/R will make the robot move forward/left/right
B will make the robot move backward
Calibrate puts the robot into calibration posture and turns off the gyro
Stepping lets the robot step at the original spot
Crawl/walk/trot/run are the gaits that can be switched and combined with the direction buttons
Buttons after bound are preset postures or other skills
Turning off the gyro can accelerate and stabilize the slower gaits. But it’s NOT recommended for faster gaits such as run and bound.
Different surfaces have different friction and will affect walking performance. The current trained parameters work better without the silicone toe covers. They are provided for your experiments. The carpet will be too bushy for Bittle's short legs. It may only crawl (command kcrF) over this kind of tough terrain.
You can pull the battery pack down and slide along the longer direction of the belly. That will tune the center of mass, which is very important for walking performance. Otherwise, it may keep falling down.
When Bittle is walking, you can let it climb up/down a small slope (<10 degrees)
Whatever Bittle is doing, you can lift it vertically, and it will stop moving, just like a dog scruffed on the neck.
If Bittle keeps beeping after you connect the USB uploader, with numbers printed in the serial monitor, it’s the low voltage alarm being triggered. You need to power NyBoard with the battery to pass the threshold.
The servos are designed to be driven by internal gears. Avoid rotating the servos too fast from outside.
Don’t keep Bittle running for too long. It will overheat the electronics and reduce the servos’ life span.
If you feel something is wrong with Bittle, press the reset button on NyBoard to restart the program.
Bittle has acrophobia! If you lift it and rotate it over a certain degree, its current movement will be interrupted. Don't flip Bittle over to scare it!
Be kind as if you were playing with a real dog. (^=◕ᴥ◕=^)
"Let the cat out of the bag." 🧞♂️
新たな教科書を作ることになります。
The controlling framework behind Bittle is OpenCat, which I've been developing for a while. You can read more stories from my posts on Hackster.io.
Bittleの背後にある制御フレームワークは、私が以前から開発しているOpenCatです。Hackster.ioに投稿した記事から、これに関するストーリーを読むことができます。
It's too much work for now 🤷🏻♂️ but you are welcome to discuss it with me on the forum or through email. Good thing is, I will keep the code compatible with future OpenCat models, and even your own DIY robots! Hopefully, the documentation will be completed during the processes.
現在はとても忙しいです🤷🏻♂️しかし、フォーラムやメールでのご相談も歓迎します。幸いなことに、このコードは将来のOpenCatモデルやあなたのDIYロボットとの互換性を保つつもりです。プロセス中にドキュメントを完成できればと思います。
Coding can be done in C-style language with the Arduino IDE.
Bittle can be programmed with a Scratch-like web-based IDE Codecraft and curriculum
Arduino IDEを使ってC言語でコーディングが可能
バイトルはScratchのようなウェブベースのIDEであるCodecraftとcurriculumでプログラムすることができます。
The Code & Robots iOS app can control a few open source Robots, include Bittle.iOSアプリ「Code & Robots」では、「バイトルは」をはじめとするいくつかのオープンソースロボットを操作することができます
Please check out the following video for the app configuration to support controlling Bittle.バイトルの制御に対応するためのアプリの設定については、以下の動画をご覧ください。
OpenCatWeb - a web interface to control Opencat-based robots
need to mount a Raspberry Pi
a discussion thread by the author leukipp
"Give a cat a fish and you feed it for a day. Teach a cat to fish and you feed it for a lifetime." 🎣
EEPROMの書き込み操作回数は1,000,000回と限られています。そのため、EEPROMへの書き込み操作を最小限にしたいと考えています。
スキルには「Instincts」と「Newbility」の2種類あります。両者のアドレスはルックアップテーブルとして搭載されたEEPROM(1KB)に書き込まれていますが、実際のデータは別のメモリに格納されています。
InstinctsはI2CのEEPROM(8KB)に格納されています。
Instinctsは、初期搭載されたスキルのことです。例えるなら「マッスルメモリー」のようなものです。複数のInstinctsは、WriteInstinct.inoを使って一度だけI2C EEPROMに書き込まれます。それらのアドレスは、WriteInstinct.ino実行中に生成され、オンボードEEPROMのルックアップテーブルに保存されます。
PROGMEM(32KBのフラッシュをスケッチで共有)はNewbilityを格納します。
Newbilityとは、多くのテストを必要とする新たな実験的スキルのことです。I2CやオンボードEEPROMに書き込まれるのではなく、PROGMEM形式のフラッシュメモリーに書き込まれます。Arduinoのスケッチの一部としてアップロードする必要があります。そのアドレスはコードの実行時にも割り当てられますが、スキルの総数(すべてのInstinctsとNewbilitiesを含む)が変わらなければ、その値が変わることはほとんどありません。
define WalkingDOF 8
これは歩行のための自由度(DOF)の数値を定義しており、Bittleでは8となっています。
define NUM_SKILLS 4
スキルの合計数が4であることを定義しています。これはリストの項目数と同じである必要があります。
const char* skillNameWithType[]
.
define I2C_EEPROM
NyBoardにはInstinctsを保存するためのI2C EEPROMがあることを意味します。
If you are building your own circuit board that doesn’t have it, comment out this line. Then both kinds of skills will be saved to the flash as PROGMEM. Obviously, it will reduce the available flash space for functional codes. If there were too many skills, it may even exceed the size limit for uploading the sketch.
それがない回路基板を自分で作成する場合は、この行をコメントアウトしてください。両方のスキルがPROGMEMとしてフラッシュに保存されます。それによって機能コードのための利用可能なフラッシュのスペースが減ります。スキルの数が多すぎると、スケッチをアップロードする際のサイズ制限を超えてしまうことがあります。
関節角度の1フレームは静止した姿勢を定義し、一連のフレームは歩行や動作などの連続した姿勢を定義します。次の2つの例をご覧ください:
以下のようなフォーマットとなっています:
restは静止した姿勢で、16個ある関節角のうち、1フレームしかありません。crFは "crawl forward "の略です。8個(歩行DOF数によっては12個)の関節角で36フレームを構成し、反復歩行を形成します。期待される体勢は、ロボットがスキルを行っているときの体の角度を定義します。予想される角度から体が傾いている場合、バランシング・アルゴリズムがいくつかの調整を計算します。角度比は、-128~127の範囲よりも大きな角度を保存したい場合に使用します。比率を2に変更すると、大きな角度を2で割って保存することができます。
姿勢については1つのフレームしかなく、歩行には複数のフレームがあり、ループしていきます。
以下は動作の例です:
puは「push up」の略で、「動作」のことです。このデータ構造は、姿勢や歩行よりも多くの情報を含んでいます。
最初の4つの要素は、動作であることを示すためにフレーム数が負の値として保存されていることを除いて、前と同じように定義されています。次の3つの要素では、シーケンス内の繰り返しフレームを定義します:開始フレーム、終了フレーム、ループサイクルです。つまり、例の6, 7, 3は、行動が7番目のフレームから8番目のフレームまでを3回ループすることを意味します(インデックスは0から始まります)。歩行のようにループするのではなく、行動の配列全体が1度だけ実行されます。
各フレームには16個の関節角が含まれており、最後の4つの要素では、トランジションの速度と各トランジション後の遅延条件が定義されています。
デフォルトの速度係数は4ですが、1(遅い)から127(速い)までの整数に変更できます。単位は 1 ステップあたりの度数です。0に設定すると、サーボの最大速度で目標の角度まで回転します(約0.07秒/60度)。リスクを理解していない限り、10 以上の値を使用することはお勧めできません。
遅延時間の初期値は0ですが、0~127まで設定でき、単位は50msです。
3つ目の数値はトリガー軸です。0でない場合は、前の遅延時間は無視されます。次のフレームのトリガーは、対応する軸のボディの角度に依存します。ピッチ軸には1、ロール軸には2を指定します。数字の符号は閾値の方向、つまり現在の角度がトリガーの角度よりも小さいか大きいかを定義します。
4つ目の数値はトリガー角度です。128度から127度の範囲で設定できます。
初めてEEPROMにスキルを書き込ませるには、WriteInstinct.inoをアップロードする必要があります。以下の情報が使用されます。
スキル名の文字列には、IまたはNというサフィックスが付いていることに注意してください。これは、スキルデータをどこに保存するか、いつそのアドレスを割り当てるかをプログラムに伝えるものです。
その後、アップロードされたスケッチがメインスケッチのOpenCat.inoであり、I2C EEPROMを搭載したNyBoardを使用している場合、プログラムはNewbilityリストへのポインタのみを必要とします。
const char* progmemPointer[] = {zero};
を使って、あらかじめ定義されたスキルの完全な知識を引き出すことができます。
すでにInstinctBittle.hには "zeroN "というスキルが存在しています。
まずmndex Offsetというコマンドで個々の関節を目標の位置に移動させてから、配列の中の関節角度(太字フォント)を一度に置き換えることができます。
Newbilityとして宣言されており、I2C EEPROMに書き込む必要がないため、配列を変更するたびにOpenCat.inoをアップロードするだけでよい(WriteInstinct.inoをアップロードしなくてもよい)。IRリモコンの7>を押すか、シリアルモニタにkzeroと入力することで、新しい姿勢を引き起こすことができます。
このスキルの名前は変更できますが、IRリモートのキーマップを更新することを忘れないでください。
InstinctBittle.hでスキルを増やすことができます。ファイルの最初にスキル番号を増やし、スキルリスト配列に対応するスキル名とポインタを追加することを忘れないでください。
スキルはシリアルモニタからトークンの「k」コマンドで呼び出すことができます。例えば、ksitはBittleを姿勢「sit」に動かします。
また、新しいスケッチをアップロードしなくても、m、i、lトークンを使ってシリアルポートから姿勢フレームを送ることで、新しいスキルをチューニングすることができます。スキルを微調整した後は、instinctBittle.hに保存し、newbilityやinstinctとしてボードにアップロードすることができます。
使用可能なスキル名については、必ず実際のコードを確認してください。ソフトウェアを繰り返し開発する中で、スキルセットを変更することがあります。
このgit repoは、カスタマイズされた歩行を開発したい場合の良い出発点となります。逆運動学の計算を行う場合は、以下の主要なディメンションを使用してモデルを構築することができます。
これまでBittleは赤外線リモコンで操作していました。Bittleの行動を決めるのはあなたです。 パソコンやスマートフォンと接続して、自動的に指示を出すことができます。そうすると「Bittle」はその指示に一生懸命従います。
また、タッチセンサーなどのセンサーや、ボイスコントロールなどの通信モジュールを追加することで、新しい知覚や判断力を持たせることができます。その自動行動を積み重ねて、最終的には自分で生きていくことができるのです。
ペトイビトルのボードのカバーを外し、付属のUSBアダプターのチップを対応するピン穴に差し込みます。
上記のウェブサイトにアクセスし”Bittle”をクリックします。
“Device Assistant”をダウンロードする
Codecraftを初めて利用される方は”Device Assistant”が必要になります。”Connect”を押すと下記のような画面が表示されるので”Download Device Assistant”をクリックします。
インストールが完了後、フクロウのアイコンをクリックして起動します。起動させたら、再度”Connect”をクリックし自分で組んだコードをアップロードして完了です。
デバイスを繋ぐ際には「USBドングルを接続する」で選択したデバイスを選んでください。
GitHubのコードとCodeCraftのコードにはバージョンが異なるため動作をうまく行えません。CodeCraftで行う場合は一度コードクラフトのスキルをアップデートする必要があります。
・Touch Sensorを使う場合
下記の写真のようにセンサーをDigitalソケットに接続する。
Digitalソケットに接続
コード例
Sound Sensorを使う場合
Analogソケットに接続
コード組合せ例
・Digital PIR Sensorを使う場合
Digitalソケットに接続
コード組合せ例
・Intelligent Camera (Arduino IDEを用いた場合)
下記のURL先の動画を参考にしてください
I2Cソケットに接続
カメラにある左から2番目を上にあげる
からZip Fileをダウンロード
Zip Fileを展開して”BallTracking-main”を”BallTracking”に変更
Zip Fileをダウンロード
Sketch>Include Library>add zip fileからダウンロードしたファイルを選択
WriteInstinctをアップロードしてシリアルモニターを開きYを三回
終了後
Ball Trackingをアップロード
(緑色の球体を追跡します)テニスボールなど
The head of Bittle is designed to be a clip to hold extensible modules. We compiled a sensor pack with some popular modules, but its contents may change in the future. You can also wire other add-ons thanks to the rich contents of the Arduino and Raspberry Pi community.
You can find the demo codes of these modules in our GitHub repository. They should be in the folder if you download the whole OpenCat repository.
The loudness and light level modules can generate for the corresponding signals and should be connected to the analog Grove socket.
The touch, reflection, PIR sensors can generate digital 1 or 0 as a switch signal. So they should be connected to the digital Grove socket. In the , we use the fourth socket with D6 and D7.
The , , and module should be connected to the I2C Grove socket.
Index
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Offset
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1