-
Notifications
You must be signed in to change notification settings - Fork 56
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
ros::timeとros::duration間の演算結果の型について #624
Comments
roseusにはduration型というものが存在せず、すべてtime型での実装となっています。 |
1.irteusgl$ (ros::roseus "test") このようにros::durationのインスタンスが生成でき、 3.irteusgl$ (setq time (ros::time-now)) とros::timeとros::durationの間でも計算できています。また、 7.rteusgl$ (send dur :methods) とどちらもクラスになっており、:sleepを除くと違いがないように思います。実用上は全く問題ないと思いますが、この2クラスの存在意義がよくわかりません。(仮にtimeのみの実装とするならばtimeに:sleepを実装して統一するような感じでしょうか) |
なるほど、失礼しました。 roseusではros::timeしか使わない、という状況が固定化されてから追加されたものになるので、timeの引き算の結果をdurationにするという変更を加えてしまうと、既存のコードが動かなくなるかもしれず、そのままにしてある、といったところでしょうか。 |
ros::timeの引き算をした結果分だけスリープするというのを一番簡単にしようとすると、以下になりますかね。
|
rospyにおいて、
time - time = duration
という型を越えた演算結果の実装がなされていますが、roseusにおいては
time - time = time
という結果が返ってきます。
加算においてはtimeに変換されるのに、減算においてdurationにならないのはtime-がtimeクラスのメンバだからでしょうか。rospyと型が違うのでご報告させていただきます。
以下私の環境での実行結果です。
$roseus
1.irteusgl$ (ros::roseus "test")
t
2.irteusgl$ (setq time1 (ros::time-now))
#<ros::time #X55614a3b8988 1574130433.413>
3.irteusgl$ (setq time2 (ros::time 1000000000))
#<ros::time #X55614a38d3c8 1000000000.000>
4.irteusgl$ (ros::time- time1 time2)
#<ros::time #X55614a3edcb8 574130433.413>
The text was updated successfully, but these errors were encountered: