2013年6月23日日曜日

マッピングできない

http://www.ist.tugraz.at/robotics/bin/view/Main/Poineer_mapping

マッピングするためには以下の変換が必要

1./base_linkと/laser
2./base_footprintと/base_link
3./odomと/base_footprint

上記の変換をするためには以下のようにして変換しなければならない

/odom --> /base_footprint --> /base_link --> /laser


●実際は以下のように変換する

//○変換:/base_link --> /laser
    tf::Quaternion laserQ;
    laserQ.setRPY(0.0, 0.0, 0.0);
    tf::Transform txLaser =  tf::Transform(
                        laserQ,
                        tf::Point(0.034, 0.0, 0.250)
                        );
    tf.sendTransform(
            tf::StampedTransform(
                        txLaser,
                        ros::Time::now(),
                        "base_link",
                        "laser"
                        )
            );
   
//○変換:/base_footprint --> /base_link
    tf::Transform txIdentity(
                tf::createIdentityQuaternion(),
                tf::Point(0.0, 0.0, 0.0)
                );
    tf.sendTransform(
            tf::StampedTransform(
                        txIdentity,
                        ros::Time::now(),
                        "base_footprint",
                        "base_link")
                        );
   
//○変換:/odom --> /base_footprint
    tf::Quaternion odomQ;
    tf::quaternionMsgToTF(
                position.pose.pose.orientation,
                odomQ
                );<b>map_saver</b>
    tf::Transform txOdom(
                odomQ, tf::Point(
                        (double) pos.getX()/1000.0,
                        (double) pos.getY()/1000.0,
                        pos.getTh()
                        )
                );
    tf.sendTransform(
            tf::StampedTransform(
                        txOdom,
                        ros::Time::now() ,
                        "odom",
                        "base_footprint")
                        );


※Quatarnionについて
http://www.bulletphysics.com/Bullet/BulletFull/classbtQuaternion.html
仕様が変わってるらしい


○また、上記の変換は以下のようにして端末上で変換することも出来る
$ rosrun tf static_transform_publisher 0.034 0.0 0.250 0.0 0.0 0.0 /base_link /laser 100
$ rosrun tf static_transform_publisher 0.0 0.0 0.0 0.0 0.0 0.0 /base_footprint /base_link 100


○これでいけるかやってみた
$ roslaunch openni_launch openni.launch
$ rosrun depthimage_to_laserscan depthimage_to_laserscan image:=/camera/depth/image_raw
$ rosrun rviz rviz
でlaserscanデータを取得
$ rosrun ROSARIA RosAria
$ rosrun tf static_transform_publisher 0.034 0.0 0.250 0.0 0.0 0.0 /base_link /laser 100
$ rosrun tf static_transform_publisher 0.0 0.0 0.0 0.0 0.0 0.0 /base_footprint /base_link 100
$ rosrun ROSARIA theo.key

で、あとはデータを取得

$ rosbag record -a
$ rosparam set use_sim_time true
$ rosrun gmapping slam_gmapping
$ rosbag play .....................bag
$ rosrun map_server map_saver

ちなみに$ rosrun gmapping slam_gmappingした端末では、以下のような警告が
ここに書いてる
http://www.ros.org/wiki/navigation/Troubleshooting


[ WARN] [1371981822.770704891]: TF_OLD_DATA ignoring data from the past for frame /base_link at time 1.37198e+09 according to authority /play_1371981806796107282
Possible reasons are listed at
[ WARN] [1371981822.770915036]: TF_OLD_DATA ignoring data from the past for frame /camera_depth_frame at time 1.37198e+09 according to authority /play_1371981806796107282
Possible reasons are listed at
[ WARN] [1371981822.771151442]: TF_OLD_DATA ignoring data from the past for frame /camera_rgb_optical_frame at time 1.37198e+09 according to authority /play_1371981806796107282
Possible reasons are listed at

うーん

マップ出来ない
上手く行ったらmy_lab_map.yamlmy_lab_map.pgmが生成されるらしいけど
できていない 
rosbagでgmappingに必要なデータが取得できていないのだろう
後一歩のところで届いてないみたいな

今回のリンクはとても参考になった
グラフ






2013年6月21日金曜日

ROSARIAを使ってオドメトリを取る(1)

●MobileRobot社のpioneerロボットを使うため、
 ROSARIAからオドメトリ情報を取得する

 http://www.ros.org/wiki/ROSARIA/Tutorials/How%20to%20use%20ROSARIA
※p2osのlanuchファイルがどうしても使えなかったので、ROSARIAを使ってみる

おそらく出来る
しかも、あまりいじらないで出来ると思う

なぜなら、nav_msgs/Odometoryを使っているから。
それを出力するだけでも十分いけるように思う


○ROSARIA odomでググったら

http://www.ist.tugraz.at/robotics/bin/view/Main/Poineer_mapping

また、git-hubで

https://github.com/giorgosera/HCR-project/blob/master/src/KeyBoardController.cpp


○拡張できそうなソースコードが揃った

ROSARIAのパッケージの、RosAriaがあるフォルダに、

theo_key.cpp(キーボード操作)
https://github.com/giorgosera/HCR-project/blob/master/src/KeyBoardController.cpp
reb_teleop.cpp(キーボード操作?)
http://www.ist.tugraz.at/robotics/bin/viewfile/Main/Poineer_mapping?rev=1;filename=rob_teleop.cpp
transform.cpp(odom出力?)
http://www.ist.tugraz.at/robotics/bin/viewfile/Main/Poineer_mapping?rev=1;filename=transform.cpp

を追加


○CMakeLists.txtを開いて、追加

だいたい44行めあたりに(見たらなんとなくわかる)

add_executable(theo_key theo_key.cpp)#
add_dependencies(theo_key ROSARIA_gencfg)#
add_executable(rob_teleop rob_teleop.cpp)#
add_dependencies(rob_teleop ROSARIA_gencfg)#
add_executable(transform transform.cpp)#
add_dependencies(transform ROSARIA_gencfg)#

target_link_libraries(theo_key ${catkin_LIBRARIES} ${Boost_LIBRARIES} Aria pthread dl rt)#
set_target_properties(theo_key PROPERTIES COMPILE_FLAGS "-fPIC")#
target_link_libraries(rob_teleop ${catkin_LIBRARIES} ${Boost_LIBRARIES} Aria pthread dl rt)#
set_target_properties(rob_teleop PROPERTIES COMPILE_FLAGS "-fPIC")#
target_link_libraries(transform ${catkin_LIBRARIES} ${Boost_LIBRARIES} Aria pthread dl rt)#
set_target_properties(transform PROPERTIES COMPILE_FLAGS "-fPIC")#

を追加


