ROSスタートチュートリアル(F) - クライアントライブラリ(上)

クライアントライブラリ

この概念の概念とAPIの我々の理解は非常に似ています。オファーROSは、基本的なプログラミングライブラリです。たとえば、次のように構築ノード、サービスたinvokeことを発表しました。これは、コールへの書き込みコードを助け、私たちを、基礎となる業務プロセスをカプセル化します。

roscpp、rospy、roslisp:クライアントライブラリはいくつかのバージョンがあります

roscpp

ROS ::のinit()

ROSは、着信のパラメータは、現在のノードの名前を解析します。roscppを使用する前に、ROSを呼び出す必要があります::のinit関数。
初期化機能を表現する表現修飾子の::ダブルコロンの範囲は、この名前空間のROSです。

ROS :: NodeHandleクラス

トピック、サービス、パラメータを作成するために使用され、共通のインタフェースを呼び出すことができます。これは一般的なメンバー関数内のROSは、次のようにクラスである:
パブリッシュおよびサブスクライブ

//创建话题的publisher,返回一个publiser的对象
ros::Publisher advertise(const string &topic, uint32_t queue_size);

//&topic : 指定topic名称,确定往哪个topic发布消息
//queue_size : 指定发送的消息队列长度
//用法:
ros::NodeHandle nh; //先声明一个Nodehandle
ros::Publisher pub = nh.advertise(); //返回了publisher的对象pub
pub.publish(msg) //发布消息
//创建话题的subscriber
ros::Subscriber subscribe(const string &topic, uint32_t queue_size, void(*)(M));
//M:回调函数的指针,当收到msg后,就会由回调函数处理msg

サービスとクライアント

//创建服务的server
ros::ServiceServer advertiseService(const string &service, bool(*srv_func)(Mreq &, Mres&));
//创建服务的clent
ros::ServiceClient serviceClient(const string &service_name, bool persistent=false);

パラメータ関連

//查询某个参数的值
bool getParam(const string &key, void &val);
//给参数赋值
bool setparam(const string &key, void val);
ROS ::マスター名前空間

関数を使用して、マスターからのメッセージを照会します。:いないマスタークラス、名前空間、オブジェクトの概念とは異なる両方のような、通話中でないros::master::check();関数を直接呼び出すことができます。次のように一般的に使用される機能は以下のとおりです。

bool check(); //检查master是否启动
const string& getHost(); //返回master所处的hostname
bool getNodes(V_string &nodes); //从master返回已知的node名称列表
bool getTopics(V_TopicInfo &topics); //返回所有正在被发布的topic列表
bool getURL(); //返回到master的URL地址,如http://host:port/
unit32_t getPort(); //返回master运行在的端口
ROS :: this_node名前空間

関数による処理のノード機能からクエリメッセージ。

ROS ::サービスの名前空間

メッセージサービスを照会するために使用することができます。

//调用一个PRC服务
bool call(const string &service, Service &service);
//创建一个服务的client
ServiceClient createClient(const string& service_name, bool persistent=false, const M_string &header_values=M_string());
//确认服务可调用
bool exists(const string &service_name, bool print_failure_reason);
//等待一个服务,直到它可调用
bool waitForService (const string &service_name, int32_t timeout);
ROS ::ストップ

クエリパラメータは、メッセージサーバを指示するために使用することができ、ROS :: NodeHandleを必要としません。

ROS ::名の名前空間

ROSの図は、関数ハンドルのリソース名が含まれています。

string append(const std::string &left, const std::string &string); //追加名称
string clean(const string &name); //清除图资源名称:删去双斜线、结尾斜线
const M_string &getRemappings(); //返回重映射remapping
string remap(const string &name); //对名称重映射
string resolve(const string &name, bool remap=true); //解析出名称的全名
bool validate(const string &name, string &error); //验证名称

ソースを記入してください。
本論文では、「AndroidのOSは、はじめに」MOOCの中国の大学をまとめた
リンク:リンク
ビデオキャプチャプログラムからの写真

公開された43元の記事 ウォン称賛20 ビュー1473

おすすめ

転載: blog.csdn.net/Chen_2018k/article/details/104334367