Quantcast
Channel: youtalk.jp
Viewing all 640 articles
Browse latest View live

ROS勉強記#1 ROS対応NEXTAGEの開発環境セットアップ

$
0
0

Twitterのタイムラインでたまたまアナウンスを見かけた、4/12に東京で開催された第1回ROS勉強会に参加したことを契機に、最近ROS(Robot Operating System)の勉強を始めました。昨年末、国際ロボット展で発表しましたカワダロボティクスのROS対応ロボット、NEXTAGE OPENが社内にあるので、勉強環境としてはかなり理想的です。実益を兼ねて、基礎からROSの公式Wikiのチュートリアルを追いながら、少しずつ研鑽を重ねていっています。

NEXTAGE OPEN

5/16の第2回ROS勉強会カワダロボティクスに新たに出来たオープンスペース、Cobotパーラーで開催されることとなり、僕がNEXTAGE OPENのROSインタフェースに関する説明を行う予定でいます。ROS初学者の僕が説明を行うということで、なんともおこがましい感じがしますが、説明後にはNEXTAGE OPENを使った半日間のハッカソンも予定されているので、この説明がハッカソンの成功の命運を担っているといえます。精一杯頑張らないといけません。せっかくなので、今回の勉強の軌跡をここで共有していき、説明資料の下書きとして使っていこうと思っています。

さて、今回はROS勉強記第1回ということで、まずは肩慣らしにROS環境のセットアップと、NEXTAGE OPENのROS対応ソフトウェアのインストール手順をまとめます。OSはUbuntu 12.04、ROSはHydroを想定しています。

ROS環境セットアップ

基本的に公式Wikiどおり進んでいけば、問題ありません。ROS関連パッケージが全部インストールされるros-hydro-desktop-fullをインストールしておくことをおすすめします。

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'
$ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install ros-hydro-desktop-full

パッケージのインストールが終了したら、下記コマンドを実行してください。自分で開発したソースのコンパイルなどで必要となる依存関係のセットアップが行われます。

$ sudo rosdep init
$ rosdep update

最後に、.bashrc もしくは .zshrc にROSの環境変数を追加するコマンドを追記して完了です。

bashユーザ

$ echo "source /opt/ros/hydro/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

zshユーザ

$ echo "source /opt/ros/hydro/setup.zsh" >> ~/.zshrc
$ source ~/.zshrc

NEXTAGE OPENのROS対応ソフトウェアのインストール

NEXTAGE OPENのROS対応ソフトウェアは東京大学JSK研究室東京オープンソースロボティクス協会(TORK)を中心としてオープンソースで開発が進められています。

インストール方法は、英語では詳しく記述されていますので、以下は日本語での情報としてご活用ください。日進月歩でソースコードが改善されるため、パッケージをインストールする際には、前節の1つ目のコマンドで設定したレポジトリではなく、Shadow Fix版(Nightly Build版といった方が想像しやすいかも)のレポジトリを利用することをおすすめします。

/etc/apt/sources.list.d/ros-latest.list の元の2行をコメントアウトし、

deb http://packages.ros.org/ros-shadow-fixed/ubuntu precise main
deb-src http://packages.ros.org/ros-shadow-fixed/ubuntu precise main

を追加します。あとは、apt-get でインストールできます。

$ sudo apt-get update 
$ sudo apt-get dist-upgrade
$ sudo apt-get install ros-hydro-rtmros-nextage ros-hydro-rtshell-core

次に、.bashrc もしくは .zshrc にシミュレータの起動などに使うコマンドのエイリアスを追加するコマンドを追記してください。

bashユーザ

$ echo "source `rospack find openrtm_tools`/scripts/rtshell-setup.sh" >> ~/.bashrc
$ source ~/.bashrc

zshユーザ

$ echo "alias rtmlaunch='`rospack find hrpsys_ros_bridge`/scripts/rtmlaunch'" >> ~/.zshrc
$ echo "alias rtmtest='`rospack find hrpsys_ros_bridge`/scripts/rtmtest'" >> ~/.zshrc
$ source ~/.zshrc

動作確認

さて、インストールは完了したはずです。動作確認として、NEXTAGE OPENのシミュレータを起動してみましょう。

$ rtmlaunch nextage_ros_bridge nextage_ros_bridge_simulation.launch

