Giter Site home page Giter Site logo

nishida-lab / motoman_project Goto Github PK

View Code? Open in Web Editor NEW
50.0 23.0 31.0 124.92 MB

Repository for Motoman ROS applications

Home Page: http://lab.cntl.kyutech.ac.jp/~nishida/en/research-en.html

CMake 1.42% Shell 0.65% Python 16.43% C++ 81.44% Makefile 0.06%
moveit gazebo motoman ros industrial ros-industrial

motoman_project's Issues

Cmake Error "freenect2"

問題

Installationにおいて、最後のcatkin_makeで以下の様なエラーがでました。

これは、libfreenect2をインストールすればいいのでしょうか。

CMake Error at motoman_tools/iai_kinect2/kinect2_bridge/CMakeLists.txt:22 (find_package):
  Could not find a package configuration file provided by "freenect2" with
  any of the following names:

    freenect2Config.cmake
    freenect2-config.cmake

  Add the installation prefix of "freenect2" to CMAKE_PREFIX_PATH or set
  "freenect2_DIR" to a directory containing one of the above files.  If
  "freenect2" provides a separate development package or SDK, be sure it has
  been installed.

motomanをV-REPで動かしてみようのコーナー!

タイトル通りです。疲れたときに、趣味的にぼちぼちやれるネタがあればと思い、テーマアップです ^^

↓とりあえずWikiに今できていることをメモ。
https://github.com/Nishida-Lab/motoman_project/wiki/motoman%E3%82%92V-REP%E3%81%A7%E5%8B%95%E3%81%8B%E3%81%99%E3%81%BE%E3%81%A7%E3%81%AE%E8%BB%8C%E8%B7%A1

先日購入頂いたMasteringのROS本の解説、実は間違っているので注意してください笑。上記Wikiの通りにやれば、最低限ROSとのインターフェースはうまくいくはずです。

「え、Gazeboで既に動いているのに、V-REPでやる意味あるの?」

わかりません。でも、やるんです笑!楽しそうです。

体感的にですが、V-REPは動作が軽いように思います。デフォルトでロボットやワークの色々なモデルも用意されていますし、複数台ロボット構成もGazeboよりやりやすそうです。

将来的に製造ラインをバーチャルで再現することを考慮すると、実はV-REPのほうが引っ張ってこれる既存リソースは豊富そうですね。

↓こんなの再現できたら、めちゃ熱そう?
V-REP_LINE

↓Youtubeも!ベルトコンベアが動いている!
V-REP
https://www.youtube.com/watch?v=1qXLBXyxJ2E

Gazebo慣れしている身だと少し癖はありそうですが、一度乗っかってしまえばどのプロジェクトでも使えるようになるので、研究室としての恩恵は大な予感です。Gazeboと比較して、何ができて何ができないのかを把握できるようになると嬉しいなぁと思います。

というわけで、ちょっと存在感が薄れてきつつある(←オイ)motomanくんの方でも、たまにはただ楽しそうだということもやる感じで ^^ 趣味路線なので、本業のバックグラウンドで急がず焦らずまったりと。でもやるからにはクソまじめに。

motomanでハンドリングを行いたい

タイトルの通り,このmotoman_projectでもmoveitを使ったPick and Placeを行いたいと考えております.
そこで「Learning ROS for Robotics Programming - Second Edition」,「Mastering ROS for Robotics Programming」の共に10章にある指南にしたがって,graspを試みました.

それぞれの教科書が提供しているサンプルリポジトリは以下の通りです.

Learning_ROS_for_Robotics_Programming_2nd_edition
https://github.com/AaronMR/Learning_ROS_for_Robotics_Programming_2nd_edition
mastering_ros
https://github.com/qboticslabs/mastering_ros

これらのサンプルが共通に使っているパッケージである「moveit_simple_grasps」があります.このパッケージが実にやっかいで,本家リポジトリでもサポートは終了しており,教科書に書いてあることが再現できておりません.(現段階ではmotomanは持ち込まずに,それぞれの教科書が提供してくれているロボットで試しています.)
ここからはそれぞれの教科書別に抱えている問題について書いていこうと思います.

Learning ROS for Robotics Programming - Second Editionの場合

moveit_simple_graspsはsudo apt-get install ros-indigo-moveit-fullをした拍子にインストールされたものを使用しています.
そもそもmoveit_simple_graspsはbaxter等の双腕を想定したプログラムの構成になっています.
したがって下のlaunchファイルをlaunchすると以下のようなエラーが

roslaunch rosbook_arm_pick_and_place grasp_generator_server.launch
process[moveit_simple_grasps_server-1]: started with pid [22820]
[ERROR] [1455088144.657619214]: Grasp configuration parameter `pregrasp_time_from_start` missing from rosparam server. Did you load your end effector's configuration yaml file? Searching in namespace: /moveit_simple_grasps_server/right

Mastering ROS for Robotics Programmingの場合

この事態を把握しているようで,このセクションのプログラムを実行する場合,同梱しているものを使ってください.との記述がありますが,これもうまくいきませんでした.エラー内容はcloseされているissueの内容と全く一緒でした.

15日前にクローズされたもの
Moveit_simple_grasping#3
qboticslabs/mastering_ros#3

