2012年5月5日土曜日

ROS Fuerte Ubuntu 12.04 (precise)対応

Ubuntu12.04でもapt-getでROSがインストールできるようになりました。

私の環境はUbuntu12.04アップデート時にいろいろ失敗してしまい、
入れるのに少し苦労しましたが、普通の人は、

$ sudo apt-get update
$ sudo apt-get install ros-fuerte-desktop-full

とでもすればOKでしょう。
setup.bashの読み込みもお忘れなく。

2012年4月27日金曜日

ニコニコ超会議出ます!

野生の研究者としてニコニコ超学会にでます。
タイトルは「3分間ルンバハッキング」です。

持ち時間は5分なのに、このタイトル、というあからさまに狙った感じです。

ニコニコ超学会というは、
ニコニコ学会βとは、簡単に言うと「ユーザー参加型の研究の場」です。
従来プロの研究者だけがするものだった研究を、「野生の研究者がやってもいんじゃね?」的な
発想で考え出された研究団体・シンポジウムだとのこと。堅苦しくない感じで、みんなで楽しく
研究をして発表し合おうということですね。

ということらしいです。
まあ全然研究じゃないんですけどね。


29日の14:00 「研究してみたマッドネス ネットの部」
のトリででます。登場は14:50くらいかな?


放送はこちらで見れるようです。
http://live.nicovideo.jp/watch/lv89959587

時間はたったの5分。
概論に近いので私のBlogの熱心な読者には面白くないかもしれません。

僕の個人的な知り合いは楽しいでしょうけど。
なんか投票とかもあるっぽい?のでもしあったら投票してくださいね。

実物持っていけばいいとこまで行けると思うんですが、
そこまではできないかなー。

2012年4月24日火曜日

ROS Fuerteリリース

Fuerteが正式リリースされました!

http://www.ros.org/news/2012/04/ros-fuerte.html

すでにベータで使っているので個人的には特に感慨もないんですが。

Fuerteで気になっていたのがcatkinです。
ビルドシステムがrosmakeじゃなくなるというのでビビっていました。

でも、結局Fuerteではrosmakeが基本みたいです。
同じように心配している人がanswers.ros.orgにいました。

http://answers.ros.org/question/30132/dependencies-and-rosmake-in-fuerte-and-following

結局、catkinにしたのはPCLとか、「外部ライブラリ」を自然に取り込みたかったから(普通のライブラリみたいにROSのライブラリを使えるようにしたいから)、
ということみたいです。なので、普通のstackはrosmake使ってね、ってことみたいです。

で、次のGroovy Garapagosでは本格的にcatkin化するっぽい?ですね。

Fuerteの主な変更点は

  • gazebo 1.0 (DARPA Robotics Challengeでも使われるっぽい)
  • PCL 1.5
  • ROS messageライブラリが単独で動くように
  • rvizのQT化
  • rosdep2 (rosdep.yamlじゃなくて中央で依存情報をまとめられた)
っていう感じですかね。
↓が詳しいです。

FuerteはROSがGarapagos化しないための一歩って感じですね。
で、次のGarapagosでまさにGarapagosから出てくるって気がします。
Ubuntuの本体のリポジトリに入れてくるんじゃないかなー。

Updateではまった人はこちらを参照。

EigenとかUbuntuのを普通に使うから、CMakeLists.txtにも↓みたいに普通に書かないとだめになったぽいすね。全般的にそんな方向。opencv2パッケージも削除方向だし。

find_package(Eigen REQUIRED)
include_directories(${EIGEN_INCLUDE_DIRS})
add_definitions(${EIGEN_DEFINITIONS})

rosdep2の中央集権リポジトリはgithubで更新されます。
rosの開発自体かなりgithubに移ってきています。


2012年4月15日日曜日

rosruby作ってみた

rubyによるROSのクライアント rosrubyを試しに作ってみました。

https://github.com/OTL/rosruby

簡単なドキュメントはこっちを参照ください。
基本的に書いてある通りにやれば動くと思います。
https://github.com/OTL/rosruby/wiki/rosruby

まだ完全な動作を保証するレベルではないのですが、
デザインも含めてフィードバックいただきたく公開することにしました。
本当にプロトタイプそのままです。

ちょっとrubyっぽいのはSubscriberのcallbackをsubscribeの後にブロックで書けるところですかね。
Callbackの型が決まっているとノードクラスにCallback専用関数を用意しなくちゃいけなくなりますが、この形式だと本来のデザイン通りのクラス設計ができるかと思います。

また、roscpp, rospyは1ノード1プロセスですが、rosrubyは複数のノードを1プロセスで使えるようにしてみました。rosjavaもそうなっているし、できるならできたほうがいいかと。

中身の設計は前述のようにプロトタイプそのまんまなんで、ユーザが使う各クラスが結構実装丸出しなので、インタフェース用のクラスと実装を分けたいと思っています。

また、中身でrospackを使っていたりとまだまだやりたいことがいっぱいです。
ですが、とりあえずこれでロボットを動かそうかと思っています。
(まだ自分でもサンプルとテストしか使っていないので。やっぱロボット動かしてなんぼですよね。)

#!/usr/bin/env ruby

require 'ros'
require 'std_msgs/String'

node = ROS::Node.new('/rosruby/sample_subscriber')
node.subscribe('/chatter', Std_msgs::String) do |msg|
  puts "message come! = \'#{msg.data}\'"
end

while node.ok?
  node.spin_once
  sleep(1)
end

2012年3月22日木曜日

Pandaboard ESでGPIOからLED制御

組み込みAndroid Blogへようこそ。
Pandaboard ESというボードにAndroid4.0.1を載せて遊んでいます。

こちらのサイトを参考にさせてもらってインストールできました。

で、このAndroidからARMのGPIOにアクセスしてLEDをつけたり消したりする
アプリを作ってみました。
アプリの見た目はこんな感じ。ToggleボタンでLEDをOn/Offできます。

ソースはこちらから。githubをいまさらはじめてみました(登録したのは2年前)。

PIN配置は下の写真を参考に。
ただし、これは普通には実行できません。アクセス権がないので。
USBでPCとつないだ状態で、
$ adb shell
# echo 32 > /sys/class/gpio/export
# chmod 666 /sys/devices/virtual/gpio/gpio32/direction
をした後にこのアプリを使えます。(GPIO32の場合)

大画面での実行の様子。



AndroidはiPhoneと違って、パーミッションさえあれば、いろいろできてしまって面白いです。中身は完全にARMで動くLinuxなので、やりやすいですし。

2012年3月18日日曜日

ROS Fuerte アルファ版試してみる

Fuerteのアルファ版がでています。
普通に

$ apt-get install ros-fuerte-desktop-full

などとするとインストールできます。
では中身を見てみますか。

$ ls -F /opt/ros/fuerte/
bin/ etc/ lib/ setup.sh share/
env.sh* include/ setup.bash setup.zsh stacks/

おー、構成が結構変わってますね。ではbinは・・・・

$ ls /opt/ros/fuerte/bin/
add_gaussian_noise pcd_viewer
boundary_estimation plane_projection
catkin-build-debs-of-workspace registration_visualizer
catkin-bump-version rosbag
catkin-generate-debian rosboost-cfg
catkin-parse-stack rosclean
catkin-topological-order roscore
catkin-version roscreate-pkg
catkin_install_parse rosgraph
catkin_util.sh roslaunch
cluster_extraction roslaunch-deps
compute_cloud_error roslaunch-logs
concatenate_points_pcd rosmake
convert_pcd_ascii_binary rosmaster
crop_to_hull rosmsg
elch rosmsg-proto
em rosnode
extract_feature rospack
fpfh_estimation rosparam
gen_cpp.py rosrun
gen_lisp.py rosservice
genmsg_py.py rossrv
gensrv_py.py rosstack
git-catkin rostest
git-catkin-generate-debian rostopic
git-catkin-import-upstream rosunit
git-catkin-set-upstream rosversion
git-catkin-track-all roswtf
gp3_surface rxbag
icp rxconsole
icp2d rxgraph
marching_cubes_reconstruction rxloggerlevel
mesh2pcd rxplot
mesh_sampling spin_estimation
normal_estimation swig
octree_viewer timed_trigger_test
outlier_removal transform_point_cloud
passthrough_filter vfh_estimation
pcd2ply virtual_scanner
pcd2vtk voxel_grid
pcd_convert_NaN_nan

おー、たっぷり入っています。
しかし、すべてがこっちに来たわけじゃないみたいです。
たとえばrvizはまだstacksの下にありますね。

$ roscd
No ROS_WORKSPACE set. Please set ROS_WORKSPACE to use roscd with no arguments.

あ、roscdの仕様もいつのまにか変わっていますね。引数なしの場合に
任意の場所(ROS_WORKSPACE)に飛べるようになっていますね。

$ roscd std_msgs
すると
/opt/ros/fuerte/share/std_msgs
に飛びます。

fuerteはstacksとros直下が入り乱れる過渡期のdistroになりそうです。

2012年3月11日日曜日

Siriに掃除させてみた。

iOS5.1で日本語対応したSiriにルンバで掃除させてみました。
iPhoneからrosjsを使ってThinkpad上のROSにアクセスして動かしています。

超簡単に作っちゃったけど、こういうのはスピード命なので。
とりあえず日本では最初にできたかな?
Siriの仕様が変わってタッチが必要じゃなくなったらちゃんとやりたいなぁ。