ROS(Robot Operating System)学习之——如何从啥也没有撰写一个Publisher&&Subscriber节点

ROS是机器人操作系统(Robot Operating System)的英文缩写。ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。

很多做机器人的公司都是基于ROS在做的,比如做扫地机器人的;做自动驾驶的公司,很多也是基于ROS在开发,或者说以ROS为基础的架构上针对性的做一些优化和改进。

下面介绍的内容主要是基于慕课大学柴长坤老师的ROS入门课程
机器人操作系统入门_中国大学MOOC(慕课)
https://www.icourse163.org/course/ISCAS-1002580008?tid=1002759011
链接: link.
相关的源码在这个课程的github上可以找到。

在这里主要整理的一下如何从零开始撰写一个ROS节点并实现消息的收发机制,如有不当之处欢迎各位批评指正。

操作系统 Ubuntu14.04 或者16.04 或者18.04都可以
语言:C++

1.打开终端,新建一个文件夹:roslearn

$ mkdir roslearn

2.在roslearn 文件夹中新建一个文件夹 src

$ cd roslearn
$ mkdir src
$ cd src

3.在src文件夹中新建一个package,名字叫topic_demo

$ catkin_create_pkg topic_demo std_msgs rospy roscpp

4.在roslearn文件夹下,先catkin_make一下,生成build和devel两个文件夹

$cd …
$catkin_make
5.进入到roslearn/src/topic_demo/src文件夹下新建两个cpp文件,分别为talker.cpp和listener.cpp
$cd src/topic_demo/src
$touch talker.cpp
$touch listener.cpp

6.编写talker.cpp节点,源码如下图所示

ROS(Robot Operating System)学习之——如何从啥也没有撰写一个Publisher&&Subscriber节点_第1张图片

7.编写listener.cpp节点,源码如下图所示

ROS(Robot Operating System)学习之——如何从啥也没有撰写一个Publisher&&Subscriber节点_第2张图片

8.在topic_demo文件夹下新建文件夹msg,在msg文件夹下新建一个文件,名:gps.msg

文件内容如下:
string state
float32 x
float32 y

9.修改CMakeList.txt文件

9.1 添加catkin_make所需要的组件找寻项,此处为message_generation
find_package(catkin REQUIRED COMPONENTS
message_generation
roscpp
rospy
std_msgs
)
9.2 添加message文件到CMakeList.txt文件夹中
add_message_files(
FILES
gps.msg
)
9.3 添加generate_messages的依赖项
generate_messages(
DEPENDENCIES
std_msgs
)
9.4 增加catkin_package所需要的依赖项
catkin_package(
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
)
9.5 增加可执行文件并添加依赖的目标catkin库
add_executable(talker src/talker.cpp )
#必须添加add_dependencies,否则找不到自定义的msg产生的头文件
add_dependencies(talker topic_demo_generate_messages_cpp)
target_link_libraries(talker ${catkin_LIBRARIES})

add_executable(listener src/listener.cpp )
add_dependencies(listener topic_demo_generate_messages_cpp)
target_link_libraries(listener ${catkin_LIBRARIES})

10.修改package.xml文件

修改键值对


license修改为BSD
BSD

11.编译catkin_make

注意编译前最好删掉devel 和build文件夹
然后给src整个文件夹赋权限。

12.source环境

source devel/setup.bash

13.运行节点,查看节点发布接收信息是否正确

rosrun topic_demo talker
rosrun topic_demo listener

你可能感兴趣的:(ROS机器人操作系统学习)