ROS学习——常用API
发布人:shili8
发布时间:2025-02-09 08:33
阅读次数:0
**ROS学习——常用API**
ROS(Robot Operating System)是一个开源的、用于机器人应用程序开发的操作系统。它提供了一个统一的接口,方便地与各种硬件设备进行交互。以下是常用的ROS API及其示例代码。
###1. **ros::NodeHandle**
`ros::NodeHandle` 是 ROS 中的一个关键类,它负责管理节点的参数、服务和订阅等功能。
cpp#include <ros/ros.h> int main(int argc, char** argv) { ros::init(argc, argv, "my_node"); ros::NodeHandle nh; // 获取参数 std::string param = nh.param<std::string>("param_name", "default_value"); // 订阅话题 ros::Subscriber sub = nh.subscribe("topic_name",10, callback_function); return0; }
###2. **ros::ServiceServer**
`ros::ServiceServer` 是 ROS 中的一个类,它负责管理服务端的功能。
cpp#include#include class MyServiceServer { public: void callback(const my_service::MyService::Request& req, my_service::MyService::Response& res) { // 处理请求 res.result = "Hello, world!"; } ros::ServiceServer service_server_; }; int main(int argc, char** argv) { ros::init(argc, argv, "my_node"); ros::NodeHandle nh; MyServiceServer server; server.service_server_ = nh.advertiseService("service_name", &MyServiceServer::callback, &server); return0; }
###3. **ros::Subscriber**
`ros::Subscriber` 是 ROS 中的一个类,它负责管理订阅者的功能。
cpp#includevoid callback(const std_msgs::String::ConstPtr& msg) { // 处理消息 ROS_INFO("%s", msg->data.c_str()); } int main(int argc, char** argv) { ros::init(argc, argv, "my_node"); ros::NodeHandle nh; ros::Subscriber sub = nh.subscribe("topic_name",10, callback_function); return0; }
###4. **ros::Publisher**
`ros::Publisher` 是 ROS 中的一个类,它负责管理发布者的功能。
cpp#include <ros/ros.h> #include <std_msgs/String.h> int main(int argc, char** argv) { ros::init(argc, argv, "my_node"); ros::NodeHandle nh; ros::Publisher pub = nh.advertise<std_msgs::String>("topic_name",10); std_msgs::String msg; msg.data = "Hello, world!"; pub.publish(msg); return0; }
###5. **ros::Timer**
`ros::Timer` 是 ROS 中的一个类,它负责管理定时器的功能。
cpp#includevoid callback() { // 处理事件 ROS_INFO("Timer triggered"); } int main(int argc, char** argv) { ros::init(argc, argv, "my_node"); ros::NodeHandle nh; ros::Timer timer = nh.createTimer(ros::Duration(1.0), callback_function); return0; }
###6. **ros::Time**
`ros::Time` 是 ROS 中的一个类,它负责管理时间的功能。
cpp#includeint main(int argc, char** argv) { ros::init(argc, argv, "my_node"); ros::NodeHandle nh; ros::Time now = ros::Time::now(); ROS_INFO("%s", now.toSec()); return0; }
###7. **ros::Duration**
`ros::Duration` 是 ROS 中的一个类,它负责管理时间间隔的功能。
cpp#includeint main(int argc, char** argv) { ros::init(argc, argv, "my_node"); ros::NodeHandle nh; ros::Duration duration(1.0); ROS_INFO("%s", duration.toSec()); return0; }
以上是常用的ROS API及其示例代码。这些API可以帮助你更好地理解ROS的使用和开发。