Skip to content

座標変換をplot_method.pyで行いたい #91

@rkoyama1623-2021

Description

@rkoyama1623-2021

センサ座標を手先座標やground座標に変換する際,現在の仕様だと下記の課題があります.
例えば,手先センサの値をground座標にして,x,y,z座標をプロットしたいとすると,
plot.yaml

rmfo_off_rhsensor_world:
  func: rh_force_in_foot_mid_coords
  data:
    - { log: rmfo_off_rhsensor, column: [0-5] } # force vector in sensor coordinate
    - { log: st_q, column: [0-33] } # angle vector

layout.yaml

larm off_force (in world):
  legends:
    - { key: rmfo_off_lhsensor_world, id: [0-2], label: 'fz (world)'}

のように書くと思いますが,以下のような問題が出てきます.

  1. plot.yamlのfuncは,"rarm", "ground"など,どの座標からどの座標へ変換するのかという追加の引数を渡せないと,funcの中で,if文の直書きが必要になる.
  2. 座標変換を1度行うと,x,y,zの3軸が一度に計算できるが,現在の仕様だと,layout.yamlの[0-2]で3回計算が回ってしまう.
  3. 2と似ているが, rmfo_off_lhsensor_world[0]は, rmfo_off_lhsensor[0]から計算されるわけではないのに,現在の仕様だと,入力としてrmfo_off_lhsensor[0]が入力と解釈されてしまう.
  4. 左手の座標変換と右手の座標変換がある場合,左手と右手の座標変換それぞれで,angle-vector+FKの計算が回ってしまう.

この解決策としては,

  1. plot.yamlのルールを変更する
  2. 現在,plot_xxxの中で,プロット用のデータ生成とプロットを同時におこなっているが,両者を分離する.

が有りえて,2が良いと思っています.
それから,plot.yamlとplot_method.pyは,一つのpythonクラスにまとめて,ロボット毎の差異はクラス継承と,メンバ変数のセット(jointの数など)で対応する方が良いのではないかと最近思っています.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions