节点管理器
节点管理器不参与节点之间的消息传递,这样的好处是减少了节点管理器的负担,也避免了节点管理器成为整个系统的瓶颈。
roscore 可以启动节点管理器,默认占用端口11311,可以通过
roscore -p 1234
来指定端口
ros::init()可以实现节点的初始化,argc为命令行传入的参数,“helloworld”为节点名称
ros::init(argc,argv,"helloworld");
ros::shutdown()可以用来关闭节点,终结所有开放的订阅、发布、服务、调用;
ros::ok()可以查看节点的当前的状态
节点
节点本质上就是执行运算任务的进程。
ROS启动节点的方式有两种——rosrun和roslaunch。
rosrun一次只能启动一个节点,而roslaunch可以通过launch文件实现一次可以启动多个节点。
rosrun是直接启动程序包里的节点,节点名为CMakeList.txt 中的add_executable宏定义的可执行文件名,经过catkin_make后启动方法如下:
rosrun [程序包名] [节点名]
roslaunch中的launch文件本质上是一个以launch为后缀的XML文件,位于launch目录下,使用方法如下:
roslaunch [选项] [程序包名] <launch文件名> [可变参数]
如果希望指定端口:
roslaunch -p 1234 ros_control controller.lauch
如果希望等待直到检测到roscore发布:
roslaunch - -wait ros_control controller.lauch
如果希望仅启动本地节点,而不启动远程节点:
roslaunch - -local ros_control controller.lauch
如果希望将标准输出显示到终端上:
roslaunch - -screen ros_control controller.lauch
如果希望将标准输出显示到日志文件中:
roslaunch - -log ros_control controller.lauch
查看节点信息
查看当前运行的节点列表
rosnode list
查看特定节点的信息
rosnode info [节点名]
终止节点的运行
rosnode kill [节点名]
清除不可达节点
rosnode cleamup
话题
节点之间的通信可通过消息进行传递,而消息封装在话题中,话题本质上是对套字的一种封装。
rostopic命令可以查看与ROS话题相关的信息,rostopic的常用方法如下:
#显示话题数据的接收速度即宽带
rostopic bw [话题]
#显示话题的延迟
rostopic delay [选项] [话题名]
#显示话题的信息内容
rostopic echo [选项] [话题名]
#查看特定类型的话题
rosropic find [话题类型]
#显示话题数据的发布速度
rostopic hz [选项] [话题名]
#显示活动话题的消息
rostopic info [话题名]
#列出活动话题
rostopic list
#向话题发布数据
rostopic pub [话题名] [消息类型] [参数]
#打印话题/域类型
rostopic type [话题名/域类型]