2013年11月26日火曜日

mjpeg_server

wiki.ros.org/mjpeg_server

これを使ってみる

ブラウザ上で動画を見るために使えそう?

2013年10月6日日曜日

Node.jsの環境構築

ブラウザ上でROSを動かしたい
http://wiki.ros.org/rosjs-depricated
http://wiki.ros.org/rosbridge_suite

とりあえず、Node.jsを勉強しないと出来なさそうな感じ
Ubuntu13.04にNode.jsの環境を作ってみる

 $ wget http://nodejs.org/dist/v0.10.5/node-v0.10.5.tar.gz
 $ tar zxvf node-v0.10.5.tar.gz
 $ cd node-v0.10.5
 $ ./configure
 $ make
 $ sudo make install

あとは、任意のフォルダでソースコード (xxxxx.js) を書いて、

 $ node xxxxx.js

●参考

基礎から学ぶNode.js
http://gihyo.jp/dev/serial/01/nodejs/0001

ビギナーのための Node.jsプログラミング入門
http://libro.tuyano.com/index2?id=1115003

2013年9月30日月曜日

Xtionの有効範囲

http://www.asus.com/jp/News/iidy4mD9PKJk6Zi4/

↑この記事によると、Xtionの有効範囲は
0.8m~3.5mらしい

ということは、gmappingのパラメータをこの様に書き換えたほうがよいのだろうか?

$ rosrun gmapping slam_gmapping _map_update_interval:=0.1 _maxUrange:=3.5 _linearUpdate:=0.10 _angularUpdate:=0.262 _temporalUpdate:=0.5

2013年9月26日木曜日

amclパラメーター

http://wiki.ros.org/amcl?distro=hydro

amclのパラメーターは次の3種類である

(1) 総体的なフィルタ
(2) レーザーモデル
(3) オドメトリモデル


(1) 総体的なフィルタ
min_particles ( int型、デフォルト:100 )粒子の最小許容数。

max_particles ( int型、デフォルト:5000 )粒子の最大許容数。


kld_err (double型、デフォルト:0.01 )真の分布と推定分布の間の最大誤差。

kld_z (
double型、デフォルト: 150 )
pは推定distrubition上の誤差がkld_err未満になる確率ですが、 - の上限標準正規分位点( P 1 ) 。
よくわからない


update_min_d (
double型、デフォルト: 0.2メートル)
フィルタのアップデートを実行する前に必要とされる並進運動。 

update_min_a (double型、デフォルト: π/6.0ラジアン)フィルタのアップデートを実行する前に必要とされる回転運動。

resample_interval ( int型、デフォルト: 2)リサンプリング前に必要なフィルタ更新の数。

transform_tolerance (
double型、デフォルト: 0.1秒)わからない 

recovery_alpha_slow (double型、デフォルト:0.0 (無効) )ランダムポーズを追加することによって回復するときに決定する際に使用される低速の平均体重フィルタの指数関数的な減衰率。良い値は、0.001であるかもしれません。
ランダムポーズとは?


recovery_alpha_fast (
double型、デフォルト:0.0 (無効) )ランダムポーズを追加することによって回復するときに決定する際に使用される高速の平均体重フィルタの指数関数的な減衰率。良い値は0.1であるかも。

initial_pose_x (
double型、デフォルト: 0.0メートル)初期( x)は、ガウス分布を有するフィルタ初期化するために使用されることを意味をもたらす。
どういうことに使用されるのか?


initial_pose_y (
double型、デフォルト: 0.0メートル)初期、 ( y)の意味をもたらすガウス分布とフィルター初期化するために使用。 
initial_pose_a (double型、デフォルト:0.0ラジアン)初期ポーズはガウス分布とフィルター初期化するために使用し、 (ヨー)を意味します。

initial_cov_xx (
double型、デフォルト: 0.5× 0.5メートル)初期の共分散をポーズ( X * x)は、ガウス分布とフィルター初期化するために使用。 

initial_cov_yy (double型、デフォルト: 0.5× 0.5メートル)初期、 (Y * Y )共分散をもたらすガウス分布とフィルター初期化するために使用。

initial_cov_aa (
double型、デフォルト: ( π/12 )*( π/12 )ラジアン)初期、 (ヨー*ヨー)共分散をもたらすガウス分布とフィルター初期化するために使用。

gui_publish_rate (
double型、デフォルト: -1.0 Hz)最大レート(Hz )がれるスキャンやパスが無効に-1.0 、可視化のために公開されています。

save_pose_rate (
double型、デフォルト: 0.5 Hz)最大レート(Hz )がれる格納する最後の推定変数に、パラメータサーバへのポーズと共分散〜 initial_pose_ *と〜 initial_cov_ * 。このポーズは保存されたフィルタを初期化するために、後続の実行で使用されます。無効にするには-1.0 。

