ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ROS-常用snippet

2022-07-08 09:07:28  阅读:174  来源: 互联网

标签:std 常用 const msgs void snippet callback msg ROS


publisher

ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);// 定义一个话题发布器
std_msgs::String str;
str.data = "hello world";
chatter_pub.publish(msg);  // 调用.publish()发布消息

消息msg的定义既可以使用普通形式可以使用指针的形式

ros::Publisher pub = nh.advertise<std_msgs::String>("topic_name", 5);// 定义一个话题发布器
std_msgs::StringPtr str(new std_msgs::String);
str->data = "hello world";
pub.publish(msg);  // 调用.publish()发布消息

Subscriber

ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{  
ROS_INFO("I heard: [%s]", msg->data.c_str());
}

callback回调函数

void callback(const boost::shared_ptr<Message const>&);
void callback(const std_msgs::StringConstPtr&);
void callback(const std_msgs::String::ConstPtr&);

对于每一种消息,都由共享指针的typedef方式,所以std_msgs::StringConstPtr和std_msgs::StringPtr都是可以使用的;

关联callback函数的时候,选择的类型

  1. callback: 普通函数
void callback(const std_msgs::StringConstPtr& str){...}
ros::Subscriber sub = nh.subscribe("my_topic", 1, callback);
  1. callback: class method 类方法形式
void Foo::callback(const std_msgs::StringConstPtr& message){}
Foo foo_object;
ros::Subscriber sub = nh.subscribe("my_topic", 1, &Foo::callback, &foo_object);
  1. callback: functor object 【不常用】 (A functor object is a class that declares operator())
class Foo{
public:
    void operator()(const std_msgs::StringConstPtr& message){}
};
ros::Subscriber sub = nh.subscribe<std_msgs::String>("my_topic", 1, Foo());

boost::bind()绑定callback函数

  1. callback函数
// 回调函数的定义中,有三个形参
void callback02(const turtlesim::PoseConstPtr& msg, int x, int y){}  
// subscriber
ros::Subscriber pose_sub = n.subscribe<turtlesim::Pose>("/turtle1/pose", 2, boost::bind(&callback02, _1, input_x, input_y)); 

ROS package CMakeLists.txt

cmake_minimum_required(VERSION 2.8.3)
project(beginner_tutorials)
## Find catkin and any catkin packages
find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs genmsg)
## Declare ROS messages and services
add_message_files(DIRECTORY msg FILES Num.msg)
add_service_files(DIRECTORY srv FILES AddTwoInts.srv)
## Generate added messages and services
generate_messages(DEPENDENCIES std_msgs)
## Declare a catkin package
catkin_package()
## 可执行文件添加
add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_dependencies(talker beginner_tutorials_generate_messages_cpp)

add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener beginner_tutorials_generate_messages_cpp)

标签:std,常用,const,msgs,void,snippet,callback,msg,ROS
来源: https://www.cnblogs.com/leaver/p/16456943.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有