烈火如歌-ROS入门使用
Tutorials
Filesystem tools(文件系统工具)
Example:
$ rospack find roscpp
would return:
YOUR_INSTALL_PATH/share/roscpp
roscd #切换目录,只能切换到那些路径已经包含在ROS_PACKAGE_PATH环境变量中的软件包
rosls #直接按软件包的名称而不是绝对路径执行ls命令
建立ROS程序包
Creating a catkin Package
#You should have created this in the Creating a Workspace Tutorial
$ cd ~/catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
# This is an example, do not try to run this
# catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
Building the packages in the catkin workspace:
$ cd ~/catkin_ws
$ catkin_make
$ . ~/catkin_ws/devel/setup.bash #.可以替换为source命令
roscore is the first thing you should run when using ROS.
Open up a new terminal, useing rosnode (显示当前运行的ROS节点信息)
rosnode list 指令列出活跃的节点
$ rosnode info /rosout #rosnode info 命令返回的是关于一个特定节点的信息
$ rosrun [package_name] [node_name] #rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)
$ rosrun turtlesim turtlesim_node __name:=my_turtle #use a Remapping Argument to change the node's name
ROS Topics
turtlesim_node节点和turtle_teleop_key节点之间是通过一个ROS话题来互相通信的(使用方向键控制turtle运动)。turtle_teleop_key在一个话题上发布按键输入消息,而turtlesim则订阅该话题以接收该消息。
$ rosrun rqt_graph rqt_graph #使用rqt_graph来显示当前运行的节点和话题。
$ rostopic echo [topic] #rostopic echo /turtle1/cmd_vel 显示在某个话题上发布的数据
$ rostopic list -v #会显示出有关所发布和订阅的话题及其类型的详细信息
$ rostopic type [topic] #查看发布的消息的类型
#Try: rostopic type /turtle1/cmd_vel You should get:geometry_msgs/Twist
$ rosmsg show geometry_msgs/Twist #rosmsg命令来查看消息的详细情况
rostopic continued
$ rostopic pub [topic] [msg_type] [args] #rostopic pub可以把数据发布到当前某个正在广播的话题上
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
ROS Services and Parameters
Services allow nodes to send a request and receive a response
$ rosservice list #shows us that the turtlesim node provides nine services
$ rosservice type [service] #$ rosservice type /clear
$ rosservice type /spawn | rossrv show #看服务的详细参数
$ rosservice call /spawn 2 2 0.2 "" #调用/spawn服务(写好参数)```bash
## Using rosparam```bash
$ rosparam list #看到某个节点在参数服务器上有几个参数
rosparam set [param_name] #$ rosparam set /background_r 150 $ rosservice call /clear(调用服务后参数生效)
rosparam get [param_name] #$ rosparam get /background_g ($ rosparam get / 看到全部参数的值)
rosparam dump [file_name] [namespace] #$ rosparam dump params.yaml(将所有的参数写入params.yaml文件)
rosparam load [file_name] [namespace] #$ rosparam load params.yaml (将yaml文件重载入空间)
录制与回放数据
打开一个新终端并执行:
mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a #只有消息已经发布了才可以被录制 rostopic list -v
在运行rosbag record命令的窗口中按Ctrl-C退出该命令。
检查并回放bag文件
rosbag info <your bagfile> #该命令可以检查看bag文件中的内容而无需回放出来
TF
rosrun rqt_tf_tree rqt_tf_tree #a runtime tool for visualizing the tree of frames
talker.cpp
listener.cpp
## 更改CMakeLists.txt与package.xml
## 服务和请求
烈火如歌-ROS入门使用相关推荐
- SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人"miiboo"中的大部分程序也采用ROS进行开发,所 ...
- ROS入门笔记(十三):分布式通信
ROS入门笔记(十三):分布式通信 文章目录 01 如何实现分布式多机通信 1.1 设置IP地址,确保底层链路的连通 1.2 在从机端设置ROS_MASTER_URI,让从机找到ROS Master ...
- ROS入门笔记(十二):动作编程 (C++)
ROS入门笔记(十二):动作编程 (C++) 文章目录 01 导读 02 功能包的创建 03 在功能包中创建action(动作) 3.1 自定义action 3.2 在package.xml中添加功能 ...
- ROS入门笔记(十一):编写与测试简单的Service和Client (Python)
ROS入门笔记(十一):编写与测试简单的Service和Client (Python) 文章目录 01 导读 02 功能包的创建 03 在功能包中创建自定义服务类型 3.1 定义srv文件 3.2 在 ...
- ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++)
ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++) 文章目录 01 导读 02 功能包的创建 03 功能包的源代码编写 3.1 编写发布器节点(talker.cpp) 3.2 编写订阅 ...
- ROS入门笔记(九):编写ROS的第一个程序hello world(重点)
ROS入门笔记(九):编写ROS的第一个程序hello world(重点) 文章目录 1 Catkin工作空间 1.1 创建catkin工作空间 1.2 编译工作空间 1.3 设置环境变量 1.4 检 ...
- ROS入门笔记(七):详解ROS文件系统
ROS入门笔记(七):详解ROS文件系统 文章目录 01 Catkin编译系统 1.1 Catkin特点 1.2 Catkin工作原理 1.3 使用`catkin_make`进行编译 02 Catki ...
- ROS入门笔记(六): ROS系统架构
ROS入门笔记(六): ROS系统架构 文章目录 1 ROS系统架构 1.1 文件系统(重点) 1.2 计算图 1.3 开源社区 1 ROS系统架构 1.1 文件系统(重点) 文件系统:主要指在硬盘里 ...
- ROS入门笔记(四):ROS实践(小海龟仿真)— ROS Topics
ROS入门笔记(四):ROS实践(小海龟仿真)- ROS Topics 文章目录 1 基础知识 1.1 运行ROS Master所在主机的资源地址 1.2 ROS常用命令 1.2.1 查看所有以ros ...
最新文章
- 《机器学习》周志华-CH1 绪论
- Android微信智能心跳方案
- Matlab化简符号表达式
- Qt学习笔记之类继承关系图
- MVC根据CheckBox的Value值选中对应的复选框及获取选中的Value值
- Uploadify 配置错误信息提示
- 软件使用方法_视频录制软件进行电脑屏幕录像的使用方法
- 2013第43周三接口不变
- Maven仓库—Nexus环境搭建及使用
- html改变游戏速度变慢,游戏不顺畅,卡顿的显卡设置方法
- 三角形度数计算机公式,角度数换算公式(三角函数计算换算角度)
- 系统架构设计师-软件开发模型(螺旋模型)
- FTP升级cisco2811 IOS 实战
- IDEA社区版下载安装
- Netty系列三、Netty实战篇
- python中的Pickle文件和npy文件
- SDUT—Python程序设计实验四(字符串)
- 开源作者遭受小白的9种伤害
- ubuntu20.04 GPU基准测试
- 两个有序数组A、B,长度分别为m、n,找到两个数组的第k个值并返回
热门文章
- 出现小红书点赞多粉丝少的情况,原因在哪里
- 程序设计基本模式IPO
- sftp之概述、搭建、命令
- 计算机梦想未来,学史力行 梦想未来——计算机科学与技术学院开展2021届本科毕业生党员主题党日活动...
- 二手房买卖银行迟迟不放款,买房人构成违约吗?
- 第八届育才杯机器人比赛_疫情防控常态化,传统赛事新转型 “育才杯”第九届青岛国际象棋学校锦标赛(网络)顺利举办...
- 那些年,我们一起“讲”过的刀片-lihyf@DC
- Java架构师岗位的基本职责
- Gloomy对Windows内核的分析(内核反汇编技术)
- AMD在量子隐形传输方面取得突破; 量子隐形传态:从物理量子比特到逻辑编码空间 | 全球量子科技与工业快讯第三十五期