○catkin_wsに戻って

$catkin_make

※rob_teleopをコンパイルするとエラーが出てくるので、エラーが出てる箇所を削除してみる
http://answers.ros.org/question/11980/teleop_base-compile-errors-from-boost/


※トピックが違うので変更してあげる(適切に指定しないと動かない)
rob_teleopだいたい82行め

pub_ = n_.advertise<geometry_msgs::Twist>("/cmd_vel",1);

pub_ = n_.advertise<geometry_msgs::Twist>("/RosAria/cmd_vel",1);


※データが古いので以下のような警告がでるかもしれない

警告: ‘tf::Quaternion::Quaternion(const tfScalar&, const tfScalar&, const tfScalar&)’ は廃止されました (宣言位置 /opt/ros/groovy/include/tf/LinearMath/Quaternion.h:51) [-Wdeprecated-declarations]

tf::Quaternion(0, 0, 0)

tf::Quaternion(0, 0, 0, 1)
にしたら直った


○実行してみる

$ roscore
$ rosrun ROSARIA RosAria
$ rosrun ROSARIA reb_teleop

動かないときは、トピックの指定が違っているかも
/cmd_vel→/RosAria/cmd_vel

theo_keyでも動く

$ rosrun ROSARIA theo_key

矢印キーを押したら動く(加速するので注意)
で、次に自己位置データ

$ rosrun ROSARIA transform
[ INFO] [1371822464.617404922]: odometry frame sent
[ INFO] [1371822464.715979980]: odometry frame sent
[ INFO] [1371822464.816018004]: odometry frame sent
[ INFO] [1371822464.915978903]: odometry frame sent
[ INFO] [1371822465.015940424]: odometry frame sent
[ INFO] [1371822465.115958098]: odometry frame sent
[ INFO] [1371822465.215978116]: odometry frame sent
[ INFO] [1371822465.315948702]: odometry frame sent
[ INFO] [1371822465.416017841]: odometry frame sent
[ INFO] [1371822465.515966884]: odometry frame sent
[ INFO] [1371822465.615961342]: odometry frame sent
[ INFO] [1371822465.716013449]: odometry frame sent
[ INFO] [1371822465.815990326]: odometry frame sent
[ INFO] [1371822465.915962577]: odometry frame sent
...
...
...
何かいっぱい出た!
しかし、自己位置を取っているのかは不明

次は、キーボードでロボットを動かして、そのときの自己位置を出力するように改造してみる










オドメトリをパブリッシュする

slamするためには パッケージを探すよりも、必要なデータを出力することが必要
そこで、
Subscribed Topics
マップを作るために入力されるデータ
tf (tf/tfMessage)   
 レーザーと本体と推定された現在位置を変換するために必要

scan (sensor_msgs/LaserScan) 
マップを作るための赤外線データ

自己位置をパブリッシュするためには、 Odometryを取ってこないといけない。
navigationスタックを利用して、自己位置(オドメトリ)をパブリッシュするコードを書く。

http://www.ros.org/wiki/navigation/Tutorials/RobotSetup/Odom
上のリンク先にパブリッシャのコードが載っている
ただ、navigationのチュートリアルはgroovyに対応していないので、
多少書き換える必要がある

$ cd catkin_ws/src
$ catkin_create_pkg robot_odom_test roscpp tf geometry_msgs nav_msgs

パッケージ作成時にnav_msgsを追加する
パッケージ名は適当に、robot_odom_test

$ cd src
$ emacs odom_test.cpp &

でsrcフォルダ内にodom_test.cppを作成し、リンク先のコードをコピペ

$ cd  ..
$ emacs CMakeLists.txt &

でrobot_odom_test直下に戻り、CMakeList.txtの末尾に

add_executable(odom_test src/odom_test.cpp)
target_link_libraries(odom_test ${catkin_LIBRARIES})

を追加
catkin_wsに戻って、

$ catkin_make

パブリッシュされてるか確認

$ roscore
$ rosrun robot_odom_test odom_test
$ rostopic list
/odom
/rosout
/rosout_agg
/tf


今度はリスナーを書く(そっちの方が難しそう・・・)
参考にする
http://www.ros.org/wiki/ja/navigation/Tutorials/RobotSetup/TF

2013年6月19日水曜日

depthimage_to_laserscanを使って赤外線検出

○環境
Xtion PRO LIVE

○使用するパッケージ
openni_launch
depthimage_to_laserscanパッケージ
http://www.ros.org/wiki/depthimage_to_laserscan

○手順
$ roslaunch openni_launch openni.launch
$ rosrun depthimage_to_laserscan depthimage_to_lasecan image:=/camera/depth/image_raw
$ rosrun rviz rviz

rvizを開いて、Fixed Frameをcamera_depth_frameに設定する。
LaserScanをAddし、Topicを/scanに設定する。

レーザースキャンデータが取得できる。


2013年6月17日月曜日

ccny_rgbdについて

http://www.ros.org/wiki/ccny_rgbd
https://github.com/ccny-ros-pkg/ccny_rgbd_tools

上記を参照して、3DSLAMのようなことができた

$ git clone https://github.com/ccny-ros-pkg/ccny_rgbd_tools.git

$ rosdep install ccny_rgbd_tools

$ sudo apt-get install libsuitesparse-dev

$ rosmake ccny_rgbd_tools

結構時間がかかる

$ roslaunch ccny_openni_launch openni.launch

$ roslaunch ccny_rgbd vo+mapping.launch

$ rosrun rviz rviz

rvizが現れるとUbuntuの画面の左上にfileなどの項目が表示されるので、
fileを選択してfile openを選択(Ctrl+o)
ccny_rgbd_tools
→ ccny_rgbd
→launch
ディレクトリ内にあるファイルを選択する




Xtionが映し出す風景がrviz上に表示される

しかし、使い方は不明
もうちょっと詳しく調べる必要あり
また、PC環境によっては。rosmakeの時点でエラーを吐くこともある

2013年6月13日木曜日

rosbagの復習

http://www.ros.org/wiki/ja/ROS/Tutorials/Recording%20and%20playing%20back%20data

gmapping成功例

ちゃんとデータが取得できていれば、

$ rosparam set use_sim_time true
$ rosrun gmapping slam_gmapping scan:=base_scan

[ WARN] [1371107390.467117000]: Message from [/play_1371107390179624793] has a non-fully-qualified frame_id [base_laser]. Resolved locally to [/base_laser].  This is will likely not work in multi-robot systems.  This message will only print once.
 -maxUrange 29.99 -maxUrange 29.99 -sigma     0.05 -kernelSize 1 -lstep 0.05 -lobsGain 3 -astep 0.05
 -srr 0.1 -srt 0.2 -str 0.1 -stt 0.2
 -linearUpdate 1 -angularUpdate 0.5 -resampleThreshold 0.5
 -xmin -100 -xmax 100 -ymin -100 -ymax 100 -delta 0.05 -particles 30
