AutoLabor-ROS-Python 学习记录——第一章 ROS概述与环境搭建
引言
该文档主要基于赵虚左老师的课程【Autolabor初级教程】ROS机器人入门
,撰写一些 ROS Python 相关的重要知识点或者配置内容。
- 课程视频链接:【Autolabor初级教程】ROS机器人入门
- 课程电子书:ROS机器人入门课程《ROS理论与实践》零基础教程
- ROS noetic 配置文档:ROS配置
第一章 ROS概述与环境搭建
ROS 文件系统架构:
WorkSpace --- 自定义的工作空间|--- build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。|--- devel:开发空间,用于存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等。|--- src: 源码|-- package:功能包(ROS基本单元)包含多个节点、库与配置文件,包名所有字母小写,只能由字母、数字与下划线组成|-- CMakeLists.txt 配置编译规则,比如源文件、依赖项、目标文件|-- package.xml 包信息,比如:包名、版本、作者、依赖项...(以前版本是 manifest.xml)|-- scripts 存储python文件|-- src 存储C++源文件|-- include 头文件|-- msg 消息通信格式文件|-- srv 服务通信格式文件|-- action 动作格式文件|-- launch 可一次性运行多个节点 |-- config 配置信息|-- CMakeLists.txt: 编译的基本配置
1.0 ROS 演示
ROS 内置了一些小程序,可以通过运行这些小程序以检测 ROS 环境是否可以正常运行
- 首先启动三个命令行(ctrl + alt + T)
- 命令行1键入:
roscore
- 命令行2键入:
rosrun turtlesim turtlesim_node
(此时会弹出图形化界面) - 命令行3键入:
rosrun turtlesim turtle_teleop_key
(在3中可以通过上下左右控制2中乌龟的运动)
- 命令行1键入:
最终结果如下所示:
注意:光标必须聚焦在键盘控制窗口,否则无法控制乌龟运动。
1.1 集成开发环境_VsCode基本实现流程(为Python)
Python 文件:
#! /usr/bin/env python"""
Python 版HelloWorldAuthor: Penry
Version: 1.0
"""import rospyif __name__ == "__main__":rospy.init_node("hello11")rospy.loginfo("Hello World!1111")
由于一种编写 ROS-Python 习惯的沿袭,某些开源项目编写的 .py
文件没有经过 CMakeLists.txt
配置,导致编译时候出现如下报错:
"python": 没有那个文件或目录
原因: 当前 noetic 版本中,python3 为默认 python 版本,而 python3 与 python2 不兼容
有三种解决方案:
- 直接声明解释器为 python3 (不建议)
/usr/bin/env python3
- 通过软连接将 python 连接到 python3 (建议)
- 备份现有链接:
sudo mv /usr/bin/python /usr/bin/python.bak
- 创建新链接:
sudo ln -s /usr/bin/python3 /usr/bin/python
- 验证链接:
ls -l /usr/bin/python
- 备份现有链接:
- 配置 CMakeLists.txt (推荐)
配置好软连接之后,即使不配置 CMakeLists.txt
,也可以按照以下步骤成功运行 .py
文件:
Ctrl+Shift+B
编译- 将
功能包/scripts
在终端打开 - 终端输入
chmod +x *.py
赋予所有.py
文件执行权限 - 终端输入
ll
查看可执行文件 - 新建两个终端:
- 第一个终端输入
roscore
启动 ROS 主进程 - 第二个终端输入先输入
source ./devel/setup.bash
配置 ROS 环境,再输入rosrun 包名 可执行文件名
运行节点.
- 第一个终端输入