【ROS学习笔记】16.常用可视化工具的使用_rqt image view-CSDN博客
其实就是:通信框架+实用软件。ROS能做到的,失去ROS也能做到。
(48 封私信 / 80 条消息) 如何优雅地在windows上玩ROS(一个紧致的解决方案) - 知乎
Windows版Ros环境的搭建以及Rviz显示激光点云信息_rviz windows-CSDN博客
(48 封私信 / 72 条消息) ROS核心概念解析:从Node到Master,再到roslaunch的全面指南 - 知乎
Master & Nodes
(48 封私信 / 64 条消息) ROS入门(四)---ROS节点 - 知乎
Master节点管理器(比如帮助节点找到彼此);Node节点,一个可执行文件(进程),就是我提的编程“元件”
Messages & Topics
消息和话题,一种不同时不同地的通信机制及分类方式。节点可以发布消息到话题,也可以订阅话题以接收消息。
Workspace
(48 封私信 / 80 条消息) 【ROS笔记】工作空间(workspace)、功能包(package)的介绍及创建 - 知乎
工作空间,很像VSCode打开的工作目录来管理许多文件;
更像Python的venv虚拟环境来设定环境变量、各个软件包的定位。
四个部分:
src
: 代码空间(Source Space),最常用、最重要的文件夹,用来存储所有ROS功能包(package)的源文件。功能包(package)是ROS中的基本单元,包含ROS节点、库、配置文件等:config
:功能包的配置文件,用户创建。include
:需要用到的头文件。scripts
:可以直接运行的Python脚本。src
:需要编译的C++代码。launch
:所有启动文件。msg
:自定义的消息类型。srv
:自定义的服务类型。action
:自定义的动作指令。CMakeLists.txt
:Catkin编译器编译功能包的规则。package.xml
: 功能包清单,可得到该package的名称、版本号、信息描述、作者信息和许可信息等。更重要的,<build_depend> ... </build_depend>
标签定义了代码编译所依赖的其它功能包,<exec_depend> ... </exec_depend>
标签定义了可执行程序运行时所依赖的其它功能包。
build
: 编译空间(Build Space),由catkin_make
命令自动生成,用来存储工作空间编译过程中产生的缓存信息和中间文件。devel
: 开发空间(Development Space),由catkin_make
命令自动生成,用来放置编译生成的可执行文件。install
: 安装空间(Install Space),不是必需的,很多工作空间没有该文件夹。编译成功后,可以使用make install
命令将可执行文件安装到该空间中,运行该空间中的环境变量脚本,即可在终端中运行这些可执行文件。
创建工作空间
创建一个ROS工作空间(ROS Workspace) - Jason_hjx - 博客园
名称以catkin_ws
为例。
mkdir -p ~/catkin_ws/src #使用系统命令创建工作空间目录
cd ~/catkin_ws/src
catkin_init_workspace # ROS的工作空间初始化命令
创建功能包
ROS不允许功能包的嵌套,多个功能包必须平行放置在代码空间(
src
)中。
ROS直接创建功能包的命令catkin_create_pkg
,用法:
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
即需要输入功能包名称和所依赖的其它功能包。举例,进入代码空间,创建功能包:
cd ~/catkin_ws/src
catkin_create_pkg leraning_communication std_msgs rospy roscpp
对于新的功能包,现在往里面写代码吧……Happy Coding~
我的观念里,驱动代码和决策代码是分开的。对于特定的比赛任务,我们只需要留一个功能包来存放决策代码,毕竟决策代码也难以复用。
编译工作空间
创建完成后,在工作空间的根目录下使用catkin_make
命令编译整个工作空间:
cd ~/catkin_ws # 回到工作空间的根目录
catkin_make # 编译整个工作空间
编译中,工作空间的根目录会自动产生devel
和build
两个文件夹即其中的文件。
激活工作空间
编译完成后,在devel文件夹中已经产生几个setuo.*sh
形式的环境变量设置脚本,使用source
命令运行这些脚本,可以使工作空间中的环境变量生效。
source ~/catkin_ws/devel/setup.bash # ~/catkin_ws是工作空间目录
这样即可直接使用工作空间内的软件包(就像激活python虚拟环境后才可以执行python的可执行包)。检查环境变量是否生效:
echo $ROS_PACKAGE_PATH
如果打印的路径中包含当前工作空间中的路径,则说明环境变量设置成功。
source
命令设置的环境变量只能在当前终端生效,如果希望在所有终端生效,需要在终端配置文件中加入环境变量设置:echo "source /home/xxx/catkin_ws/devel/setup.bash" >> ~/.bashrc
使用工作空间里的功能包
rospack # 获取功能包的信息
rosdep # 自动安装功能包依赖的其它包
roscd # 功能包目录跳转
roscp # 拷贝功能包中的文件
rosed # 编辑功能包中的文件
rosrun # 运行功能包中的可执行文件
roslaunch # 运行启动文件,一次性把多个节点按照我们预先的配置启动起来
rosparam
参数服务器,管参数,可能还调参吧
roscore
总程序。rosout类似stdout
roslaunch
一次性把多个节点按照我们预先的配置启动起来
格式包括以下标签:
<launch> <!--根标签-->
<node> <!--需要启动的node及其参数-->
<include> <!--包含其他launch-->
<machine> <!--指定运行的机器-->
<env-loader> <!--设置环境变量-->
<param> <!--定义参数到参数服务器-->
<rosparam> <!--启动yaml文件参数到参数服务器-->
<arg> <!--定义变量-->
<remap> <!--设定参数映射-->
<group> <!--设定命名空间-->
</launch> <!--根标签-->
调试
vscode下调试ROS项目,节点调试,多节点调试,roslauch调试 - 知乎