以下の動画の右半分のように、NEXTAGEの3次元モデルが描画されれば、動作確認は成功です。第2回勉強記からは、シミュレータの使い方、実機との接続、ROSインタフェースなどのお話をしていく予定です。乞うご期待。

追記事項

ちなみに、今回書いたパッケージ名やコマンド名の部分を、「nextage」から「hironx」に変更すると、NEXTAGE OPENではなく、HIRONXのパッケージがインストールできます。


popmech: If you threw a bottle, a hammer, and a tennis racket...

$
0
0


popmech:

If you threw a bottle, a hammer, and a tennis racket at a typical robot arm, you’d end up with a broken robot arm. Not so with this new mechanical limb invented by Swiss researchers: The device can catch all kinds of flying objects thrown in its direction, reacting in less than one-twentieth of a second. 

Watch This Robot Hand Catch a Flying Tennis Racket

動画のインパクトはすごい。やはりロボットは動いてなんぼですよね。

ROS勉強記#2 NEXTAGEのROSトピックとサービス

$
0
0

ROS勉強記第2回はNEXTAGE OPENのROSインタフェースについて取り上げます。まずは簡単にNEXTAGEのソフトウェア構成について述べます。下図を参照してもらえるとわかるように、ROSインタフェースは

  • hrpsys:ロボットの制御ソフトウェア
  • OpenHRP3:ロボットの動力学計算ソフトウェア
  • OpenRTM:ロボットソフトウェアのミドルウェア(ROSと似た機能を持つ)

という複数の基盤ソフトウェアの上に位置しています。これらのソフトウェアのインタフェースと同等の機能を持つROSトピック、サービスなどを提供するブリッジを介することで、ROSを使ったアプリケーションが実装されています。

ブリッジがどれだけあるか、試しに見てみましょう。

ターミナル1

$ roscore

ターミナル2

$ rtmlaunch nextage_ros_bridge nextage_ros_bridge_simulation.launch

ターミナル3

$ rostopic list

動作生成を行うSequencePlayerServiceROSBridgeや、ロボットの現在状態を保持するStateHolderServiceROSBridgeなど、ロボットの制御を司るhrpsysが持つ機能のブリッジが確かに存在することが確認できます。では実際に、このROSインタフェースでNEXTAGE OPENを操作してみましょう。

ROSトピック

ROSトピックで一番わかりやすいのは、関節角をPublishしている /joint_states でしょう。

$ rostopic type /joint_states | rosmsg show
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
string[] name
float64[] position
float64[] velocity
float64[] effort

ロボットの現在の関節角がpositionに保存されています。試しに第1回ROS勉強会で教えてもらったrqt_plotで描画してみましょう。動画をご参照ください。positionのインデックスは、3から8が右腕の関節角の値です。

ROSサービス

ROSサービスにどんなサービス(関数)が用意されていて、どのように使えばよいかを知るドキュメントは、残念ながら現在のところほとんどありません。あったら教えて下さい。英語ですが、ROS WikiのチュートリアルにhrpsysのPythonインタフェースの話が少し記述されているので、それがまだわかりやすいかもしれません。

僕は学生時代から同じくhrpsysで動作するHRP2, HRP4, HIRO(NEXTAGEの研究プラットフォーム版、現在はNEXTAGE OPENに代わり、ディスコンに)を触っていて前知識があるため、すんなり解釈できましたが、初学者にとってはかなりギャップがありそうです。より詳しく知りたい場合は、ソースコードを読んで直に理解していくしかありません。hrpsysはオープンソースで開発が進められているので、ソースコードは自由に読むことができます。ユーザがまず初めに読むべきは、ロボットの動作生成を行うSequencePlayerとそれをラップしたhrpsys_config.pyでしょう。

これまでの動画で利用してきたipythonで実行しているnextage.pyは、内部でhrpsys_config.pyをNEXTAGE向けに継承したnextage_client.pyを呼んでいます。

シミュレータで試しながらインタラクティブに動作確認してみましょう。

ターミナル3

$ ipython -i `rospack find nextage_ros_bridge`/script/nextage.py
$ nxc.goInitial() # 初期姿勢に移動する
$ import math
$ nxc.setTargetPose('larm', [0.2, 0, 1.2], [3.0, -math.pi/2, -3.0], tm=2.0) # 逆運動学ににより左腕を移動する (x, y, z) = (0.2, 0, 1.2), (roll, pitch, yaw) = (3.0, -π/2, 3.0)
$ nxc.setTargetPoseRelative('larm', 'LARM_JOINT5', dz=-0.1, tm=5) # 左腕のエンドエフェクタLARM_JOINT5をz方向に0.1m下げる
$ nxc.goOffPose() # サーボオフ姿勢に移動する