use_map_topic (ブール値、デフォルト:false)trueに設定すると、 AMCLはむしろそのマップを受信するサービスコールを作るよりも、マップのトピックにサブスクライブします。


first_map_only (ブール値、デフォルト:false)trueに設定すると、 AMCLだけむしろ新しいものが受信されるたびに更新するよりも、それがサブスクライブする最初のマップを使います。



(2) レーザーモデル

laser_min_range (double型、デフォルト: -1.0 )最小スキャン範囲。-1.0はレーザの報告最小範囲を使用。 
laser_max_range (double型、デフォルト: -1.0 )
最大スキャン範囲。-1.0 はレーザの報告最大範囲を使用。

laser_max_beams ( int型、デフォルト:30 )フィルタの更新時に各スキャンでどのように多くの等間隔のビームが使用される。 
laser_z_hit (double型、デフォルト:0.95 )モデルのz_hit部分の混合重み。 
laser_z_short (double型、デフォルト: 0.1)モデルのz_short部分の混合重み。
laser_z_max (
double型、デフォルト:0.05 )モデルのz_max部分の混合重み。
laser_z_rand (
double型、デフォルト:0.05 )モデルのz_rand部分の混合重み。
laser_sigma_hit (
double型、デフォルト: 0.2メートル)ガウスモデルの標準偏差は、モデルのz_hit一部に使用した。
laser_lambda_short (
double型、デフォルト: 0.1)モデルのz_short部分の指数関数的な減衰パラメータ。
laser_likelihood_max_dist (
double型、デフォルト: 2.0メートル)最大距離はlikelihood_fieldモデルで使用するために、地図上に障害物インフレを行うため。 
laser_model_type (文字列、デフォルトは" likelihood_field " )どのモデルを使用すると、ビームまたはlikelihood_fieldどちらか。


(3) オドメトリモデル
「差分」と「全方位」のモデルタイプがある

odom_model_type(文字列デフォルトは"diff"
どのモデル"diff(差分)"または "omni(全方位)"のいずれかを使用する

 
odom_alpha1ダブルデフォルト0.2)
ロボットの動きの回転成分からオドメトリの自転の見積りの予想ノイズを指定します

 

odom_alpha2ダブルデフォルト0.2)
ロボットの動きの並進成分からオドメトリの自転の見積りの予想ノイズを指定します

 
odom_alpha3ダブルデフォルト0.2)
ロボットの動きの並進成分からオドメトリ翻訳上の見積りの予想されるノイズを指定します

 
odom_alpha4ダブルデフォルト0.2)
ロボットの動きの回転成分からオドメトリ翻訳見積もりの予想ノイズを指定します


odom_alpha5ダブルデフォルト0.2)
翻訳関連のノイズパラメータモデルは"全方位"である場合にのみ使用


odom_frame_id(文字列デフォルトは"odom"
どのフレームオドメトリに使用する


base_frame_id(文字列デフォルトは"base_link"
どのフレームロボットベースに使用する


global_frame_id(文字列デフォルトは"map"
座標系の名前はローカライゼーションシステムによって発行される












 
 

2013年9月24日火曜日

gmappingしながらnavigation

この動画では、gmappingしながらnavigationスタックを利用している



やり方は、
$ roslaunch openni_launch openni.launch
 新しい端末を開いて
$ rosrun depthimage_to_laserscan depthimage_to_laserscan image:=/camera/depth/image
 新しい端末を開いて
$ rosrun rviz rviz
 新しい端末を開いて
$ rosrun ROSARIA RosAria
 新しい端末を開いて
$ rosrun tf static_transform_publisher 0.150 0.0 0.270 0.0 0.0 0.0 /base_link /camera_link 100
 新しい端末を開いて
$ rosrun ROSARIA rob_teleop
 新しい端末を開いて
$ rosrun gmapping slam_gmapping 
このとき、mapフレームとodomフレームがtfで変換できているので、
amclを使わなくてもmove_base.launchができる

$ roslaunch mypack move_base.launch

そして、ROSARIAの場合、cmd_velトピックは/RosAria/cmd_velなので、
$ rosrun topic_tools relay cmd_vel RosAria/cmd_vel 
 
あとは、rvizを開いて2dnavgoalでゴールを指定する
なお、地図化されていない部分をゴールとして指定したら、移動車は回転する。
自己位置を推定するためだろうか?
 
地図のマッチングを行いながら移動するため、挙動がつっかえたりする。
つまり、移動車がスムーズに動きにくい。