ROS理论与实践(以移动机器人为例)连载(二) ——ROS通信编程


在这里插入图片描述


1.ROS项目开发流程

创建工作空间
创建功能包
创建源代码
配置编译规则
编译与运行

工作空间类似于一个project;而功能包就是完成各个功能如图像处理、SLAM、Navigation等的子包;源代码相必就很熟悉了;编译规则指的是CMakeList.txt,由于C++是一种需要进行编译的语言,如果使用Python则不需要配置编译规则;编译与运行类似于buildall。

(1)创建工作空间

工作空间(workspace) 是一个存放工程开发相关文件的文件夹。

  • src:代码空间(Source Space)
    • 源代码存放地址
  • build:编译空间(build Space)
    • 存放了中间文件,如二进制文件
  • devel:开发空间(Development Space)
    • 存放最终生成的可执行文件和环境变量
  • install:安装空间(Install Space)
    结构
create workspace
$ mkdir -p catkin_ws/src
$ cd catkin_ws/src
$ catkin_init_workspace 
compile

必须返回到工作空间的根目录👇

$ cd catkin_ws
$ catkin_make

此时会生成devel和build两个文件夹📃,devel文件夹内的lib文件夹保存了pkg的可执行文件。

$ catkin_make install

这句命令可以产生install文件夹📃

config env
$ source /devel/setup.bash

如果使用的是zsh,则

$ source /devel/setup.zsh
check env
$ echo $ROS_PACKAGE_PATH

如果使用的是melodic18.04的话应该返回

/home/${usrname}/catkin_ws/src:/opt/ros/melodic/share
(2)创建功能包
$ catkin_create_pkg<package_name> [depend1] [depend2] [depend3]
create pkg
$ cd ~/catkin_ws/src
$ catkin_create_pkg learning_communication rospy roscpp std_msgs std_srvs

rospy是python的接口;roscpp是c++的接口;std_msgs是消息的接口;std_srvs是服务的接口

compile
$ cd ~/catkin_ws
$ catkin_make
$ source /devel/setup.zsh

这时我们已经完成了创建一个功能包,在功能包内存放了include用来存放头文件的文件夹、src用来存放源文件的文件夹、package.xml和CMakeLists.txt文件。

package.xml

在这里插入图片描述
在这里插入图片描述
其中含有<build_depend>编译依赖、<exec_depend>运行依赖,当发现需要添加其他依赖时,可以手动添加。
除此之外.xml文件中还包含版本号,发布者信息、📫、证书等。都以<...> ... </...>的格式构成。

CMakeLists.txt(编译过程)

可以参考CMakeLists使用简介和补充知识
Cmake

2.ROS Topic通信编程

依照于wiki官方 Writing a Simple Publisher and Subscriber (C++)的例程。

Registration
Registration
Message /std_msgs::String
Message /std_msgs::String
Publisher
ROS Master
Subscriber
Topic /chatter
(1)如何实现一个发布者
实现一个发布者
1.初始化ROS节点
2.向ROS Master注册节点信息 包括发布的话题名和话题中的消息类型
3.创建消息数据
4.按照一定频率循环发布信息

这里补充一个int main(int argc, char* argv[], cha

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值