ロボット実機を動かす場合には、その他に checkEncoders(), servoOn(), servoOff() などを呼ばなくてはなりませんが、これは勉強記第4回で取り上げます。さて、少し使い方がわかったところで、上記の関数をROSサービスから呼んでみましょう。

ターミナル3

$ rosservice list /SequencePlayerServiceROSBridge
/SequencePlayerServiceROSBridge/addJointGroup
/SequencePlayerServiceROSBridge/clear
/SequencePlayerServiceROSBridge/clearNoWait
/SequencePlayerServiceROSBridge/clearOfGroup
/SequencePlayerServiceROSBridge/get_loggers
/SequencePlayerServiceROSBridge/isEmpty
/SequencePlayerServiceROSBridge/loadPattern
/SequencePlayerServiceROSBridge/playPattern
/SequencePlayerServiceROSBridge/playPatternOfGroup
/SequencePlayerServiceROSBridge/removeJointGroup
/SequencePlayerServiceROSBridge/setBasePos
/SequencePlayerServiceROSBridge/setBaseRpy
/SequencePlayerServiceROSBridge/setInitialState
/SequencePlayerServiceROSBridge/setInterpolationMode
/SequencePlayerServiceROSBridge/setJointAngle
/SequencePlayerServiceROSBridge/setJointAngles
/SequencePlayerServiceROSBridge/setJointAnglesOfGroup
/SequencePlayerServiceROSBridge/setJointAnglesWithMask
/SequencePlayerServiceROSBridge/setMaxIKError
/SequencePlayerServiceROSBridge/setMaxIKIteration
/SequencePlayerServiceROSBridge/setTargetPose
/SequencePlayerServiceROSBridge/setWrenches
/SequencePlayerServiceROSBridge/setZmp
/SequencePlayerServiceROSBridge/set_logger_level
/SequencePlayerServiceROSBridge/waitInterpolation
/SequencePlayerServiceROSBridge/waitInterpolationOfGroup

おっと、なんてことでしょう。残念ながら setTargetPose はあっても、他のサービスはないことがわかってしまいました。ですが、hrpsysのソースコードを探ってみると、

/SequencePlayerServiceROSBridge/setJointAngles # 関節角を設定する
/SequencePlayerServiceROSBridge/setTargetPose # 逆運動学で姿勢を設定する
/ForwardKinematicsServiceROSBridge/getCurrentPose # 現在姿勢を取得する

の3つのサービスを組み合わせると、goInitial, goOffPose, setTargetPoseRelative は実装できそうです。次回以降のROS勉強記で実際に実装してみようと思います。とりあえず今回はsetTargetPoseをrosservieで呼んでみましょう。

ターミナル3

$ rosservice type /SequencePlayerServiceROSBridge/setTargetPose | rossrv show                                   
string name
float64[] xyz
float64[] rpy
float64 tm
---
bool operation_return
$ rosservice call /SequencePlayerServiceROSBridge/setTargetPose 'larm' '[0.2, 0.0, 1.2]' '[-3.14, 0, 3.14]' 2.0 # nxc.setTargetPose('larm', [0.2, 0.0, 1.2], [-math.pi, 0.0, math.pi], tm=2.0) と同じ

ロボットが写真のような姿勢になったら成功です。長くなってきたので、ROS勉強記第2回はこれにてお開きにします。1回空けたROS勉強記第4回では、実機ロボットと接続して自作ROSノードでNEXTAGEを動かす予定です。

ROS勉強記#3 OSX MarvericsへのROSインストール

$
0
0

ROS勉強記第3回は、少し閑話休題として、MacへのROSのインストールを取り上げたいと思います。環境はOSX Marverics、ROS Hydro、パッケージマネージャにはHomebrewを使うことを想定しています。最初は僕が元々使っていたMacPortsで試したのですが、かなり難儀したので、この際MacPortsの資産を全部アンインストールして、Homebrewへ移行しました。

Homebrewでのインストール手順は、公式Wikiに取り上げられているのですが、僕の環境では、何度か途中でパッケージインストールに失敗する箇所があったので、そこを中心にコメントを残しておきます。