[ INFO] [1371107390.678978102]: Initialization complete
update frame 0
update ld=0 ad=0
Laser Pose= 0 0 0
m_count 0
Registering First Scan
update frame 47
update ld=0.8 ad=0.523599
Laser Pose= 0.8 1.65828e-14 0.523599
m_count 1
Average Scan Matching Score=854.654
neff= 29.8527
Registering Scans:Done
update frame 71
update ld=1.05 ad=0.418879
Laser Pose= 1.41717 0.849468 0.942478
m_count 2
Average Scan Matching Score=856.019
neff= 27.1904
Registering Scans:Done
update frame 87
update ld=1.05 ad=0.20944
Laser Pose= 1.99375 1.72269 1.15192
m_count 3
Average Scan Matching Score=796.11
neff= 26.1205
Registering Scans:Done
update frame 106
update ld=0.699817 ad=0.523599
Laser Pose= 2.1227 2.40394 1.67552
m_count 4
Average Scan Matching Score=771.9
neff= 26.2807
Registering Scans:Done
update frame 122
update ld=0.7 ad=0.523599
Laser Pose= 1.95273 3.07927 2.19911
m_count 5
Average Scan Matching Score=949.173
neff= 20.4178
Registering Scans:Done
update frame 143
update ld=1.0487 ad=0.418879
Laser Pose= 1.07985 3.64842 2.61799
m_count 6
Average Scan Matching Score=808.456
neff= 19.9011
Registering Scans:Done
update frame 156
update ld=1 ad=0
Laser Pose= 0.213829 4.14842 2.61799
m_count 7
Average Scan Matching Score=1042.43
neff= 19.7908
Registering Scans:Done
update frame 167
update ld=1.05 ad=0
Laser Pose= -0.695498 4.67342 2.61799
m_count 8
Average Scan Matching Score=1049.29
neff= 17.9192
Registering Scans:Done
update frame 180
update ld=1 ad=0
Laser Pose= -1.56152 5.17342 2.61799
m_count 9
Average Scan Matching Score=1045.9
neff= 15.042
Registering Scans:Done
update frame 195
update ld=1 ad=0
Laser Pose= -2.42755 5.67342 2.61799
m_count 10
Average Scan Matching Score=1049.49
neff= 14.0629
*************RESAMPLE***************
Deleting Nodes: 1 5 7 10 13 15 18 20 24 29 Done
Deleting old particles...Done
Copying Particles and  Registering  scans... Done
update frame 206
update ld=1.05 ad=0
Laser Pose= -3.33688 6.19842 2.61799
m_count 11
Average Scan Matching Score=1000.68
neff= 27.9716
Registering Scans:Done
update frame 221
update ld=1.05 ad=0
Laser Pose= -4.2462 6.72342 2.61799
m_count 12
Average Scan Matching Score=1019.46
neff= 22.3827
Registering Scans:Done
update frame 236
update ld=1 ad=0
Laser Pose= -5.11223 7.22342 2.61799
m_count 13
Average Scan Matching Score=1027.55
neff= 23.9302
Registering Scans:Done
update frame 247
update ld=1 ad=0
Laser Pose= -5.97825 7.72342 2.61799
m_count 14
Average Scan Matching Score=981.806
neff= 24.2981
Registering Scans:Done
update frame 256
update ld=0.65 ad=0.523599
Laser Pose= -6.54117 8.04842 3.14159
m_count 15
Average Scan Matching Score=1007.85
neff= 23.4956
Registering Scans:Done
update frame 277
update ld=1 ad=0.314159
Laser Pose= -7.50961 7.8212 -2.82743
m_count 16
Average Scan Matching Score=994.298
neff= 22.5139
Registering Scans:Done
update frame 286
update ld=1 ad=0
Laser Pose= -8.46067 7.51218 -2.82743
m_count 17
Average Scan Matching Score=1042.08
neff= 19.8097
Registering Scans:Done
update frame 301
update ld=1.05 ad=0
Laser Pose= -9.45928 7.18772 -2.82743
m_count 18
Average Scan Matching Score=1026.59
neff= 20.0614
Registering Scans:Done
update frame 315
update ld=1 ad=0
Laser Pose= -10.4103 6.8787 -2.82743
m_count 19
Average Scan Matching Score=902.971
neff= 19.4376
Registering Scans:Done
update frame 325
update ld=1.05 ad=0
Laser Pose= -11.4089 6.55423 -2.82743
m_count 20
Average Scan Matching Score=729.196
neff= 18.6279
Registering Scans:Done
update frame 340
update ld=1 ad=0
Laser Pose= -12.36 6.24521 -2.82743
m_count 21
Average Scan Matching Score=946.812
neff= 17.5826
Registering Scans:Done
update frame 355
update ld=1 ad=0
Laser Pose= -13.3111 5.9362 -2.82743
m_count 22
Average Scan Matching Score=841.935
neff= 15.6776
Registering Scans:Done
update frame 363
update ld=0.55 ad=0.523599
Laser Pose= -13.8341 5.76624 -2.30383
m_count 23
Average Scan Matching Score=1000.74
neff= 16.4195
Registering Scans:Done
update frame 381
update ld=1.05 ad=0.10472
Laser Pose= -14.4513 4.91677 -2.19911
m_count 24
Average Scan Matching Score=965.221
neff= 14.9075
*************RESAMPLE***************
Deleting Nodes: 2 4 6 7 12 13 16 19 21 22 23 25 29 Done
Deleting old particles...Done
Copying Particles and  Registering  scans... Done
[ WARN] [1371107540.373795521]: TF_OLD_DATA ignoring data from the past for frame /base_laser at time 34.8 according to authority /play_1371107540017157780
Possible reasons are listed at
[ WARN] [1371107540.380646903]: TF_OLD_DATA ignoring data from the past for frame /base_link at time 34.8 according to authority /play_1371107540017157780
Possible reasons are listed at
...
...
...

 別の端末上で、

$ rosbag play basic_localization_stage.bag
WARNING: Package name "ROSARIA" does not follow the naming conventions. It should start with a lower case letter and only contain lower case letters, digits and underscores.
[ INFO] [1371107540.028081515]: Opening basic_localization_stage.bag

Waiting 0.2 seconds after advertising topics... done.

