ROSカスタムMSGの種類やニュースのメモを公開

循環は、生徒の成績や評価を印刷:としては、個人コードのみ効果を達成するために、テストに使用され、本明細書中にコードのみの書き込みを使用していました。

ワークスペースを作成します。

まず、(作業フォルダを作成し、端子(はCtrl + Alt + T)を開きcatkin_ws、作業フォルダ名のために、あなたがカスタマイズすることができます):mkdir -p ~/catkin_ws/src

入力した後、我々はメインディレクトリのファイルマネージャでは、名前の見つけることができるcatkin_wsファイルフォルダを、これは先ほど作成した作業スペースであります:

srcフォルダへ:cd ~/catkin_ws/src/

ROSのワークスペース属性を持つ現在のフォルダ:catkin_init_workspace

そして、ワークスペースのホームディレクトリに戻ります。cd ~/catkin_ws/

コンパイルします。catkin_make

コンパイル後、あなたがして開くcatkin_wsフォルダを、あなたはより多くのファイルの多くを見つけます:

後者の使用を容易にするために、我々はソースを追加する必要があります。echo "source ~/catkin_ws/devel/setup.zsh" >> ~/.zshrc

私はあなたの端末がbashのであればし、その後、端末はzshのある使用.zsh読み.bash.zshrc読み.bashrc

メッセージファイルの作成と設定

まず、srcフォルダを入力します。cd ~/catkin_ws/src/

フィーチャーパック、作成ros_topicあなたが名前をカスタマイズすることができました:catkin_create_pkg ros_topic roscpp rospy std_msgs

この機能のパッケージにアクセスするには:cd ~/catkin_ws/src/ros_topic/

この機能パックで、我々はMSGのフォルダを作成し、店舗に使用されるこのフォルダ.msgのファイル:mkdir msg

MSGフォルダを入力します。cd ~/catkin_ws/src/ros_topic/msg/

.msgファイルを作成score、カスタマイズすることができました:gedit score.msg

ダイアログボックスで、コードを貼り付け、次のテストを保存します。

string student_name
float32 score
string evaluation

string good = "good"
string bad  = "bad"

さて、この時点までに、我々は良いにMSGファイル、コード入力を作成し、現在は修正する必要がありましたpackage.xml、適切な設定のためのファイルを:gedit ~/catkin_ws/src/ros_topic/package.xml

では<exec_depend>std_msgs</exec_depend>、次のコードは、次のコードを貼り付け、保存します。

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

貼り付け後の図の効果を完全:

その後、再び我々はCMakeLists.txt、適切なコンフィギュレーションファイル:gedit ~/catkin_ws/src/ros_topic/CMakeLists.txt

見つけ、ポップアップ表示ボックスにfind_package、追加しますmessage_generation

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  message_generation
)

FOUNDは注釈を付けてきたadd_message_files、その前に削除コメント記号を、以下のように修正します:

add_message_files(
  FILES
  score.msg
)

同様に、検索は、注釈を付けたgenerate_messagesその前に、削除コメント記号を、以下のように修正します:

generate_messages(
  DEPENDENCIES
  std_msgs
)

検索catkin_packageし、次のように改正:

catkin_package(
  CATKIN_DEPENDS
  message_runtime
#  INCLUDE_DIRS include
#  LIBRARIES ros_topic
#  CATKIN_DEPENDS roscpp rospy std_msgs
#  DEPENDS system_lib
)

出版社の出版社の作成と設定

私たちは、新しいCPPファイルを開始しました:gedit ~/catkin_ws/src/ros_topic/src/publisher_score.cpp

ダイアログボックスで、コードを貼り付け、次のテストを保存します。

#include "ros/ros.h"
#include "learning_topic/score.h"

int main(int argc, char *argv[]) {

    // 初始化 ROS 节点
    ros::init(argc, argv, "publisher_score");
    
    // 创建节点句柄
    ros::NodeHandle n;

    // 创建一个 Publisher
    ros::Publisher score_pub = \
        n.advertise<learning_topic::score>("/score", 10);

    // 设置一个循环 1Hz
    ros::Rate loop_rate(1);

    while (ros::ok()) {
        
        // 初始化 learning_topic::score 类型的消息
        learning_topic::score score_msg;

        // 创建一个人物以及他的成绩
        score_msg.student_name = "LiHua";
        score_msg.score = 90.5;
        score_msg.evaluation = learning_topic::score::good;

        // 发布消息
        score_pub.publish(score_msg);
        ROS_INFO("%s got %.1f points in the exam and was rated as %s", \
            score_msg.student_name.c_str(),\
            score_msg.score, \
            score_msg.evaluation.c_str());

        // 按照循环频率延时
        loop_rate.sleep();

    }
    return 0;
}

今、私たちはオープン、ファイルマネージャを開いて/主目录/catkin_ws/src/ros_topic/src、あなたが作成したCPPファイルを見ることができます:

次に、我々は、コンフィギュレーションの再CMakeLists.txtファイルを:gedit ~/catkin_ws/src/ros_topic/CMakeLists.txt

最後の行までスクロールし、次のコードを追加し、それを保存します。

add_executable(publisher_score src/publisher_score.cpp)
add_dependencies(publisher_score ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(publisher_score ${catkin_LIBRARIES})

これは、我々はすべての設定され、次のワークスペースのホームディレクトリに戻って準備ができて:cd ~/catkin_ws/

コンパイルします。catkin_make

コンパイル後、開始するにはroscoreroscore

次に、端末(はCtrl + Alt + T)を開き、入力:rosrun ros_topic publisher_score

あなたが効果を確認します、我々は行われています。

おすすめ

転載: www.cnblogs.com/zhangxiaochn/p/ros_msg_publisher.html