Giter Site home page Giter Site logo

choreonoid_ros_pkg's Introduction

choreonoid_ros_pkg's People

Contributors

fkanehiro avatar ryodotanaka avatar ssr-yuki avatar yosuke avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

choreonoid_ros_pkg's Issues

ビルドに失敗します

当方、Ubuntu14.04, gcc 5.4.1, eigen 3.3.4でchoreonoid_ros_pkgのビルドを行ったところ、
catkin build choreonoid_ros_pkg でchoreonoidのビルドがエラーとなってしまいます。

In file included from /home/asahi/catkin_ws/src/choreonoid_ros_pkg/choreonoid_plugins/src/BodyRosJointControllerItem.cpp:6:0:
/home/asahi/catkin_ws/src/choreonoid_ros_pkg/choreonoid_plugins/src/BodyRosJointControllerItem.h:49:24: error: ‘Target’ has not been declared
virtual bool start(Target* target);

Targetについては以下のようなメッセージも出ています。

/home/asahi/catkin_ws/src/choreonoid_ros_pkg/choreonoid_plugins/src/BodyRosItem.cpp:68:25: note: suggested alternative:
In file included from /usr/local/include/eigen3/Eigen/Core:344:0,
from /home/asahi/catkin_ws/devel/include/choreonoid-1.6/cnoid/src/Util/EigenTypes.h:8,
from /home/asahi/catkin_ws/devel/include/choreonoid-1.6/cnoid/EigenTypes:1,
from /home/asahi/catkin_ws/devel/include/choreonoid-1.6/cnoid/src/Body/Link.h:10,
from /home/asahi/catkin_ws/devel/include/choreonoid-1.6/cnoid/src/Body/Body.h:10,
from /home/asahi/catkin_ws/devel/include/choreonoid-1.6/cnoid/src/Body/CollisionLinkPair.h:9,
from /home/asahi/catkin_ws/devel/include/choreonoid-1.6/cnoid/CollisionLinkPair:1,
from /home/asahi/catkin_ws/devel/include/choreonoid-1.6/cnoid/src/BodyPlugin/CollisionSeq.h:9,
from /home/asahi/catkin_ws/devel/include/choreonoid-1.6/cnoid/src/BodyPlugin/SimulatorItem.h:9,
from /home/asahi/catkin_ws/devel/include/choreonoid-1.6/cnoid/src/BodyPlugin/ControllerItem.h:9,
from /home/asahi/catkin_ws/devel/include/choreonoid-1.6/cnoid/ControllerItem:1,
from /home/asahi/catkin_ws/src/choreonoid_ros_pkg/choreonoid_plugins/src/BodyRosItem.h:4,
from /home/asahi/catkin_ws/src/choreonoid_ros_pkg/choreonoid_plugins/src/BodyRosItem.cpp:1:
/usr/local/include/eigen3/Eigen/src/Core/util/Constants.h:468:5: note: ‘Target’
Target = SSE
^
これはEigenのバージョンによるものでしょうか?

関節軌道データの実行契機が乱れる場合があります

関節軌道データ (trajectory_msgs::JointTrajectory) に連続した軌道データ (trajectory_msgs/JointTrajectoryPoint[]) を設定し実行した場合、実行契機に 1 ms の遅延が生じる場合があります (*)。

(*) 60 ms 周期で実行している場合、61 ms の周期で実行される場合があります。
 遅延は一時的なもので、0.8 s 程度経過すると再度 60 ms 周期で実行され続けます。

シミュレーション実行中に動的ロードしたモデルの物理接触が発生しない

シミュレーション実行中に /choreonoid/spawn_*_model サービスを使用し動的にモデルをロードした場合、ロードしたモデルの物理接触が発生しません。
移動中のロボットの進行方向にモデルをロードし、ロボットがロードしたモデルをすり抜ける事を確認しました。
また、以下の内容について確認しました。

  • /choreonoid/[worldname]/physics/contacts で接触発生が確認できない事

  • /choreonoid/links_states や /choreonoid/model_states ではロードしたモデルの存在が確認できる事

  • Choreonoid の GUI 側 (ボディ/リンクビューの「干渉」表示) では接触発生が確認できる事

