mechatronics / robotics

ブログ

サーボブラケット組み立て手順

サーボブラケット(SG-90用)の組み立て手順です。 *SG-90互換製品の場合、多少の追加工が必要となることがあります。 パーツを切り離します。使用する部品は、 タッピングスクリュー(太)x 2、 タッピングスクリュー(細)x 2、 ワッシャー x 2、 小ねじ x 1、 ナット x 1、 ハトメ x 1 です。 サーボ底面のねじ(対角線)2本をはずします。 底面に軸受け(ハトメ)を形成します。ハトメの座部をプレートとサーボ底面で挟むように、タッピングスクリュー(細)でねじ止めします。プレートが傾かないようにワッシャーを使用してください。 サーボにサーボホーン(片腕)を取り付け、3個穴のプレートをサーボに付属のねじを使ってサーボホーンに共締めします。 2個穴のプレートに小ねじをナットで止めます。 タッピングスクリュー(太)で長方形のプレートを両側のアームのプレートにねじ止めします。

LCDディスプレイNokia5110テスト

OLEDディスプレイに続いて液晶ディスプレイNokia5110を使ってみました。SPIなので表示は速いですが、OLEDと比較してしまうと画質の悪さが目立ちます。また、全体の大きさに比べて実描画エリアが狭いのはNGです。バックライトも付きますがちょっと品位がないというか。プログラムはOLEDの時のものをほぼ流用してSPIのところを書き換えました。コントロールはI2Cのものに比べて簡単です。

Unity Arm Robot Inverse Kinematics -analytical approach

Explaining analytical approach to inverse kinematics for robot arm. This method is applyed only for robots that have a spherical wrist (axis of joints P4,P5,P6 meets at one point). And robot should not have joint offsets. reference : textbook “Robotics” by Hirose Vector $(a,b)$ represents the direction and rotation of end effector. \begin{align*} (a,b) = R^Y R^P R^R\begin{bmatrix} 1 & 0 \\ 0 & 0 \\ 0 & 1 \end{bmatrix} \end{align*} \begin{align*} \begin{bmatrix} a_{x} & b_{x} \\ a_{y} & b_{y} \\ a_{z} & b_{z} \end{bmatrix} = \begin{bmatrix} C_{Y} C_{P} & C_{Y} S_{P} C_{R} + S_{Y} S_{R} \\ S_{Y} C_{P} & S_{Y} S_{P} C_{R} – C_{Y} S_{R} \\ – S_{P} & …

OLEDディスプレイ(SSD1306)テスト

0.96インチ、128X64ドットのOLEDディスプレイの描画テストをArduinoを用いてテストしました。2cm程度の非常に小さいものなので、もともと数字等を静的に表示するための製品かとは思います。 配線は簡単で、電源とI2Cをつなぐだけです。ソフトのほうも通常はAdafruit社のライブラリを使えばよいでしょう。今回はデータシートを見て自前で書いてみました。 データシート SSD1306イニシャライズ I2CはArduinoのWireを使います。 I2Cの通信の仕様に関してはデータシートのP20 I2C-bus Write dataに説明があります。デバイスのアドレスは基板の裏側の抵抗の位置によって2通りあるようです。このアドレスを1bit左にずらして末尾にR/Wの0をつけて(私の場合は0x3C)を最初に送信します。これに続けて諸々を送信するのですが、これはデータシートの最後についているApplication noteのP5に沿ってやっています。 各コマンドはデータシートのP28~に記載されていて、上のコードでは2列目(Wire.write(0xAE) など)となります。1列目の0x80、0x00はコマンドに先立って送るControl byteといわれているもので、P20に説明がありますがわかりにくいです。0x80なら続けて1個0x00なら続けて複数個が送られる、と解釈しました。 Application noteにないコマンドで追加で送っているのは17-19行目の0x20,0x21,0x22です。この辺の説明はP34-36にあります。Horizontal addressing modeというものに設定していて、全画面の画素データを連続で送れるというものです。画面の成り立ちはP25に図があります。縦方向がpage、横方向がsegmentで分割されていて、1pageの縦は8bit(1byte)でこれを単位にアクセスします。 画素へのアクセス buf[]はすべての画素のデータを保持しておくための配列です。描画の計算はいつもこのbufに対して行い、最後にまとめてデバイスに転送します。 一つの点(ピクセル)を描く関数です。直線や円を描くときもここにやってきます。pos_negはその画素を点灯するか消灯するかを表します。bufの該当部分(1 byte)にORで書き込みます。縦方向の座標yがsegmentの中の何ビット目なのかを計算しているのが(1

独習 Fusion360

簡単な形状作成ができるようになった方向けのチュートリアルです。(超)簡単なロボットを設計してプレゼン用のアニメーションをつくってみます。(超)簡単なのでギアやモーターはありません。 (1)機構設計 3DCADの一般的なチュートリアルや初心者向けの書籍などで、何もないところからいきなり立体物を作り始めるのは違和感があります。このビデオでも最初から寸法がすべて決まっていたかのように進めてしまっていますが、実際には違います。紙の上にラフスケッチを描いたり、方眼紙を使ってだいたいの寸法を確認したり、あるいはCADの2Dスケッチで正面図や側面図を描きながら構想を練る段階が必ずあります。 また、既存の部品(モーターやギアボックス等)を使うことが分かっている場合にはその部品からモデリングし始めるのがよいと思います。 (2)設計修正~部品追加 履歴をさかのぼって設計変更する例も示しています。3DCADの最も優れたフィーチャーのひとつで、過去に指定した寸法を変更すると関連する部分を自動的に修正してくれるというものです。ただし万能ではありません。途中で部品を削除した場合など、関連付けがおかしくなって爆発してしまうこともあります。 (3)モーションスタディ Fusion360ではジョイント(solidworksのmate)という機能を使って部品間の拘束(穴を合わせてねじ止め、回転軸など)をつけていきます。モーションスタディでは時間軸でジョイントの値の変化を指定してアニメーションをつくります。見た目のインパクトがあるのでプレゼンなどに使えます。 (4)レンダリング 本格的なレンダリングが可能です。(3)で作ったモーションをレンダリングすることもできます。画像の大きさや長さによっては有料になるようです。

PAPERBOTS マイクロマシーン チュートリアル(10)

●delay()を使わない方法  これまでサーボの動きを制御するのにArduinoのdelay()関数を使ってきました。delay()関数はスケッチ内容が比較的明確で単純な確認のような目的には有用ですが、ひとつ欠点があります。delay()実行中は他の処理が止まってしまうので、少し込み入ったプログラムの場合には不具合が生じることがあります。 ここでは、delay()を使わないでサーボとbeep音をコントロールする方法の例を示しておきます。具体的には、Timer0割り込みを常時まわして時間をカウントします。 ・ms10-1 ●練習問題 歩行に合わせて音を出して(足音)ください。 チュートリアルベース

PAPERBOTS マイクロマシーン チュートリアル(8)

●サウンド出力 最後にスピーカーから音声を鳴らしてみます。 リモコンのボタンでビープ音が再生されるようにしてください。リモコン受信部分はチュートリアル(6)と同じです。 ビープ音再生にはArduinoのtone(ピン番号, 周波数, 音の長さ)関数を使います。 出力ピンには”8″、周波数には”200″、〜秒間は”1000″(1秒)を設定します。 リモコンボタンは0番(rmDataは”22″)としました。ロボットで実行し音声が再生されるのを確認します。 “ms08″で保存します。 ●練習問題 音階(メロディ)を再生してください。続けてtone()関数を使う場合にはdelay()が必要です。 <= PAPERBOTS マイクロマシーン チュートリアル(7) チュートリアルベース PAPERBOTS マイクロマシーン チュートリアル(9) =>

PAPERBOTS マイクロマシーン チュートリアル(3)

●サーボを動かす サーボを動かしてみましょう。サーボの出力軸(白いギザギザのところ)は通常0°~180°の範囲で回転しますが、その位置はサーボの容器に対して絶対的に決まっています。そのため出力軸の回転位置を気にせずに適当にロボットを組み立ててしまうと、出力に取り付けられた部品が思い通りに動いてくれません。まずはサーボの出力軸を90°の位置に停止させるプログラムをつくります。 下の写真を参考に配線してください。サーボは電池から電源を供給する回路になっていますので、今回は電池をつなぎます。サーボは12個使いで対応するコネクタが12箇所ありますが、すべてのコネクタから90°の信号を出力します。サーボのコネクタは逆向きに挿しても動きませんが壊れることはありません。中央のピンがプラス電源となっているためです。一方、電池のワイヤーは逆につけるとマイコンが壊れますので絶対に間違えないでください。コネクター側基板上に”G”と記載されている側がグランド(黒線)です。 電源スイッチはOFF側にしておきます。 *サーボを取り扱う際の注意 サーボは非常に精密なギアで構成されています。出力軸を回そうとして(「バックドライブ」と言います。)引っ掛かりがある場合に無理に回そうとするとギアを破損します。 ハードウェアの準備ができましたらプログラムを作っていきます。通常Arduinoでサーボを動かす場合専用の関数を使って簡単に駆動できるのですが、今回サーボが12個と多いので「PCA9685」というICを利用してATMEGA328マイコンからI2Cで制御するようにします。 Arduino IDEを起動して「ボード」と「シリアルポート」の設定をしてください。 下記のプログラムを書き込みます。 チェックボタンでコンパイルが成功したら、矢印ボタンでメイン基板に書き込みます。「ボードへの書き込みが完了しました。」と出たら基板の電源スイッチをONにします。サーボが動いて90°の位置(センター位置)で停止します。(新品のサーボを用いた場合はもともと90°の位置になっていて動かない場合があります。) ●プログラムの説明 プログラムの内容的にはPCA9685とのI2C通信に関する部分がほとんどです。PCA9685のデータシートと回路図を参照しながら確認してください。初学者の方はsetup()の部分だけを見ておけばOKです。 ArduinoでI2C通信を使う時にはプログラムの最初にこの行を書きます。Arduino IDEにあらかじめ用意されている”Wire.h”というファイルに実際にI2Cをコントロールするプログラムが書かれていて、我々は簡単にI2Cを使えるようになっています。 I2C通信を使えるようにします。100kHzの周波数で使用します。 サーボ駆動用のIC PCA9685をイニシャライズし、角度を設定します。角度はグローバル変数としてtempAngles[12]で保持しています。 15ピンをLOWにしてPCA9685を有効化します。(データシート P6) 今回はサーボを一度動かして終わりなのでloop()は何もしません。 PCA9685データシートのP10~P17を参照してください。 I2C通信はWire.beginTransmission(0x40)~Wire.endTransmission()で一区切りです。0x40はこのデバイス(PCA9685)のアドレスです。まずWire.write(6)でP10の表の6行目を指定します。forループの中のWire.write()はP10の表の6-9行目に対して実行され、サーボ#0(LED0と表記)のパルス立ち上がりタイミングと立ち下がりタイミングを指定します。 なお表の上の行から順番に実行されるのは、init_pca9685()の中でenable auto-incrementを指定していることによります。 サーボに与えるパルスは通常15-20msec周期でONパルス幅1.5msecで90°(センター位置)となります。init_pca9685()の中でPWM周波数を60Hzに設定していて1周期のカウント数が4095となっていますので、パルス幅が1.5msecとなるカウント数は369となります。プログラム中のangle=の式は、サーボの可動範囲のセンターが90°となるように実測して決めた変換式です。 forループでこれを12回まわしてすべてのサーボの角度を設定していきます。 ●往復運動させる loop()の中身を書き換えてサーボを往復運動させてみます。#0サーボ(P2コネクタ)のみ動かします。プログラムの意味はわかると思います。 #0サーボがセンター位置を中心に往復運動することを確認してください。そのままでは見えませんのでサーボホーンを取り付けてください。 ●デバッグの方法 サーボとは直接関係ありませんが、プログラムが思い通りに動かない時などに原因を調べるひとつの方法です。 上のプログラムに少し追加します。 このプログラムをメイン基板に転送して実行し、Arduino IDEの「ツール」->「シリアルモニタ」からシリアルモニタを起動します。Serial.print()に書いた内容が1000msごとに出てくると思います。(出てこない場合は画面下で9600bpsを選択)このように実行中のプログラムの状況を調べることができます。 最後にloop()の中をすべてコメントアウト(/* … */)して12個すべてのサーボを90°の位置に戻してサーボホーンを外しておいてください。 今回の成果は”mm03″などとして保存しておきましょう。

PAPERBOTS マイクロマシーン チュートリアル(2)

●メイン基板の準備 USBケーブルでメイン基板とパソコンを接続すると、USBシリアル変換ICのドライバがインストールされてプログラム開発ができるようになります。 ●最初のプログラム デスクトップのArduinoのアイコンからArduino IDEを起動します。 最初に二つの設定をします。メニューの「ツール」のボードで”Arduino/Genuino Uno”を、シリアルポートでメイン基板がつながっているポートを選択します。シリアルポートは、デスクトップ左下のWindowsアイコンを右クリックしてデバイスマネージャーを起動し、「ポート(COMとLPT)」から知ることができます。 まずは用意されているスケッチ例を使ってみます。LEDを点滅させるプログラムです。メニューの「ファイル」から「スケッチ例」-> 01.Basics -> Blinkを選択します。 プログラムの中で”LED_BUILTIN”となっているところ(3か所)を”3″に変更します。上の左側のチェックマークボタンをクリックして「コンパイルが完了しました。」と出たら、隣りの矢印ボタンをクリックしてプログラムをメイン基板のマイコンに書き込みます。「ボードへの書き込みが完了しました。」と出たのち、LED(D1)が1秒ごとに点滅すれば成功です。 ●プログラムの説明 Arduinoのプログラムは大きく二つの部分に分かれていて、void setup(){…}はマイコンのピンの割り当てなどを書くところで最初に1回だけ実行されます。void loop(){…}はマイコンにやらせる仕事を書くところで、上から順番に実行され下まで行ったらまた上に戻り、を永久に(電源が切られるまで)繰り返します。 pinMode(3, OUTPUT); の行は、Arduinoの3番ピンを出力(基本的にHigh(5V)とLow(0V)の電圧を出す)に設定しています。Arduinoのピン番号と実際の回路との関係は、 回路図と、 Pin Mapping を参照してください。LED(D1)はマイコンのPD3というピンにつながっていて、それはArduinoではdigital pin 3という名称になっています。LEDについている抵抗R1はLEDに流れる電流を制限するためのものです。抵抗値が小さければ大きな電流が流れ(オームの法則)LEDが明るく光り、逆ならば暗くなります。 digitalWrite(3, HIGH); は3番ピンにHigh(5V)を出力しLEDを光らせます。 delay(1000); は何もしないで1000msec(1秒)待ちます。 digitalWrite(3, LOW); は3番ピンにLow(0V)を出力しLEDを消します。 delay(1000); は何もしないで1000msec(1秒)待ちます。 この後またdigitalWrite(3, HIGH);に戻ります。 ●練習問題 LEDを0.5秒ごとに点滅させてください。 *新しいプログラムは現在のプログラムの実行中でも矢印ボタンで上書きできます。 ここでいったんプログラムを保存しておきます。「ファイル」->「名前を付けて保存」で”mm01″などとして保存します。

PAPERBOTS マイクロマシーン チュートリアル(1)

●部品の確認 ・基板 1個 ・パーツボード 1個 ・サーボモーター 12個 ・リモコン 1個 ・電池ボックス 1個 ・ねじ類 M2.6*8(タッピング) 14個 M2*6(直径2mm長さ6mm) 8個 M2ナット 8個 M2.6*6(サラネジ) 4個 M2*4(直径2mm長さ4mm) 16個 樹脂スペーサー15mm 2個 樹脂スペーサー6mm 8個 ●必要な道具など ・パソコン ・microUSBケーブル ・単4アルカリ乾電池 3個 ・ボタン電池(リモコン用)CR2025 1個 ・ニッパー ・プラスドライバー ・カッターナイフ ●Arduino IDEのインストール Windowsの場合で説明します。 http://arduino.cc/en/Main/Softwareにアクセスし、Windows Installer, for Windows XP and upをクリックします。 JUST DOWNLOADをクリックします。 ダウンロードしたファイル(arduino-1.8.8-windows.exe)を実行してインストールを開始します。 I Agree-> Next-> Installと進みこの画面でインストール完了です。 チュートリアルベース PAPERBOTS マイクロマシーン チュートリアル(2) =>

Page 1 / 1512»
PAGETOP
Copyright © Meuse Robotics All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.