前言
刚下完ros1结果发现ros1到2025年就停止维护了,对比之前的ros1,ros2显然更符合当下趋势,所以就转为ros2的学习,正好ros2很久之前下载过了。
一、ros2和ros1对比(具体可以听古月居讲解2.ROS2对比ROS1_哔哩哔哩_bilibili)
1.ros2的使用是基于DDS的Discovery机制,意思是所有节点的管理不再需要依托于Master进行管理,而是通过Discovery机制实现节点间的自动发现和服务发现。
自动发现:DDS的Discovery机制允许节点在加入网络时自动发现其他节点,以及它们所提供的服务(如话题、服务等)。这样,节点无需事先知道其他节点的存在或配置信息。
服务发现:DDS允许节点查询和发现其他节点提供的服务。例如,客户端可以发现可用的服务器节点,然后与之建立连接。
这意味着ros2可以不依赖于中心化管理,而是使节点间能够互相通信,这样大大减少了单点故障导致整个系统瘫痪的风险。
2.ros2重新设计了用户API,但使用方法类似,具体哪里类似我还没学
3.ros1使用rosbuild、catkin管理项目,ros2使用升级版的ament、colcon
二、ros2开发环境配置
由于之前下载过ros2,所以不再重新下载了,直接进入环境配置,因为很久以前配的ros2,很多东西我也忘了配没配过,可以使用以下命令看看是否下载
dpkg -s <软件包名>
我这里先验了git,也就是
dpkg -s git
可以看到已经安装过了。
如果没安装过可以直接sudo apt install git安装一下
下载完之后再下载vscode,在网页上搜索vscode,下.deb后缀的安装包安装就可以
下载完vscode之后可以下载一些必要的插件:
包括C/C++、简体中文插件、CMake(用来编译c/c++文件的)、Python、jubyter、intellicode(代码提示的)、Markdown all in one(markdown文本高亮显示的)、MSG language support(MSG格式的高亮显示)、ROS、URDF(URDF文件高亮显示的)、vscode-icons(把文件显示图标变得更有辨识性)


vscode配置好之后就可以进入创建工作空间了:
我是根据古月居视频里的配置步骤来的:(建议先看一下后面的遇到问题部分)
6.工作空间与功能包:开发过程的大本营_哔哩哔哩_bilibili

遇到问题 :
1、由于我之前安装过anaconda3,所以我的工作空间是创建了一个虚拟环境,在虚拟环境里安装的,创建虚拟环境具体步骤如下:
conda create -name myros python=3.8
创建完之后激活:
conda activate myros
如果想退出虚拟环境:
conda deactivate
----------------------------------------------------------------------------------------------------------------
经过后来的学习发现由于colcon构建写死的运行系统环境的python,所以好像配置虚拟环境也没什么很大的意义……
------------------------------------------------------------------------------------------------------------------------------
2、在自动安装依赖的最后一步报错:
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
learning_gazebo_fortress: Cannot locate rosdep definition for [python3-pytest]
learning_service: Cannot locate rosdep definition for [python3-pytest]
learning_tf: Cannot locate rosdep definition for [python3-pytest]
learning_parameter: Cannot locate rosdep definition for [python3-pytest]
learning_urdf: Cannot locate rosdep definition for [python3-pytest]
learning_pkg_python: Cannot locate rosdep definition for [python3-pytest]
learning_gazebo: Cannot locate rosdep definition for [python3-pytest]
learning_launch: Cannot locate rosdep definition for [python3-pytest]
learning_topic: Cannot locate rosdep definition for [python3-pytest]
learning_qos: Cannot locate rosdep definition for [python3-pytest]
learning_node: Cannot locate rosdep definition for [python3-pytest]
learning_cv: Cannot locate rosdep definition for [python3-pytest]
learning_action: Cannot locate rosdep definition for [python3-pytest]
将rosdepc更新一下就解决了,先运行一下更新程序:
rosdepc update
更新完重新执行自动安装依赖的最后一步,成功安装:

3、在编译工作空间的最后一步又遇到了报错:
显示no module named 'em',这种一般直接安装一下就好了,运行:
pip install empy
然而再次运行colcon build再次报错: 
查阅网上后发现是empy的版本与安装的Python版本不契合,具体解决方法我参考了大佬的文章解决编译ros2功能包报错ModuleNotFoundError: No module named ‘em‘_modulenotfounderror: no module named 'em-优快云博客
剩下的就是各种包没安装……
No module named 'numpy',那就pip install numpy
No module named 'lark' ,那就pip install lark
最后总算是都装好了,

打开文件夹有这四个子空间:

点开src文件夹,在文件夹里打开终端,创建c++的功能包:
(myros) hcd@hcd-Dell-G15-5511:~/dev_ws/src$ ros2 pkg create --build-type ament_cmake learning_pkg_c
在创建一个Python的功能包:
(myros) hcd@hcd-Dell-G15-5511:~/dev_ws/src$ ros2 pkg create --build-type ament_python learning_pkg_python
5493

被折叠的 条评论
为什么被折叠?



