-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ロボットの各種情報を可視化 #23
Comments
他の可視化手段として、matlabでのプロットや、rqtでの描画が挙げられる。 オンラインで情報の可視化をおこなうのであれば、rqtやRviz2が適任だろう。 Rviz2を用いる場合は、ロボットのモデルがあったほうが良いと思われ。調べる必要がある。 |
加速度センサとGyroセンサをグラフにプロットしてみた。 各センサのオフセット(512, acceのzだけ640。センサ値出力から判断)は減算済み。ロボットモデル(proto)の方でセンサの座標が回転していたので、それも修正。
後は、PositionSensorの値からIKを解いて軌道を得られれば、ひとまず可視化したいデータ全て可視化できたことになるかな。 |
リアルタイムにplotしたいなら、やっぱrqtか?rqt-plotとかで。 |
|
rosbagを使う案
まずはオフラインでのlog取りでひとまず良いのではないか、という話。オンラインの恩恵があるのは、シミュレーションや実機での動作時間が長い場合。 |
あと、Rviz2を使うとなると、Webotsはあんまりかも。URDFとProtoで別れちゃうし。 ただ、ROS2公式のドキュメントも充実してきたり(Rviz2との連携は無いが)、Rviz2との連携で先駆者の日本語での記事がでたりとしているので、できなくは無いだろうなとは思う。 が、やはり現段階でRviz2と相性が良いのはGazeboだと思うし、情報も多いかも。 |
rviz2への表示ができた。 公式xacroモデル:https://github.com/ROBOTIS-GIT/ROBOTIS-OP2-Common
次は、xacro->urdfの手動変換を挟まずにrviz2に表示することを目指す。 |
xacro->urdfの手動変換を挟まずにrviz2に表示することができた。 |
あとはこちらから/joint_state Topicを出してやればRviz2内のモデルが動く希ガス。で、WebotsもGazeboもそのTopicを読むようにすれば一番キレイになる。これに関しては確証は無いが。 以下、launch起動中に ---
header:
stamp:
sec: 1692959222
nanosec: 727243100
frame_id: ''
name:
- head_pan
- head_tilt
- l_sho_pitch
- l_sho_roll
- l_el
- r_sho_pitch
- r_sho_roll
- r_el
- l_hip_yaw
- l_hip_roll
- l_hip_pitch
- l_knee
- l_ank_pitch
- l_ank_roll
- r_hip_yaw
- r_hip_roll
- r_hip_pitch
- r_knee
- r_ank_pitch
- r_ank_roll
position:
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
velocity: []
effort: []
---
|
/joint_states topicをrqt_plotで可視化してみた様子。 rviz2_jointstate_rqtplot.mp4で、gazeboはちと沼っているので、まずはRviz2とWebotsの連携に手を付ける(ここまでを発表までに納められればいいかな?)。 TODO:
TODO以降以上の2つができたら、このissueはRviz2での可視化をもっと掘る方向に進める予定。歩行安定化制御系とアーキテクチャのほうが済んでからになりそうだが。 |
ん、自作nodeからの/joint_states TopicのPubから、Rviz2内のモデルを動かすことに成功。位置と速度を両方変化させることができた。動画では位置の変化のみ。 あと、Rviz2から慣性に関するERRORが吐かれている。URDFの問題な希ガス。動いているし、覚えておくがひとまず放置。 rviz2_jointstate_from-node.mp4 |
やっぱりこれは仕様で、並行処理をさせる必要があるかも。 joint_state_publisher_gui (/joint_states topic をPubするGUIインタフェ) はカクつかずに動かせるのだが、これの実装では、並行処理をさせている。(source codeの288行目) 参考:Pythonでの並行処理:https://qiita.com/studio_haneya/items/a3485ea837e17e37bae9 C++での並列処理:https://qiita.com/birdwatcher/items/2d89374782a56be04aa1 |
ああいや、違うな。100%には張り付かないな。張り付く理由はcreate_wall_timerの周期を極端に短くするとそうなるだけかも。 でも周期を長くしても同様にカクつくので、? 並列処理も不要だと思われ。GUIのほうはGUIとTimerでスレッドを分けてただけっぽい。 |
Rviz2とWebotsの連携、joint_state_publisher_guiを用いた方法なら行けた。 rviz2_jointstate_webots_gui.mp4自作nodeでカクつくのを改善できたらOKなんだがなぁ。 |
OKOK、カクつくBUG、修正完了。 原因は、/joint_states の header.stamp への値の与え方が駄目だった。 auto now_time = rclcpp::Clock().now();
// pub_msgs_->header.stamp.sec = now_time.seconds(); // BAD
// pub_msgs_->header.stamp.nanosec = now_time.nanoseconds(); // BAD
pub_msgs_->header.stamp = now_time; // GOOD ココを修正するだけで、以下のように自作nodeからでもカクつかずに動いてくれるようになった。(全関節角度・角速度一定。Webots側は両脚にのみ指令値出力) rviz2_jointstate_webots_node.mp4これができたので、あとはWalkingPatternGeneratorからのPubの型を/joint_statesに変更してやれば、一先ず完了ってところかな? |
良い、良い感じ。 Rviz2 と Webots を連携させて、動歩行をさせることができた。QoSの設定はDefault(Depthは5)に変更した。 rviz2_jointstate_webots_dynamic-walking.mp4今後のRviz2は、着地位置とか、前進の反映とかをしたいと思う。 |
タイトル通り。ロボットのZMPやCoM、姿勢などをRviz2やProcessingなどで可視化したい。
ロボットのモデルを表示するならURDFへの移行が必要だろうが、各種情報だけなら不要だと思われる。
The text was updated successfully, but these errors were encountered: