zoukankan      html  css  js  c++  java
  • ROS回顾与整理《一、基础概念》

    一、话题通信机制

    话题通信机制在ROS中用的非常多;也较为复杂。一般包含以下7个步骤:

    一、参数通信机制

     

     

     小海龟实验:

    ## 小海龟仿真
    
    ## 终端一
    ## 启动 ROS Master
    roscore
    
    ## 终端二
    ## rosrun(启动节点) turtlesim(功能包) turtlesim_node(节点归属于功能包)
    rosrun turtlesim turtlesim_node
    
    ## 终端三
    ## 启动海龟控制节点
    rosrun turtlesim turtle_teleop_key

    终端2 海龟节点启动成功会出现如图的小海龟;键盘控制节点启动成功则会出现如图蓝色圈内信息。小海龟Demo虽简单,但是包含知识较多。

    1 ## rqt_graph 将系统中一些信息可视化的一个工具
    2 ## 在启动rosmaster、没关闭小海龟节点和键盘节点前提下 
    3 ## 终端四
    4 rqt_graph

     1 ## 查看系统当中有多少节点
     2 rosnode list
     3 
     4 ## 此时,终端打印出:
     5 #/rosout
     6 #/teleop_turtle
     7 #/turtlesim
     8 
     9 ## 查看节点A的具体信息
    10 ## rosnode info /A
    11 rosnode info /turtlesim

     1 ## 查看系统有哪些话题正在发布
     2 rostopic list
     3 
     4 ##终端打印出:
     5 #/rosout_agg
     6 #/turtle1/cmd_vel
     7 #/turtle1/color_sensor
     8 #/turtle1/pose
     9 
    10 ## 查看话题B的具体信息
    11 ## rosnode info /B
    12 rostopic info /turtlesim/cmd_vel

    1 ## 监听话题信息的具体内容
    2 rostopic echo /turtle1/cmd_vel
    3 ## 发现没有打印出消息
    4 ## 在键盘控制终端中,控制海龟移动
    5 ## 如图是终端中显示的海归位置信息

     1 ## 我们也可以通过终端控制海归,一般用于调试
     2 rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
     3   x: 0.0
     4   y: 0.0
     5   z: 0.0
     6 angular:
     7   x: 0.0
     8   y: 0.0
     9   z: 0.0" 
    10  
    11 ## 加上参数 -r 10 表示以一秒钟10次的频率发布
    12 rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
    13   x: 2.0
    14   y: 0.0
    15   z: 0.0
    16 angular:
    17   x: 0.0
    18   y: 0.0
    19   z: 0.0" 
     1 ## 查看系统中能够提供的服务
     2 rosservice list
     3 ##打印信息如下----------------------------------
     4 /clear
     5 /kill
     6 /reset
     7 /rosout/get_loggers
     8 /rosout/set_logger_level
     9 /spawn
    10 /teleop_turtle/get_loggers
    11 /teleop_turtle/set_logger_level
    12 /turtle1/set_pen
    13 /turtle1/teleport_absolute
    14 /turtle1/teleport_relative
    15 /turtlesim/get_loggers
    16 /turtlesim/set_logger_level
     1 ## 查看 服务信息
     2 rossverce info /spawn
     3 
     4 ##打印信息如下----------------------------------
     5 Node: /turtlesim ##服务所提供节点
     6 URI: rosrpc://sry:36157
     7 Type: turtlesim/Spawn  ##数据类型
     8 Args: x y theta name  ##类型里的参数
     9 
    10 ##以上的服务spawn的作用是在仿真器里新生一只海归
    11 rosservice call /spawn "x: 10.0
    12 y: 20.0
    13 theta: 30.0
    14 name: 'shiruiyu'" 
    15 ##如图,仿真器中有两只海归

    1 ## rqt_plot 可视化工具
    2 ## 例如绘制曲线
    3 ##在rqt_plot界面添加海龟坐标,如图:当你在键盘控制终端控制海龟移动的时候,rqt_plot曲线会实时显示。

    2.1 创建工作空间

    2.2 ROS通信编程

    2.3 实现分布式通信

    2.4 ROS中的关键组件

    创建工作空间

    1 # 创建工作空间
    2 mkdir -p ~/catkin_ws/src
    3 cd ~/catkin_ws/src ## 在源代码文件夹下初始化空间
    4 catkin_init_workspace 
    5 
    6 
    7 ## 工作空间初始化之后,src 文件下出现 CMakeLists.txt
    1 # 编译工作空间
    2 cd ~/catkin_ws/
    3 catkin_make
    4 
    5 
    6 ## 编译完之后,catkin_ws文件下出现 build、devel文件夹
    1 # 需要知道整个Linux系统的功能包在什么位置,所以必须设置环境变量
    2 # 设置环境变量 [注意:这里似乎仅仅是把当前终端加入环境变量??]
    3 source devel/setup.bash
    4 
    5 ## 这样系统就知道,功能包位置在工作空间catkin_ws下。
    6 ## 这种做法只会使得环境变量在当前终端生效,换一个终端则无效。所以
    7 ## 我们可以将这条命令放到整个终端的配置文件当中。
    1 gedit ~/.bashrc ## 打开终端配置文件
    2 添加并保存:  source ~/catkin_ws/devel/setup.bash

    我们看到,在我们添加的当前工作空间catkin_ws下功能包位置的上一行,是ROS自带功能包位置,安装的时候自动加入终端配置文件的。

    1 source ~/.bashrc ## 让刚刚配置文件生效。
    1 # 检查环境变量
    2 ## 随便打开几个新的终端
    3  echo $ROS_PACKAGE_PATH
    4  ## 打印效果如下图:
    5  

     以后用 rospack find 功能包   的时候,会优先从上图左边路径依次往右边开始查找。

     创建功能包

    1  ## 创建功能包
    2 $   catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
    3 
    4 
    5 cd ~/catkin_ws/src
    6 catkin_create_pkg learning_communication std_msgs rospy roscpp
    1  cd ~/catkin_ws
    2  
    3  我们打开如图文件下的package.xml文件,翻到如图的位置,看到功能包的依赖。后期可添加更多依赖。

    1  catkin_make ## 编译,看到刚刚创建的功能包

    ## 设置环境变量,
    ##由于刚刚我们已经将工作空间路径添加进了终端配置文件,所以这里不用再设置了。

  • 相关阅读:
    SDN第三次作业
    SDN第二次上机作业
    SDN第二次作业
    第七次作业之总结篇
    第八次_计算器重构
    第六次作业之计算器图形界面化
    C++课程 second work _1025
    第五次作业--计算器项目之学习文件读取方式
    C++课程 first work
    第四次作业-计算功能的实现
  • 原文地址:https://www.cnblogs.com/winslam/p/10089014.html
Copyright © 2011-2022 走看看