Hit space to toggle paused, or 's' to step.
 [RUNNING]  Bag Time:     34.600000   Duration: 0.000000 / 1239670987.745222     [RUNNING]  Bag Time:     34.600319   Duration: 0.000319 / 1239670987.745222     [RUNNING]  Bag Time:     34.701407   Duration: 0.101407 / 1239670987.745222     [RUNNING]  Bag Time:     34.800593   Duration: 0.200593 / 1239670987.745222     [RUNNING]  Bag Time:     34.900553   Duration: 0.300553 / 1239670987.745222     [RUNNING]  Bag Time:     35.000529   Duration: 0.400529 / 1239670987.745222     [RUNNING]  Bag Time:     35.100520   Duration: 0.500520 / 1239670987.745222     [RUNNING]  Bag Time:     35.200620   Duration: 0.600620 / 1239670987.745222     [RUNNING]  Bag Time:     35.300555   Duration: 0.700555 / 1239670987.745222     [RUNNING]  Bag Time:     35.400574   Duration: 0.800574 / 1239670987.745222    
...
...
...


別の端末上で、

$ rosrun map_server map_saver
[ INFO] [1371107455.577248822]: Waiting for the map
[ INFO] [1371107455.861227726]: Received a 4000 X 4000 map @ 0.050 m/pix
[ INFO] [1371107455.861317143]: Writing map occupancy data to map.pgm
[ INFO] [1371107456.226457886]: Writing map occupancy data to map.yaml
[ INFO] [1371107456.226627779]: Done

pgmファイルとyamlファイルが出力される

bagファイルの比較

bagファイルを見直し
http://www.ros.org/wiki/ja/ROS/Tutorials/Recording%20and%20playing%20back%20data

●以下が
gmappingのチュートリアルで提供されている
bagファイル(basic_localization_stage.bag )の情報


$ rosbag info basic_localization_stage.bag
path:        basic_localization_stage.bag
version:     2.0
duration:    1:32s (92s)
start:       Jan 01 1970 09:00:34.60 (34.60)
end:         Jan 01 1970 09:02:06.80 (126.80)
size:        8.2 MB
messages:    3693
compression: none [11/11 chunks]
types:       sensor_msgs/LaserScan [90c7ef2dc6895d81024acba2ac42f369]
             tf/tfMessage          [94810edda583a504dfda3829e70d7eec]
topics:      /base_scan    924 msgs    : sensor_msgs/LaserScan
             /tf          2769 msgs    : tf/tfMessage


●以下が
$ roslaunch turtlebot_bringup 3dsensor.launch
$ rosbag record -a
したときのbagファイル(2013-06-13-15-41-29.bag )の情報


$ rosbag info 2013-06-13-15-41-29.bag
path:        2013-06-13-15-41-29.bag
version:     2.0
duration:    21.3s
start:       Jun 13 2013 15:41:30.72 (1371105690.72)
end:         Jun 13 2013 15:41:52.07 (1371105712.07)
size:        2.2 GB
messages:    8835
compression: none [1033/1033 chunks]
types:       bond/Status                           [eacc84bf5d65b6777d4c50f463dfb9c8]
             dynamic_reconfigure/Config            [958f16a05573709014982821e6822580]
             dynamic_reconfigure/ConfigDescription [757ce9d44ba8ddd801bb30bc456f946f]
             rosgraph_msgs/Log                     [acffd30cd6b6de30f120938c17c593fb]
             sensor_msgs/CameraInfo                [c9a58c1b0b154e0e6da7578cb991d214]
             sensor_msgs/CompressedImage           [8f7a12909da2c9d3332d540a0977563f]
             sensor_msgs/Image                     [060021388200f6f0f447d0fcd9c64743]
             sensor_msgs/LaserScan                 [90c7ef2dc6895d81024acba2ac42f369]
             sensor_msgs/PointCloud2               [1158d486dd51d683ce2f1be655c3c181]
             theora_image_transport/Packet         [33ac4e14a7cff32e7e0d65f18bb410f3]
topics:      /camera/camera_nodelet_manager/bond                                                84 msgs    : bond/Status                           (3 connections)
             /camera/depth/image_raw/compressed/parameter_descriptions                           1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/depth/image_raw/compressed/parameter_updates                                1 msg     : dynamic_reconfigure/Config          
             /camera/depth/image_raw/compressedDepth/parameter_descriptions                      1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/depth/image_raw/compressedDepth/parameter_updates                           1 msg     : dynamic_reconfigure/Config          
             /camera/depth/image_raw/theora/parameter_descriptions                               1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/depth/image_raw/theora/parameter_updates                                    1 msg     : dynamic_reconfigure/Config          
             /camera/depth_registered/camera_info                                              299 msgs    : sensor_msgs/CameraInfo              
             /camera/depth_registered/image_raw                                                299 msgs    : sensor_msgs/Image                   
             /camera/depth_registered/image_raw/compressed                                     299 msgs    : sensor_msgs/CompressedImage         
             /camera/depth_registered/image_raw/compressed/parameter_descriptions                1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/depth_registered/image_raw/compressed/parameter_updates                     1 msg     : dynamic_reconfigure/Config          
             /camera/depth_registered/image_raw/compressedDepth                                299 msgs    : sensor_msgs/CompressedImage         
             /camera/depth_registered/image_raw/compressedDepth/parameter_descriptions           1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/depth_registered/image_raw/compressedDepth/parameter_updates                1 msg     : dynamic_reconfigure/Config          
             /camera/depth_registered/image_raw/theora                                           3 msgs    : theora_image_transport/Packet       
             /camera/depth_registered/image_raw/theora/parameter_descriptions                    1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/depth_registered/image_raw/theora/parameter_updates                         1 msg     : dynamic_reconfigure/Config          
             /camera/depth_registered/image_rect_raw                                           298 msgs    : sensor_msgs/Image                   
             /camera/depth_registered/image_rect_raw/compressed                                298 msgs    : sensor_msgs/CompressedImage         
             /camera/depth_registered/image_rect_raw/compressed/parameter_descriptions           1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/depth_registered/image_rect_raw/compressed/parameter_updates                1 msg     : dynamic_reconfigure/Config          
             /camera/depth_registered/image_rect_raw/compressedDepth                           298 msgs    : sensor_msgs/CompressedImage         
             /camera/depth_registered/image_rect_raw/compressedDepth/parameter_descriptions      1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/depth_registered/image_rect_raw/compressedDepth/parameter_updates           1 msg     : dynamic_reconfigure/Config          
             /camera/depth_registered/image_rect_raw/theora                                      3 msgs    : theora_image_transport/Packet       
             /camera/depth_registered/image_rect_raw/theora/parameter_descriptions               1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/depth_registered/image_rect_raw/theora/parameter_updates                    1 msg     : dynamic_reconfigure/Config          
             /camera/depth_registered/points                                                   142 msgs    : sensor_msgs/PointCloud2             
             /camera/depth_registered/rectify_depth/parameter_descriptions                       1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/depth_registered/rectify_depth/parameter_updates                            1 msg     : dynamic_reconfigure/Config          
             /camera/depthimage_to_laserscan_loader/parameter_descriptions                       1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/depthimage_to_laserscan_loader/parameter_updates                            1 msg     : dynamic_reconfigure/Config          
             /camera/ir/image_raw/compressed/parameter_descriptions                              1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/ir/image_raw/compressed/parameter_updates                                   1 msg     : dynamic_reconfigure/Config          
             /camera/ir/image_raw/compressedDepth/parameter_descriptions                         1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/ir/image_raw/compressedDepth/parameter_updates                              1 msg     : dynamic_reconfigure/Config          
             /camera/ir/image_raw/theora/parameter_descriptions                                  1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/ir/image_raw/theora/parameter_updates                                       1 msg     : dynamic_reconfigure/Config          
             /camera/openni_camera_loader/parameter_descriptions                                 1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/openni_camera_loader/parameter_updates                                      1 msg     : dynamic_reconfigure/Config          
             /camera/projector/camera_info                                                     299 msgs    : sensor_msgs/CameraInfo              
             /camera/rgb/camera_info                                                           211 msgs    : sensor_msgs/CameraInfo              
             /camera/rgb/debayer/parameter_descriptions                                          1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/debayer/parameter_updates                                               1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_color                                                           144 msgs    : sensor_msgs/Image                   
             /camera/rgb/image_color/compressed                                                144 msgs    : sensor_msgs/CompressedImage         
             /camera/rgb/image_color/compressed/parameter_descriptions                           1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_color/compressed/parameter_updates                                1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_color/compressedDepth/parameter_descriptions                      1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_color/compressedDepth/parameter_updates                           1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_color/theora                                                    147 msgs    : theora_image_transport/Packet       
             /camera/rgb/image_color/theora/parameter_descriptions                               1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_color/theora/parameter_updates                                    1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_mono                                                            145 msgs    : sensor_msgs/Image                   
             /camera/rgb/image_mono/compressed                                                 145 msgs    : sensor_msgs/CompressedImage         
             /camera/rgb/image_mono/compressed/parameter_descriptions                            1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_mono/compressed/parameter_updates                                 1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_mono/compressedDepth/parameter_descriptions                       1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_mono/compressedDepth/parameter_updates                            1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_mono/theora                                                     148 msgs    : theora_image_transport/Packet       
             /camera/rgb/image_mono/theora/parameter_descriptions                                1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_mono/theora/parameter_updates                                     1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_raw                                                             211 msgs    : sensor_msgs/Image                   
             /camera/rgb/image_raw/compressed                                                  211 msgs    : sensor_msgs/CompressedImage         
             /camera/rgb/image_raw/compressed/parameter_descriptions                             1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_raw/compressed/parameter_updates                                  1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_raw/compressedDepth/parameter_descriptions                        1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_raw/compressedDepth/parameter_updates                             1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_raw/theora                                                      217 msgs    : theora_image_transport/Packet       
             /camera/rgb/image_raw/theora/parameter_descriptions                                 1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_raw/theora/parameter_updates                                      1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_rect                                                            145 msgs    : sensor_msgs/Image                   
             /camera/rgb/image_rect/compressed                                                 145 msgs    : sensor_msgs/CompressedImage         
             /camera/rgb/image_rect/compressed/parameter_descriptions                            1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_rect/compressed/parameter_updates                                 1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_rect/compressedDepth/parameter_descriptions                       1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_rect/compressedDepth/parameter_updates                            1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_rect/theora                                                     148 msgs    : theora_image_transport/Packet       
             /camera/rgb/image_rect/theora/parameter_descriptions                                1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_rect/theora/parameter_updates                                     1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_rect_color                                                      144 msgs    : sensor_msgs/Image                   
             /camera/rgb/image_rect_color/compressed                                           144 msgs    : sensor_msgs/CompressedImage         
             /camera/rgb/image_rect_color/compressed/parameter_descriptions                      1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_rect_color/compressed/parameter_updates                           1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_rect_color/compressedDepth/parameter_descriptions                 1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_rect_color/compressedDepth/parameter_updates                      1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/image_rect_color/theora                                               147 msgs    : theora_image_transport/Packet       
             /camera/rgb/image_rect_color/theora/parameter_descriptions                          1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/image_rect_color/theora/parameter_updates                               1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/rectify_color/parameter_descriptions                                    1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/rectify_color/parameter_updates                                         1 msg     : dynamic_reconfigure/Config          
             /camera/rgb/rectify_mono/parameter_descriptions                                     1 msg     : dynamic_reconfigure/ConfigDescription
             /camera/rgb/rectify_mono/parameter_updates                                          1 msg     : dynamic_reconfigure/Config          
             /rosout                                                                          1652 msgs    : rosgraph_msgs/Log                     (9 connections)
             /rosout_agg                                                                      1601 msgs    : rosgraph_msgs/Log                   
             /scan                                                                             299 msgs    :
sensor_msgs/LaserScan


出力されてるトピックが多すぎる
ちなみに、
チュートリアル(http://www.ros.org/wiki/slam_gmapping/Tutorials/MappingFromLoggedData)通りにやったら、


$ rosbag record -O /base_scan /tf
[ INFO] [1371106411.969590801]: Subscribing to /tf
[ERROR] [1371106411.989712154]: Error writing: Error opening file: /base_scan.bag.active

2013年6月12日水曜日

launchファイルを調べる

gmappingするために、
ROSのモジュールがどんな感じで関わっているのかを把握する必要がある
なので
LaserScanデータを出力する、 3dsensor.launchが
どういう構造をしているのか調べる
それから、
gmappingがどのような構造をしているか調べる

まず、
launchファイルで頻繁に見かけるタグをグーグル翻訳してみた

●node:launchしたいノードに特化
もっとも普遍的なタグ。必ず実行される保証はない。

pkg="mypackage"
ノードのパッケージ。

type="nodetype"
 ノードタイプ。同じ名前を持つ対応する実行ファイルが存在する必要があります。

name="nodename"
ノード名。注:名前は名前空間を含めることはできません。代わりにns属性を使用します。

args="arg1 arg2 arg3"(optional)
ノードに引数を渡す。

machine="machine-name"(optional)
指定したマシン上のノードを起動します。

respawn="true"(optional)
それが終了した場合、自動的にノードを再起動します。

required="true"(optional)
ROS0.10:ノードが死亡した場合、全体roslaunchを殺す。

ns="foo"(optional)
    'foo'に名前空間内のノードを起動します。

clear_params="true|false"(optional)
   打ち上げ前ノードのプライベート空間ですべてのパラメータを削除します。

output="log|screen"(optional)
    '画面'、ノードからの標準出力/標準エラー出力を画面に送信された場合。 'ログ'、標準出力/標準エラー出力は/ ROS_HOME$ログにログファイルに送信され、標準エラー出力を画面に送信され続ける場合。デフォルトは 'ログ'です。

cwd="ROS_HOME|node"(optional)
    'ノード'の場合、ノードの作業ディレクトリはノードの実行ファイルと同じディレクトリに設定されます。 Cタートルで、デフォルトは 'ROS_HOME'です。ハコガメに(ROS1.0.xの)、デフォルトは 'ROS-ルート'です。 'ROS-根'の使用はCタートルで廃止されています。

launch-prefix="prefix arguments"(optional)
    コマンドは、/引数ノードの起動引数を先頭に追加する。これは、GDB、valgrindの、xtermの、素敵な、または他の便利なツールを有効にするために可能にする強力な機能です。例については、ValgrindのかGDBでRoslaunchノードを参照してください。


●arg
<arg>タグは<include>タグ経由で、コマンドラインを介して渡された値を指定することによって、より再利用可能かつ設定可能な起動ファイルを作成することができ、またはより高いレベルのファイルのために宣言される。
agesはローカル。

name="arg_name"
    引数の名前。

    <arg name="foo"/>
        fooの存在を宣言します。 fooがコマンドライン引数(トップレベルの場合)、またはの<include>パッシング(含まれている場合)を介してのいずれかで渡す必要があります。

    <arg name="foo" default="1"/>
        デフォルト値でfooのを宣言します。 fooがコマンドライン引数(もしトップレベル)またはの<include>パッシング(含まれている場合)を経由して上書きすることができます。

    <arg name="foo" value="bar"/>
        一定の値でfooのを宣言します。 fooの値はオーバーライドできません。この用法では、より高いレベルでそのパラメータを公開することなく、起動ファイルの内部パラメータ化が可能になります。

default="default value" (optional)

    引数のデフォルト値。 value属性と組み合わせることはできません。デフォルト値でfooのを宣言します。 fooがコマンドライン引数(もしトップレベル)またはの<include>パッシング(含まれている場合)を経由して上書きすることができます。

value="value" (optional)

    引数値。 default属性と組み合わせることはできません。


●include
<include>タグは、現在のファイルに別のroslaunch XMLファイルをインポートすることができます。
<group>と<remap>タグを含む、ドキュメントの現在のスコープ内でインポートされます。インクルードファイル内のすべてのコンテンツは<master>タグを除いインポートされます。<master>タグは、トップレベルのファイルに従わされています。

file="$(find pkg-name)/path/filename.xml"
        インクルードするファイルの名前。

ns="foo" (optional)
        'foo'に名前空間に関連するファイルをインポートします。

clear_params="true|false" (optional Default: false)
    打ち上げ前の<include>の名前空間内のすべてのパラメータを削除します。この機能は非常に危険であり、慎重に使用する必要があります。 NSを指定する必要があります。デフォルトはfalse。


●group
<group>タグは、それが簡単にノードのグループに設定を適用することができます。それはあなたが別の名前空間にノードのグループをプッシュすることができますns属性を持っています。
また、グループ全体で再マップの設定を適用する<remap>タグを使うことができます。

ns="namespace" (optional)
    指定された名前空間へのノードのグループを割り当てます。グローバル名前空間が推奨されても名前空間は、グローバルまたは相対することができます。

clear_params="true|false" (optional)
    打ち上げ前のグループの名前空間にすべてのパラメータを削除します。この機能は非常に危険であり、慎重に使用する必要があります。 NSを指定する必要があります。


●param
<param>タグパラメータサーバで設定するパラメータを定義します。代わりにのではなく、パラメータの値を設定するには、テキストファイルまたはbinfile属性を指定することができます。 <param>タグはパラメータがプライベート·パラメータのように扱われ、その場合に<node>でタグの内側に置くことができます。

また<param>タグパラメータ構文(ROS名を参照)を使用してノードのグループ全体でのプライベート·パラメータを設定することができます。宣言されたパラメータは、同じスコープ(つまり、グループまたはNSタグ)にあることに従う<node>でタグ内のローカルパラメータとして設定されます。

 
name="namespace/name"


value="value"(optional)


type="str|int|double|bool"(optional)


textfile="$(find pkg-name)/path/file.txt"(optional)


binfile="$(find pkg-name)/path/file"(optional)


command="$(find pkg-name)/exe '$(find pkg-name)/arg.txt'"(optional)


●rosparam 
<rosparam>タグは、ROSのパラメータサーバからパラメータをロードし、ダンプするrosparam YAMLファイルの使用を可能にします。また、パラメータを削除するために使用することができる<rosparam>タグはパラメータがプライベート名のように扱われ、その場合に、<node>でタグの内側に置くことができます。

同様に、他のパラメータの前のようにloadコマンドの前に実行して削除し、ダンプのコマンドはパラメータサーバにアップロードされます。削除して、宣言された順序で実行されるコマンドをダンプします。

loadコマンドは、添加物とみなされます:あなたは、パラメータの辞書や名前空間を宣言した場合これらのパラメータは、その名前空間に対して宣言他のパラメータに追加されます。同様に、loadコマンドは、以前に宣言されたパラメータを上書きできます。

<rosparam>タグはどちらYAMLファイルを参照したり、生のYAMLテキストを含めることができます。 YAMLテキスト辞書を定義する場合、パラメータ属性を省略してもよい。
 


command="load|dump|delete" (optional, default=load) 


file="$(find pkg-name)/path/foo.yaml" (load or dump commands) 


param="param-name" 


ns="namespace" (optional) 

2013年6月10日月曜日

laserscanしてみる

KinectでGMappingするには?という質問があった
おそらくXtionでも同じだろう
http://answers.ros.org/question/64268/how-to-show-the-date-obtain-from-the-kinect/

以下のリンクを参考してみろ的な感じ
http://ros.org/wiki/openni_camera
http://ros.org/wiki/turtlebot_bringup/Tutorials/groovy/3D%20Visualisation
http://ros.org/wiki/turtlebot_navigation/Tutorials/Build%20a%20map%20with%20SLAM

turtlebotのスタックを使うということか
turtlebot無くても使用できるのだろうか?
以下のチュートリアルに手をつけてみる
http://ros.org/wiki/turtlebot_bringup/Tutorials/groovy/3D%20Visualisation

まずは、turtlebot_navigationをダウンロード
$ git clone https://github.com/turtlebot/turtlebot_apps

端末上で
$ roslaunch openni_launch openni.launch
$ rosrun rviz rviz

rvizインタフェース上で
Fixed Frameを /camera_depth_frame設定
LaserScanをAdd
LaserScanのTopicに /scanに設定

端末に戻って

$ roslaunch turtlebot_bringup 3dsensor.launch

しばらく待つ

レーザースキャンできた!

















3dsenser→rvizの順でもいける。その場合openni.launchはいらない
Fixed Frameで /camera_depth_frameが候補として上がらないかもしれないので、
ちょくせつFixed Frameに /camera_depth_frameと書き込む

とにかく
3dsensorを使えばLaserScanデータは取得できるろいうことか?
もしかしたら、デフォで取れてはいるけど、可視化できているだけなのかもしれない
つまり、openni.launchだけでもLaserScanデータが取れていたという可能性

GMappingに一歩近づいた感がある

とりあえず全部の端末をCtrl+Cして次のチュートリアルに進んでみた
http://ros.org/wiki/turtlebot_navigation/Tutorials/Build%20a%20map%20with%20SLAM

$ roslaunch openni_launch openni.launch
$ roslaunch turtlebot_navigation gmapping_demo.launch

そしたら
 [ INFO] [1370873334.870602547]: Still waiting on map...

がいっぱい出てきた
つかれたので今日はここまで
明日、ちゃんと上のリンクの記事を読むことにする

とりあえず、ちょっと進んだ
よかった
ありがとうインドの方

2013年6月9日日曜日

XtionとKinectを併用する時の不具合について

ubuntu(12.10)にROS-groovyをインストールした直後に
Kinect for Xbox360をぶっ刺せば、

$ roslaunch openni_launch openni.launch

で、Kinectと接続できる
※for Windowsだと上手くいかない(手順が他にあるのかもしれないが、不明)

そこで、Xtionを接続してみる
http://asukiaaa.blogspot.jp/2013/05/ros-groobyxtionopennilaunch.html
上のリンク通りに試行錯誤すれば、つながるようになる

で、Xtionをつなげて満足した後、もう一回Kinectに繋いでみると、
no device connected
の文字が。

Xtionで使ったドライバなどをすべてアンインストールしても、Kinectを認識してくれない
直し方は不明。ROSをもう一度インストールすれば、直るはず…

現時点

●やりたいこと
Xtionを使って
・GMapping
http://www.ros.org/wiki/slam_gmapping/Tutorials/MappingFromLoggedData
http://www.ros.org/wiki/pr2_simulator/Tutorials/BuildingAMapInSimulation
・rgbdSLAM
http://www.ros.org/wiki/rgbdslam

●GMappingでつまづいていること
○Xtionで記録したbagファイルをそのままGMappingに突っ込んでもマップは作れない。
→そもそも、普通はXtionで作るのか?
→GMappingできるのは、LaserScanというタイプのデータである
→記録のとり方に問題があるのか?($ roslaunch openni_launch openni.launch)

https://sites.google.com/site/slamnavigation/
上の例ではXtionを使ってSLAMしているが、turtlebotというロボットのスタックを利用している。
というか上の例にはlaunchファイルまで載ってる。
これを使ったらすぐ使えるのか?試してみる

●rgbdslamでつまづいてること
○チュートリアルどおりにできない。
→catkin化を待つか、自分でcatkin化するか。
○そもそも、rgbdslamのコマンドが通ったとして、何をすれば良いかわからない
→どうやったら、rgbdslamが求めている手順を踏めるか(Xtionを実際に持ち上げて、対象物を撮影する方法みたいな)

http://ros-robot.blogspot.jp/2011/04/rgbdslam.html
上のリンクが参考になりそうだが、記事が古いので、現在の状態に合わせて実行するしかなさそう

●課題
とにかく、出来ることを増やして、クリアにしていく
今やることは、
○navigationスタックのチュートリアル
○launchファイルの詳しい記述方法
○tfの使い方
○msg(LaserScan)について
など

ROSはスタックがべらぼうに多いので、基礎部分が欠けていると、前に進めない気がする。

2013年6月8日土曜日

rgbdSLAMについて

rgbdslamをダウンロードするフォルダに注意する(catkin_ws以下であれば大丈夫)
別のフォルダにしたければ.bashrcにパスを通す


$ rosdep install rgbdslam_freiburg
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
rgbdslam: Missing resource octomap_server
ROS path [0]=/opt/ros/groovy/share/ros
ROS path [1]=/home/user/catkin_ws/src
ROS path [2]=/opt/ros/groovy/share
ROS path [3]=/opt/ros/groovy/stacks
のようなエラーが出たので、
http://answers.ros.org/question/45964/rgbdslam-on-fuerte/
を参考にして
$ sudo apt-get install ros-DISTRO-octomap-mapping
してみたらrosdepできた

○しかし、エラー
$ rosrun rgbdslam rgbdslam
[rosrun] Couldn't find executable named rgbdslam below /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam
[rosrun] Found the following, but they're either not files,
[rosrun] or not executable:
[rosrun]   /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam
[rosrun]   /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/build/catkin_generated/stamps/rgbdslam

○catkin化されてないのが原因か?

●roslaunchでやってみた

user@ubuntu:~$ roslaunch rgbdslam rgbdslam.launch
...
...
...
ERROR: cannot launch node of type [rgbdslam/rgbdslam]: can't locate node [rgbdslam] in package [rgbdslam]
No processes to monitor
shutting down processing monitor...
... shutting down processing monitor complete

○エラーに対する返答
Have you compiled it? It's not a binary download. See the wiki page for how to do it.
http://answers.ros.org/question/62405/rgbdslam_freiburg-node-not-found-on-groovy/

○コンパイルしてみてのエラー
user@ubuntu:~/catkin_ws$ rosmake rgbdslam_freiburg
...
...
...
  g++ -o ../../../build/siftgpu/SiftGPU.o ../src/SiftGPU/SiftGPU.cpp -g -O2 -I../include -fPIC -L/usr/lib64 -L/usr/lib -L./bin -Wall -Wno-deprecated -pthread   -march=native -mfpmath=sse -c
  ../src/SiftGPU/SiftGPU.cpp: メンバ関数 ‘void SiftGPU::LoadImageList(char*)’ 内:
  ../src/SiftGPU/SiftGPU.cpp:1181:18: エラー: ‘chdir’ was not declared in this scope
  make[1]: *** [../../../build/siftgpu/SiftGPU.o] エラー 1
  make[1]: ディレクトリ `/home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/external/siftgpu/linux' から出ます
 
  ------------------------------------------------------------------
 
  CMake Error at CMakeLists.txt:123 (MESSAGE):
    SiftGPU cannot be compiled.  Returned: 2
 
 
  -- Configuring incomplete, errors occurred!
...
...
...

○グラボが原因?調べてみたがそうでもなさそう
○やはり、catkin化しなければならないのか?

‘chdir’ was not declared in this scope
をググったら
http://stackoverflow.com/questions/13340270/chdir-not-declared-compilation-error-g
が出てきた

Add #include <unistd.h>, as per the chdir manual.

してみたら、
...
...
...
[ rosmake ] Last 40 linesbdslam: 483.7 sec ]         [ 1 Active 62/63 Complete ]
{-------------------------------------------------------------------------------
                   from /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/build/src/moc_openni_listener.cxx:10:
  /opt/ros/groovy/include/octomap_ros/OctomapROS.h:55:163: 備考: #pragma message: DEPRECATION WARNING: OctomapROS.h is deprecated and will disappear soon. Use the OctoMap library and octomap_ros/conversions.h directly instead.
  [100%] Building CXX object CMakeFiles/rgbdslam.dir/src/moc_ros_service_ui.cxx.o
  Linking CXX executable ../bin/rgbdslam
  /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/src/node.cpp:1404: error: undefined reference to 'GOMP_sections_next'
  /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/src/node.cpp:1404: error: undefined reference to 'GOMP_sections_end_nowait'
  /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/src/node.cpp:1404: error: undefined reference to 'GOMP_atomic_start'
  /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/src/node.cpp:1404: error: undefined reference to 'GOMP_atomic_end'
  /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/src/node.cpp:1415: error: undefined reference to 'GOMP_sections_next'
  /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/src/node.cpp:1404: error: undefined reference to 'GOMP_parallel_sections_start'
  /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/src/node.cpp:1404: error: undefined reference to 'GOMP_parallel_end'
  /usr/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h:94: error: undefined reference to 'omp_get_thread_num'
  /usr/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h:95: error: undefined reference to 'omp_get_num_threads'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:135: error: undefined reference to 'omp_get_num_threads'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:135: error: undefined reference to 'omp_get_thread_num'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:135: error: undefined reference to 'omp_get_num_threads'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:135: error: undefined reference to 'omp_get_thread_num'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:135: error: undefined reference to 'omp_get_num_threads'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:135: error: undefined reference to 'omp_get_thread_num'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:149: error: undefined reference to 'GOMP_parallel_start'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:149: error: undefined reference to 'GOMP_parallel_end'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:49: error: undefined reference to 'omp_get_max_threads'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:149: error: undefined reference to 'GOMP_parallel_start'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:149: error: undefined reference to 'GOMP_parallel_end'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:49: error: undefined reference to 'omp_get_max_threads'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:149: error: undefined reference to 'GOMP_parallel_start'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:149: error: undefined reference to 'GOMP_parallel_end'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:49: error: undefined reference to 'omp_get_max_threads'
  /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/src/misc.cpp:863: error: undefined reference to 'GOMP_atomic_start'
  /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/src/misc.cpp:863: error: undefined reference to 'GOMP_atomic_end'
  /home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/src/misc.cpp:863: error: undefined reference to 'GOMP_parallel_start'
  /usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h:49: error: undefined reference to 'omp_get_max_threads'
  collect2: エラー: ld はステータス 1 で終了しました
  make[3]: *** [../bin/rgbdslam] エラー 1
  make[3]: ディレクトリ `/home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/build' から出ます
  make[2]: *** [CMakeFiles/rgbdslam.dir/all] エラー 2
  make[2]: ディレクトリ `/home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/build' から出ます
  make[1]: *** [all] エラー 2
  make[1]: ディレクトリ `/home/user/catkin_ws/src/rgbdslam_freiburg/rgbdslam/build' から出ます
-------------------------------------------------------------------------------}
[ rosmake ] Output from build of package rgbdslam written to:ve 62/63 Complete ]
[ rosmake ]    /home/user/.ros/rosmake/rosmake_output-20130603-121542/rgbdslam/build_output.log
[rosmake-2] Finished <<< rgbdslam [FAIL] [ 483.86 seconds ]                    
[ rosmake ] Halting due to failure in package rgbdslam.
[ rosmake ] Waiting for other threads to complete.
[ rosmake ] Results:                                                           
[ rosmake ] Built 63 packages with 1 failures.                                 
[ rosmake ] Summary output to directory                                        
[ rosmake ] /home/user/.ros/rosmake/rosmake_output-20130603-121542
...
...
...