以上の事から、物理エンジンへロードしたモデルの通知・登録に類する処理がなされていないように見受けられます。

/[simulatorname] トピックおよびサービスが消える

Choreonoid 側でシミュレーションの開始→停止を実行した後、roscore を再起動 (停止→起動) し Choreonoid 側でシミュレーションの開始を実行すると、/[simulatorname] トピックおよび、 /[simulatorname]・/choreonoid サービスが存在しない状態となります。
下記の例では、AISTSimulator を使用しています。

  1. 初期位置からのシミュレーションを開始

    $ rostopic list
    /AISTSimulator/link_states
    /AISTSimulator/model_states
    /atlas/joint_states
    /atlas/set_joint_trajectory
    /clock
    /rosout
    /rosout_agg
    
    $ rosservice list
    /AISTSimulator/delete_model
    /AISTSimulator/pause_physics
    /AISTSimulator/reset_simulation
    /AISTSimulator/spawn_vrml_model
    /AISTSimulator/unpause_physics
    /choreonoid/get_loggers
    /choreonoid/set_logger_level
    /rosout/get_loggers
    /rosout/set_logger_level
    
  2. シミュレーションの停止

    $ rostopic list
    /AISTSimulator/link_states
    /AISTSimulator/model_states
    /clock
    /rosout
    /rosout_agg
    
    $ rosservice list
    /AISTSimulator/delete_model
    /AISTSimulator/pause_physics
    /AISTSimulator/reset_simulation
    /AISTSimulator/spawn_vrml_model
    /AISTSimulator/unpause_physics
    /choreonoid/get_loggers
    /choreonoid/set_logger_level
    /rosout/get_loggers
    /rosout/set_logger_level
    
  3. roscore を再起動

  4. 初期位置からのシミュレーションを開始

    $ rostopic list
    /atlas/joint_states
    /atlas/set_joint_trajectory
    /rosout
    /rosout_agg
    
    $ rosservice list
    /rosout/get_loggers
    /rosout/set_logger_level
    

YAML形式モデルのカメラが配信されない

棒の先にカメラがついた単純なモデルcamをyaml形式で作成して、choreonoidでボディとして読み込み、小アイテムとしてBodyRosItemをつけましたが、/cam/camera/image_rawが配信されません。(choreonoid内でシーンビューを見ることはできています)

cam.body

このcamモデルをサンプルのjvrc-1-rviz.launchの中に入れてみたところ、rcamera/lcameraのimage_rawは配信されますが、やはり/cam/camera/image_rawは配信されません。

BodyRosItem::createSensors の動きを追ってみたところ、メンバ変数visionSensors_について、JVRC-1では2つのカメラが読み込まれますが、camではこれが空のままなのがわかりました。

Body::devicesが空なのが、VRMLBodyLoaderとYAMLBodyLoaderの間の差異に起因するのだとすると、原因はChoreonoid本体側にあるかとも思われますが、ひとまずこちらでご報告します。

buildに失敗する

現在,Choreonoid ROS Pluginのインストールを試みておりますが,
下記サイトのインストール手順に沿って行ったところ,以下のエラーが
発生し,ビルドに失敗しております.
<参考サイトURL>
https://fkanehiro.github.io/choreonoid_ros_pkg_doc/html-ja/install.html

エラーが発生しているのは,sdfloaderをビルドするタイミングで,
"catkin build choreonoid_sdfloader_plugin"
というコマンドを実行したところです.

以下のファイルが見つからないというエラーが出力されたので,
既にインストールをし,動作が確認されているPCから該当するファイルを
コピー&ペーストをしたところ,このエラーは解消されました.
<cnoid/DaeParser>
"src/Util/DaeParser.h"
<cnoid/DaeNode>
"DaeNode.h"

上記のエラーを解消した後,再度buildを行ったところ,
添付の画像のようなエラーが出力されて,buildが完了しませんでした.
エラー部分の抜粋を以下に示します.

