ROS操作系统入门学习

ROS(Robot Operating System)是机器人操作系统,本文详细介绍了ROS的基础知识,包括catkin工作空间、package的结构与配置文件、节点、通信方式(Topic、Service、Parameter Server)等。此外,还涉及了仿真环境Gazebo、可视化工具Rviz以及常用工具如rosbag、rqt等的使用。通过实例展示了如何创建和运行ROS节点,以及如何进行话题通信和服务调用。文章适合ROS初学者入门学习。
摘要由CSDN通过智能技术生成

ROS操作系统入门(https://www.bilibili.com/video/av24585414/?p=5)

一、系统工程目录图

1、catkin+工作空间

catkin是ros定制的编译构建系统,对cmake的扩展

所有代码都存在catkin workspace

catkin_make初始化工作空间 (编译)

在终端中

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/ #回到工作空间

catkin_make

source ~/catkin_ws/devel/setup.bash # 编译完成后要source刷新环境

1.2、在这三个文件中只有src是写代码的地方

package是编译的基本单元

catkin编译的对象就是在src目录下一个又一个递归的package包

 

2、package

ros软件的基本组织形式;catkin编译的基本单元;一个package可以包含个可执行文件(节点)

├── CMakeLists.txt #package的编译规则(必须)

├── package.xml #package的描述信息(必须)

├── src/ #源代码文件

├── include/ #C++头文件

├── scripts/ #可执行脚本

├── msg/ #自定义消息

├── srv/ #自定义服务

├── models/ #3D模型文件

├── urdf/ #urdf文件

├── launch/ #launch文件

CMakeLists.txt: 定义package的包名、依赖、源文件、目标文件等编译规则,是package

不可少的成分

package.xml: 描述package的包名、版本号、作者、依赖等信息,是package不可少的成

src/: 存放ROS的源代码,包括C++的源码和(.cpp)以及Python的module(.py)

include/: 存放C++源码对应的头文件

scripts/: 存放可执行脚本,例如shell脚本(.sh)、Python脚本(.py)

msg/: 存放自定义格式的消息(.msg)

srv/: 存放自定义格式的服务(.srv)

models/: 存放机器人或仿真场景的3D模型(.sda, .stl, .dae等)

urdf/: 存放机器人的模型描述(.urdf或.xacro)

launch/: 存放launch文件(.launch或.xml)

一个package必须要有这两个文件CMakeLists.txt和 package.xml

 

2.2、CMakeLists.txt和 package.xml

2.2.1CMakeLists.txt

规定catkin编译的规则;

例如:源文件、依赖项、目标文件

具体的写法:

cmake_minimum_required() #CMake的版本号

project() #项目名称

find_package() #找到编译需要的其他CMake/Catkin package

catkin_python_setup() #catkin新加宏,打开catkin的Python Module的支持

add_message_files() #catkin新加宏,添加自定义Message/Service/Action文件

add_service_files()

add_action_files()

generate_message() #catkin新加宏,生成不同语言版本的msg/srv/action接口

catkin_package() #catkin新加宏,生成当前package的cmake配置,供依赖本包的其他软件包调用

add_library() #生成库

add_executable() #生成可执行二进制文件

add_dependencies()#定义目标文件依赖于其他目标文件,确保其他目标已被构建

target_link_libraries() #链接

catkin_add_gtest() #catkin新加宏,生成测试

install() #安装至本机

//

一般编译出问题多是CMakeLists.txt和它所在的依赖包

2.2.2、package.xml

定义package的属性

例如:报名、版本号、作者、依赖等

具体的写法:

<pacakge> 根标记文件

<name> 包名

<version> 版本号

<description> 内容描述

<maintainer> 维护者

<license> 软件许可证

<buildtool_depend> 编译构建工具,通常为catkin

<build_depend> 编译依赖项,与Catkin中的

<run_depend> 运行依赖项

</package> 根标记文件

3、通常我们需要改的地方是build和run这两个文件;

有时,有的package包下有manifest.xml(它是rosbuild编译系统(比较旧的编译系统)采用的包信息清单,累次catkin的package.xml)。

ros可执行代码文件一般有两种来源脚本(shell、python)和C++(头文件、源文件)

scripts路径用来放可执行脚本的文件(*.py、*.sh)

include文件放头文件(*.h)

src文件放源文件(*.cpp),有时还会出现python的文件脚本

 

通常还可以放一些

自定义通信格式

消息(msg)、服务(srv)、动作(action)

 

 

 

package可以放代码、通信格式、launch以及配置文件

launch文件(launch)、配置文件(yaml)(参数、设置等),配置文件一般是什么内容什么格式;

常有指令:

认识catkin_ws文件

tree -L 1目录

build放置的是中间文件和缓存

devel放置的是生成的目标文件

创建package.xml文件catkin_create_pkg test1

若要创建文件并添加依赖包

catkin_create_pkg test roscpp rospy std_msgs nav_msgs

依赖 通信 导航

1、cd ~/catkin_ws/src

克隆github的文件

git clone https://github.com/DroidAITech/ROS-Academy-for-Begnners.git

2、克隆的文件有些依赖没装,需下载

安装教学包所需的依赖

$ cd ~/catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y
$ rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y

3、编译并刷新环境

catkin_make

source ~/tutorial_ws/devel/setup.bash

(rospack list测试 )

rospack list | grep tutorial_ws(管道操作一下)

由于source生命周期很短,将这一段放到barshrc文件下

echo “source ~/tutorial_ws/devel/setup.bash” >> ~/.bashrc

vi .bashrc(查看bashrc文件)

/

4、rosls topic_demo/

可以直接定义到所要查看的目录

rosed topic_demo CMakeLists.txt

可以直接定义到包里面的文件

roscd robot_sim_demo/

可以直接cd到功能包底下

robot_sim_demos仿真程序

launch

models放置博物馆的场景
param放置参数

scripts放置python脚本

urdf存放机器人模型参数

5、Metapacakge

软件包管理(虚包),自身没有内容,却依赖了其他的软件包;

Metapacakge

名称 描述 链接

navigation

导航相关的功能包集 https://github.com/ros-planning/navigation

moveit

运动规划相关的(主要是机械臂)功能包集 https://github.com/ros-planning/moveit

image_pipeline

图像获取、处理相关的功能包集 https://github.com/ros-perception/image_common

vision_opencv

ROS与OpenCV交互的功能包集 https://github.com/ros-perception/vision_opencv

turtlebot Turtlebot

机器人相关的功能包集 https://github.com/turtlebot/turtlebot

pr2_robot pr2

机器人驱动功能包集 https://github.com/PR2/pr2_robot

软件包

内容

robot_sim_demo

机器人仿真程序,大部分示例会用到这个软件包

topic_demo

topic通信,自定义msg,包括C++和python两个版本实现

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值