HomebrewのFormula追加

ROSのパッケージ取得に必要なFormulaを追加します。

$ brew update
$ brew install cmake
$ brew tap ros/hydro
$ brew tap osrf/simulation
$ brew tap homebrew/versions
$ brew tap homebrew/science

PIPの設定

ROSのソースコンパイルに必要なツールはpythonのPIPを通してインストールできます。

$ sudo pip install -U setuptools
$ sudo pip install -U wstool rosdep rosinstall rosinstall_generator rospkg catkin-pkg Distribute sphinx
$ sudo rosdep init
$ rosdep update

catkinワークスペースの構築

ROSはGroovyになってから、ビルドシステムにcatkinと呼ばれるツールを利用するようになりました。まずはそのセットアップを行い、ソースコンパイルに必要な依存パッケージをインストールします。なお、今回はROSの通信に必要な最小限のパッケージしかインストールしません。GUIツールなどもインストールしようと頑張りましたが、かなり苦労しそうだったので、途中で諦めました。

$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws
$ rosinstall_generator ros_comm --rosdistro hydro --deps --wet-only --tar > hydro-ros_comm-wet.rosinstall
$ wstool init -j8 src hydro-ros_comm-wet.rosinstall
$ rosdep install --from-paths src --ignore-src --rosdistro hydro -y

依存パッケージのインストールの途中で、僕の環境(あるいはタイミング)では、PILとTinyXMLのインストールに失敗しました。もし同様の問題が起きた場合に、僕が行なった解決策を参照ください。

PIL

sudo pip install ではインストール出来ないといわれます。このときは以下の手順に従ってください。freetypeのバージョンは適宜変更のこと。

$ brew install freetype
$ ln -s /usr/local/Cellar/freetype/2.5.1/include/freetype2 /usr/local/include/freetype
$ sudo pip install PIL --allow-external PIL --allow-unverified PIL

TinyXML

TinyXMLをインストールする際に、パッチを当てているようなのですが、そのパッチを配布している patch-tracker.debian.org がどうもダウンしているようで、取得できずインストールに失敗してしまいます。同じ(らしき)ものを配布している github.com のアドレスに変更したdiffを以下に載せておきますので、適用して再度 brew install tinyxml してください。

catkinワークスペースのビルド

依存パッケージの解決さえ出来れば、あとはすんなり行くはずです。

$ ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release

環境変数の設定

bashユーザ

$ echo "source ~/ros_catkin_ws/install_isolated/setup.bash" >> ~./bashrc
$ source ~./bashrc

zshユーザ

$ echo "source ~/ros_catkin_ws/install_isolated/setup.zsh" >> ~./zshrc
$ source ~./zshrc

これで、roscore, rostopic, rosserviceなどの通信コマンドが使えるようになりました。GUIツールはインストールできていませんが、ROSノードのプログラミングをするのなら、これだけ揃えば、まずは十分です。

余談ですが、Homebrewのターミナル出力が面白いですね。パッケージをビールに見立てて、コンパイルを「醸造(brew)」に見立ててるんですね。ダウンロードが「注ぐ(pour)」とか、トンチが効いてて好きです笑