Errors     << choreonoid_sdfloader_plugin:make /home/biped/catkin_ws/logs/choreonoid_sdfloader_plugin/build.make.005.log               
/home/biped/catkin_ws/src/choreonoid_sdfloader_plugin/SDFBodyLoader.cpp: In member function ‘bool cnoid::SDFBodyLoaderImpl::load(cnoid::Body*, const string&)’:
/home/biped/catkin_ws/src/choreonoid_sdfloader_plugin/SDFBodyLoader.cpp:590:28: error: passing ‘const Position {aka const Eigen::Transform<double, 3, 18>}’ as ‘this’ argument of ‘Eigen::Transform<Scalar, Dim, Mode, _Options>& Eigen::Transform<Scalar, Dim, Mode, _Options>::operator=(const Eigen::Transform<Scalar, Dim, Mode, _Options>&) [with _Scalar = double; int _Dim = 3; int _Mode = 18; int _Options = 0]’ discards qualifiers [-fpermissive]
                 link->Tb() = rootpose * (*c)->pose;
                            ^
make[2]: *** [CMakeFiles/CnoidSDFLoaderPlugin.dir/SDFBodyLoader.cpp.o] エラー 1
make[1]: *** [CMakeFiles/CnoidSDFLoaderPlugin.dir/all] エラー 2
make: *** [all] エラー 2
cd /home/biped/catkin_ws/build/choreonoid_sdfloader_plugin; catkin build --get-env choreonoid_sdfloader_plugin | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -
.......................................................................................................................................
Failed     << choreonoid_sdfloader_plugin:make           [ Exited with code 2 ]                                                        
Failed    <<< choreonoid_sdfloader_plugin                [ 4.9 seconds ]

このエラーの解消方法について,ご存知の方がいらっしゃいましたらご教示いただきく思います.
また,ファイルが見つからないという問題の解消についてもご検討いただけますと幸いです.

以上,よろしくお願いいたします.

シミュレーションが遅い

チュートリアルにあるJVRC-1のシミュレーション(JVRC-1が自由落下するシミュレーション)を行うと、3倍くらい実時間に比べて遅くなります。BodyROS、WorldROSのアイテムがなければ2倍速いです。

addPostDynamicsFunctionをメッセージのpublishに使うのは避けたほうが良いかもしれない

ここ数年の変更でWorldRosItemがaddPostDynamicsFunctionのコールバックを使ってメッセージをpublishするように実装が変更されているようなのですが、その影響でタイムバーが進まなくなっていたり、シミュレーションが安定して開始してくれないなどの問題が発生しているようです。

以前のTimeBar::instance()->sigTimeChanged()を使った実装であれば安定すると思うので、戻したほうが良いかもしれません。

また、デフォルトではcollisionが10ms単位でpublishされているようですが、大きなデータになる場合はこの頻度でpublishすると大きな負荷になると思うので、調整したほうが良さそうに思います。

jvrc-1-rviz.launchでChoreonoidが落ちます

おかげさまで無事ビルドが通り、 roslaunch choreonoid_ros jvrc-1-rviz.launch を実行しましたが、Choreonoidが強制終了と再起動を繰り返してしまい動作しません。

環境は#84のときと同じですが、GPUにNVIDIA GeForce GTX 1060を使用しています。
ドライバはNVIDIA binary driver version 384.98(aptパッケージで言うnvidia-384)です。
オープンソース版ドライバでGLVisionSimulatorを使用したシミュレーションを実行すると、Choreonoidが異常終了するとありましたが、ここでいうオープンソースドライバはnouveauドライバですよね?

実際にroslaunch choreonoid_ros choreonoid.launch で空のプロジェクトを立ち上げ、SR1とSR1LiftupController, CameraSampleControllerを組み合わせて、GLVisionSimulatorでカメラ画像を取得することはできました。

なお、choreonoid_sdfloader_pluginは組み込んでいません。

ROS の実時間モードが未サポート

ROS の実時間モード (use_sim_time = false) がサポートされていません。

Choreonoid ROS プラグインは、必ず /clock をトピックを提供 (ROS のシミュレーション時間モード) する動作となっているため、ROS の実時間モードの未サポートは、仕様である可能性も想定しています。

PutPropertyFunctionの更新への対応

2019/1/12の Remove unused functions of PutPropertyFunction においてクラスPutPropertyFunctionのメンバが変更され,現在choreonoid_plugins内で使用されいているchangePropertyputPropertyといった関数が使えなくなっています.

