LoginSignup
2
0

More than 5 years have passed since last update.

ROSのCustom Message作って、catkin_makeも通ったのにImportErrorがでる時

Posted at

概要

ROSでカスタムメッセージを作った際に、少し困った時の解決方法を以下に示します。

実行環境

次に実行環境を示します。

Soft and Hard バージョン
Raspberry pi Model 3 b+
OS 2018-10-09-raspbian-sterech
Python 2.7
ROS Kinetic

ROSのCustom msgの作り方

ROSのCustom msgの作り方については、他の人が詳しく書いているのでここでは、Error対応策のみ記載したいと思います。
また、詳しく書かれているURLを次に示します。

https://qiita.com/srs/items/7ac023c549e585caeed0
https://kazuyamashi.github.io/ros_lecture/ros_study_py.html

Msgを新しく作って、ImportError出すまで

新しくmsgを作って、catkin_make

catkin_make時にも、cmakeは問題なく進み、msgを生成することは確認できました。

catkin_make
puts 'code with syntax'

rosmsg listで新しいmsgが出来ているか確認

catkin_makeが通ったのですが、一応使う前に確認しようと思い、rosmsg listで確認しました。

rosmsg
$rosmsg list | grep new_msg

新しく作ったものがあることが確認できます。

上記までの確認手順で、Errorや想定していない結果が出力されていた場合には、msg作成手順において抜けていることがあるか、もしくは手順を間違えている可能性が大きいので、上記で示したURLで確認してみて下さい。

スクリプトで新しいmsgをImport

上記の確認事項が想定したものであった為、次に新しいmsgを使用するスクリプトで新しいmsgをimport文に追加しました。

catkin_make
from "pakage名".msg import "新しいメッセージ名"

追加後、実行してみると、次のようなErrorが出力されてました。

ImportError: No module named msg

ImportErrorが出力される原因

調べてみると、自身が分かった範囲ではImportErrorが出力される原因としては、主に次の2つの原因があることが分かりました。

  • 作成したMessageファイル名とPackage名が同名である
  • source /devel/setup.bashをMessage作成後に実行していない

それぞれの場合の解決方法を示します。

作成したMessageファイル名とPackage名が同名である

新たに作成したmessage名とpackage名が同名であると、ImportErrorとなるようです。このErrorはROS Answersでも取り上げられていました。

解決方法は、Messageファイル名とPackage名を異なる名前にすれば解決できるそうです。

source /devel/setup.bashをMessage作成後に実行していない

Message作成後にSourceコマンドによって、/devel/setup.bashを実行していないと、ImportErrorになります。catkin buildもしくは、catkin_make後には、Sourceコマンドを実行しましょう。

まとめ

msg作成時には、上記の2点を確認すればCustum Messageが実行できると思います。間違っているところや、追加したほうがいいところがありましたら、お教え頂けるととても嬉しいです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0