wiki.ros.org/mjpeg_server
これを使ってみる
ブラウザ上で動画を見るために使えそう?
ろすでろぼっと
2013年11月26日火曜日
2013年10月30日水曜日
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
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
↑この記事によると、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")
座標系の名前はローカライゼーションシステムによって発行される
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でゴールを指定する
なお、地図化されていない部分をゴールとして指定したら、移動車は回転する。
自己位置を推定するためだろうか?
地図のマッチングを行いながら移動するため、挙動がつっかえたりする。
つまり、移動車がスムーズに動きにくい。
登録:
投稿 (Atom)