別の手法で再実装するか,あるいは現行のpulginの形式を見直す必要があるかもしれません.

reset_simulation サービス実行時、コンソールに警告が表示される

/[simulatorname]/reset_simulation サービスを実行した際、Choreonoid を起動したコンソールに、以下の警告が表示されます。

[ WARN] [1448849921.326126721]: AsyncSpinnerImpl: Attempt to start() an AsyncSpinner failed because another AsyncSpinner is already running. Note that the other AsyncSpinner might not be using the same callback queue as this AsyncSpinner, in which case no callbacks in your callback queue will be serviced.

シミュレーションを停止、開始するとエラーが表示される

シミュレーションを行い、停止し、再度開始すると、次のようなエラーが表示されます。
これは問題ないのでしょうか?

[ERROR] [1446025441.149367256]: Tried to advertise a service that is already advertised in this node [/JVRC_1/rcamera/compressedDepth/set_parameters]
[ERROR] [1446025441.211781827]: Tried to advertise a service that is already advertised in this node [/JVRC_1/rcamera/compressed/set_parameters]
[ERROR] [1446025441.323829945]: Tried to advertise a service that is already advertised in this node [/JVRC_1/rcamera/theora/set_parameters]

/[robotname]/set_joint_trajectory に誤ったパラメータを与えると Choreonoid がクラッシュする場合があります

Choreonoid ROS プラグインチュートリアルのプロジェクト (jvrc-1-rviz.launch) を開き、以下の誤ったメッセージ (第 3 引数がリストでない) を送信すると Choreonoid が Segmentaion fault でクラッシュします。

rostopic pub -1 /JVRC_1/set_joint_trajectory trajectory_msgs/JointTrajectory -- '{ seq: 0, stamp: 0, frame_id: ""}' '["NECK_Y"]' '[ positions: [0.2618], time_from_start: { secs: 0, nsecs: 0 } ]'

正しい (本来送信するつもりであった) メッセージは、以下となります。

$ rostopic pub -1 /JVRC_1/set_joint_trajectory trajectory_msgs/JointTrajectory -- '{ seq: 0, stamp: 0, frame_id: ""}' '["NECK_Y"]' '[ { positions: [0.2618], time_from_start: { secs: 0, nsecs: 0 } } ]'

また、他のパターンとして、以下のメッセージでは Choreonoid はクラッシュしませんが、

rostopic pub -1 /JVRC_1/set_joint_trajectory trajectory_msgs/JointTrajectory -- '{ seq: 0, stamp: 0, frame_id: ""}' '["NECK_Y"]' '[ ]

以下のメッセージでは Choreonoid が Segmentaion fault でクラッシュします。

rostopic pub -1 /JVRC_1/set_joint_trajectory trajectory_msgs/JointTrajectory -- '{ seq: 0, stamp: 0, frame_id: ""}' '["NECK_Y"]' '[ {} ]'

choreonoid終了時にアサーションが起きる

choreonoidを引数なしで起動し、何もせずに終了すると次のようなアサーションが起きます。

