ROS节点与运行

首先,先明确一下与节点相关术语的含义:

Nodes:节点,一个节点即为一个可执行程序,它可以通过ROS与其他节点通信,另外,一个catkin程序包里可以有很多节点。

Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题,是一个载体。

Topics:话题,节点可以向话题发布消息或可以向话题订阅消息,像通信中转站一样。

Master:节点管理器,ROS名称服务。

rosout:相当于std::cout

roscore:是在运行所有ROS程序前首先要运行的命令。

运行ros节点的方法:

一般有两种:

第一种:使用rosrun,在设置完环境变量后,可以使用包名来直接运行一个包内的节点。

用法:

$rosrun  [package_name]  [node_name]

注意:这种方法需要新打开一个终端 运行

$roscore

第二种:使用roslaunch

用法:

 

$roslaunch  [package]  [fliename.launch]

 

launch是个文件,用launch文件来运行程序相对于rosrun的优点有两个

<1>可以向程序传参

<2>可以同时运行多个节点

launch文件结构

 

<launch>
 <!--第1个节点-->
 	<node pkg="包名" type="包内可执行程序名字" name="节点名">
   	<!--注释内容-->
    		<para name="程序中的数值或布尔参数" value="" />
		<para name="程序中的字符串参数" value=" " type="str" />
		...
 	<node>
	...
 <!--第n个节点-->
	<node pkg="包名" type="包内可执行程序名字" name="节点名">
  	 <!--注释内容-->
    		...
	 <node>
</launch>

注意:

 

<1>包内可执行程序名由包内CMakeLists.txt控制生成。

<2>在每个可执行程序的main里都会有定义节点的语句,这里的节点名字只是用于代码编译,和launch文件的节点名不是一回事。

比如:

int main (int argc, char **argv)

{

 ros::init(argc,argv,"节点名字");

}


转载于:https://www.cnblogs.com/zhubaohua-bupt/p/7182808.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值