ICode9

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

【ROS】ROS使用

2021-01-06 16:57:05  阅读:366  来源: 互联网

标签:rqt 0.0 rostopic 使用 turtlesim ROS 节点


一、构建软件包

首先要source一下:

source /opt/ros/kinetic/setup.bash
catkin_make 是一个命令行工具,它简化了标准catkin工作流程
在catkin工作空间下
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]

如果你的源代码不在默认位置(catkin_ws/src),比如说存放在了my_src中,那可以这样来使用catkin_make:

# 在catkin工作空间下
$ catkin_make --source my_src

前文中利用catkin_create_pkg已经在~/catkin_ws/src中创建了一个beginner_tutorials的软件包,就可以用catkin_make进行编译。

二、ROS节点

计算图(Computation Graph)是一个由ROS进程组成的点对点网络,它们能够共同处理数据。ROS的基本计算图概念有节点(Nodes)、主节点(Master)、参数服务器(Parameter Server)、消息(Messages)、服务(Services)、话题(Topics)和袋(Bags),它们都以不同的方式向图(Graph)提供数据。

roscore是你在运行所有ROS程序前首先要运行的命令(确保roscore正在运行)

roscore

然后会有如下信息:

... logging to ~/.ros/log/9cf88ce4-b14d-11df-8a75-00251148e8cf/roslaunch-machine_name-13039.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://machine_name:33919/
ros_comm version 1.4.7

SUMMARY
========

PARAMETERS
 * /rosversion
 * /rosdistro

NODES

auto-starting new master
process[master]: started with pid [13054]
ROS_MASTER_URI=http://machine_name:11311/

setting /run_id to 9cf88ce4-b14d-11df-8a75-00251148e8cf
process[rosout-1]: started with pid [13067]
started core service [/rosout]

rosnode显示当前正在运行的ROS节点信息。rosnode list命令会列出这些活动的节点:

rosnode list

输出:/rosout

rosnode info命令返回的是某个指定节点的信息:

rosnode info /rosout

rosrun可以让你用包名直接运行软件包内的节点(而不需要知道包的路径):

rosrun [package_name] [node_name]

所以现在我们试着运行turtlesim包中的turtlesim_node。

在一个终端中:

rosrun turtlesim turtlesim_node

我们还需要通过键盘来控制turtle,打开一个终端:

rosrun turtlesim turtle_teleop_key

三、ROS话题

turtlesim_node节点和turtle_teleop_key节点之间是通过一个ROS话题来相互通信的。turtle_teleop_key在话题上发布键盘按下的消息,turtlesim则订阅该话题以接收消息。

rqt_graph用动态的图显示了系统中正在发生的事情。rqt_graph是rqt程序包中的一部分。如果你发现没有安装,请:

sudo apt-get install ros-<distro>-rqt
sudo apt-get install ros-<distro>-rqt-common-plugins

rosrun rqt_graph rqt_graph

rostopic命令工具能让你获取ROS话题的信息:

rostopic echo可以显示在某个话题上发布的数据

rostopic echo [topic]
Eg:rostopic echo /turtle1/cmd_vel

rostopic list能够列出当前已被订阅和发布的所有话题

rostopic list -v

rostopic type命令用来查看所发布话题的消息类型

rostopic type [topic]
rostopic type /turtle1/cmd_vel
输出:geometry_msgs/Twist

 rosmsg查看消息的详细信息:

rosmsg show geometry_msgs/Twist

rostopic pub -1可以把一条数据发布到当前某个正在广播的话题上

rostopic pub [topic] [msg_type] [args]
rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
【以上命令会发送一条消息给turtlesim,告诉它以2.0大小的线速度和1.8大小的角速度移动】

用rostopic pub -r命令来发布源源不断的命令,以1 Hz的速度发布velocity指令到velocity话题上:

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

四、ROS服务

服务(Services)是节点之间通讯的另一种方式。服务允许节点发送一个请求(request)并获得一个响应(response)

rosservice list         输出活跃服务的信息
rosservice call         用给定的参数调用服务
rosservice type         输出服务的类型
rosservice find         按服务的类型查找服务
rosservice uri          输出服务的ROSRPC uri
服务类型:
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/spawn
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level

rosparam能让我们在ROS参数服务器(Parameter Server)上存储和操作数据。参数服务器能够存储整型(integer)、浮点(float)、布尔(boolean)、字典(dictionaries)和列表(list)等数据类型。

rosparam set            设置参数
rosparam get            获取参数
rosparam load           从文件中加载参数
rosparam dump           向文件中转储参数
rosparam delete         删除参数
rosparam list           列出参数名
/rosdistro
/roslaunch/uris/host_nxt__43407
/rosversion
/run_id
/turtlesim/background_b
/turtlesim/background_g
/turtlesim/background_r

五、使用rqt_console和roslaunch

rqt_console连接到了ROS的日志框架,以显示节点的输出信息。

rqt_logger_level允许我们在节点运行时改变输出信息的详细级别,包括Debug、Info、Warn和Error`。

$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level

roslaunch可以用来启动定义在launch(启动)文件中的节点。

roslaunch [package] [filename.launch]

$ cd ~/catkin_ws
$ source devel/setup.bash
$ roscd beginner_tutorials
然后创建一个launch目录:
$ mkdir launch
$ cd launch

现在一起创建一个名为turtlemimic.launch的launch文件并复制粘贴以下内容进去:

切换行号显示

   1 <launch>
   2 
   3   <group ns="turtlesim1">
   4     <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
   5   </group>
   6 
   7   <group ns="turtlesim2">
   8     <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
   9   </group>
  10 
【此处我们创建了两个分组,并以命名空间(namespace)标签来区分,其中一个名为turtulesim1,另一个名为turtlesim2,两个分组中都有相同的名为sim的turtlesim节点。这样可以让我们同时启动两个turtlesim模拟器,而不会产生命名冲突。】
  11   <node pkg="turtlesim" name="mimic" type="mimic">
  12     <remap from="input" to="turtlesim1/turtle1"/>
  13     <remap from="output" to="turtlesim2/turtle1"/>
  14   </node>
  15 
【在这里我们启动模仿节点,话题的输入和输出分别重命名为turtlesim1和turtlesim2,这样就可以让turtlesim2模仿turtlesim1了。】
  16 </launch>
启动
roslaunch beginner_tutorials turtlemimic.launch
发送数据
$ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

rosed是rosbash套件的一部分。利用它可以直接通过软件包名编辑包中的文件,而无需键入完整路径。

rosed是rosbash套件的一部分。利用它可以直接通过软件包名编辑包中的文件,而无需键入完整路径。

 

 

 

 

 

 

 

标签:rqt,0.0,rostopic,使用,turtlesim,ROS,节点
来源: https://blog.csdn.net/weixin_41977337/article/details/112275638

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

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

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

ICode9版权所有