株式会社インフィニットループ PHPとスマホアプリ開発を行う札幌のシステム会社

技術ブログ

  1. トップ>
  2. 技術ブログ>
  3. Raspberry Piにサーボを付けてロボットアームを作ってみた話

2017年01月25日 (水)

著者 : 

Raspberry Piにサーボを付けてロボットアームを作ってみた話

こんにちは、kuhnです。

父親が幼い私にトランスとバッテリー1本だけで人を感電させる装置の仕組みを説明してくれた日、私の趣味が「川でダムを作ってみる」から「電子工作」へとシフトしました。感電装置という魔法の機械の作り方を教わった後、数カ月間、人を一番強く感電できるトランスを求めて村の電化製品捨て場を回っていました。クラスメートを感電させまくり、「そろそろやめてもらえないかな?」と感電装置を学校に持ち込み禁止になってからも、電化製品捨て場を回る習慣は残りました。何か面白そうなものを発見しては持ち帰り、解体する、というライフスタイルの始まりでした。

父親の指導で電子工作をはじめたという話でしたが、今日はRaspberry Piのお話しです。Raspberry Piといえば、Linuxが動作する小さいコンピュータですが、入出力ピンが付いているところが普段のコンピュータと違いますよね。つまり、電子工作に向いているということです。数年前に初めてRaspberry Piを目の当たりにしたときも「これで格安ウェブサーバを作ってみよう!」ではなく「Linuxでロボットを制御してみよう!」となりました。さて、これから「Raspberry Piにとりあえずサーボを付けてみよう」というプロジェクトをご紹介します。

言うまでもなく、どのようなサーボを使うかは人の勝手です。ですがやはり「格好いい! 使いたい!」と思えることが大事ですよね。1年半ほど前、筆者はDynamixel社のAX-12Aというサーボに出会いました。なんと通常のサーボと違って、現在回転角の取得や速度設定などができるのです! これは買わずにはいられませんよね。

RaspiRobotArm

サーボ4個から構成されるロボットアーム

おまけに力もかなり出るので「複数のサーボを適当に組み合わせればロボットアーム完成なのでは?」と思いましたが、そう簡単にはいきませんでした。ロボットアームっぽいのは出来ましたが、猛スピードで加速した後に急ブレーキで止まろうとする動きを何とかしなければなりません。そこで筆者は、サイン波の形と同じようにゆっくりと加減速するプログラムを書いてみました。

これでまあまあ動きがエレガントと言えなくもないロボットアームは完成しましたが、「何に使うか」が次の課題になりますよね。グリッパーを追加すればものを拾ったり落としたりできるので、次にグリッパー作りに挑戦しました。しかしアームの先端に追加できるものには重量の制限もあり、なかなかうまくいきませんでした。あれこれ試すうちに、グリッパーを諦め、とりあえずコイルでネジでも拾おうと決めました。

この段階でのロボットアームの状態は、以下のYouTube動画を見るとよくわかります!

自動的に動いてくれた方が何となく生き物っぽくなって格好いいということは、皆さんも共感いただけるのではないでしょうか。そこで次のステップとして、Raspberry Piカメラモジュールを購入し、簡単な画像処理アルゴリズムを組んで動かしてみました1。その様子を動画で撮影しましたのでご覧ください。

画像処理の結果、ロボットの真下に何かモノ2が置いてあることが検出された場合、その画像中の2次元座標を元に動き方を決めて関節を動かし、モノを拾おうとします。ロボットアームはこれで完成です。

ソースコード(Python)はこちらです。
GitHub – T-Kuhn/ScrewPicker: A Raspberry Pi project for a small robotic arm capable of picking up screws and other metallic things

raspi-magazine

このプロジェクトは、「みんなのラズパイコンテスト2016」で技術賞を受賞しました。

「みんなのラズパイコンテスト2016」全受賞作品 – スムーズに動くアームでネジを拾う、ラズパイで画像認識ソフトを自作:ITpro

賞金は次のプロジェクトに使いました。リンク先の動画をご覧になった読者はおそらく「卓球の球を跳ねさせる機械……?」と思ったかもしれません。実は機械にトリックショットさせて、その様子をビデオに撮ってYouTubeにアップして大儲けをする予定だったんです。しかし結局、トリックショットができるほどの精度で、球の位置を中心に保てませんでした……。

  1. 効率は悪いと思いますよ []
  2. 検出条件:背景の板とコントラストが大きいこと! []

コメントはまだありません

No comments yet.

  • このブログについて

    このブログは、札幌市の「株式会社インフィニットループ」が運営する技術ブログです。
    お仕事で使えるITネタを社員たちが発信します!

    最新の記事