ROS基础
https://blog.youkuaiyun.com/shuaiwangcsdn/article/details/74548378
Publisher Subscribe
消息队列的浅谈:
https://blog.youkuaiyun.com/handsome_for_kill/article/details/81984428
Callbacks
A "callback" is any function that is called by another function which takes the first function as a parameter.
在c++中用函数指针来实现。
void Callback(char* s)
{
std::cout<<s<<std::endl;
}
void fun(void (*Callback)(char*),char* s)
{
Callback(s);
}
int main(int argc,char* argv[])
{
fun(Callback,"Hello World");
return 0;
}
ROS中的回调函数:
在订阅话题的时候使用的。所以在使用时,我们需要声明订阅话题的名称,然后选择话题,最后调用Callback函数。
ImageConvertor ic;
ros::Subscriber camera_info_sub_ = nh.subscribe( "/camera/info" , 1, &ImageConvertor::cameraInfoCallback, &ic);
回调函数中传入多个参数的解决方法以及第四个参数的使用:
https://www.cnblogs.com/feixiao5566/p/4791990.html
.launch文件
用于同时启动多个节点
根元素
<launch>
......
</launch>
<node>
<node pkg="package-name"type="executable-name" name="node-name" />
pkg:节点所在的功能包名称,
type:节点的可执行文件名称,这两个属性等同于在终端中使用rosrun命令执行节点时的输入参数。
name:节点运行的名称,将覆盖节点中init()赋予节点的名称。
这是三个常用参数,此外还有:
output = "screen":将节点的标准输出打印到终端屏幕,默认输出为日志文档;
respawn = "true":复位属性,该节点停止时,会自动重启,默认为false;
required = "true":必要节点,当该节点终止时,launch文件中的其他节点也被终止;
ns = "namespace":命名空间,为节点内的相对名称添加命名空间前缀;
args = "arguments":节点需要的输入参数。
group标签定义命名空间
<group ns="namespace">
<node pkg="pkg" name="name" type="type"/>
</group>
嵌套复用
<include file="$(dirname)/other.launch" />
相关网址:
https://blog.youkuaiyun.com/qq_33444963/article/details/77893881