シリーズ記事ディレクトリ
第1章 ROSの概要と環境構築
第2章 ROSの通信機構
第3章 ROSの通信機構 応用
編 第4章 ROSの運用管理 第5章
ROSの共通コンポーネント
第6章 ロボットシステムのシミュレーション
第7章 ロボットシステムのシミュレーション
第8章 ロボットシステムのシミュレーション
第9章 ロボットシステムのシミュレーション
第10章ロボットシステムシミュレーション
記事ディレクトリ
序文
- レビューとレビューに使用されます
- このnoteの動画説明アドレス:Bilibili大学
- メモはビデオでより効果的に機能します
- 間違いや脱落がある場合は、プライベートメッセージやコメントを送って修正していただければ、確認次第変更させていただきます。
怕什么真理无穷,进一寸有一寸的欢喜
- あなたと分け合う
3. 高度な ROS 通信メカニズム
6. ROSのヘッダファイルとソースファイル
- ヘッダー ファイル、実行可能ファイルをソース ファイルとして設定します。
- ヘッダーファイル、ソースファイル、実行ファイルを個別に設定する
6.1 カスタムヘッダーファイルの呼び出し
要件: ヘッダー ファイル、実行可能ファイル自体をソース ファイルとして設計します。
プロセス:
- ヘッダー ファイルを書き込みます。
- 実行可能ファイル (ソース ファイルも) を書き込みます。
- 設定ファイルを編集して実行します。
6.1.1 ヘッダーファイル
関数パッケージの下の include/function パッケージ名ディレクトリの下に新しいヘッダー ファイル hello.h を作成します。サンプルの内容は次のとおりです。
コードは以下のように表示されます。
#ifndef _HELLO_H
#define _HELLO_H
/* 声明 namespace
|--class
|--run
*/
namespace hello_ns {
class Myhello
{
private:
/* data */
public:
void run(); //成员函数
};
}
#endif
ヘッダー ファイルのコンパイル時に例外が発生しないようにするには、.vscode で c_cpp_properties.json の includepath プロパティを構成する必要があります。
"/home/wht/at_demo/demo03_ws/src/plumbing_head/include/**"//配置head文件的位置
前の行の末尾を区切るために必ずカンマを追加してください。
6.1.2 実行可能ファイル
src ディレクトリに新しいファイル hello.cpp を作成し、ヘッダー ファイル関数を記述して呼び出します。サンプルの内容は以下のとおりです。
コードは以下のように表示されます。
#include <ros/ros.h>
#include "plumbing_head/hello.h"
namespace hello_ns{
void Myhello::run(){
ROS_INFO("run 函数执行-------------");
}
}
int main(int argc, char* argv[])
{
setlocale(LC_ALL,"");
ros::init(argc, argv, "hello_head");
//函数调用
hello_ns::Myhello myHello;
myHello.run();
return 0;
}
6.1.3 設定ファイル
CMakeLists.txt ファイルを構成します。ヘッダー ファイルの関連構成は次のとおりです。
コードは以下のように表示されます。
include_directories(
include
${
catkin_INCLUDE_DIRS}
)
add_executable(hello src/hello.cpp)
add_dependencies(hello ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(hello
${catkin_LIBRARIES}
)
コンパイルして実行します。
6.2 カスタムソースファイルの呼び出し
大きなファイルでは、ヘッダー ファイルを使用してクラスを宣言し、ソース ファイルを使用して定義し、ソース ファイルで定義された関数を呼び出すことで他の関数を実行し、関連する関数を実現できます。
要件: ヘッダー ファイルとソース ファイルを設計し、実行可能ファイルにヘッダー ファイルを含めます。
プロセス:
- ヘッダー ファイルを書き込みます。
- ソースファイルを書き込む。
- 実行可能ファイルを書き込みます。
- 設定ファイルを編集して実行します。
6.2.1 ヘッダーファイル
関数パッケージ hello.h の下の include/関数パッケージ名ディレクトリに新しいヘッダー ファイルを作成します。これはクラスの宣言に使用されます。
コードは以下のように表示されます。
#ifndef _HELLO_H
#define _HELLO_H
/* 声明 namespace
|--class
|--run
*/
namespace hello_ns {
class Myhello
{
private:
/* data */
public:
void run(); //成员函数
};
}
#endif
ヘッダー ファイルのコンパイル時に例外が発生しないようにするには、.vscode で c_cpp_properties.json の includepath プロパティを構成する必要があります。
"/home/wht/at_demo/demo03_ws/src/plumbing_head_src/include/**"//配置head文件的位置
前の行の末尾を区切るために必ずカンマを追加してください。
6.2.2 ソースファイル
src ディレクトリに新しいファイル hello.cpp を作成します。このファイルは、関連関数の定義に使用されます。
コードは以下のように表示されます。
#include <ros/ros.h>
#include "plumbing_head_src/hello.h"
namespace hello_ns{
void My::run(){
ROS_INFO("调用源文件函数成功-------------");
}
}
6.2.3 実行可能ファイル
src ディレクトリに新しいファイル use_hello.cpp を作成し、ソース ファイル関数を呼び出します。
コードは以下のように表示されます。
#include <ros/ros.h>//因为源文件已经包含,所以可以省略
#include "plumbing_head_src/hello.h"
int main(int argc, char *argv[])
{
setlocale(LC_ALL, "");
ros::init(argc, argv, "hello_head_src");
//函数调用
hello_ns::Myhello myHello;
myHello.run(); //此时虽然包含了plumbing_head_src/hello.h 即包含了头文件,但不能链接源文件hello.cpp 需要配置
return 0;
}
6.2.4 設定ファイル
CMakeLists.txt ファイルを構成します。ヘッダー ファイルとソース ファイルの構成は次のとおりです。
コードは以下のように表示されます。
#包含头文件
include_directories(
include
${
catkin_INCLUDE_DIRS}
)
## 声明C++库
# 库的名字 起名字随便起,但是与后面的要对应
# 第一个是头文件include/plumbing_head_src/hello.h
# 第二个源文件 hello.cpp
add_library(head_src
include/${PROJECT_NAME}/hello.h
src/hello.cpp
)
# 执行权限配置
add_executable(use_hello src/use_hello.cpp)
# 执行权限配置
add_dependencies(use_hello ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
# 库的配置 设置成上面库的名字
add_dependencies(head_src ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
# 库的配置
target_link_libraries(head_src
${catkin_LIBRARIES}
)
# 执行权限配置 需要链接到库上
target_link_libraries(use_hello
head_src
${catkin_LIBRARIES}
)
コンパイルして実行します。
要約:
2つ目は将来よく使われる方法で
、大きなファイルではヘッダファイルでクラスを宣言し、ソースファイルで定義し、その後他の関数を実行することができ、ファイルは関数を呼び出すことで関連する関数を実現します。ソースファイルで定義されています。