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の仕様が変わってタッチが必要じゃなくなったらちゃんとやりたいなぁ。


2012年3月2日金曜日

Fuerte Turtleでの変更点

次のROSのリリースFuerteについて書きます。
http://ros.org/wiki/fuerte

何気にその変更点の一つを見ていたら結構びっくりすることが書いてあったので紹介します。
http://ros.org/reps/rep-0122.html

ここに書いてあるファイル構成についてです。
今は
$ ls /opt/ros/electric
とすると、
ros/
setup.bash
setup.sh
setup.zsh
stacks/
と表示されると思いますが、

これがFuerteでは


bin/
etc/
include/
lib/
stacks/

となるようです。
しかも、
bin/にはrosのシステム用のバイナリだけじゃなく、ユーザのバイナリが直接置かれるようです。これまではrosrunがあったので、バイナリの名前は適当に付けられましたが、これからは被らないようにしないといけなくなるようです。

stacksは互換性のために一応残すようです。


ライブラリも同様にlibに入れられて、Pythonのライブラリも集められるので、
roslib.load_manifest()といったおまじないが必要なくなります。


これはrosmakeに変わり、catkinというシステムでビルドされるようになるためのようです。

まあ、より自然で使いやすい形になりますね。

これにより、ROSのスタックをprefix(/opt/ros/fuerte)を/usrに変えるただけで、
普通のLinuxのパッケージにできるようになり、
普通のdebian/Ubuntuパッケージとして配布できるようにするのが狙いのようです。
一方で複数のバージョン(cturtle, diamondback,electricなど)を共存させることもできる、ということで、このようなシステムになるみたいです。

ROSが不思議なrospackシステムでガラパゴス化してしまうのを防ぎたいのでしょう。
Fuerteの次のリリースはGROOVY GALAPAGOSですが。