ROS Toolboxを使っ​て、ROSから送られ​てくるセンサのIMU​情報から、特定の角度​情報を素早く取得した​い。

5 views (last 30 days)
優季
優季 on 24 Jan 2023
Commented: 優季 on 2 Feb 2023
ROSから送られてくるIMU情報を、MATLABで角度情報のみを抜き出したいと思い、下記のようなコードで取得しています。
for(1:10)
topicinfo=rostopic(echo,topicname)
Z=topicinfo.AngularVelocity.Z
end
このZの値を、ループを使って更新し続けているのですが、現在のコードでは1ループに200msほどかかってしまっています。出来れば1ループあたりの時間を10ms程度に抑えたいと考えております。処理に時間がかかっている理由として考えられるものは、欲しいデータ以外の情報も同時に取得しているからだと思うのですが、
rostopic list
から表示されるトピックは、全てのIMU情報をまとめた状態のトピックしか表示されないので、全て取りだしてから中身を見る方法しか思いつきません。何かいい方法はございますでしょうか?

Answers (1)

Toshinobu Shintai
Toshinobu Shintai on 24 Jan 2023
試しにSimulinkで同じ機能を実装してみてはいかがでしょうか(もしかしたらSimulinkの方が早いかもしれません)。MATLABスクリプトでないとできないことをされているのであれば、解決策にならないかもしれませんが。
  3 Comments
Toshinobu Shintai
Toshinobu Shintai on 25 Jan 2023
回し続けた状態で、目測ではなく何回繰り返し実行されたかをカウントした方がよいです。Displayの数値の切り替わり速度は、もっと早いサイクルであっても大体1秒間に5回程度しか変化しませんので。
以下のAnswersでカウントを作成する方法が紹介されています。
ただ、それでもやっぱり200msである可能性もありますので...
優季
優季 on 2 Feb 2023
カウンターを設置して流れる値をカウントしてみましたが、やはり1秒間に多くて7,8回なので100~200msという結果は揺るぎませんでした。
ROSで取得しているデータは、10ms事に更新され続けているのですが、ROSのデータをMATLABに持ってくる際に、ROSToolboxで使ってる関数が、この流れるデータの中から一つだけ持ってくるようなものなので、ここで時間がかかってるように感じます。なにかデータをまとめて持ってこれるような(ROSのデータを丸ごとMATLABに移動みたいな)ことは出来ないものですかね?

Sign in to comment.

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!