roslaunch seven_dof_arm_gazebo grasp_generator_server.launch
process[moveit_simple_grasps_server-1]: started with pid [1165]
moveit_simple_grasps_server: /usr/include/boost/smart_ptr/shared_ptr.hpp:653: typename boost::detail::sp_member_access<T>::type boost::shared_ptr<T>::operator->() const [with T = const moveit::core::RobotModel; typename boost::detail::sp_member_access<T>::type = const moveit::core::RobotModel*]: Assertion `px != 0' failed.

こまった

これができるようになると,motomanでできることの幅が広がるので,是非とも実現したいのですが私の実力じゃこんな感じでした.
もし解決策がありましたらよろしくお願いします.

euclidean cluster が不安定

kinect_second からの点群をクラスタリングにかけるために、 クライアントPCで

$ roslaunch kinect2_bridge kinect2_bridge.launch base_name:=kinect_second

を実行し、

$ roslaunch motoman_euclidean_cluster euclidean_cluster.launch

を実行すると高確率で以下のエラーが発生します。

Failed to find match for field 'x'.
Failed to find match for field 'y'.
Failed to find match for field 'z'.
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
[ERROR] [1516716918.579003555]: Lookup would require extrapolation into the future.  Requested time 1516716918.508084928 but the latest data is at time 1516716914.150147893, when looking up transform from frame [kinect_second_rgb_optical_frame] to frame [world]

上記のエラーは以前から見られますが、私の知っている解決策は

  • 放置(一定時間待つと直る場合と直らない場合がある)
  • プログラムの立ち上げ直し
  • クライアントPCの再起動
  • ntpdate -q ...でマスタPCへの時刻合わせを行う(意味があるのかは不明)

です。
ご指摘や不明な点があればよろしくお願いします。

catkin_makeについて

最初のインストールで下記のようなエラーが出ました(対象箇所抜粋)

WARNING: package "motoman_euclidean_cluster" should not depend on metapackage "jsk_visualization" but on its packages instead
WARNING: package "motoman_cable_removal" should not depend on metapackage "jsk_visualization" but on its packages instead
WARNING: Package 'motoman_config' is deprecated (This package will be removed in ROS Indigo. The configuration data included in this

CMake Error at motoman_tools/iai_kinect2/kinect2_bridge/CMakeLists.txt:22 (find_package):
Could not find a package configuration file provided by "freenect2" with
any of the following names:

freenect2Config.cmake
freenect2-config.cmake

Add the installation prefix of "freenect2" to CMAKE_PREFIX_PATH or set
"freenect2_DIR" to a directory containing one of the above files. If
"freenect2" provides a separate development package or SDK, be sure it has
been installed.

-- Configuring incomplete, errors occurred!
See also "/home/nakao/motoman_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/nakao/motoman_ws/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed

一応動作確認しました

@RyodoTanaka
なんかいろいろわかってないので時間があれば教えてください

wstoolの問題

READMEのとおりコマンドを打つと下のようなエラーが

Using initial elements from: src/motoman/.rosinstall
ERROR in config: Is not a local file, nor a valid URL [src/motoman/.rosinstall] : unknown url type: src/motoman/.rosinstall

???だけど
これが通らなくても対して問題なさそうなので手動でmotomanのリポジトリをとってきてindigo-develのブランチに切り替えました.

cakin_make通らねえ問題

さっきのコマンドが通らなかったのが問題なのかわからないけどindustrial_msgsがどうのとかいうので

CMake Error at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:75 (find_package):
  Could not find a package configuration file provided by "industrial_msgs"
  with any of the following names:

    industrial_msgsConfig.cmake
    industrial_msgs-config.cmake

  Add the installation prefix of "industrial_msgs" to CMAKE_PREFIX_PATH or
  set "industrial_msgs_DIR" to a directory containing one of the above files.
  If "industrial_msgs" provides a separate development package or SDK, be
  sure it has been installed.
Call Stack (most recent call first):
  motoman/motoman_msgs/CMakeLists.txt:4 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/ry0/workspace/ROS/motoman_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/ry0/workspace/ROS/motoman_ws/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed

このリポジトリを取ってきました.

ros-industrial/industrial_core
ROS-Industrial core meta-package. http://ros.org/wiki/industrial_core
https://github.com/ros-industrial/industrial_core

git clone https://github.com/ros-industrial/industrial_core.git

これでどうにか通りました.良道の環境にはもとから入っていたのかな...

確認

現段階ではこれでなんかいろいろやるんだよね?

roslaunch motoman_description sia5_rviz_demo.launch

なんかJoint State Publisherをうまいこと動かせるようになったら,おれもROSやってるっぽくなるのでできるだけがんばります

つくちゃ頑張って〜

本リポジトリがROS教育用サービスで利用されているようです

嬉しいニュースです。

たまたま見つけたのですが、下記のROS教育サービスで、ここのmotomanがチュートリアルとして利用されているようです。

nishidalab_motoman

https://www.youtube.com/watch?v=_ULJrmJ7xOo&feature=youtu.be

コマンドラインやlaunchファイル名も確認しましたが、見覚えのあるモノばかり。先端もジャミングだし、間違いなく西田研のものを使っています。

完成度が認められているということで、誇っていいことだと思います ^^ 世界中の人が見ているかもしれませんね。

コレを糧に、もっと進化させたいですね!

このIssueは、少し様子を見た後に閉じます。以上、情報共有でした。

octomapがRviz上でうまく確認できない問題について

octomapが更新されない問題について

motomanでmoveitを動かす際、octomapが更新されないという問題があります。
これは、Rviz上でoctomapの更新が確認できないというものです。
Rviz上のoctomapを更新するためには、PnanningSceanのRvizプラグインを立ち上げ直す必要がありました。

気づいた点・おそらく原因

Rviz上では見えていないのですが、一度GazeboとMoveitを起動させたあと、Gazebo上に新たな障害物を出現させ、プランニングを行ってみると、kinectで見えているところに関してはきちんと避けているようでした。
また、Rviz上ではoctomapに映らないのですが、本来は障害物があるところをゴールにするとプランニングに失敗します。
以上のことから、motomanに関しては、Rvizの表示上で確認できないだけであって、プランナーにはcollision情報がキチンと提供されていると考えることができます。
また、この症状は、motomanだけcurrent姿勢が更新されないことに酷似していると感じます。
故に、原因はmoveitのvisualisationとmotomanに何か齟齬がある為だと考えられます。

追加点

モーションプランを実行した際に、kinectで見えていない部分にロボットが衝突し、octomapが変わるようなことがありました。
その際に、以下のようなメッセージが表示され、プランニングの実行が途中で中止されました

[ INFO] [1455283149.001766923, 159.349000000]: ABORTED: Solution found but the environment changed during execution and the path was aborted

このメッセージからもわかるように、Rvizには表示がありませんが、プランナーと実行プログラムには、octomapの情報がリアルタイムで届いていると考えられます。

今後について

以上より、おそらくではありますが、原因箇所が少しづつ判明してきました。
今後は、moveitのvisual部分を中心にデバッグしたいと思います。

pythonのmoveit API でうまく行かなかったとかの件

python でmoveit API を使って動かそうとしたら、うまく行かない?的な話があったと思います。初回はうまく行くけど、二点目で不自然な挙動を示す、的な。原因を突き止めたいですね。

コードはこれでしょうか?
https://github.com/Nishida-Lab/motoman_project/blob/master/motoman_moveit/scripts/moveit_command_sender.py

この現象を再現するまでの手順と、現象に関する具体的な説明をいただけますか?

実機を動かす時の仕様について

標記についてちょっと教えてもらえますか?

gazeboを使った時のソフトウェア構成はなんとなく分かってきました.
実機の方がよく理解できていません.

ざっと見てsimとrealの違いが合ったのが,
motoman_project/motoman_control/launch/sia5/ の中のsia5_real_control.launchsia5_sim_control.launch かと思い中を見ました.

すると,sia5_sim_control.launchではros_controlの設定があるのですが,sia5_real_control.launchではFollowJointTrajectory型のActionサーバであるmotoman_control_nodeだけが起動されています.
実機ではJointTrajectoryControllerを立ち上げる必要はないのでしょうか?

私の解釈では,下記のシーケンスでメッセージが送られていると思っていたので,controller_managerを起動することなく,FollowJointTrajectoryだけを起動するsia5_real_control.launchでは不十分なのでは?と思ったのですが,間違いでしょうか?

moveit: move_group

action: FollowJointTrajectory

controller_manager: JointTrajectoryController

transmission: EffortJointInterface

hardware_interface: RobotHW

おかしいところがあったらご指摘いただけますか?

また,
motoman_sia5_moveit_config内のcontrollers.yamlFollowJointTrajectory を指定していると思うのですが,上記sia5_real_control.launchと両方設定がいるのでしょうか?
それともsia5_real_control.launchはサンプル的な位置づけのファイルでしょうか?

一番はじめの catkin_make について (半解決済み)

本 issue は私個人の PC にインストールしている環境との干渉が原因の可能性があります.他の方が成功していたらすみません.

問題点

wiki ページを参考にして自分の PC に motoman のシミュレータ環境を構築しようとしたところ,iai_kinect 関連のエラーが発生し,catkin_make が通りませんでした.該当箇所のディレクトリを削除することで catkin_make は通るようになりました.パソコン内でのシミュレーションには必要ない箇所と判断した場合の解決策です.

環境

  • Ubuntu 14.04
  • ROS Indigo

状況と解決策

catkin_make を実行したところ,下に示すエラーが発生しました (エラーメッセージは発生箇所のみ抜粋しています).解決策としては,motoman_project 内の /motoman_tools 内のディレクトリ "iai_kinect2" をまるごと削除すれば catkin_make は通るようになります.

/home/nishio/Documents/motoman_ws_origin/src/motoman_tools/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp: In member function 'bool Kinect2Bridge::initPipeline(const string&, int32_t)':
/home/nishio/Documents/motoman_ws_origin/src/motoman_tools/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:427:28: error: expected type-specifier
       packetPipeline = new libfreenect2::OpenCLKdePacketPipeline(device);
                            ^
/home/nishio/Documents/motoman_ws_origin/src/motoman_tools/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:427:28: error: expected ';'
/home/nishio/Documents/motoman_ws_origin/src/motoman_tools/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:436:28: error: expected type-specifier
       packetPipeline = new libfreenect2::CudaKdePacketPipeline(device);
                            ^
/home/nishio/Documents/motoman_ws_origin/src/motoman_tools/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:436:28: error: expected ';'
/home/nishio/Documents/motoman_ws_origin/src/motoman_tools/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp: In member function 'bool Kinect2Bridge::initPipeline(const string&, int32_t)':
/home/nishio/Documents/motoman_ws_origin/src/motoman_tools/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:427:28: error: expected type-specifier
       packetPipeline = new libfreenect2::OpenCLKdePacketPipeline(device);
                            ^
/home/nishio/Documents/motoman_ws_origin/src/motoman_tools/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:427:28: error: expected ';'
/home/nishio/Documents/motoman_ws_origin/src/motoman_tools/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:436:28: error: expected type-specifier
       packetPipeline = new libfreenect2::CudaKdePacketPipeline(device);
                            ^
/home/nishio/Documents/motoman_ws_origin/src/motoman_tools/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:436:28: error: expected ';'
make[2]: *** [motoman_tools/iai_kinect2/kinect2_bridge/CMakeFiles/kinect2_bridge_nodelet.dir/src/kinect2_bridge.cpp.o] Error 1
make[1]: *** [motoman_tools/iai_kinect2/kinect2_bridge/CMakeFiles/kinect2_bridge_nodelet.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** [motoman_tools/iai_kinect2/kinect2_bridge/CMakeFiles/kinect2_bridge.dir/src/kinect2_bridge.cpp.o] Error 1
make[1]: *** [motoman_tools/iai_kinect2/kinect2_bridge/CMakeFiles/kinect2_bridge.dir/all] Error 2
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

Gazeboでうまく動かない問題 メモ

以下の話は、controlブランチでの現状です。masterブランチにおける話ではありません。
Gazeboで動かそうと思って、デフォルトのコントローラである、JointStateControllerを用いている。
以下のコマンドでlaunchしてみたところ、最初だけlink_sが回転するが、その後にcommandを入力しても動かない。

roslaunch motoman_gazebo sia5_empty_world.launch
roslaunch motoman_control sia5_control.launch

rqtで見てみると、/sia5/joint_s_position_controller/state/commandの値は動くが、errorはリンクがどこにあってもcommandの値と一致してしまっている。またもちろん、process_valueも3.14から動く気配がない。
rrbotの例と見比べて見ても何が原因で変な挙動を示すのかがさっぱりわからない。
因みに、rrbotの例を起動して、pidパラメータを変更してみると、pゲインが小さいと動きはするが、うまく目標値に追従できなくなることはわかった。
また、sia5に関してもpidパラメータをp=1.0にだけしており、これが原因かと思ったが、pゲインの値を変更すると、ros_control起動時のlink_sの回転速度が変化することから、とりあえずコントローラは動いているものと考えられる。
以上より、現状と問題点をわかる範囲でメモしておく。

現状

  • gazeboがを立ち上げることができる。
  • ros_controlerは最初にlink_sを回転させることはできる。

問題点

  • ros_controlをlaunchした後、/sia5/joint_s_position_controller/command/dataに値をpublishしてもGazeboのシミュレータが反応しない。
  • rqtで/sia5/joint_s_position_controller/state/errorを確認すると、目標値と現在地の差分を表せていないようである。

以上です。
何かわかる方がいらっしゃれば、是非教えてください。何卒よろしくお願いします。

疑問

Wikiの中のインストールという項目で最初にある
catkin_ws
というのがよくわかりません。
wsという部分だけ任意の名前にしてよいのでしょうか?
また、catkin_ws全てを任意の名前のディレクトリにしてもよいのでしょうか?

launchファイルを新規作成

@Ry0
joint_state_publisherをlaunchしないように変更されていたが、動作確認の際に、joint_state_publisherが必要になることがあったので、内容を元に戻し、新たに、sia5_without_joint_state_publisher.launchファイルを作成しました。
つまり、新たに作成したlaunchファイルが株丹の作成してくれたjoint_state_publisherをlaunchしないファイルです。
よろしくお願いします。

Installation Problem , Help

Hi Team
First of all thank you for your very interesting hard job that will serve us to undrestand more about Motoman Robots.

I Got a problem while installing
The first one is that when i use rosdep command i receive this message

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
motoman_moveit: Cannot locate rosdep definition for [motoman_sia5_moveit_config]
motoman_demo: Cannot locate rosdep definition for [motoman_sia5_moveit_config]

i think that comes from your github files , My catkin_makes works perfect so my question is
will i have problemes because of that error if there is any issue thanks for help

im Using Ubuntu 14.04 and ROS Indigo , Kinect V1 for xbox360 , i tried to install PCL Again i followed all the steps but still the same error

Thanks for resolving this , and big respect for your work

Travisのビルドが通らない!!

https://travis-ci.org/Nishida-Lab/motoman_project/builds/334039073
indigoのTravisが通りません(泣)
ros-indigo-moveit まわりのパッケージがapt-getでインストールできていないのが原因です.
でもどうやって直したらいいのか,なんでそもそもapt-getできないのかわかりあませぇん(泣)
今はプライオリティが低いのでとりあえず放置しておきます.
なお,作業ブランチはryodo/fix-ciです.

Compile error in package

I have cloned the package to my ROS workspace and tried to compile it with Catkin_make, got the error as below. I am using ROS Kinetic version.

[ 31%] Building CXX object motoman_project/motoman_moveit/CMakeFiles/move_groupe_plan_single_target_remove_octomap.dir/src/move_group_plan_single_target_remove_octomap.cpp.o
In file included from /opt/ros/kinetic/include/moveit/macros/class_forward.h:40:0,
from /opt/ros/kinetic/include/moveit/kinematics_base/kinematics_base.h:42,
from /home/kishore/catkin_ws/src/motoman_project/motoman_sia5_moveit_plugins/src/motoman_sia5_arm_ikfast_moveit_plugin.cpp:49:
/opt/ros/kinetic/include/moveit/macros/declare_ptr.h:52:16: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type
typedef std::shared_ptr Name##Ptr;
^
/opt/ros/kinetic/include/moveit/macros/class_forward.h:51:3: note: in expansion of macro ‘MOVEIT_DECLARE_PTR’
MOVEIT_DECLARE_PTR(C, C);

hardware_interface::EffortJointInterface Issue

When I run the sia5_sim_control.launch file with sia5_joint_position_control.yaml, it is giving me the following error:

It is failed to load sia5_controller and could not find the resource “joint_s” in ‘hardware_interface::EffortJointInterface’.

I am using Ubuntu Linux 16.04 and Gazebo 7. Can you please help me fix this issue?

motomanのcalibrationに関して

motoman_project のコマンドチートを参照しながらcalibrationを行おうとしたのですが、gazeboにロボットモデルを登場させる以下のコマンド

roslaunch motoman_gazebo sia5_with_dhand_and_multikinect.launch

を実行するところで下記のエラーが生じました(motomanおよびkinectのは接続済)。

[ERROR] [1493107510.710925494, 2.346000000]: Lookup would require extrapolation into the past.  
Requested time 0.517000000 but the earliest data is at time 1.005000000, when looking up transform from 
frame [kinect_first_rgb_optical_frame] to frame [kinect_second_rgb_optical_frame]

gazebo上ではロボットが表示されましたが、RVizではロボットモデルがワールド座標原点付近に固まったように表示されています。
TFの箇所に Status: Warnが出ているのでそこがうまくいってないように思うのですが、アドバイスをいただけると幸いです。
よろしくお願いします。

現状

Fixed Frame:: world
Robot Model:: Status: Error
TF:: Status: Warn

motoman_error

launch test が通らない

先程は早急なご対応、ありがとうごいます! ^^

題記の通り、testが通らなくなりましたので、issueにします。

test 抜粋

FAILURE:
[/home/masa/ros/motoman_ws/src/motoman_project/motoman_moveit/test/sia5_with_kinectv2_moveit_planning_execution_launch_test.xml]:
	unused args [sensor_max_range, srdf_model, load_robot_description, kinematics_config, joint_limits_config, octomap_frame_name, sensor_config, octomap_resolution_value, urdf_model, use_depth_sensor] for include of [/home/masa/ros/motoman_ws/src/motoman_project/motoman_sia5_moveit_config/launch/move_group.launch]

ざっとソースコードを見ただけなのですが、
「/home/masa/ros/motoman_ws/src/motoman_project/motoman_sia5_moveit_config/launch/move_group.launch」 内の修正によるものと考察します。

従来はmove_group.launch 内で、各パラメータを引数で定義して、その引数をplanning_context.launchに渡すという構成でした。上位でパラメータを変えれば、それに従って低レイヤーが切り変わってくれる、という感じです。

変更後は、move_group.launchでは引数を排除し、planning_context.launch 内に直接パラメータを入力するという構成をとるように変更がされている、と解釈しています。

これは、indigo版で作成したコードは「motoman_moveit_config」というパッケージでそれらの設定パラメータを管理していたところ、kinetic版ではそのパッケージが欠落しているための措置と、推察しています。

これにより、move_group.launch を呼ぶさらに上位の「sia5_moveit_planning_context.launch」等を利用することを前提としたこのリポジトリのポリシーとの齟齬が起こっている、というのが現状です。

@RyodoTanaka くんにもご意見をいただけるととっても嬉しいです ^^

testを通すだけなら、更に上位のlaunchまですべて現行のシステムに合わせて書きなおすことで対策もできるのですが、低レイヤーの修正によってアプリケーションレイヤーの修正が必要なるというのは、ちょっと今後大変になるのかな、と感じて、投稿してみました ^^; すみません。

老婆心なのかもしれませんが、長期的に運用することを考えると、現行の対策を行うより、kinetic-develにも「motoman_moveit_config」復活させるほうが、良いのかな、と考えています。

  • 理由1. 従来のアプリケーションの資産がそのまま利用できる
  • 理由2. planning_context.launch に直接urdf等を設定することはハードコーディングとなり、プログラムの汎用性が下がります。たとえば、motomanのアプリケーションをdensoさんのロボットに転用したいとなったとき、ROSのうまみが低減してしまうかな、と思います。

今ならまだ変更範囲が少ないので、ご検討いただければ幸いです。

リポジトリのWikiについて

最近,リポジトリのWikiの更新がなされていません.
インストール方法が書かれている方法と異なったり,launchするファイルが違うファイルのものに変わっていたりします.
このままでは誤解を招くだけなので,はやめに情報の更新を行うようにします.

openraveのコンパイルエラー

Mastering ROS for Robotics Programmingの手順にしたがってopenraveのインストールを試みましたが,

Configureの段階でエラーが出てしまいます.
エラーがでた箇所は以下の通りです.

screenshot from 2016-05-16 22 29 28

CMake Warning at CMakeLists.txt:478 (find_package):
  By not providing "FindASSIMP.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "ASSIMP", but
  CMake did not find one.

  Could not find a package configuration file provided by "ASSIMP" with any
  of the following names:

    ASSIMPConfig.cmake
    assimp-config.cmake

  Add the installation prefix of "ASSIMP" to CMAKE_PREFIX_PATH or set
  "ASSIMP_DIR" to a directory containing one of the above files.  If "ASSIMP"
  provides a separate development package or SDK, be sure it has been
  installed.
CMake Warning at CMakeLists.txt:709 (find_package):
  By not providing "FindFPARSER.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "FPARSER", but
  CMake did not find one.

  Could not find a package configuration file provided by "FPARSER"
  (requested version 4.4.3) with any of the following names:

    FPARSERConfig.cmake
    fparser-config.cmake

  Add the installation prefix of "FPARSER" to CMAKE_PREFIX_PATH or set
  "FPARSER_DIR" to a directory containing one of the above files.  If
  "FPARSER" provides a separate development package or SDK, be sure it has
  been installed.
checking for module 'fcl'
  package 'fcl' not found
Could not find FCL. Please install FCL (https://github.com/flexible-collision-library/fcl)

こんな状態なので,Generateしたあと,makeしてもコンパイルエラーが起きていまいます.
仮想環境を使ってクリーンな環境でも試しましたが,同じ内容で詰まってしまい困っています.

コード整形をしませんか

ここにやり方があります.
http://moveit.ros.org/documentation/contributing/code/
これでインデントを綺麗にできます.

↓MoveIt!のコードはこのルールで整形しているらしいです.ユーザー直下の.clang-formatに以下の記述をして保存します.

BasedOnStyle:  Google
AccessModifierOffset: -2
ConstructorInitializerIndentWidth: 2
AlignEscapedNewlinesLeft: false
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortLoopsOnASingleLine: false
AlwaysBreakTemplateDeclarations: true
AlwaysBreakBeforeMultilineStrings: false
BreakBeforeBinaryOperators: false
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: true
BinPackParameters: true
ColumnLimit:    120
ConstructorInitializerAllOnOneLineOrOnePerLine: true
DerivePointerBinding: false
PointerBindsToType: true
ExperimentalAutoDetectBinPacking: false
IndentCaseLabels: true
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 60
PenaltyBreakString: 1
PenaltyBreakFirstLessLess: 1000
PenaltyExcessCharacter: 1000
PenaltyReturnTypeOnItsOwnLine: 90
SpacesBeforeTrailingComments: 2
Cpp11BracedListStyle: false
Standard:        Auto
IndentWidth:     2
TabWidth:        2
UseTab:          Never
IndentFunctionDeclarationAfterType: false
SpacesInParentheses: false
SpacesInAngles:  false
SpaceInEmptyParentheses: false
SpacesInCStyleCastParentheses: false
SpaceAfterControlStatementKeyword: true
SpaceBeforeAssignmentOperators: true
ContinuationIndentWidth: 4
SortIncludes: false
SpaceAfterCStyleCast: false

# Configure each individual brace in BraceWrapping
BreakBeforeBraces: Custom

# Control of individual brace wrapping cases
BraceWrapping: {
    AfterClass: 'true'
    AfterControlStatement: 'true'
    AfterEnum : 'true'
    AfterFunction : 'true'
    AfterNamespace : 'true'
    AfterStruct : 'true'
    AfterUnion : 'true'
    BeforeCatch : 'true'
    BeforeElse : 'true'
    IndentBraces : 'false'
}

https://github.com/ros-planning/moveit/blob/indigo-devel/.clang-format

オリジナルindustrial_moveitのエラー

[オリジナルのindustrial_moveit[(https://github.com/Nishida-Lab/industrial_moveit/tree/delete_moveit_experimental)をsrc以下に追加してコンパイルすると以下のエラーが起こる.

rrors     << industrial_moveit_benchmarking:make /home/motoman/Workspace/ROS/motoman_ws/logs/industrial_moveit_benchmarking/build.make.000.log
/home/motoman/Workspace/ROS/motoman_ws/src/motoman_tools/industrial_moveit/industrial_moveit_benchmarking/src/clik_valgrind.cpp:38:73: fatal error: constrained_ik/ConstrainedIKPlannerDynamicReconfigureConfig.h: そのようなファイルやディレクトリはありません
 #include <constrained_ik/ConstrainedIKPlannerDynamicReconfigureConfig.h>
                                                                         ^
compilation terminated.
/home/motoman/Workspace/ROS/motoman_ws/src/motoman_tools/industrial_moveit/industrial_moveit_benchmarking/src/joint_interpolated_valgrind.cpp:38:73: fatal error: constrained_ik/ConstrainedIKPlannerDynamicReconfigureConfig.h: そのようなファイルやディレクトリはありません
 #include <constrained_ik/ConstrainedIKPlannerDynamicReconfigureConfig.h>
                                                                         ^
compilation terminated.
make[2]: *** [CMakeFiles/cartesian_benchmarking_node.dir/src/clik_valgrind.cpp.o] エラー 1
make[1]: *** [CMakeFiles/cartesian_benchmarking_node.dir/all] エラー 2
make[1]: *** 未完了のジョブを待っています....
make[2]: *** [CMakeFiles/joint_interpolated_benchmarking_node.dir/src/joint_interpolated_valgrind.cpp.o] エラー 1
make[1]: *** [CMakeFiles/joint_interpolated_benchmarking_node.dir/all] エラー 2
make: *** [all] エラー 2
cd /home/motoman/Workspace/ROS/motoman_ws/build/industrial_moveit_benchmarking; catkin build --get-env industrial_moveit_benchmarking | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -

現状ではコンパイルエラーを直す対処法がわからない...
STOMPを使わないのであれば、オリジナルのindustrial_moveitでなくても良いので,とりあえずはコンパイル対象から外すことで対処している.

Motoman やること・やったことメモ

Gazebo モデルに関して

  • inertia要素の改善
    massの再定義、慣性モーメントテンソルの計算(当面は近似物体で求める)
  • transmission要素の改善
    各モータの減速比等を定義。hardware_interfaceについて掘り下げる必要あり。

コントローラについて

現在は、デフォルトのPIDコントローラを用いている。また、制御方式が、位置制御(関節角度制御)である。
Gazeboモデルがある程度固まってきたら、コントローラを設計する必要あり。

  • 速度制御、力制御の実装
  • 新たなコントローラの設計と実装
    手始めは、I-PDコントローラが良いと思われる。

プランニングについて

MoveIt を用いたプランニングをとりあえずやってみる。
これには、すでにプランニングをやっている株丹君の力を借りたい。
自分たちで構築するプランニングがMoveItを介したほうが良いのか、否か判定する。

  • MoveIt で順・逆**学を実装する。
  • MoveIt を使って障害物のある空間にてモーションプランニングを行う。

その他

  • モデルに柵とか追加
  • ロボット**学の習得(順**学、逆**学)
  • 剛体の力学再勉強(慣性モーメントを中心に)
  • 座標変換の勉強
  • 7軸ロボットの利点を見つける
    現状では、衝突空間の減少が主な利点である。西田先生のアドバイスによると、新たな7軸の強みを見つけると良い。つまり、衝突空間(位置)から一回微分した、速度における強み(タクト時間減少等)、二回微分した、力における強み(各関節の負担減少等)を見つけると良い。この他にも、グリッパ特有のプランニングを考案するというのも良い。例として、7軸+多指ハンド等。
  • 多指ハンドのデータダウンロードと仮制作

MoveIt! について

@Ry0
気づいたというか、なんと言うことはない話なのですが、MoveIt用のモデルを作る際に、Gripperをlink_tとtool_0に設定していました。なので、プランナーは6自由度のハンドのプランニングを行っていますよね?
今日の昼に実装していく時に、とりあえず、6自由度でいいやということで先に進み、最後の方に、このプランニング、6自由度になってないか?という議論があったような気がします。
よく考えたら当たり前でしたね。
そこで、提案なのですが、

  1. Gripper要素をtool_0だけにする
  2. tool_0のリンクの位置を、link_tの回転軸からずらした位置に設定する

とするのはいかがでしょうか?
link_tの回転軸上に置くのではなく、この前の安川電機の教習所のロボットのように、tool_0の位置をlink_tの回転軸から少しずらした位置に設定し直すということです。

こうすれば、MoveItのプランナーが7自由度に対応できているのかの検証にもなると思います。というか、対応していなかったら、この研究室で取り組むべき課題になると思います。この辺までやるとやっと私の卒業研究テーマに近づけるような気もします。。。

あ、あと、MoveItでプランニングしてるかっけぇ動画リンクをリポジトリトップのREADMEに貼りませんか?

また、東京から帰ったら取り組みましょう!
以上、よろしくお願いします。

rosrun motoman_calib motoman_calib できない

a0353a7 のコミット時点で,表題のコマンドを実行しようとすると,

[rosrun] Couldn't find executable named motoman_calib below /home/motoman/Workspace/ROS/motoman_ws/src/motoman_project/motoman_calib
[rosrun] Found the following, but they're either not files,
[rosrun] or not executable:
[rosrun]   /home/motoman/Workspace/ROS/motoman_ws/src/motoman_project/motoman_calib

というエラーが出ます.
どうしたら良いのでしょう?

inertiaについて

inertiaを計算しましたが、どうもうまくGazeboで動きません。。。
jointのコントロール方法と、部材の重さが関係していることはわかりました。
また、概形を取って、モーメントを計算し、当てはめるようにもしました。
しかし、うまく行きませんでした。
原因としては、以下が考えられます。

  1. 概形のモーメント計算が間違っている
  2. jointのコントロール方法が実機と違う
  3. 部材の重さが大きく異なる

以上です。
実機と似た動きができれば良いので、もう少しいじりながらある程度のところまで達したらそれを採用しようと考えています。
他にうまい方法を思いついた方がいらっしゃれば是非教えてください。
尚、Gazeboシミュレータを作ることは、実機が届いた今となってはそれほどプライオリティが高くないので、程々にしたいと思います。

Error : TF_DENORMALIZED_QUATERNION

この前、 @AriYumotoman_calibのプログラムを修正しに来てくれました.
その際に,

TF_DENORMALIZED_QUATERNION: Ignoring transform for child_frame_id "fixed_kinect_frame" from authority "unknown_publisher" because of an invalid quaternion in the transform (-0.074733 0.036896 0.843233 0.531062)

というエラーがプログラムの実行時に出ており,結果としてfixed_frame_kinectがPublishされないという問題がありました.

Could not load controller ???

@RyodoTanaka

私の環境だけかもしれませんが
現時点でのmasterの最新コミット
b883621
にて

まず最初のエラー

[ERROR] [1448809078.115189410]: SpawnModel: Failure - model name sia5 already exist.

[ERROR] [1448809081.753359785, 803.041000000]: Could not load controller 'joint_state_controller' because controller type 'joint_state_controller/JointStateController' does not exist.
[ERROR] [1448809081.753396377, 803.041000000]: Use 'rosservice call controller_manager/list_controller_types' to get the available types

から

[ERROR] [1448809082.756997785, 804.040000000]: Could not load controller 'joint_s_position_controller' because controller type 'effort_controllers/JointPositionController' does not exist.
[ERROR] [1448809082.757036242, 804.040000000]: Use 'rosservice call controller_manager/list_controller_types' to get the available types
[ERROR] [WallTime: 1448809083.758280] [805.039000] Failed to load joint_s_position_controller

のようなエラーが各リンクごとに発生します.

img

エラーの内容みてもさっぱりわからなかったので一応issueに残しておきます...

Gazeboの実行について

wiki通りにやって見たのですが、下記エラーが起きました。

started roslaunch server http://fujimoto-All-Series:47464/

SUMMARY
========

PARAMETERS
 * /robot_description: <?xml version="1....
 * /rosdistro: indigo
 * /rosversion: 1.11.16
 * /sia5/joint_state_controller/publish_rate: 50
 * /sia5/joint_state_controller/type: joint_state_contr...
 * /sia5/sia5_controller/gains/joint_b/d: 0.0
 * /sia5/sia5_controller/gains/joint_b/i: 1.0
 * /sia5/sia5_controller/gains/joint_b/i_clamp: 100.0
 * /sia5/sia5_controller/gains/joint_b/p: 10.0
 * /sia5/sia5_controller/gains/joint_e/d: 0.0
 * /sia5/sia5_controller/gains/joint_e/i: 10.0
 * /sia5/sia5_controller/gains/joint_e/i_clamp: 100.0
 * /sia5/sia5_controller/gains/joint_e/p: 100.0
 * /sia5/sia5_controller/gains/joint_l/d: 0.0
 * /sia5/sia5_controller/gains/joint_l/i: 500.0
 * /sia5/sia5_controller/gains/joint_l/i_clamp: 500.0
 * /sia5/sia5_controller/gains/joint_l/p: 1000.0
 * /sia5/sia5_controller/gains/joint_r/d: 0.0
 * /sia5/sia5_controller/gains/joint_r/i: 1.0
 * /sia5/sia5_controller/gains/joint_r/i_clamp: 100.0
 * /sia5/sia5_controller/gains/joint_r/p: 10.0
 * /sia5/sia5_controller/gains/joint_s/d: 0.0
 * /sia5/sia5_controller/gains/joint_s/i: 10.0
 * /sia5/sia5_controller/gains/joint_s/i_clamp: 100.0
 * /sia5/sia5_controller/gains/joint_s/p: 100.0
 * /sia5/sia5_controller/gains/joint_t/d: 0.0
 * /sia5/sia5_controller/gains/joint_t/i: 1.0
 * /sia5/sia5_controller/gains/joint_t/i_clamp: 100.0
 * /sia5/sia5_controller/gains/joint_t/p: 10.0
 * /sia5/sia5_controller/gains/joint_u/d: 0.0
 * /sia5/sia5_controller/gains/joint_u/i: 10.0
 * /sia5/sia5_controller/gains/joint_u/i_clamp: 100.0
 * /sia5/sia5_controller/gains/joint_u/p: 100.0
 * /sia5/sia5_controller/joints: ['joint_s', 'join...
 * /sia5/sia5_controller/type: effort_controller...
 * /use_sim_time: True

NODES
  /sia5/
    controller_spawner (controller_manager/spawner)
  /
    gazebo (gazebo_ros/gzserver)
    gazebo_gui (gazebo_ros/gzclient)
    robot_state_publisher (robot_state_publisher/robot_state_publisher)
    urdf_spawner (gazebo_ros/spawn_model)

ROS_MASTER_URI=http://localhost:11311

core service [/rosout] found
process[gazebo-1]: started with pid [3007]
process[gazebo_gui-2]: started with pid [3011]
process[urdf_spawner-3]: started with pid [3015]
process[sia5/controller_spawner-4]: started with pid [3016]
process[robot_state_publisher-5]: started with pid [3017]
Gazebo multi-robot simulator, version 2.2.3
Copyright (C) 2012-2014 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org

Gazebo multi-robot simulator, version 2.2.3
Copyright (C) 2012-2014 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org

Msg Waiting for master.[ INFO] [1453668633.997044852]: Finished loading Gazebo ROS API Plugin.
[ INFO] [1453668633.997164229]: waitForService: Service [/gazebo/set_physics_properties] has not been advertised, waiting...
Msg Waiting for master
Msg Connected to gazebo master @ http://127.0.0.1:11345
Msg Publicized address: 192.168.0.18
spawn_model script started
[INFO] [WallTime: 1453668634.089112] [0.000000] Controller Spawner: Waiting for service controller_manager/load_controller
[INFO] [WallTime: 1453668634.184016] [0.000000] Loading model xml from ros parameter
[INFO] [WallTime: 1453668634.186240] [0.000000] Waiting for service /gazebo/spawn_urdf_model
[ INFO] [1453668634.237436381, 1584.218000000]: waitForService: Service [/gazebo/set_physics_properties] is now available.
[ INFO] [1453668634.272797749, 1584.253000000]: Physics dynamic reconfigure ready.
[INFO] [WallTime: 1453668634.491076] [1584.465000] Calling service /gazebo/spawn_urdf_model

Msg Connected to gazebo master @ http://127.0.0.1:11345
Msg Publicized address: 192.168.0.18
[ INFO] [1453668635.002197807, 1584.761000000]: Camera Plugin (robotNamespace = /), Info: Using the 'robotNamespace' param: '/'
[INFO] [WallTime: 1453668635.003451] [1584.761000] Spawn status: SpawnModel: Successfully spawned model
[ INFO] [1453668635.030079473, 1584.761000000]: Camera Plugin (ns = /)  <tf_prefix_>, set to ""
[urdf_spawner-3] process has finished cleanly
log file: /home/fujimoto/.ros/log/161039cc-c2ca-11e5-be16-0862664d096c/urdf_spawner-3*.log
[ INFO] [1453668641.130464698, 1584.761000000]: Loading gazebo_ros_control plugin
[ INFO] [1453668641.130577640, 1584.761000000]: Starting gazebo_ros_control plugin in namespace: /sia5
[ INFO] [1453668641.131211180, 1584.761000000]: gazebo_ros_control plugin is waiting for model URDF in parameter [/robot_description] on the ROS param server.
[ INFO] [1453668641.319304747, 1584.761000000]: Loaded gazebo_ros_control.
[INFO] [WallTime: 1453668641.323952] [1584.765000] Controller Spawner: Waiting for service controller_manager/switch_controller
[INFO] [WallTime: 1453668641.325897] [1584.768000] Controller Spawner: Waiting for service controller_manager/unload_controller
[INFO] [WallTime: 1453668641.327296] [1584.769000] Loading controller: joint_state_controller
[ERROR] [1453668641.329509091, 1584.772000000]: Could not load controller 'joint_state_controller' because controller type 'joint_state_controller/JointStateController' does not exist.
[ERROR] [1453668641.329554039, 1584.772000000]: Use 'rosservice call controller_manager/list_controller_types' to get the available types
[ERROR] [WallTime: 1453668642.330885] [1585.770000] Failed to load joint_state_controller
[INFO] [WallTime: 1453668642.331268] [1585.770000] Loading controller: sia5_controller
[ERROR] [1453668642.333144621, 1585.772000000]: Could not load controller 'sia5_controller' because controller type 'effort_controllers/JointTrajectoryController' does not exist.
[ERROR] [1453668642.333192662, 1585.772000000]: Use 'rosservice call controller_manager/list_controller_types' to get the available types
[ERROR] [WallTime: 1453668643.333990] [1586.764000] Failed to load sia5_controller
[INFO] [WallTime: 1453668643.334572] [1586.764000] Controller Spawner: Loaded controllers: 
[INFO] [WallTime: 1453668643.337620] [1586.768000] Started controllers: 
^C[robot_state_publisher-5] killing on exit
[sia5/controller_spawner-4] killing on exit
[INFO] [WallTime: 1453668661.727264] [1605.111000] Shutting down spawner. Stopping and unloading controllers...
[gazebo_gui-2] killing on exit
[gazebo-1] killing on exit
^C^C^C^C[sia5/controller_spawner-4] escalating to SIGTERM
[sia5/controller_spawner-4] escalating to SIGKILL
Shutdown errors:
 * process[sia5/controller_spawner-4, pid 3016]: required SIGKILL. May still be running.
shutting down processing monitor...
... shutting down processing monitor complete
done

よろしくお願いします。

Gazebo上でD-Handでpick & placeしたい(オブジェクト付き)

すみません、標記を実現できるサンプルはありませんか?できれば対象のオブジェクトもあったりすると嬉しいのですが。

moveit でプランニングしたあと、実際に把持させるとき、具体的にどういう司令をd-hand側に送っているのかを把握したいなと思っていまして。

あるいは、超簡単なグリッパを先っちょにつけたモデルなんかがあったら嬉しいなと思うのですが、多分ないですよね。その時は作ってみようと思います。

catkin_make時のerror(解決済み)

問題点

wikiのインストール手順に従ってインストールしていた所、以下のようなエラーに出会いました。
pcl関連のエラーのようですが解決策がわかりません。

環境

Ubuntu14.04
ROS indigo
Kernel 3.13.0-116-generic

エラーコード

[ 26%] Building CXX object motoman_project/motoman_recognition/motoman_euclidean_cluster/CMakeFiles/euclidean_cluster_node.dir/src/euclidean_cluster_node.cpp.o
In file included from /home/shimoe/motoman_ws/src/motoman_project/motoman_recognition/motoman_euclidean_cluster/src/euclidean_cluster.cpp:2:0:
/home/shimoe/motoman_ws/src/motoman_project/motoman_recognition/motoman_euclidean_cluster/src/../include/euclidean_cluster.hpp:19:55: fatal error: pcl/features/moment_of_inertia_estimation.h: そのようなファイルやディレクトリはありません
#include <pcl/features/moment_of_inertia_estimation.h>
^
compilation terminated.
In file included from /home/shimoe/motoman_ws/src/motoman_project/motoman_recognition/motoman_euclidean_cluster/src/euclidean_cluster_node.cpp:1:0:
/home/shimoe/motoman_ws/src/motoman_project/motoman_recognition/motoman_euclidean_cluster/include/euclidean_cluster.hpp:19:55: fatal error: pcl/features/moment_of_inertia_estimation.h: そのようなファイルやディレクトリはありません
#include <pcl/features/moment_of_inertia_estimation.h>
^
compilation terminated.

実機実行時のmotoman_driverのエラー

並列処理のプログラム以降(その前から同様の症状はあったが)、初回起動時にまれに

[ERROR] [1495725573.779164801]: Aborting Trajectory.  Failed to send point (#0): Invalid message (3) : Trajectory start position doesn't match current robot position (3011)

というエラーがでて動かなくなる.
これはmotoman_driverからのエラーメッセージと考えられるが,messageをstd_outに書いている箇所がまだ判明していない....
とりあえずの対処法として。

  • Rvizで適当なプランニングをやった後に並列処理デモプログラムを走らせる
  • 再起動

がある.

T-RRT,RRTstar等のOptimization Objectiveが設定できるプランナーについて

問題点

本家のmoveitリポジトリのissueにも書いているんですが,どうやらOptimization Objectiveの設定がmoveit側から意図したものに設定できず困っています.
moveit/moveit#358

環境

  • Ubuntu 14.04
  • ROS Indigo
  • motoman_project内のmotoman

このコミットf321cf5
motoman_moveit/config/sia5_with_dhand/ompl_planning.yaml
等の装備ごとのompl_planning.yamlを読みに行くようにしています(いままではデフォルトのyamlしか呼んで行ってなかった).

状況

このチュートリアルにあるようにyamlファイルにoptimization_objectiveの設定ができるようになりました.

OMPL Interface
OMPL Optimization Objective Tutorial
http://docs.ros.org/indigo/api/moveit_tutorials/html/doc/ompl_interface_tutorial.html

しかし, TRRTクラスの親クラスであるompl::base::Plannerのメンバー変数pdef_に上手に反映できてないようです.RRTstarも同じ状況.

 93 void ompl::geometric::TRRT::setup()
 94 {
 95     Planner::setup();
 96     tools::SelfConfig selfConfig(si_, getName());
 97 
 98     if (!pdef_->hasOptimizationObjective())
 99     {
100         OMPL_INFORM("%s: No optimization objective specified.  Defaulting to mechanical work minimization.", getName().c_str());
101         opt_.reset(new base::MechanicalWorkOptimizationObjective(si_));
102     }
  104 void ompl::geometric::RRTstar::setup()
  105 {
  106     Planner::setup();
  107     tools::SelfConfig sc(si_, getName());
  108     sc.configurePlannerRange(maxDistance_);
  109     if (!si_->getStateSpace()->hasSymmetricDistance() || !si_->getStateSpace()->hasSymmetricInterpolate())
  110     {
  111         OMPL_WARN("%s requires a state space with symmetric distance and symmetric interpolation.", getName().c_str());
  112     }
  113 
  114     if (!nn_)
  115         nn_.reset(tools::SelfConfig::getDefaultNearestNeighbors<Motion*>(this));
  116     nn_->setDistanceFunction(std::bind(&RRTstar::distanceFunction, this, std::placeholders::_1, std::placeholders::_2));
  117 
  118     // Setup optimization objective
  119     //
  120     // If no optimization objective was specified, then default to
  121     // optimizing path length as computed by the distance() function
  122     // in the state space.
  123     if (pdef_)
  124     {
  125         if (pdef_->hasOptimizationObjective())
  126             opt_ = pdef_->getOptimizationObjective();
  127         else
  128         {
  129             OMPL_INFORM("%s: No optimization objective specified. Defaulting to optimizing path length for the allowed planning time.", getName().c_str());
  130             opt_.reset(new base::PathLengthOptimizationObjective(si_));
  131 
  132             // Store the new objective in the problem def'n
  133             pdef_->setOptimizationObjective(opt_);
  134         }
  135     }

T-RRTとRRTstarでpdef_の扱いが少し違います.
OMPL1.0.0のT-RRTではpdef_がヌルポインタの状況で98行目からのif文に入り,elseの方に入るので
コアダンプします.

  103     else
  104         opt_ = pdef_->getOptimizationObjective();

一方,RRTstarでは

  136     else
  137     {
  138         OMPL_INFORM("%s: problem definition is not set, deferring setup completion...", getName().c_str());
  139         setup_ = false;
  140     }

となるので,ompl_planning.yamlで設定したOptimization Objectiveではないものの,動作はします.
これをどうにかしたいと思います!!
がんばります...

Travis CI について

Travis CIを利用できるようにしました。
Travis CI については、以下のURLをご覧ください。
なお、Travis CIを利用するには、アカウントの作成が必要です。(GitHubアカウントを利用できます)
https://travis-ci.org/
http://rcmdnk.github.io/blog/2014/09/08/computer-github-travis/
http://tetsuwo.tumblr.com/post/44706350593/github-travis-continuous-integration
要は、まっさらな環境からきちんと動くかどうか自動で確認してくれます。
なので、以降のPullReqは、基本的に、Travis CIのチェックが通ってからMergeしたいと思います。
なお、現在テストコードに含まれていないのは以下のものです。

  • MoveIt 全般について、動作するかどうか

これらを確かめるためには、CPPやPythonのテストコードを書く必要が有るようです。
これについては勉強していないので、後回しにしています。
CTest、gtestと呼ばれるものが関係しているようです。
いろいろと判明し次第、実装してゆきます。

あと、Travis CIの通知がSlackのmotoman_projectに届くようにしておきました。
購読している方は、今後ともよろしくお願いします。

CHOMPプランナーにおけるFailed to call service get_planning_sceneについて

CHOMPをmotoman_projectで使おうとしてますが,うまく動かないので困ってます.

条件

  • indigo
  • moveitは自分でビルド.apt-get経由でインストールしたmoveitは消してない(catkin_wsの方から読みにいくため).
  • moveitのソースからのビルド方法はここから

方法

まず動作例から
moveit_resourcesの中にあるfanuc_moveit_configにあるdemo_chomp.launch を起動します.
moveit_resourcesmoveitの依存パッケージとしてwstool経由でcloneされます.

roslaunch moveit_resources demo_chomp.launch 

これは動く.
screenshot from 2016-11-17 20 15 32

これをmotoman_projectのchomp-testブランチの中で再現したいと思いfanuc_moveit_configを真似しながらmove_group.launch等を変更しています.

roslaunch motoman_gazebo sia5_with_dhand.launch
roslaunch motoman_moveit sia5_with_dhand_moveit_planning_execution.launch 

sia5_with_dhand_moveit_planning_execution.launchにて,

[ WARN] [1479373292.289313752, 2908.422000000]: Failed to call service get_planning_scene, have you launched move_group? at /home/ry0/Workspace/ROS/motoman_ws/src/moveit/moveit_ros/planning/planning_scene_monitor/src/planning_scene_monitor.cpp:480

のようにget_planning_sceneの呼び出しに失敗して,CHOMPプランナーの読み込みができません.

研究とはあまり関係ないのですが,motoman_projectでもOMPL以外のプランナーを動かせるようにしておきたいのでissueを立てました.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.