We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
サブスクライブしたメッセージのdataに含まれる文字列("0"など)をeuslisp上で数値に変換する方法はあるでしょうか。 "0 57 371" というデータから (parse-integer (subseq (send msg :data) 0 1))) のように取り出すことをこころみましたが、parse-integerはcommon-lispでしか使えないでしょうか
The text was updated successfully, but these errors were encountered:
あまり状況が分かってないかもしれないので本末転倒の回答かもしれませんが, (read-from-string "0") とかでどうでしょう?
parse-intergerと違ってread-from-stringだと小数まで対応してしまうのでそれが嫌とかだと駄目とかはありそうですが...
Sorry, something went wrong.
以下のようにread-from-string を使うと良いです.
read-from-string
1.eusgl$ (setq a "0 57 371") "0 57 371" 2.eusgl$ (setq b (read-from-string (subseq a 0 1))) 0 3.eusgl$ (+ b 10) 10
また,S式を送ると以下のようにすることができます.
4.eusgl$ setq a "(list 0 57 371)" "(list 0 57 371)" 5.eusgl$ (setq b (eval (read-from-string a))) (0 57 371) 6.eusgl$ (+ (elt b 0) 10) 10
また,そもそも数字を送りたければ,そういうメッセージを送るのが良いです.例えば
$ rosmsg show geometry_msgs/Point float64 x float64 y float64 z
を使って,roscore を起ち上げた後に
roscore
rostopic pub -r 1 /test geometry_msgs/Point '{x: 10}'
としてパブリッシュして,
1.irteusgl$ (ros::roseus "test") t 2.irteusgl$ (ros::subscribe "test" geometry_msgs::Point #'(lambda (msg) (print (+ (send msg :x) 10)))) t 3.irteusgl$ (ros::spin) 20 20
とすると数値としてデータを受け取ることができます.
No branches or pull requests
The text was updated successfully, but these errors were encountered: