<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" >
  <channel>
  <title>明日の設計図</title>
  <link>http://werner.blog.shinobi.jp/</link>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://werner.blog.shinobi.jp/RSS/" />
  <description>たまにロボットを考えるブログ・・・。</description>
  <lastBuildDate>Mon, 15 Jul 2019 06:13:25 GMT</lastBuildDate>
  <language>ja</language>
  <copyright>© Ninja Tools Inc.</copyright>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />

    <item>
    <title>bluetooth ドライバを入れて　イヤホンを使う</title>
    <description>
    <![CDATA[ソニーのSBH82Dという、オープンイヤーワイヤレスヘッドステレオヘッドセットを使うために苦労したのでブログにします。<br />
<br />
PCはbluetooth内臓のthinkpadです。win7 SP1です。<br />
<br />
○できない様子<br />
<br />
・イヤホンをペアリングモードにする<br />
<br />
・bluetoothデバイスの追加からSBH82Dを探して接続する<br />
<br />
・ドライバのインストールが始まる<br />
<br />
・ドライバが見つからない<br />
<br />
使えない・・・<br />
<br />
<br />
○できる様子<br />
・BluetoothAudio ドライバなどとググる<br />
<br />
・<a href="https://www.intel.co.jp/content/www/jp/ja/support/articles/000022410/network-and-i-o/wireless-networking.html" title="">インテル@・・・・<br />
</a><br />
・インストール用のexeをダウンロードする<br />
<br />
・管理者実行する<br />
<br />
・すごい時間がかかる<br />
<br />
・サービスが停止できません、権限を確認云々がでる。<br />
<br />
・bluetooth media service が停止できないとでる。<br />
<br />
・msconfigから見ると停止中になっていて、そこからアクセスは何もできない<br />
<br />
・インストールをキャンセルする<br />
<br />
・PCを再起動する<br />
<br />
・タスクマネージャのサービスから即刻、bluetooth media serviceを停止する<br />
<br />
・インストーラを管理者実行する<br />
<br />
・すごい時間がかかる&rarr;インストールできる<br />
<br />
・イヤホンをペアリングモードにする<br />
<br />
・デバイスの追加からSBH82Dを追加する<br />
<br />
・ドライバのインストールが成功する<br />
<br />
・デバイスサービスから接続する<br />
<br />
・サウンドからBluetoothheadphonesが選べるようになる<br />
<br />
・えらぶ<br />
<br />
・適当に音を出す<br />
<br />
]]>
    </description>
    <category>いろいろと</category>
    <link>http://werner.blog.shinobi.jp/%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E3%81%A8/bluetooth%20%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%80%80%E3%82%A4%E3%83%A4%E3%83%9B%E3%83%B3%E3%82%92%E4%BD%BF%E3%81%86</link>
    <pubDate>Mon, 15 Jul 2019 06:13:25 GMT</pubDate>
    <guid isPermaLink="false">werner.blog.shinobi.jp://entry/401</guid>
  </item>
    <item>
    <title>テンプレを変えた</title>
    <description>
    <![CDATA[テンプレを変更しました。<br />
<br />
古いテンプレは画面の横長についていけないので]]>
    </description>
    <category>日誌</category>
    <link>http://werner.blog.shinobi.jp/%E6%97%A5%E8%AA%8C/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%82%92%E5%A4%89%E3%81%88%E3%81%9F</link>
    <pubDate>Sun, 17 Feb 2019 11:19:10 GMT</pubDate>
    <guid isPermaLink="false">werner.blog.shinobi.jp://entry/400</guid>
  </item>
    <item>
    <title>有限角度のノンバックラッシプーリ伝達</title>
    <description>
    <![CDATA[簡単な部品でノンバックラッシ伝達ができないかと思ってチャレンジしました。<br />
2本のテグス間にテンションをかけます。<br />
小プーリで270deg動きます。<br />
<br />
<img src="//werner.blog.shinobi.jp/File/P5280085.JPG" alt="" /> <br />
<br />
忘備録<br />
<br />
回転の伝達なので、歯車かプーリかの２択です。<br />
バックラッシのない歯車は超激レアなので重課金です。<br />
タイミングベルトでプーリも面倒です。<br />
ノンバックラッシにしようと思うと、いずれの場合も専門の加工が必要なので面倒です。<br />
<br />
状況を有限角度に絞って簡単にすれば<br />
<br />
・リンク<br />
<br />
という選択肢があります。<br />
が、リンクはノンバックラッシではありません。<br />
重い部品が増えます。<br />
構造物が増えることは作るのがめんどくさくなります。<br />
<br />
結果として、リンクとプーリを組み合わせた感じにしました。<br />
<br />
以下、こんな感じに作る。<br />
<br />
２本のナイロンテグスをそこそこ同じ長さでつけて、<br />
プーリを動かしてテンション調整して完成。<br />
<br />
材料<br />
3Dプリント部品４点<br />
M3のねじが２本<br />
6900ZZが４個<br />
M2のねじが４本<br />
ナイロンテグス適当<br />
<img src="//werner.blog.shinobi.jp/File/P5280080.JPG" alt="" /> <img src="//werner.blog.shinobi.jp/File/P5280082.JPG" alt="" /> <img src="//werner.blog.shinobi.jp/File/P5280084.JPG" alt="" /> <br />
<img src="//werner.blog.shinobi.jp/File/P5280086.JPG" alt="" />]]>
    </description>
    <category>いろいろと</category>
    <link>http://werner.blog.shinobi.jp/%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E3%81%A8/%E6%9C%89%E9%99%90%E8%A7%92%E5%BA%A6%E3%81%AE%E3%83%8E%E3%83%B3%E3%83%90%E3%83%83%E3%82%AF%E3%83%A9%E3%83%83%E3%82%B7%E3%83%97%E3%83%BC%E3%83%AA%E4%BC%9D%E9%81%94</link>
    <pubDate>Sun, 28 May 2017 08:55:29 GMT</pubDate>
    <guid isPermaLink="false">werner.blog.shinobi.jp://entry/399</guid>
  </item>
    <item>
    <title>実行ファイルにドラッグアンドドロップする。</title>
    <description>
    <![CDATA[忘備録<br />
<br />
Cでテキストファイルを処理したいとき、アドレスのパスをどうやって渡すかいつも面倒だと思っていました。<br />
<br />
で、よく考えると実行形式のファイルに乗っけて起動するタイプのソフトってありますよね。<br />
<br />
だからそういうのできるんだと思ってググりました。<br />
<br />
<a href="http://achapi2718.blogspot.jp/2012/06/c_1002.html" title="">http://achapi2718.blogspot.jp/2012/06/c_1002.html</a><br />
<br />
簡潔にまとめていただいているサイト様がありましたので記録しておきます。<br />
<br />
後日、トライします。]]>
    </description>
    <category>いろいろと</category>
    <link>http://werner.blog.shinobi.jp/%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E3%81%A8/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%83%89%E3%83%A9%E3%83%83%E3%82%B0%E3%82%A2%E3%83%B3%E3%83%89%E3%83%89%E3%83%AD%E3%83%83%E3%83%97%E3%81%99%E3%82%8B%E3%80%82</link>
    <pubDate>Tue, 25 Apr 2017 01:50:00 GMT</pubDate>
    <guid isPermaLink="false">werner.blog.shinobi.jp://entry/398</guid>
  </item>
    <item>
    <title>pythonはじめました</title>
    <description>
    <![CDATA[超素人が、pythonでGUI開発を軌道に乗せるまで備忘録<br />
<br />
<span style="color: #00ccff;"><strong>①</strong></span>いろいろググるとanacondaをインストールすることになります。<br />
<br />
<a href="https://www.continuum.io/downloads" title="">https://www.continuum.io/downloads</a><br />
<br />
windows版の32bitを10分ぐらいでダウンロードして、<br />
実行して<br />
30分弱ぐらいのインストールをします。<br />
<br />
この時点で時間がかかりすぎです。10人以上のウルトラマンが帰ってしまうでしょう。<br />
<br />
もうそれだけで環境の準備は終わります。<br />
<br />
<span style="color: #00ccff;">②</span>いろいろインストールされて、何をやればいいのか分からなくなります。<br />
<br />
で何をすればいいかというと<br />
<br />
スタートメニュー&rarr;あなこんだ&rarr;jupyter notebook<br />
を開きます。<br />
<br />
そうすると、ブラウザの新しいたぶとして開かれます。<br />
<br />
マイドキュメントとかが見えると思うので、<br />
エクスプローラとかでpython用のフォルダを作っておく。<br />
<br />
こちらが参考になります。<br />
<a href="http://pythondatascience.plavox.info/python%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83/jupyter-notebook%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86/" title="">http://pythondatascience.plavox.info/python%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83/jupyter-notebook%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86/</a><br />
<br />
と思いきや、ブラウザは立ち上がらないです。<br />
なんでか分かりません。<br />
<br />
で、アナコンダナビゲーターというのを開きます。<br />
そこから、jupyternotebookをローンチュします。<br />
<br />
あとは大丈夫です。<br />
<br />
<span style="color: #00ccff;">③</span>pythonのコードを書いて、shift enterします。<br />
<br />
でき上がりです。<br />
<br />
<br />
<span style="color: #00ccff;">④</span>GUIをします。<br />
<br />
guiする方法は数多ある様ですが、アナコンダにはPyQt5が盛り込まれていました。<br />
<br />
で、<br />
<a href="http://d.hatena.ne.jp/mFumi/20141112/1415806010" title="">http://d.hatena.ne.jp/mFumi/20141112/1415806010</a><br />
<br />
こちらのサイトのコピペを実行してみます。<br />
<br />
普通にできます。<br />
<br />
<span style="color: #00ccff;">⑤</span>エクストラステージ<br />
新しい環境を入れる時は順風満帆ではないのが常です。<br />
<br />
実行できるんですけども、<br />
The kernel appears to have died. It will restart automatically.<br />
<br />
とjupyterさんに言われます。<br />
<br />
で、<br />
<a href="http://stackoverflow.com/questions/40094086/python-kernel-dies-for-second-run-of-pyqt5-gui" title="">http://stackoverflow.com/questions/40094086/python-kernel-dies-for-second-run-of-pyqt5-gui</a><br />
<br />
こちらを参考に<br />
<br />
app = QApplication(sys.argv)<br />
がいけないらしいので<br />
<br />
&nbsp;&nbsp;&nbsp; app = QApplication.instance()<br />
&nbsp;&nbsp;&nbsp; if app is None:<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; app = QApplication(sys.argv)<br />
<br />
とします。<br />
<br />
終わり。<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
]]>
    </description>
    <category>python</category>
    <link>http://werner.blog.shinobi.jp/python/python%E3%81%AF%E3%81%98%E3%82%81%E3%81%BE%E3%81%97%E3%81%9F</link>
    <pubDate>Sun, 19 Feb 2017 05:52:35 GMT</pubDate>
    <guid isPermaLink="false">werner.blog.shinobi.jp://entry/397</guid>
  </item>
    <item>
    <title>ルンゲクッタ法で微分方程式(単振動)を積分</title>
    <description>
    <![CDATA[創生&times;&rArr;創成○<br />
<br />
だそうです。<br />
大きな問題ですね。<br />
<br />
シミュレーションに迫られておりまして、非線形微分方程式を積分したくなっております。<br />
<br />
解析解は出ませんどころか、点群データなわけで。<br />
<br />
シミュレーションに迫られて います。<br />
<br />
5年前にこのブログでもルンゲクッタ法にふれていましたが。<br />
すっかり忘れたのでもう一度記事にします。<br />
<br />
<a href="http://hooktail.org/computer/index.php?Runge-Kutta%CB%A1" title="">参考サイト様</a><br />
<br />
簡単なシミュならオイラー法を使います。<br />
dx/dt=Ax<br />
であれば,刻みのステップをhとして<br />
x1=x0+A*x0*h<span style="text-decoration: underline;"></span><br />
という漸化式なので次々と計算すればいいです。<br />
ただ、1次の傾きを積分していくので誤差が積もります。<br />
そこで誤差の少ない方法が世間には広まっているのです。<br />
<br />
その例としてルンゲクッタを選びました。<br />
&uarr;の式で進めると<br />
<img src="//werner.blog.shinobi.jp/File/c8575d13.png" alt="" /> a b c dという4つの係数から、理想的な傾きを求めるようです。<br />
数値計算の教科書とかだと、一般的な常微分方程式を念頭に置いているので、単純な式だと返って分かりづらいものでした。<br />
引数？がだいぶ減るので簡単です。<br />
例えば、<br />
dx/dt=A*t*x<br />
みたいな場合であれば、もう少し教科書寄りの式に成ります。<br />
<br />
で、どのくらい精度がいいかということですが<br />
<img src="//werner.blog.shinobi.jp/File/fOrder.png" alt="" /> <br />
<br />
ただのexpカーブが解析解となりますが、このようにオイラーだと離れていくところが付いていくわけです。<br />
<br />
でもって、簡単なところはこの辺で。<br />
<br />
もう少し応用の利く例を置いておきます。<br />
運動方程式であれば、2階の微分方程式だと思います。<br />
d^2x/dt^2=Bx<br />
みたいな。<br />
Bが負であれば単振動です。<br />
<br />
計算は、状態方程式のように2つに分けて、y1,y2の連立の１階微分方程式にします。<br />
<img src="//werner.blog.shinobi.jp/File/4b853039.png" alt="" /> &nbsp;<br />
<br />
さっきと同様にa b c d を計算しますが、<br />
y1とy2の流れを交互にやることに注意します。<br />
y2のb、つまりb2はa1を使って計算する必要があります。<br />
少し複雑です。<br />
<br />
計算結果です。<br />
<img src="//werner.blog.shinobi.jp/File/SOrder1.png" alt="" /> B=-1だと思いますが。<br />
ざっくりこんな状態です。<br />
<br />
オイラーでもほとんど一緒です。<br />
ですが、解析解との差分をみると<br />
<img src="//werner.blog.shinobi.jp/File/SOrder2.png" alt="" /> このようになっているので、ルンゲクッタの頑張りようがわかるのではないでしょうか。<br />
<br />
<a href="//werner.blog.shinobi.jp/File/RK.zip" target="_blank">ダウンロード</a><br />
<br />
元エクセルを置いておきます。内容は整理していませんのですいません。<br />
<br />
さて、２階だろうが、連立だろうができるようになりましたので、<br />
多質点の運動方程式に手が届きます。<br />
<br />
それはまた今度。<br />
<br />
]]>
    </description>
    <category>いろいろと</category>
    <link>http://werner.blog.shinobi.jp/%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E3%81%A8/%E3%83%AB%E3%83%B3%E3%82%B2%E3%82%AF%E3%83%83%E3%82%BF%E6%B3%95%E3%81%A7%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B%E5%BC%8F-%E5%8D%98%E6%8C%AF%E5%8B%95-%E3%82%92%E7%A9%8D%E5%88%86</link>
    <pubDate>Tue, 16 Aug 2016 10:41:06 GMT</pubDate>
    <guid isPermaLink="false">werner.blog.shinobi.jp://entry/396</guid>
  </item>
    <item>
    <title>歯車創生2</title>
    <description>
    <![CDATA[歯車どうやって作るシリーズ再開です。<br />
<br />
ぜんかい、図形を少しずつずらしていくと曲線が見えてくる&rArr;これが歯だ<br />
<br />
という展開でしたが、ではその曲線そのものはどんな関数としてあらわされるのか？<br />
<br />
で、ネットサーフィンの果てに"包絡線"というものを見つけました。<br />
<br />
参考サイト様<a href="http://hooktail.sub.jp/mathInPhys/envelope/" title="">http://hooktail.sub.jp/mathInPhys/envelope/</a><br />
<br />
直線をずらしていく<br />
線が一杯引ける<br />
さて、その線群はどんな曲線を描くか？<br />
<br />
現在の理解レベル：<br />
①曲線に一つ変数を加えて、ずらすことを表現する　&larr;　歯車は１自由度だから当然か&hellip;<br />
②その曲線群関数を加えた変数で偏微分する<br />
③連立させて変数を消す<br />
④勝利<br />
<br />
・・・☆<br />
<br />
というのは難しいので、既にある曲線から接線の群を取り出し、曲線を見いだすという実験をしてみます。<br />
２次関数は<br />
<img src="//werner.blog.shinobi.jp/File/bbbed0c1.jpeg" alt="" /> てなかんじで接線の方程式がもとめられますね！<br />
<br />
接線を一杯描いてみる＆２次関数と重ねる<br />
<img src="//werner.blog.shinobi.jp/File/607eb171.jpeg" alt="" /> <br />
JPEGで張り付けるとカスみたいな画質ですね。<br />
ちなみに&theta;を0.5:5まで正負いれてみた接線と、<br />
２次関数は分かりづらかったのでアスタリスクで出しました。<br />
間違えた線も入ってますけど、<br />
まーこんなかんじっていうイメージを掴むには充分と思います。<br />
<br />
では、やってみますか<br />
①曲線に一つ変数を加えて、ずらすことを表現する　&larr;　歯車は１自由度だから当然か&hellip;<br />
②その曲線群関数を加えた変数で偏微分する<br />
③連立させて変数を消す<br />
④勝利<br />
<br />
<img src="//werner.blog.shinobi.jp/File/ebe65b84.png" alt="" /> 勝利しましたね。<br />
世の中大したことありません。<br />
<br />
はて、接線群の関数の偏微分とはどういう意味でしょうか？<br />
偏導関数なので、接した時の向きを言っています。<br />
で、それは(x,y,&theta;)を通ると言っているのです。<br />
<br />
・・・よくわかりません。偏微分を勉強しましょう。<br />
<br />
<br />
]]>
    </description>
    <category>いろいろと</category>
    <link>http://werner.blog.shinobi.jp/%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E3%81%A8/%E6%AD%AF%E8%BB%8A%E5%89%B5%E7%94%9F2</link>
    <pubDate>Mon, 02 May 2016 15:24:44 GMT</pubDate>
    <guid isPermaLink="false">werner.blog.shinobi.jp://entry/395</guid>
  </item>
    <item>
    <title>歯車創生１</title>
    <description>
    <![CDATA[★ロボットを作っていくうえでギアが必要ですが、ギアはどうやって作るんでしょう？<br />
<br />
・そもそも歯の形状って何なの。<br />
・インヴォリュートってなんなの。<br />
・なんでうまくかみ合うの。<br />
<br />
などなどいろんな不思議と戦う必要があります。<br />
かなり世の中は不思議でいっぱいです。<br />
<br />
<br />
ググってみると加工法は分かります。<br />
ラックをつかうのとピニオンカッターをつかうのと・・・いろいろです。<br />
というわけで、まずはどうやって歯形を得るかを考えてみます。<br />
<br />
歯形が得られれば、NCで作るとか3Dプリンタするとかチョロいですからね。<br />
<br />
１、ラックが動く<br />
歯車の材料は円柱です。<br />
これにぎざぎざをつけます。<br />
<br />
円柱にラックをグザグサ刺していけばいいらしいです。<br />
どのくらいのペースでさすかっていうのは、ラックの並進速度とギアの基準ピッチ円の円周速度を一致させます。<br />
<br />
で、台形のラックを動かすっておもえば<br />
<img src="//werner.blog.shinobi.jp/File/5e66ceff.png" alt="" /> こんな感じです。<br />
６ステップぐらい動かします。<br />
ラックを移動&rarr;円柱を回転&rarr;加工ってなります。<br />
台形の加工形状は円柱に付いて回ります。<br />
加工形状はこんな感じになります。<br />
<img src="//werner.blog.shinobi.jp/File/c51e4365.png" alt="" /> いっぱいになってよくわかりません。<br />
１ステップ目の加工形状は２ステップ目に回転します。<br />
２ステップ目の加工形状は３ステップ目に回転します。<br />
ステップが進むと加工形状がいっぱい重なります。<br />
<br />
<br />
<br />
２、何度もラックがグサグサする<br />
円柱に台形がぐさってなります。<br />
で次のステップでは、前のステップの台形の加工形状に追加で加工がおこなわれます。<br />
つまり２ステップ目は<br />
ラックの移動と、加工の軌跡をかぶせた感じになります。<br />
<img src="//werner.blog.shinobi.jp/File/721aac96.png" alt="" /> 台形の穴に、ちょっとずらしてラックで削る感じですね。<br />
<br />
ちなみに３ステップ目は<br />
<img src="//werner.blog.shinobi.jp/File/31738a51.png" alt="" /> ３つの台形を重ねた感じになります。<br />
<br />
<br />
<br />
３、何回も繰り返すと歯形になる。。<br />
<img src="//werner.blog.shinobi.jp/File/54148f16.png" alt="" /> ラックの位置は右方向に６ステップ<br />
ギア材料の回転角度は時計回りに６ステップです。<br />
６個の台形が重なります。<br />
台形の左側面をみると歯形になってます。<br />
あとは適当なスプラインでつなげればいいですね。<br />
<br />
<br />
<br />
<br />
<br />
以上です。<br />
これでみんな歯車が作れますね。おわり。<br />
<br />
<br />
<br />
<br />
]]>
    </description>
    <category>いろいろと</category>
    <link>http://werner.blog.shinobi.jp/%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E3%81%A8/%E6%AD%AF%E8%BB%8A%E5%89%B5%E7%94%9F%EF%BC%91</link>
    <pubDate>Sat, 20 Feb 2016 08:04:00 GMT</pubDate>
    <guid isPermaLink="false">werner.blog.shinobi.jp://entry/394</guid>
  </item>
    <item>
    <title>mbed備忘録7:KONDOシリアルサーボはじめました</title>
    <description>
    <![CDATA[ジャイロを買って、サーボも買って、mbedもかって・・・<br />
<br />
ｼﾘｱﾙ用の回路つけてなんにもしてない日々が流れていたので、ちょっとあそびました。<br />
<br />
◆まずはじめに、近藤の半2重通信をmbedにどうつなぐかです。<br />
回路図はこんな感じ<br />
mbedからの信号を5Vにしつつ半2重通信をします。<br />
なぜそういうことをしようと思ったのか、それはもう思い出せません。<br />
<a target="_blank" href="//werner.blog.shinobi.jp/File/d6272db0.png" title=""><img src="//werner.blog.shinobi.jp/Img/1446973257/" alt="" /></a> <br />
&nbsp;<a target="_blank" href="//werner.blog.shinobi.jp/File/37b6b2b4.png" title=""><img src="//werner.blog.shinobi.jp/Img/1446973258/" alt="" /></a> <br />
&uarr;は赤がサーボのピン、緑がマイコンのRXD、青がマイコンのTXDそれぞれの電圧です。<br />
マイコンから出た信号がマイコンに入っていますが、まー読まないから関係ないと思います？？<br />
ほんとかなぁ。<br />
<br />
◆ほんでもって、ICS3.5をさーぼとやるので、ｼﾘｱﾙをはいてやる必要があります。<a href="http://d.hatena.ne.jp/rinie/20110408/1302265191" name="1302265191"></a><br />
<a href="http://d.hatena.ne.jp/rinie/20110408/1302265191" title="">コマンド方式サーボKRS-6003HVの制御　その1</a><br />
こちらのプログラムを参考にさせていただきました。<br />
<br />
また、本家のリファレンスも参考にしました。<br />
<br />
ざっくり、こんな感じ<br />
<span style="color: #999999;">Serial ko(p9,p10);//txrx</span><br />
<br />
<span style="color: #999999;">void setServoDeg(float deg)//+-135deg</span><br />
<span style="color: #999999;">{</span><br />
<span style="color: #999999;">&nbsp;&nbsp;&nbsp; deg=deg+135;</span><br />
<span style="color: #999999;">&nbsp;&nbsp;&nbsp; if(deg&gt;270)deg=270;</span><br />
<span style="color: #999999;">&nbsp;&nbsp;&nbsp; if(deg&lt;0)deg=0;</span><br />
<span style="color: #999999;">&nbsp;&nbsp;&nbsp; targetPosi = 3500 + (int)((deg*800)/27);</span><br />
<span style="color: #999999;">}</span><br />
<br />
//&uarr;3500~11500で0～270&deg;動きます。<br />
<br />
<span style="color: #999999;">float getServoDeg(void)</span><br />
<span style="color: #999999;">{</span><br />
<span style="color: #999999;">&nbsp;&nbsp;&nbsp; return (((float)(feedbackPosi-3500)*27)/800)-135;</span><br />
<span style="color: #999999;">}</span><br />
<br />
<span style="color: #999999;">/*----------------------------------*/</span><br />
<span style="color: #999999;">/* KONDOと角度&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</span><span style="color: #999999;"></span><br />
<span style="color: #999999;">/*----------------------------------*/</span><br />
<span style="color: #999999;">int set_posi(char id, int pos)</span><br />
<span style="color: #999999;">{</span><br />
<span style="color: #999999;">&nbsp; unsigned char tx[3];</span><br />
<span style="color: #999999;">&nbsp; unsigned char rx[6];</span><br />
<span style="color: #999999;">&nbsp; int i;</span><br />
<span style="color: #999999;">&nbsp; int data=0;</span><br />
<span style="color: #999999;">&nbsp; </span><br />
<span style="color: #999999;">&nbsp; tx[0] = 0x80 | id;</span><br />
<span style="color: #999999;">&nbsp; tx[1] = (unsigned char)( (pos &gt;&gt; 7) &amp; 0x7f);</span><br />
<span style="color: #999999;">&nbsp; tx[2] = (unsigned char)(pos &amp;0x7f);</span><span style="color: #999999;"></span><span style="color: #999999;"></span><br />
<span style="color: #999999;">&nbsp; </span><br />
<span style="color: #999999;">&nbsp; for(i = 0; i&lt;3; i++){</span><br />
<span style="color: #999999;">&nbsp;&nbsp;&nbsp; ko.putc(tx[i]);</span><br />
<span style="color: #999999;">&nbsp; }</span><br />
<span style="color: #999999;">&nbsp; //wait(16);</span><br />
<span style="color: #999999;">&nbsp; for(i = 0; i&lt;6; i++){</span><br />
<span style="color: #999999;">&nbsp;&nbsp;&nbsp; rx[i] = ko.getc();</span><br />
<span style="color: #999999;">&nbsp; }</span><br />
<span style="color: #999999;">&nbsp; </span><br />
<span style="color: #999999;">&nbsp; data = (int)(rx[4] &amp; 0x7f);</span><br />
<span style="color: #999999;">&nbsp; data = (data &lt;&lt; 7) + (int)(rx[5] &amp; 0x7f);</span><br />
<span style="color: #999999;">&nbsp; </span><br />
<span style="color: #999999;">&nbsp; return data;</span><br />
<span style="color: #999999;">} </span><br />
<br />
<span style="color: #999999;">int main(){</span><br />
<br />
<span style="color: #999999;">ko.baud(115200);</span><br />
<span style="color: #999999;">ko.format(8, Serial::Even, 1);</span><br />
<br />
<span style="color: #999999;">setServoDeg(もくひょうかくど);</span><br />
<span style="color: #999999;">feedbackPosi=set_posi(1, targetPosi);</span><br />
<br />
&uarr;それっぽいところだけ抜粋。<br />
変数の宣言とか足りないと思う。<br />
<br />
◆動かすだけじゃつまらないので、ジャイロとコラボしました。<br />
<br />
<br />
カメラのジンバルっていうか、そんな感じの動画。<br />
ジャイロの角速度"積分値"を、角度として入力すると、<br />
回路の動いた角度だけ、サーボは逆転動作します。<br />
つまり動いてないかのよう。<br />
今回は5msごとにジャイロ取得、サーボに指令してます。<br />
積分は何にも考えないで、<br />
&Sigma;(現在のジャイロ値&times;0.005)<br />
です。<br />
<br />
<iframe width="400" height="225" src="http://www.youtube.com/embed/39hubktWZnI" frameborder="0" allowfullscreen=""></iframe><br />
<br />
ジャイロは角速度を電圧にするんですけれでも、<br />
ドリフトっていって動いてない時の電圧がだんだん増えていく弱点があります。<br />
<br />
そこで、ハイパスフィルターとか淹れてみようって準備しました。<br />
けど、動画の通りそこまで必要じゃなかったかっていう。<br />
<br />
◆ハイパスフィルター<br />
ゆっくりした変化を無視する方法がハイパスフィルターです。<br />
<br />
こちらのプログラムを参考にしました。<br />
<a href="http://vstcpp.wpblog.jp/?page_id=523" title="">簡単なデジタルフィルタの実装</a><br />
<br />
ざっくりこんな感じで真似させていただきました。<br />
<span style="color: #999999;">// それぞれの変数は下記のとおりとする</span><br />
<span style="color: #999999;">// float samplerate &hellip; サンプリング周波数</span><br />
<span style="color: #999999;">// float freq &hellip; カットオフ周波数</span><br />
<span style="color: #999999;">// float q&nbsp;&nbsp;&nbsp; &hellip; フィルタのQ値</span><br />
<span style="color: #999999;">float omega,alpha,a0,a1,a2,b0,b1,b2;</span><br />
<span style="color: #999999;">float freq=.01;</span><br />
<span style="color: #999999;">float q=0.7071;</span><br />
<span style="color: #999999;">float samplerate=200;</span><br />
<span style="color: #999999;">/*----------------------------------*/</span><br />
<span style="color: #999999;">/* ハイパスフィルターセット&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</span><br />
<span style="color: #999999;">/* Data入力&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</span><br />
<span style="color: #999999;">/*----------------------------------*/</span><br />
<span style="color: #999999;">void setHPF(void)</span><br />
<span style="color: #999999;">{&nbsp; </span><br />
<span style="color: #999999;">omega = 2.0 * 3.14159 *&nbsp; freq/samplerate;</span><br />
<span style="color: #999999;">alpha = sin(omega) / (2.0* q);</span><br />
<span style="color: #999999;">&nbsp;</span><br />
<span style="color: #999999;">a0 =&nbsp;&nbsp; 1.0 + alpha;</span><br />
<span style="color: #999999;">a1 =&nbsp; -2.0 * cos(omega);</span><br />
<span style="color: #999999;">a2 =&nbsp;&nbsp; 1.0 - alpha;</span><br />
<span style="color: #999999;">b0 =&nbsp; (1.0 + cos(omega)) / 2.0;</span><br />
<span style="color: #999999;">b1 = -(1.0 + cos(omega));</span><br />
<span style="color: #999999;">b2 =&nbsp; (1.0 + cos(omega)) / 2.0;</span><br />
<span style="color: #999999;">}</span><br />
<span style="color: #999999;">float in1=0,in2=0,out1=0,out2=0;</span><br />
<span style="color: #999999;">/*----------------------------------*/</span><br />
<span style="color: #999999;">/* ハイパスフィルタ出力&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</span><br />
<span style="color: #999999;">/* Data入力&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</span><br />
<span style="color: #999999;">/*----------------------------------*/</span><br />
<span style="color: #999999;">float outHPF(float input)</span><br />
<span style="color: #999999;">{</span><br />
<span style="color: #999999;">// それぞれの変数は下記のとおりとする</span><br />
<span style="color: #999999;">// 　float input[]&nbsp; &hellip;入力信号の格納されたバッファ。</span><br />
<span style="color: #999999;">// 　flaot output[] &hellip;フィルタ処理した値を書き出す出力信号のバッファ。</span><br />
<span style="color: #999999;">// 　int&nbsp;&nbsp; size&nbsp;&nbsp;&nbsp;&nbsp; &hellip;入力信号・出力信号のバッファのサイズ。</span><br />
<span style="color: #999999;">// 　float in1, in2, out1, out2&nbsp; &hellip;フィルタ計算用のバッファ変数。初期値は0。</span><br />
<span style="color: #999999;">// 　float a0, a1, a2, b0, b1, b2 &hellip;フィルタの係数。 別途算出する。</span><br />
<span style="color: #999999;">// 入力信号にフィルタを適用し、出力信号として書き出す。</span><br />
<span style="color: #999999;">float output;</span><br />
<span style="color: #999999;">output = b0/a0 * input + b1/a0 * in1&nbsp; + b2/a0 * in2</span><br />
<span style="color: #999999;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - a1/a0 * out1 - a2/a0 * out2;</span><br />
<span style="color: #999999;">&nbsp;</span><br />
<span style="color: #999999;">in2&nbsp; = in1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 2つ前の入力信号を更新</span><br />
<span style="color: #999999;">in1&nbsp; = input;&nbsp; // 1つ前の入力信号を更新</span><br />
<span style="color: #999999;">&nbsp;</span><br />
<span style="color: #999999;">out2 = out1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 2つ前の出力信号を更新</span><br />
<span style="color: #999999;">out1 = output; // 1つ前の出力信号を更新</span><br />
<br />
<span style="color: #999999;">return out1;</span><br />
<span style="color: #999999;">}</span><br />
<br />
ハイパスフィルターですから動画見たいに、動きが無くなる＝高周波成分は0になろうとします。<br />
<br />
普通はローパス分を別のセンサーとかを入れて相補するっぽいですが難しいことは・・・。<br />
<br />
<br />
◆◆◆想像以上に積分値安定してるんで感動した。<br />
<br />
<br />
<br />
]]>
    </description>
    <category>mbed</category>
    <link>http://werner.blog.shinobi.jp/mbed/mbed%E5%82%99%E5%BF%98%E9%8C%B27-kondo%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%9C%E3%81%AF%E3%81%98%E3%82%81%E3%81%BE%E3%81%97%E3%81%9F</link>
    <pubDate>Sun, 08 Nov 2015 09:27:11 GMT</pubDate>
    <guid isPermaLink="false">werner.blog.shinobi.jp://entry/393</guid>
  </item>
    <item>
    <title>4自由度ヘビの軌道生成？③</title>
    <description>
    <![CDATA[軌道上を通った場合の関節角度の決定方法は前回の通りです。<br />
<br />
で軌道を決定する上での残ったパラメータは<br />
●Sinの周期の長さ<br />
●振幅<br />
●&uarr;とロボットのサイズ比<br />
です。<br />
<br />
こんかいは<br />
2&pi;:1:???<br />
で???のところを、0.5,0.75,1.5(ロボットの３節を1:2:1とする)<br />
というのを試しました。<br />
で、ベターだったのは1.5です。<br />
<br />
・・・ちなみに0.75では推進できませんでした。床にごむしーとを敷くと推進できましたが・・・つまり、摩擦が充分であればもっといい感じになるのでしょう。・・・広大なごむしーと・・・ほしぃ。<br />
<br />
生成した軌道は<br />
<a target="_blank" href="//werner.blog.shinobi.jp/File/cc3c01d7.png" title=""></a><img src="//werner.blog.shinobi.jp/File/cc3c01d7.png" alt="" /> <br />
こんな軌道ととおり、<br />
角度としては<br />
<img src="//werner.blog.shinobi.jp/File/2a1a3229.png" alt="" /> <br />
こんな感じになります。<br />
後ろの関節と、前の関節の軌道は違うものでした。<br />
「どっちが前？」というのは綺麗に分かれるようです。<br />
<br />
実機の動作は<br />
<iframe width="400" height="225" src="http://www.youtube.com/embed/JnojqwvEUxM" frameborder="0" allowfullscreen=""></iframe><br />
このようになり、前後というのははっきりしています。<br />
<br />
動画からは、<br />
・推進出来る時、出来ない時<br />
・想定した軌道とのズレ<br />
が明確に分かります。<br />
<br />
なので、なるべく「推進できる時」というのを１周期ないで多く確保する軌道<br />
というのを推定できると思いますが・・・<br />
<br />
ま、あ、そろそろ飽きた・・・か・・・な。<br />
<br />
]]>
    </description>
    <category>ヘビ</category>
    <link>http://werner.blog.shinobi.jp/%E3%83%98%E3%83%93/4%E8%87%AA%E7%94%B1%E5%BA%A6%E3%83%98%E3%83%93%E3%81%AE%E8%BB%8C%E9%81%93%E7%94%9F%E6%88%90%EF%BC%9F%E2%91%A2</link>
    <pubDate>Sun, 14 Jun 2015 12:46:18 GMT</pubDate>
    <guid isPermaLink="false">werner.blog.shinobi.jp://entry/392</guid>
  </item>

    </channel>
</rss>