-
Notifications
You must be signed in to change notification settings - Fork 90
Description
@fkanehiro さん
RobotHardwareなどで、センサ(とくに力センサ)がセンサごとに別データポートになっていると思いますが、
これは何か理由がございますでしょうか。
現状はrfsensor, lhsensorのような名前で、6次元force/momentのTimedDoubleSeqがセンサの数の分定義されていると思います。
これを、forcesensorといった名前で、6 x センサ数(HRP2なら24次元)の一個のポートにするとした場合に、不都合があったりしますでしょうか。
後者のように考えている理由は、
- 別途議論させていただいている、ポートの数を減らしてオーバーヘッドを減らせます(https://github.com/fkanehiro/hrpsys-base/pull/1057#issuecomment-267212003)
rfsensorといった名前はVRMLの定義依存であり、かつロボット依存になります。なので、ポートの接続などでロボット情報を知って、rfsensorという名前をしる必要があります。forcesensorにすると、ロボットによらず、同じ名前で接続設定がかけます。センサのないロボットだと長さが0としておいたり、長さ0の場合write()しないといったことで実質的な通信が行われないようにもできます
の2点くらいをかんがえてます。
前者のオーバーヘッドはおいておくにしても、後者のロボット依存の部分が個人的には以前から気になって降りました。
データポートに燗するプログラムとして
- データポート接続など設定を行うプログラム
- RTCであり、データポートをつないでもらう側のプログラム
の2つがあるとします。
後者のRTCでは、だいたいの場合ModelLoaderへのアクセスが容易なので、
forcesensorの6 x センサ数の配列が、どこがrfsensorに相当して、といったものを
復元するのは容易に思います。
一方、前者に関して、具体的には、(downstream側の問題になりますが)ROSBridgeプログラムと制御RTCとの
ポートを接続するものを、rosのlaunch形式で記述できるようにしていますが、
https://github.com/start-jsk/rtmros_common/blob/master/hrpsys_ros_bridge/launch/hrpsys_ros_bridge.launch
ここにロボットのセンサ名依存の部分がかけず、別途pythonスクリプトで接続しているといったことをしています。
https://github.com/start-jsk/rtmros_common/blob/master/hrpsys_ros_bridge/scripts/sensor_ros_bridge_connect.py
launch形式のほうも、pythonなのでセンサ名を取得するようにすればよさげですが、
launch形式の記述と、ModelLoaderにアクセスして、、、の処理と総合してはるかに煩雑になり、現状行ってません。