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入门级教程:全面总结与实战技巧】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
刚开始接触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位网友表示赞同!
希望这篇总结能够介绍一些ROS的优缺点和使用注意事项!
有17位网友表示赞同!
能不能推荐一些其他的学习资源或者资料呢?
有16位网友表示赞同!
ROS的发展前景如何?未来的应用会更广泛吗?
有7位网友表示赞同!
学习ROS的过程应该比较有趣吧?
有20位网友表示赞同!