博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器人ROS系统学习随笔->1《ROS基础》
阅读量:4964 次
发布时间:2019-06-12

本文共 2139 字,大约阅读时间需要 7 分钟。

工作空间是一个存放工程开发相关文件的文件夹。所有文件放到一个文件系统下,ROS开发所有工程,称为工作空间。

1、创建工作空间

workspace工作空间:

文件夹:

src:代码空间(所有工程包源码)

build:编译空间(编译产生的中间文件)

devel:开发空间(较常用,编译完成后所生成的可执行文件)

install:安装空间(与devel作用基本相同在ros2中合成了一个文件夹)

工作空间结构:

创建工作空间:

编译工作空间:

编译后无措,基于c_make开发的封装ros用。不会编译源码,因为什么都没有添加,可以在哥哥文件夹下查看。

设置环境变量:

很重要,之后找不到安装包可能就是环境白能量没有安装好,找不到节点等问题。终端有zsh和bash,根据自己用的设置后缀。在终端设置后,环境变量只在本终端有效,换个终端之后就无效了,建议在home根目录下改。命令放到根目录下,

vi ~/.bashrc

在最后一行中添加:

source ~/catkin_ws/devel/setup.bash

按shift+wq!(小写与大写指令不同)  保存退出。

然后:

source ~/.bashrc

使设置生效。在打开一个终端查看环境变量即可发现环境变量已经存在。

以下为只有当前终端有环境变量。

检查环境变量:

到此工作空间就建立好了。

创建功能包

指令:

catkin_create_pkg 
[depend1] [depend2] [depend3]

创建功能包:

cd ~/catkin_ws/srccatkin_create_pkg learning_communication std_msgs rospy roscpp

出现一系列创建就成功了。rospy :python依赖。 roscpp: c++依赖。

在catkin_ws/src下就已经成功创建了功能包,打开后会有一些文件和文件夹。src为防止功能包代码,include防止功能包头文件。package.xlm为功能包的一些描述,其中有功能包的一些依赖,在后期添加的依赖要在这里修改。

编译功能包:

cd ~/catkin_wscatkin_makesource ~/catkin_ws/devel/setup.bash

编译后会发现新建的功能包。

在src目录下:同一个工作空间下,不允许存在同名功能包;不同工作空间下允许存在同名功能包。

当同一个系统中存在多个同名功能包时ROS的会如何运行,一什么样的顺序去运行,会优先选择那个工作空间中的功能包。

ROS工作空间的Overlaying机制,即工作空间的覆盖。

env:查看系统的环境变量。

env | grep ros  :过滤出与ros相关的环境变量。

在锁有环境变量中,其中ROS_PACKAGE_PATH=[路径1][路径2]

ros搜寻功能包的路径会由1向2,依次像后找,如果都找不到系统会报错。

设置的新路径会优先放置到最前端。

测试:

安装一个安装包,由于我用的是ROS Melodic,所以安装ros-melodic-roscpp-tutorials

sudo apt-get install ros-melodic-roscpp-tutorials

如果没安装过就显示安装了。

打开终端使用指令:

rospack find roscpp_tutorials

就会找到安装包路径。

在自己的工作空间新建一个同名的软件包roscpp_tutorials

source ~/.bashrc

使环境变量生效(如果是复制的,需要这样设置)

然后在打开查找安装包路径,就会变为自己所用工作空间的安装包。

2、ROS通信编程

话题编程、服务编程、动作编程

话题通讯模型:

话题编程流程:

1、创建发布者。

小知识:

创建文本文件,在ubuntu18中可能右键没有文本,因此需要我们手动添加。打开模板文档在其中打开终端输入:

sudo gedit txt

会出现一个文本,点保存即可。

如何定义话题消息--话题编程

1、定义msg文件

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

<build_depend>message_generation</build_depend>

<exec_depend>message_runtime</exec_depend>

3、在CMakeList.txt添加编译选项

。。。find_package(……message_generation)

。。。catkin_package(CATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs message_runtime)

。。。add_message_files(FILES Person.msg)

generate_mesages(DEPENDENCIES std_msgs)

2、创建订阅者。

3、添加编译选项

4、运行可执行程序。

3、实现分布式通信

4、ROS中的关键组件

转载于:https://www.cnblogs.com/vcan123/p/11503545.html

你可能感兴趣的文章
Binding object to winForm controller through VS2010 Designer(通过VS2010设计器将对象绑定到winForm控件上)...
查看>>
Spring Boot实战笔记(二)-- Spring常用配置(Scope、Spring EL和资源调用)
查看>>
SwaggerUI+SpringMVC——构建RestFul API的可视化界面
查看>>
springmvc怎么在启动时自己执行一个线程
查看>>
C# 通知机制 IObserver<T> 和 IObservable<T>
查看>>
Code of Conduct by jsFoundation
查看>>
C#小练习ⅲ
查看>>
电源防反接保护电路
查看>>
arraylist
查看>>
zoj 1649 Rescue (BFS)(转载)
查看>>
2124: 等差子序列 - BZOJ
查看>>
字符串匹配算法综述
查看>>
Linux centosVMware shell 管道符和作业控制、shell变量、环境变量配置文件
查看>>
【设计模式】工厂模式
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
客户数据库出现大量cache buffer chains latch
查看>>
機械の総合病院 [MISSION LEVEL: C]
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>