choreonoid: /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 = ros::NodeHandle; typename boost::detail::sp_member_access<T>::type = ros::NodeHandle*]: アサーション `px != 0' に失敗しました。
中止 (コアダンプ)

関節軌道の実行契機の不具合と覚しき点について

関節軌道の実行契機が、前回関節軌道を実行した時間 + 関節軌道の duration 設定となっていますが、正しくは timestamp (関節軌道データのヘッダに含まれています) + 関節軌道の duration 設定であるように思われます。

レンジデータを表示できない

rvizでレンジデータを表示しようとすると、次のような警告がでます。どうすればよいのでしょうか?

[ WARN] [1446025707.493125293]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty

choreonoid_ros_pkgがビルドできない

現在下記のサイトに沿ってChoreonoid ROS のインストールを
試みておりますが,choreonoid_ros_pkgのビルドに失敗しております.
<参考サイト>
https://fkanehiro.github.io/choreonoid_ros_pkg_doc/html-ja/install.html

具体的には
catkin build choreonoid_ros_pkg
を実行したところで以下のようなエラーが出力されます.

Errors     << choreonoid_plugins:make /home/biped/catkin_ws/logs/choreonoid_plugins/build.make.000.log                                                     
In file included from /home/biped/catkin_ws/devel/include/choreonoid-1.6/cnoid/src/Util/pybind11/PyUtil.h:9:0,
                 from /home/biped/catkin_ws/devel/include/choreonoid-1.6/cnoid/PyUtil:3,
                 from /home/biped/catkin_ws/src/choreonoid_ros_pkg/choreonoid_plugins/src/python/PyRosPluginModule.cpp:7:
/home/biped/catkin_ws/devel/include/choreonoid-1.6/cnoid/src/Util/pybind11/PyReferenced.h:5:31: fatal error: pybind11/pybind11.h: そのようなファイルやディレクトリはありません
 #include <pybind11/pybind11.h>
                               ^
compilation terminated.
In file included from /home/biped/catkin_ws/src/choreonoid_ros_pkg/choreonoid_plugins/src/python/PyItems.cpp:10:0:
/home/biped/catkin_ws/devel/include/choreonoid-1.6/cnoid/PyBase:3:38: fatal error: src/Base/pybind11/PyBase.h: そのようなファイルやディレクトリはありません
 #include "src/Base/pybind11/PyBase.h"
                                      ^
compilation terminated.
make[2]: *** [src/python/CMakeFiles/PyRosPlugin.dir/PyRosPluginModule.cpp.o] エラー 1
make[2]: *** 未完了のジョブを待っています....
make[2]: *** [src/python/CMakeFiles/PyRosPlugin.dir/PyItems.cpp.o] エラー 1
make[1]: *** [src/python/CMakeFiles/PyRosPlugin.dir/all] エラー 2
make: *** [all] エラー 2

エラー文に書かかれている場所を確認すると,確かに当該のファイルはありません.
また,以前の環境では生成されないファイルだったようですが,環境に変更があったのでしょうか.

以上,お手数ですが,ご確認いただけますと幸いです.

プラグインのインストール先

@yosuke さん、
Choreonoidがすでにインストールされている環境で、インストールの手順にしたがってインストールを行うとプラグインは既存のChoreonoidの方にはいってしまうようです。
これは想定通りでしょうか。そうだとしてdevelの下のChoreonoidのビルドは省略できるでしょうか。

/[robotname]/set_joint_trajectory に存在しない関節名を与えると、関節 ID 0 へ設定が反映されます

/[robotname]/set_joint_trajectory に存在しない関節名を与えると、関節 ID 0 へ設定が反映されます。
Choreonoid ROS プラグインチュートリアルのプロジェクト (jvrc-1-rviz.launch) を開き、以下のメッセージを送信すると、関節 ID 0 の R_HIP_P へ設定が反映されます。

rostopic pub -1 /JVRC_1/set_joint_trajectory trajectory_msgs/JointTrajectory -- '{ seq: 0, stamp: 0, frame_id: ""}' '["foobar"]' '[ { positions: [0.2618], time_from_start: { secs: 0, nsecs: 0 } } ]'

他のロボット (ATLAS 等) を使用したプロジェクトでも確認しましたが、いずれも関節 ID 0 へ設定が反映されます。

pause_physics, unpause_physics サービスによる操作と Choreonoid による操作との整合性がとれていません

rosservice コマンドで /[simulatorname]/pause_physics による一時停止を実行した後、Choreonoid 側で一時停止のボタンを押してもシミュレーションが再開されません。
また、Choreonoid 側で一時停止を実施した後、rosservice コマンドで /[simulatorname]/unpause_physics を実行してもシミュレーションが再開されません。

関節軌道データの実行契機に誤りがあります

次の軌道データ (trajectory_msgs/JointTrajectoryPoint[]) の実行時間 (実行契機) の計算の際、timestamp + 次のインデックスの duration となるべき所が、timestamp + 現在のインデックスの duration となっています。

関節軌道データの実行開始時間に誤りがあります

関節軌道データの実行開始時間が、関節軌道データ (trajectory_msgs::JointTrajectory) の timestamp + 先頭の軌道データ (trajectory_msgs/JointTrajectoryPoint[]) の duration ではなく、関節軌道データの timestamp で開始されています。

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.