ROS入门的基本操作
ROS入门的基本操作
- 一、ROS命令行工具的使用
- 二、创建工作空间与功能包
- 创建工作空间的流程
- 创建功能包的流程
- 三、发布者Publisher的编程实现
- 如何实现一个发布者
- 如何配置CMakeLIsts.txt中的编译规则
- 编译并运行发布者(要进入到根目录进行编译)
- 四、订阅者Subscriber的编程实现
- 如何实现一个订阅者
- 四、话题消息的定义和使用
- 如何自定义话题消息
- 五、客户端Client的编程实现
- 六、服务端Server的编程实现
- 七、服务数据的定义与使用
- 八、参数的使用与编程方法
- 九、ROS中的坐标系管理系统
- 十、tf坐标系广播与监听的编程实现
- 十一、launch启动文件的使用方法
- 十二、常用可视化工具的使用
一、ROS命令行工具的使用
常用命令:
rostopic
rosservice
rosnode
rosparam
rosmsg
rossrv
二、创建工作空间与功能包
工作空间是一个存放工程开发相关文件的文件夹
src:代码空间
build:编译空间
devel:开发空间
install:安装空间
创建工作空间的流程
1.创建空间:
$mkdir -p ~/catkin_ws/src
$cd ~/catkin_ws/src
$catkin_init_workspace
2.编译空间
$cd ~/catkin_ws/
$catkion_make
3.设置环境变量
$source devel/setup.bash
4.检查环境变量
$echo $ROS_PACKAGE_PATH
创建功能包的流程
1.创建功能包
$cd ~/catkin_ws/src
$catkin_create_pkg test_pkg std_msgs rospy roscpp
2.编译功能包
$cd ~/catkin_ws
$catkin_make
$source ~/catkin_ws/devel/setup.bash
三、发布者Publisher的编程实现
如何实现一个发布者
1.初始化ROS节点
2.向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型
3.创建消息数据
4.按照一定频率循环发布消息
如何配置CMakeLIsts.txt中的编译规则
1.设置需要编译的代码和生成的可执行文件
2.设置链接库
add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
编译并运行发布者(要进入到根目录进行编译)
$cd ~/catkin_ws
$catkin_make
$source devel/setup.bash
$roscore
$rosrun turtlesim turtlesim_node
$rosrun learning_topic velocity_publisher
四、订阅者Subscriber的编程实现
如何实现一个订阅者
1.初始化ROS节点
2.订阅需要的话题
3.循环等待话题消息,接收到消息后进入回调函数
4.在回调函数中完成消息处理
四、话题消息的定义和使用
如何自定义话题消息
1.定义msg文件;
2.在package.xml中添加功能包依赖
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
3.在CMakeLists.txt添加编译选项
find_package(… message_generation)
add_message_files(FILES Person.msg)
generate_messages(DEPENDENCIES std_msgs)
catkin_package(… message_runtime)
4.编译生成语言相关文件
五、客户端Client的编程实现
1.创建功能包
$cd ~/catkin_ws/src
$catkin_create_pkg learning_service roscpp rospy std_msgs geometry_msgs turtlesim
2.创建客户端代码
如何实现一个客户端
(1)初始化ROS节点
(2)创建一个Client实例
(3)发布服务请求数据
(4)等待Server处理之后的应答结果
3.配置客户端代码编译规则
如何配置CMakeList.txt中的编译规则
(1)设置需要编译的代码和生成的可执行文件;
(2)设置链接库
add_executable(turtle_spawn src/turtle_spawn.cpp)
target_link_libraries(turtle_spawn ${catkin_LIBRARIES})
4.编译并运行客户端
$cd ~/catkin_ws
$catkin_make
$source devel/setup.bash
$roscore
$rosrun turtlesim turtlesim_node
$rosrun learning_service turtle_spawn
六、服务端Server的编程实现
1.创建服务器代码
如何实现一个服务器
(1)初始化ROS节点
(2)创建Server实例
(3)循环等待服务请求,进入回调函数
(4)在回调函数中完成服务功能的处理,并反馈应答数据
2.如何配置CMakeLists.txt中的编译规则
(1)设置需要编译的代码和生成的可执行文件
(2)设置链接库
add_executable(turtle_command_server src/turtle_command_server.cpp)
target_link_libraries(turtle_command_server ${catkin_LIBRARIES})
3.编译并运行服务器
$cd ~/catkin_ws
$catkin_make
$source devel/setup.bash
$roscore
$rosrun turtlesim turtlesim_node
$rosrun learning_service turtle_command_server
$rosservice call /turtle_command “{}”
七、服务数据的定义与使用
1.自定义服务数据
如何自定义服务数据
(1)定义srv文件
(2)在package.xml中添加功能包依赖
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
(3)在CMakeLists.txt添加编译
find_package(… message_generation)
add_service_files(FILES Person.srv)
generate_messages(DEPENDENCIES std_msgs)
catkin_package(… message_runtime)
(4)编译生成语言相关文件
2.如何实现一个服务器
(1)初始化ROS节点
(2)创建Server实例
(3)循环等待服务请求,进入回调函数
(4)在回调函数中完成服务功能的处理,并反馈应答数据
3.创建客户端代码
如何实现一个客户端
(1)初始化ROS节点
(2)创建一个Client实例
(3)发布服务请求数据
(4)等待Server处理之后的应答结果
4.如何配置CMakeLists.txt中的编译规则
(1)设置需要编译的代码和生成的可执行文件
(2)设置链接库
(3)添加依赖项
5.编译并运行客户端和服务器
$cd ~/catkin_ws
$catkin_make
$source devel/setup.bash
$roscore
$rosrun learning_service person_server
$rosrun learning_service person_client
八、参数的使用与编程方法
1.创建功能包
$cd ~/catkin_ws/src
$catkin_create_pkg learning_parameter roscpp rospy std_srvs
2.参数命令行使用
rosparam
(1)列出当前多个参数:$rosparam list
(2)显示某个参数值:$rosparam get param_key
(3)设置某个参数值:$rosparam set param_key param_value
(4)保存参数到文件:$rosparam dump file_name
(5)从文件读取参数:$rosparam load file_name
(6)删除参数:$rosparam delete param_key
3.YAML参数文件
background_b:255
background_g:86
background_r:69
rosdistro: ‘melodic’
roslaunch:
uris:{host_hhj_vpc__43763:’http://hhj-vpc:43763/’}
rosversion: ‘1.14.3’
run_id: 077058de-a38b-11e9-818b-000c29d22e4d
4.如何获取/设置参数
(1)初始化ROS节点
(2)get函数获取参数
(3)set函数设置参数
5.配置代码编译规则
如何配置CMakeList.txt中的编译规则
(1)设置需要编译的代码和生成的可执行文件
(2)设置链接库
add_executable(parameter_config src/parameter_config.cpp)
target_link_libraries(parameter_config ${catkin_LIBRARIES})
九、ROS中的坐标系管理系统
1.机器人的坐标变换
TF功能包
(1)默认记录十秒钟内机器人所有坐标系之间的位置关系
(2)机器人夹取的物体相对于机器人中心坐标系的位置
(3)机器人中心坐标系相对于全局坐标系的位置
TF坐标变换如何实现?
(1)广播TF变换
(2)监听TF变换
十、tf坐标系广播与监听的编程实现
1.创建功能包
$cd ~/catkin_ws/src
$catkin_create_pkg learning_tf roscpp rospy tf turtlesim
2.创建tf广播器代码
如何实现一个tf广播器
(1)定义TF广播器
(2)创建坐标变换值
(3)发布坐标变换
3.创建tf监听器代码
如何实现一个TF监听器
(1)定义TF监听器(TransformListener
(2)查找坐标变换(waitForTransform、lookupTransform)
4.配置tf广播器与监听器代码编译规则
如何配置CMakeList.txt中的编译规则
(1)设置需要编译的代码和生成的可执行文件
(2)设置链接库
5.编译并运行
$cd ~/catkin_ws
$catkin_make
$source devel/setup.bash
$roscore
$rosrun learning_tf turtle_tf_broadcaster __name:=turtle1_tf_broadcaster /turtle1
$rosrun learning_tf turtle_tf_broadcaster __name:=turtle2_tf_broadcaster /turtle2
$rosrun learning_tf turtle_tf_listener
$rosrun turtlesim turtle_teleop_key
十一、launch启动文件的使用方法
1.Launch文件:通过XML文件实现多节点的配置和启动(可自动启动ROS Master)
<launch> launch文件中的根元素采用<launch>标签定义
<node> 启动节点
<node pkg = “package-name” type=”executable-name” name=”node-name” />
(1)pkg:节点所在的功能包名称
(2)type:节点的可执行文件名称
(3)name:节点运行时的名称
(4)output、respawn、required、ns、args
<param>/ 设置ROS系统运行中的参数,存储在参数服务器中。
<rosparam> <param name=”output_frame” value=”odom”/>
(1)name:参数名
(2)value:参数值
加载参数文件中的多个参数:
<rosparam file=”params.yaml” command=”load” ns=”params” />
<arg> launch文件内部的局部变量,仅限于launch文件使用
<arg name=”arg-name” default=”arg-value” />
(1)name:参数名
(2)value:参数值
调用:
<param name=”foo” value=”$(arg-name)” />
<node name=”node” pkg=”package” type=”type” args=”$(arg arg-name)” />
重映射<remap> 重映射ROS计算图资源的命名。
<remap from=”/turtlebot/cmd_vel” to=”/cmd_vel” />
(1)from:原命名
(2)to:映射之后的命名
嵌套<include> 包含其他lauch文件,类似C语言中的头文件包含。
<include file=”$(dirname)/other.launch” />
(1)file:包含的其他launch文件路径
十二、常用可视化工具的使用
1.Qt工具箱
(1)日志输出工具–rqt_console
(2)计算图可视化工具–rqt_graph
(3)数据绘图工具–rqt_plot
(4)图像渲染工具–rqt_image_view
2.Rviz
机器人开发过程中的数据可视化界面
3.Gazebo
三维物理仿真平台
参考资料:
古月-ROS入门21讲
ROS入门的基本操作相关推荐
- ROS入门跟着我就够了(二)上 ROS通信机制
由于这一章东西比较多,我分了上下两篇,下部分可以在< ROS 入门跟着我就够了>专辑中查看 ROS 中的基本通信机制主要有如下三种实现策略: 话题通信(发布订阅模式)服务通信(请求响应模式 ...
- python使用教程pandas-Python 数据处理库 pandas 入门教程基本操作
pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程. pandas提供了快速,灵活和富有表现力的数据结 ...
- 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 ...
最新文章
- CSS布局——横向两列布局
- python json库函数_python基础之JSON标准库
- 2019牛客暑期多校训练营(第二场)
- MyBatis二级缓存的配置
- 用户登陆注册功能(PHP)
- Struts2 s:iterator 用法
- static_cast与dynamic_cast类型转换
- qt调用SSDP协议
- linux查看内存和硬盘,Linux 查看内存,CPU及硬盘大小的步骤
- 如何注册一个免费的网站空间和域名
- 360 路由器设置 虚拟服务器,360安全路由器的设置方法
- 企业微信获取客户群里用户的unionid;企业微信获取客户详情
- 黄页宝贝工具栏软件发布了
- 基于深度学习的多任务人脸属性分析(基于飞桨PaddlePaddle)
- vimdiff比较两个文件
- 【NLP】keras Transformer 唐诗生成器
- LVGL V8之border styles
- 华为硬件工程师手册_华为是怎样开发硬件的 之一——概述
- R语言-一个寻找R函数功能源码的好方法
- {}怎样进行邮件推广