ROS入门(以重德智能教程为基础)

ROS入门
1.1生成一个工作空间即一个目录
方法:$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws
$ catkin_make
s o u r c e   / c a t k i n w s / d e v e l / s e t u p . b a s h ( 刷 新 加 载 目 录 ) 为 避 免 每 打 开 一 个 终 端 都 要 重 新 s o u r c e 可 在 终 端 中 输 入   source ~/catkin_ws/devel/setup.bash(刷新加载目录) 为避免每打开一个终端都要重新source可在终端中输入~ source /catkinws/devel/setup.bash(source  echo “source ~/catkin_ws/devel/setup.bash “ >> ~/.bashrc。
此时创建的工作空间是空的,但仍可以通过$ catkin_make 命令编译它。
编译之后工作空间终会出现三个一级子目录——src,devel,build.
其中srcl里面是package源代码,devle里面是目标文件,bulid里面是缓存和中间文件。src 是我们编程的地方,其他的又系统负责。
package是ROS的基本组织形式,catkin编译的基本单元,它可以包含一个或多个节点,其最简单的结构包含——CMakeLists.txt(package的编译规则——要编译的源文件,需要的依赖,生成的目标文件等)和package.xml(定义了package的属性,即它的描述)。package中一般还包含scripts(存放可执行文件),include(包含头文件),src(源码Python或cpp)action,launch(一次性运行多个节点),config(配置文件)。
在这里插入图片描述在这里插入图片描述

1.2查找package
(1)rospack
$ rospack find package_name #查找某个功能包的地址
$ rospack list #列出本地所有功能包
(2)roscd
$ roscd package_name #跳转到某个功能包
(3) rosls
$ rosls package_name #列出某功能包目录下的目录及文件信息。
(4)rosed
$ rosed packsge_name file_name #编辑功能包中的某个文件。
(5)catkin_create_pkg
$ catkin_create_pkg package_name #创建一个功能包
(6)rosdep
$ rosdep install [package_name] #安装某个功能包的依赖
然而用IDE编写的话这些不太重要
已自带功能包turtlesim为例,见视频1.2。
1.3ROS节点(node)和节点管理器(Master)
ROS节点就是执行某些动作的进程。它可注册连接到Master,与其他的node通信。
创建node 的一种方法是在终端中输入命令直接创建,另一种是通过Python或C++语言编写代码创建,当然在IDE中创建更加方便。
node能够独立地运行代码来执行某些任务,还可以通过发送和接受消息与其他node 通信。这些消息包含数据、命令、完成其他任务所需的信息等,这些信息叫做主题(topic)。节点发布信息到相应的主题,同时其他node 可以通过订阅该主题接受信息。某些node 既能同时发布多个topic,也能同时订阅多个主题。
通过rosrun启动node
$ rosrun package_name node_name
其他常用命令
$ rosnode list #列出当前运行的node。
$ rosnode info node_name #列出某节点的详细信息,如发布(Publications)和订阅(Subscriptions)的topic、服务(Services)等。
$ rosnode kill node_name #杀死某个节点。
如果需要启动多个节点则可以通过roslaunch启动Master和多个节点。
$ roslaunch package_name file_name
在这里插入图片描述
ROS节点管理器为节点提供命名和注册服务,追踪topic的发布来源和订阅者,使独立的node能定位到其他node的位置从而建立node间的通信。在进行通行时最常用的协议是TCP/IP或者是TCPROS。一个新的node启动之后,在Master没有通知其他node之前该node不能与其他node通信。
通过roscore启动Master
$ roscore
在启动Master的同时还会启动parameter server(ROS参数服务器)和rosout(日志节点)
以turtlesim和ROS fro Beginners为例,见视频1.3
1.4topic和message
topic是异步通信方式,节点之间通过发布和订阅进行通信。发布者只负责发布,订阅者只负责处理。
rostopic list查看节点的主题
$ rostopic list #列出当前所有topic
其他命令
$ rostopic info /topic_name #列出某个topic的属性
$ rostopic echo /topic_name #显示某个topic的内容
$ rostopic pub /topic_name #向某个topic发布内容
$ rostopic type /topic_name #查看主题的消息类型即message。
message是topic内容的数据类型,如string,uint8,int8,int16,int32,int64,bool,time等,定义在*.msg文件中。
$ rosmsg list #列出所有的msg
当然可通过管道查看特定package的消息类型 :$ rosmsg list | grep package_name
$ rosmsg show /msg_name #显示消息类型的具体内容(ROS消息类型的命名参考格式 [package_name]/[message_name])
在这里插入图片描述

以turtlesim和ROS fro Beginners为例,见视频1.4
1.5service 和srv
service是ROS中的同步通信方式,node间通过请求,响应进行通信。
$ rosservice list #列出当前所有的service
$ rosservice info service_name #显示某个service的属性
$ rosservice call service_name args #调用某个service传递信息
srv是service通信的数据格式,定义在*.srv文件中。
$ rossrv list
$ rossrv show
与msg类似。
以turtlesim为例,见视频1.5.
1.6 parameter server(参数服务器)
parameter server负责存储各种参数的字典,可用命令行,launch文件和node读写参数。
$ rosparam list #列出当前所有参数
$ rosparam get param_key #显示某个参数的值
$ rosparam set param_key param_vallue #设置某个参数
$ rosparam dump file_name #保存参数到文件
$ rosparam load file_name #从文件中读取参数
$ rosparam delete param_key #删除参数的键等于删除该参数

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值