ROS入门级教程:全面总结与实战技巧

更新:11-13 民间故事 我要投稿 纠错 投诉

src代码空间(源码空间)

1)创建工作空间

在“home”目录下创建“catkin_ws”(可以是ws1、ws2等),在“catkin_ws”目录下创建“src”,用于存放功能包源码。在“src”根目录中打开终端并输入$catkin_innit-workspace。你可以看到回复并知道这是一个工作区。

2) 编译工作空间

$catkin_make

3)设置环境变量

$ sourcedevel/setup.bash (仅在此终端中有用)

2.[endif]ROS创建函数包

1) [endif] 创建功能包

$catkin_creat_pkg[depend1] [depend1]~~~~

示例: $ catkin_creat_pkglearning_communication std_msgs rospy roscpp

注:1.可以在src目录下查看

2.learning_communication函数包名

3. std_msgs rospy roscpp数据结构

2)编译

$catkin_make

2.ROS通信编程

ROS通信由节点(Node)统一起来,节点作为执行计算的进程而存在。 ROS网络的通信是网络内节点之间的通信。节点之间的连接必须通过节点管理器(Master)形成。 ROS通信形式主要分为三种类型:Topic、Service和Action。

1)主题编程

1.1 在“Function Pack”目录下新建文件“talker.cpp”,并新建listener.cpp来存放程序。 (新的talker.cpp是新的发布者,新的listener.cpp是新的订阅者)

注意:Python可执行文件不需要编译。

C++需要编译

1.2 编译

函数包根目录下有一个“CMakeLists.txt”(编译即可实现)

在src 根目录中打开终端并使用$catkin_make 进行编译。

1.3 运行可执行程序

开始$roscore

打开终端并输入$rosrunlearning_communication talker

然后打开终端,输入$rosrunlearning_communicationlistener

注:稍后可以看到talker和listener是同步的,实现了数据交互。

定义主题消息:

1)定义msg文件

在函数包的learning_communication目录下的src根目录下新建文件“msg”(定义主题消息一般放在这里)

在msg目录下创建一个文档“person.msg”文件

人物.msg

2)在package.xml中添加功能包依赖

注意:1.部分ROS版本中的exec_depend需要改为run_depend(依赖)

2、在package.xml中的~~~~~depend后面添加上面两句。

3.右键单击“gedit”打开package.xml,以便对其进行编辑。

3)将编译选项添加到CMakeLists.txt(src文件下)。

注意:1.此代码是在CMakeLists.txt文件中修改的。

2、使用src根目录下的CMakeLists.txt进行编译。

3. 使用$rosmsg show person 命令检查person 是否定义成功。

2)服务编程

1) 定义服务请求和响应

1.1 定义srv文件

在src目录下功能包的learning_communication目录的src根目录下新建文件“srv”文件,然后在“srv”文件中新建文档AddTwolnts.srv

1.2 在package.xml中添加功能包依赖

注意:1.部分ROS版本中的exec_depend需要改为run_depend(依赖)

2、在package.xml中的~~~~~depend后面添加上面两句。

3.右键单击“gedit”打开package.xml,以便对其进行编辑。

1.3 将编译选项添加到CMakeLists.txt(src文件下)。

注意:使用src根目录下的CMakeLists.txt进行编译。

2)实现服务器

在功能包learning_communication目录下的src目录下新建文件“servicer.cpp”。

1.1 初始化ROS节点。

1.2 创建服务器实例。

1.3 循环等待服务请求,进入回调函数。

1.4 在回调函数中完成服务函数的处理并反馈响应数据。

3)实现客户端

在功能包learning_communication目录下的src目录下新建文件“client.cpp”。

1.1 初始化ROS节点。

1.2 创建客户端实例。

1.3 发布服务请求数据。

1.4 等待服务器处理的响应结果。

3)编译代码

将编译选项添加到CMakeLists.txt(在src文件下)

注:1、使用src根目录下的CMakeLists.txt进行编译。

2.启动$roscore(启动master)

打开终端,输入$rosrunlearning_communication服务器

然后打开终端,输入$rosrunlearning_communication client

2)动作编程(动作)

1.1 问答沟通机制。

1.2 持续反馈。

1.3 任务执行过程中可以暂停运行。

1.4 基于ROS的消息机制的实现。

自定义操作消息

1) 定义动作文件

在src目录下的功能包learning_communication目录的src根目录下新建文件“action”文件,然后在“action”文件中新建文档DoDishes。

动作文件

注意:做菜。 Action文件用于定义目标信息;定义结果信息;定义周期性反馈信息

2)在package.xml中添加功能包依赖

3)将编译选项添加到CMakeLists.txt(src文件下)。

注:1、实现action server(src目录下).cpp;

实现action client(src目录下).cpp;

编译;

2.启动$roscore(启动master)

打开终端并输入$rosrun

learning_communication client 启动客户端

然后打开终端并输入$ rosrun

Learning_Communication Server 启动服务器

4.ROS采用分布式运行框架,ROS通信模块之间采用点对点松耦合的网络连接形式。

用户评论

素颜倾城

刚开始接触ROS,看到这个总结感觉很不错!

    有7位网友表示赞同!

凉城°

希望能详细介绍一下ROS的基本概念和结构。

    有10位网友表示赞同!

孤城暮雨

想了解如何搭建ROS开发环境,这篇文章能帮到我嗎?

    有7位网友表示赞同!

爱你的小笨蛋

零基础学习ROS确实挺难的,找个好的总结太实用了!

    有9位网友表示赞同!

敬情

感觉这篇总结应该适合刚开始接触ROS的人看呀。

    有9位网友表示赞同!

命该如此

这个标题很吸引人,我已经迫不及待想要了解一下了!

    有18位网友表示赞同!

怪咖

如果能附上一些案例和代码示例就更好了!

    有6位网友表示赞同!

寻鱼水之欢

学习ROS的步骤通常都是从基础开始的吗?

    有12位网友表示赞同!

仅有的余温

这篇总结有没有讲到ROS常用的工具库呢?

    有20位网友表示赞同!

|赤;焰﹏゛

之前想过学习ROS,现在看到这个标题终于鼓起勇气了!

    有11位网友表示赞同!

封心锁爱

想了解一下ROS在实际应用中的场景和案例。

    有8位网友表示赞同!

孤败

希望这篇总结能够清晰易懂,能够让我快速入门ROS!

    有8位网友表示赞同!

入骨相思

ROS可以用来做什么?有没有什么具体的应用方向呢?

    有19位网友表示赞同!

♂你那刺眼的温柔

学习ROS需要掌握哪些编程语言和技术?

    有9位网友表示赞同!

苏莫晨

这个标题看起来很全面啊,能把主要内容都概括了吗?

    有9位网友表示赞同!

她最好i

希望这篇总结能够介绍一些ROS的优缺点和使用注意事项!

    有17位网友表示赞同!

浮殇年华

能不能推荐一些其他的学习资源或者资料呢?

    有16位网友表示赞同!

纯情小火鸡

ROS的发展前景如何?未来的应用会更广泛吗?

    有7位网友表示赞同!

■□丶一切都无所谓

学习ROS的过程应该比较有趣吧?

    有20位网友表示赞同!

【ROS入门级教程:全面总结与实战技巧】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:2017年回顾:年度大事记与影响盘点 下一篇:《北京青年》经典重温:青春岁月的共鸣之旅