エラー吐きまくった

launchファイルについて

●launchファイルとは
ROSノードを立ち上げるのを簡単にするツールである。
roslaunchは起動ファイルとして定義されているノードを開始する。
つまりこれを起動すれば、わざわざいろんなノードをrosrunでちまちま叩かなくて良い。

ssh経由で複数のノードを立ち上げる際、パラメータを設定する必要がある
ネットワーク経由で使用することを前提としているため、xml形式で書かれているのだろうか?

世界のでべろっぱ達が作ったノードを選んでまとめて、自分の求める動作をロボットにさせる。

●チュートリアル
www.ros.org/wiki/ROS/Tutorials/UsingRqtconsoleRoslaunch

●launchファイルの場所
launchしたいパッケージの直下で、
$ mkdir launch

●名前をつける
  <group ns="turtlesim1">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>

  <group ns="turtlesim2">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>

●インプットとアウトプット
turtlesim1/simをmimicにインプットして、mimicからturtlesim2/simをアウトプットしている。
  <node pkg="turtlesim" name="mimic" type="mimic">
    <remap from="input" to="turtlesim1/turtle1"/>
    <remap from="output" to="turtlesim2/turtle1"/>
  </node>

http://ros.org/wiki/ja/roslaunch

例を用いた詳しい解説($ rospack find 2dnav_pr2/move_base/2dnav_pr2.launch)

http://ros.org/wiki/ja/roslaunch/Tutorials/Roslaunch%20tips%20for%20larger%20projects

tfについて

●tfについて

○tfとは、座標系と座標系の関係を記述するもの
http://ros-robot.blogspot.jp/2009/12/tf.html ○ロボットの座標系をどのようにしてtfにブロードキャストするか
http://www.ros.org/wiki/ja/tf/Tutorials

●フレームについて

○なぜフレームを追加するのか
ローカルフレームについて考えるのは簡単だから
tfはそれぞれのセンサにローカルフレームを定義やリンクの管理する。
○tfはフレームの木構造を作る
親が1つで子が複数ある
(子の下に子を作ることは出来ないのか?)
○どのようにフレームを加えるか
http://www.ros.org/wiki/ja/tf/Tutorials/Adding%20a%20frame%20%28C%2B%2B%29

2013年6月7日金曜日

はじめに

ROSを使ってロボットを動かします
個人用の殴りメモです