(via Fixed vs. Growth: The Two Basic Mindsets That Shape Our...

ROS勉強記#4 rospyによるROSパッケージ開発

$
0
0

ROS勉強記第4回は、自分の手でROSパッケージを作成する術を習得します。NEXTAGEのROSインタフェースでは、すでにROSトピックは思いつくものすべてが元々あるように感じるため、ここではROSサービスの開発を扱います。第2回で、

残念ながら setTargetPose はあっても、他のサービスはないことがわかってしまいました。ですが、hrpsysのソースコードを探ってみると、

/SequencePlayerServiceROSBridge/setJointAngles # 関節角を設定する
/SequencePlayerServiceROSBridge/setTargetPose # 逆運動学で姿勢を設定する
/ForwardKinematicsServiceROSBridge/getCurrentPose # 現在姿勢を取得する

の3つのサービスを組み合わせると、goInitial, goOffPose, setTargetPoseRelative は実装できそうです。次回以降のROS勉強記で実際に実装してみようと思います。

と述べていますので、今回はこの3つのサービスを例にとって実装します。ソースコードはGitHubにアップしましたので、説明は省略してまずは使ってみるという方は、catkin_makeしてrosservice callしてみてください。

https://github.com/ros-japan-users/nextage_ros_seqplay_util

僕自身、ROSプログラミングはまだまだ初心者なので、「ここはこうしたほうが良いよ!」という部分がありましたら、Pull Requestウェルカムです。

ROSパッケージの開発

まずはパッケージを作成します。今回はSequencePlayerのユーティリティパッケージということで、名前をnextage_ros_seqplay_utilとしました。

$ cd /path/to/catkin_ws/src
$ catkin_create_pkg nextage_ros_seqplay_util rospy tf nextage_ros_bridge nextage_description

catkin_create_pkgの引数で、依存パッケージを指定しています。各パッケージを簡単に説明します。

ここからサービスを実装していくのですが、説明を端折るため、実装済みのソースコードをGitHubからクローンしてくることにしましょう。その上で、重要な箇所を抜き出して説明します。

$ rm -r nextage_ros_seqplay_util # catkin_create_pkgで先ほど作ったものを削除する
$ git clone https://github.com/ros-japan-users/nextage_ros_seqplay_util.git
$ cd ..
$ catkin_make

catkin_makeが成功すると、nextage_ros_seqplay_util/srvにあるサービスの定義ファイルがコンパイルされ、Python用のサービスプロキシが生成されます。

srvファイルの記述

https://github.com/ros-japan-users/nextage_ros_seqplay_util/blob/master/srv/goPose.srv

ROSサービスgoInitial, goOffPoseの入出力の定義ファイルgoPose.srvを記述します。setTargetPoseRelativeはsetTargetPoseとインタフェースを合わせるため、hrpssys_ros_bridge/OpenHRP_SequencePlayerService_setTargetPoseの定義ファイルを利用しました。

ROSサービスプロキシの設定

https://github.com/ros-japan-users/nextage_ros_seqplay_util/blob/master/src/seqplay_util_server.py#L35-L46

SequencePlayerROSBridgeとForwardKinematicsServiceROSBridgeがROSサービスとして提供しているsetTargetPose, setJointAnglesOfGroup, getCurrentPoseをPythonのメソッドself.set_target_poseのように呼び出せるようにマッピングしています。

setTargetPoseRelativeの実装

https://github.com/ros-japan-users/nextage_ros_seqplay_util/blob/master/src/seqplay_util_server.py#L56-L61

座標系変換パッケージtfの関数euler_from_matrixを使って、現在のエンドエフェクタの回転行列をXYZ, Roll, Pitch, Yawに分解して、それらに対して、setTargetPoseReiativeで渡される直交座標の差分量を足しあわせ、setTargetPoseを呼び出しています。tfパッケージのおかげで簡単に実装できました。

ROSサービスの登録

https://github.com/ros-japan-users/nextage_ros_seqplay_util/blob/master/src/seqplay_util_server.py#L92-L97

実装したサービスを/nextage_ros_seqplay_util/setTargetPoseRelative, /nextage_ros_seqplay_util/goInitial, /nextage_ros_seqplay_util/goOffPoseという名前で登録します。

シミュレータでの動作確認

hrpsys viewerを使って、実装したサービスの動作確認を行います。

ターミナル1

$ roscore

ターミナル2

$ rtmlaunch nextage_ros_bridge nextage_ros_bridge_simulation.launch

ターミナル3

$ rosrun nextage_ros_seqplay_util seqplay_util_server.py

ターミナル4

$ rosservice list /nextage_ros_seqplay_util
/nextage_ros_seqplay_util/get_loggers
/nextage_ros_seqplay_util/goInitial
/nextage_ros_seqplay_util/goOffPose
/nextage_ros_seqplay_util/setTargetPoseRelative
/nextage_ros_seqplay_util/set_logger_level
$ rosservice call /nextage_ros_seqplay_util/goInitial 2.0
$ rosservice call /SequencePlayerServiceROSBridge/waitInterpolation
$ rosservice call /nextage_ros_seqplay_util/setTargetPoseRelative "larm" "[0, 0, 0.1]" "[0, 0, 0]" 2.0
$ rosservice call /SequencePlayerServiceROSBridge/waitInterpolationOfGroup "larm"
$ rosservice call /nextage_ros_seqplay_util/goOffPose 2.0

waitInterpolationは、前の動作生成コマンドで発行した動作軌道をロボットが再生し終えるまで待つ機能を提供します。2秒で初期姿勢に移動して、2秒で左手を0.1m上に上げ、2秒でサーボオフ姿勢に移動するはずです。動きましたか?

見た目にはやっていることは勉強記第2回のnextage.pyを使った動作生成と同じですが、操作方法がhrpsysを直接呼び出したもの(実際にはOpenRTMを挟んでいますが)から、ROSインタフェースのみでの操作に変わっています。

ロボット実機での動作確認

勉強記第4回でNEXTAGE OPENのロボット実機との接続も扱う予定でしたが、時間がとれないため、第5回に延長させてください。来週頭には投稿したいと思います。

Softbankから発売されるコミュニケーションロボット、pepper。20万円でこのクォリティは凄まじい衝撃ですね。Rethin...

$
0
0


Softbankから発売されるコミュニケーションロボット、pepper。20万円でこのクォリティは凄まじい衝撃ですね。RethinkRoboticsのBaxterも衝撃的でしたが、あの10分の1の値段です。あとは通信プランがおそらくあるとして、それが月額いくらくらいになるかでしょうか?

"The new Intel® RealSense™ 3D Camera & SDK empower developers to create Apps that use every facet..."

$
0
0
“The new Intel® RealSense™ 3D Camera & SDK empower developers to create Apps that use every facet of human & computer interaction - including facial recognition, gesture control and voice activation. Compete for your share of $1,000,000 USD in cash, marketing opportunities and more!”

- RealSense | Intel

ROS勉強記#5 ロボットの実機接続とMoveIt!

$
0
0

公私ともにいろいろ立て込んでいまして、第4回からかなり時間が空いてしまいました。ROS勉強記第5回は、ROSインタフェースでNEXTAGE OPENのロボット実機を操作します。やはりロボットは実世界で動いてなんぼですよね?さらに、動作軌道生成にMoveIt!を使ってみます。

人型ロボットHRPシリーズや協働型ロボットNEXTAGEといった川田工業、カワダロボティクス製のロボットは、ロボット内部にハードウェア制御用PCとアプリケーション実行用PCの二つのPCが内蔵されています。前者は厳密な実時間制御をするためにリアルタイムOS(QNXもしくはART Linux)がインストールされ、後者はプログラミング環境として汎用性を持たせるため、Ubuntuがインストールされています。後者はもちろん別に内蔵PCを使わなくても、自分のUbuntu PCを使って代用できます。

セットアップ

まずは、ハードウェア制御用PC、アプリケーション実行用PCにホスト名を与えます。/etc/hostsにIPアドレスとホスト名を記述してください。今回はホスト名をnxc(NXtage Controllerの略)、nxv(NXtage Applicationの略)としました。

192.168.***.*** nxc
192.168.***.*** nxa

ホスト名を追加したら、ネットワークを再起動して、ロボットとROSインタフェースを仲介するブリッジを起動します。

ターミナル1

$ roscore

ターミナル2

$ ipython -i `rospack find nextage_ros_bridge`/script/nextage.py -- --host nxc
>> nxc.checkEncoders()

ターミナル3

$ sudo /etc/init.d/networking restart
$ roslaunch nextage_ros_bridge nextage_ros_bridge.launch nameserver:=nxc

ターミナル2で行っているように、ロボット実機の場合は、起動時に一度だけ関節のキャリブレーションを行わなくてはなりません。これは現在のところ、ROSインタフェースからは難しいようです。ですが、これが済めば、ロボットはもうROSインタフェース経由で動かせるようになります。これまで使ってきたhrpsys viewerによるシミュレーションと操作体系は何ら変わりはありません。

また、nxaでターミナル1, 2, 3のコマンドを実行しておけば、別PCからはnxaのROSマスターを見にいくように設定するだけで使うこともできます。こちらの方が、複数PCで開発するような分散環境にもやさしいですね。

$ export ROS_HOSTNAME=nxa
$ export ROS_MASTER_URI=http://nxa:11311

MoveIt!による動作生成

東京オープンソースソフトウェア協会の貢献により、NEXTAGE OPENは非常に高機能な動作計画ソフトウェアのMoveIt!に対応しています。せっかくですので、これを使ってロボット実機で遊んでみましょう。まずは必要なパッケージをインストールします。

$ sudo apt-get install ros-hydro-moveit-planners-ompl ros-hydro-hironx-moveit-config

以下のイシューで議論していますが、僕の環境ではros-hydro-nextage-moveit-configのみインストールされている状態でMoveIt!を動かしたところ、うまく起動しませんでした。現状ではros-hydro-hironx-moveit-configもインストールしておくことをおすすめします。

https://github.com/tork-a/rtmros_nextage/issues/71

インストールが済めば、あとはコマンド一つで実行できます。MoveIt!を初めて使ったので、あまり使い方がよくわかっていませんが、姿勢教示、動作教示のユーザインタフェースとしてだけ見ても、かなり有用ですね。ただ、ロボット実機で動かすには初期設定の速度では少し速くて見た目に怖いので、速度を下げたいところです。MoveIt!も勉強して使いこなしていきたいと思います。

$ roslaunch nextage_moveit_config moveit_planning_execution.launch

第2回ROS勉強会に向けて

勉強記第6回では、NEXTAGE OPENに内蔵されている頭部ステレオカメラや、両手先のハンドカメラをROSインタフェースで触ってみたいと思っています。第2回ROS勉強会まであと1週間と迫ってきましたが、もちろん発表資料も平行して作成中ですので、もうしばらくお待ちください。

1ヶ月以上悩みに悩みぬき、人間の目より明るいF0.95レンズを手に入れたので、まずは試し撮りがてらすみだ水族館へ。水族館は暗くて、...

$
0
0


















1ヶ月以上悩みに悩みぬき、人間の目より明るいF0.95レンズを手に入れたので、まずは試し撮りがてらすみだ水族館へ。水族館は暗くて、フラッシュも焚けない環境なので、明るいレンズの出番です。

F0.95で接写するとピントが合う位置が1mmくらいしかなくて、しかもこのレンズ、マニュアルフォーカスしかないので、かなりのじゃじゃ馬です。だけどピントが合った写真は本当に美しい。フォーカス、シャッター速度、絞り、ISO、ホワイトバランスのすべてをマニュアルで撮るようになると、1枚1枚大切に撮れて妥協のない写真になります。

レンズ特性上、開放で撮るとどうしてもソフトフォーカス気味になっちゃうんですが、それでも開放で撮りたくなる、そんなレンズです。 また、Olympus OM-D E-M1との相性もよく、マニュアルフォーカスのピント調節の補助機能が充実しているので、撮ってて楽しいです。

現在、150台以上が売れているネクステージの価格は、740万円。今後、価格が下がれば町工場での導入もあり得る。 (via...

$
0
0


現在、150台以上が売れているネクステージの価格は、740万円。今後、価格が下がれば町工場での導入もあり得る。 (via 待ち受けるのは競争か共生か ロボットが変える「産業と仕事」|今週の週刊ダイヤモンド ここが見どころ|ダイヤモンド・オンライン)

これまでもよくあったような内容の文面なのですが、一番気になったのは、NEXTAGEの販売台数ってオープンなんでしたっけ?という点です。

(via アスラテック新規ロボット事業発表会 | アスラテック株式会社)

欧エアバスが航空機の生産自動化に関する研究開発を加速している。日本製のロボットを使った組み立て工程の自動化や、3Dプリンターによる...

Myo - Wearable Gesture Control from Thalmic Labs (by Thalmic...

"We started work on ROS in November 2007. A lot has happened since then and we believe that it is now..."

$
0
0
“We started work on ROS in November 2007. A lot has happened since then and we believe that it is now time to build the next generation ROS platform. In this article we will explain why.”

- ROS2 Design

"WAMP is an open WebSocket subprotocol that provides two application messaging patterns in one..."

...

$
0
0


安倍晋三首相は19日午前、埼玉県加須市の機械工場を訪れ、生産性向上や人手不足解消のためにロボット技術を活用する現場を視察した。政府は24日にも閣議決定する新成長戦略にロボット活用を盛り込む方針で、首相自らアピールする狙いがある。 (via 首相「これはすごい」 ロボット活用現場を視察 - MSN産経ニュース)

カワダロボティクス社長の五十棲さんが安倍首相の案内役をしています。すごいすごい!

安倍総理「ロボット革命実現会議」立ち上げへ (by ANNnewsCH)

$
0
0


安倍総理「ロボット革命実現会議」立ち上げへ (by ANNnewsCH)

ROS勉強記#6 第2回ROS勉強会 in カワダロボティクス

$
0
0

6月14日土曜日に、ROS JAPAN Users Group第2回ROS勉強会がカワダロボティクスのオープンスペース、Cobotパーラーで開催されました。ROS勉強記第6回は、この勉強会とNEXTAGEハッカソンのレポートにします。初めてのハッカソン参加(そもそも人型サイズのロボットハッカソンというのは日本初かも?)、初めての会場運営、社会人として初めての対外プレゼン、と初めてづくしでハラハラドキドキの一日でした。

勉強会

勉強会では、まず13時からカワダロボティクスのROS対応ロボット、NEXTAGE OPENの概要説明を僕が行い、ロボット実機との接続のデモンストレーションまでを足早に1時間ほどで済ませました。事前に発表資料のドラフトなどを共有していたので、スムーズにいったと思います。発表資料はWebにアップしているので、参加できなかった方はぜひご覧ください。中身は今までのROS勉強記の内容をまとめたものプラスアルファになっています。

NEXTAGEハッカソン

21時までの約7時間耐久NEXTAGEハッカソンの様子はタイムラプス撮影や動画撮影してくれていたので、どんな様子か見ることができます。合間に晩ご飯代わりのハッカソン名物?ピザとアルコールを摂取しつつも、21時までぶっ通しで、みんながみんな思い思いに作業を進めていきます。年齢も職業もまったく違う人たちが助け合い競い合い、ロボットをハックしていく様子は、僕にとって新しい体験でした。やはりロボットが好きな人に悪い人はいないんだな、と改めて感じました。目の輝きが違います。

初めて触る人型サイズのロボットを自分の思い通りに動かすというのは、皆さんが想像するよりもまだまだ難しいことだらけです。にも関わらず、たった半日で使いこなし、デモの形に持っていくところまで進んだということは驚きでした。正直、誰もデモできるところまでいかないかもしれない、とも思っていました。これはやはり、ROSというロボット共通のプログラミングプラットフォームにNEXTAGEが対応したことが大きいと思います。今回の経験を踏まえてさらなるパワーアップするであろう、第2回NEXTAGEハッカソンが楽しみで仕方ありません。

止むなく途中で抜けた人たちも合わせると20数名が参加し、ハッカソンの最後まで残られた方は17名でした。遠路はるばる大阪や、愛知、茨城、神奈川から(さらにはオーストリアからも!)ご参加の方もいて、わざわざハッカソンの最後まで残るために東京で宿を取る方も何人かいました。ツイートやメーリングリストを見る限り、皆さん得るものの多い勉強会、ハッカソンになったようで、主催者冥利に尽きます。最高にエキサイティングな一日でした。特にROSが日本でも知られるようになる数年も前から、個人でROS勉強を続け、その記録を余すところなくROS勉強記録というブログで発信してきた @OTL師匠(笑)にお礼のツイートをいただけ、本当に感無量です。

@OTL師匠はダイジェスト動画の最後に登場しますが、KickStarterで購入したuArmをわざわざ持参し、ROS対応させた上でNEXTAGEと協働させるというミラクルを企画し、 @akioさんがNEXTAGEのデジタルIO(手先のグリッパ、吸着ハンド、リング照明などの制御)をハックしてROS対応させて華麗にアシストするというデモを披露してくれました。やはり歴戦の勇士たちはやることが違いますね!

第2回NEXTAGEハッカソンに向けて

反面、僕はというと、ロボットのセットアップを含む会場運営兼、NEXTAGE OPENの概要説明、参加者のプログラミングサポート、といろいろと兼務したため、僕自身は人生初のこのハッカソンで何かを生み出す、というところまで至れなかったのがすごく無念でした。本当はNEXTAGEの頭部ステレオカメラ、ハンドカメラの画像をパブリッシュするROSインタフェースを実装したかったのですが、再利用しようとしたカメラパッケージが悪かったのか、僕の使いこなしが悪かったのか、結局カメラを同時に1台しか接続できずに時間いっぱいとなってしまいました。また、主催者としての会場運営も初めてだったため、ロボットを扱う前の安全講習の不足など、会場運営もまだまだ改善の余地があります。

このツイートを有限実行することが、今の僕の目標です。ぐんと成長して、次回もあるに違いないNEXTAGEハッカソンに備えたいと思います。まずはカメラパッケージをバグフィックスして、きちんと使えるものにする、というところから始めます。乞うご期待!

popmech: Harley—Yes, Harley—Is Making an Electric...

Viewing all 640 articles
Browse latest View live


Latest Images