0


Windows安装ros2(Jazzy版本+win10/win11)-4.构建ros2结点

Windows10 安装使用 ROS2

在之前的文章中仅将环境安装到了可以运行ros2结点,接下来本章将完善Ros2开发环境,使其可以构建Ros2结点。本教程以python开发构建结点为参考。

1. 完善ros2开发环境

1.1 下载并安装git

https://git-scm.com/downloads
选好安装位置, 一路next即可。

1.2 下载并安装vscode

https://code.visualstudio.com/
一路下一步, 不过这里要注意勾选
在这里插入图片描述
打开vscode, 安装以下插件:
在这里插入图片描述

TONGYI Lingma
C/C++
Material Icon Theme
CMake
CMake Tools
IntelliCode
Python
Python Debugger
Pylance
python-snippets
Python Type Hint
ROS
ROS Snippets

1.3 下载并安装 openCV

https://opencv.org/releases/
下载windows版本
可能会被浏览器误判不安全文件,保留即可
在这里插入图片描述
在这里插入图片描述
然后运行, 可能还会被拦截, 点击更多信息, 然后仍要运行
在这里插入图片描述
然后解压, 路径自定义, 这里我的解压位置是C:\WorkSpace\Ros2\resources
在这里插入图片描述
然后输入以下命令配置环境变量, 注意, 要使用你解压的opencv的路径。

setx /m OpenCV_DIR C:\WorkSpace\Ros2\resources\opencv

在这里插入图片描述
环境变量已经设置上了, 这里也可以打开环境变量瞅一眼
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4 安装QT

安装QT 5.12.12, 运行图形化页面需要用到
下载地址: https://download.qt.io/archive/qt/5.12/5.12.12/
在这里插入图片描述
选择qt安装路径, 假设这里安装位置是 C:\Qt\Qt5.12.12 (尽量别选启动盘)
在这里插入图片描述
把这四个选上就行, 后续有需要可以继续补充安装
在这里插入图片描述
其他的一顿同意, 下一步, 就安装完了.
然后管理员模式打开终端, 输入以下命令将qt的环境变量配置好, 请注意, 值和你的安装位置有关, 如果安装在其他位置了, 请更换路径.

setx /m Qt5_DIR C:\Qt\Qt5.12.12\5.12.12\msvc2017_64
setx /m QT_QPA_PLATFORM_PLUGIN_PATH C:\Qt\Qt5.12.12\5.12.12\msvc2017_64\plugins\platforms

设置完可以在电脑的环境变量中检查下是否有Qt5_DIR 和 QT_QPA_PLATFORM_PLUGIN_PATH两个键, 没有手动加上, 在用户变量或者系统变量中加上都可以, 值为上面命令中的

1.5 安装tf相关包

把tf_transformations的git项目下到本地
(https://github.com/DLu/tf_transformations)[https://github.com/DLu/tf_transformations]
手动下载, 或者通过在终端中输入以下命令将项目下到本地

git clone https://github.com/DLu/tf_transformations.git

在终端中切换至该项目的文件夹下, 然后执行以下命令

pip install .

在这里插入图片描述
安装完成之后,再把 transforms3d安装下

pip install transforms3d

2. 创建pkg

https://docs.ros.org/en/jazzy/Tutorials/Beginner-Client-Libraries/Creating-Your-First-ROS2-Package.html
在之前的教程中,打开终端后会默认打开powershell7, 并且也会自动执行local_setup.ps1了

2.1 创建工作区以及包

找一个地方创建一个文件夹作为工作区, 随意命名, 例如命名为dev_ws
然后在这个工作区中创建一个src文件夹, 这两步可以合并通过命令行的方式创建,mkdir dev_ws/src
在这里插入图片描述
然后进入src文件夹, 在src文件夹中创建ros2的包(以python程序为学习教程), 命令:

ros2 pkg create --build-type ament_python --license Apache-2.0 my_ros_empty_pkg

其中的 my_ros_empty_pkg 为自定义的ros2的包, 此命令创建的包中不包含节点
在这里插入图片描述
当然也是可以通过命令创建一个自带输出语句的python程序作为节点,当然该节点中未使用到任何ros2相关的代码,仅仅是python输出语句, 命令:

ros2 pkg create --build-type ament_python --license Apache-2.0 --node-name my_node my_node_package

其中my_node 为节点名, my_node_package为包名
在这里插入图片描述

2.2 构建节点

包,节点都有了, 现在就可以构建运行了, 回到工作区根目录中运行colcon build,即可构建成功
在这里插入图片描述
上面圈出来的地方这个报错可以忽略不影响ros2节点的构建与使用, 当然也是可以通过在构建时增加参数以忽略构建这部分报错的内容, colcon build --event-handlers desktop_notification-
在这里插入图片描述
可以看得到没有报错了, 现在节点已经构建完了, 就可以使用了, 不过需要主要的是, 之前运行的local_setup.ps1是ros2模版代码中的,它只会初始化模版代码中相关的环境变量,设置模版代码的包与节点信息,此时如果直接运行新构建的节点,会报找不到包的错误的, 如下:
在这里插入图片描述
只需要运行新构建的工作区中的setup.ps1即可在当前终端的环境变量中设置上当前工作区中的包与节点,再次运行便不会报错了。
在这里插入图片描述
以上便是以ros2的方式执行一个python文件, 注意是这里并没有称之为节点, 因为其中其实没有任何ros2节点的内容, 可以打开代码看看里面长啥样:
在这里插入图片描述
只不过是使用ros2的构建工具colcon构建了我们的整个工作区的代码, 其构建完成的可执行文件在如下位置:
在这里插入图片描述
这个位置也是ros2搜索package以及搜索node的路径, 如果把构建好的可执行文件乱动位置的话就找不到节点了,当然如果复制一个可执行文件以及可执行文件-script.py文件, ros2也就会认为你有一个新的节点了,运行这个拷贝的可执行文件程序都是ok的
在这里插入图片描述

2.3 编写发布者订阅者节点

接下来我们要构建一个真正使用到ros2节点信息的c++程序了,首先我们参考官方教程, 下载官方提供的两个cpp文档, 别忘记要到包中的src再下载cpp文件. 我们就移动到之前创建的包my_ros_pkg中下载把,下载命令:

curl https://raw.githubusercontent.com/ros2/examples/humble/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py -o publisher_member_function.py

curl https://raw.githubusercontent.com/ros2/examples/humble/rclpy/topics/minimal_subscriber/examples_rclpy_minimal_subscriber/subscriber_member_function.py -o subscriber_member_function.py 

在这里插入图片描述
代码已经有了, 接下来需要做的就是在py_pubsub包的setup.py和package.xml文件中写入节点与依赖信息。
回到dev_ws目录下,然后在控制台中打开vscode, 命令:

code .

这里务必要在终端里打开整个项目! 因为此种方式vscode会帮你配置好环境, 否则开发时导入的包都找不到(虽然通过colcon build没问题), 不利于开发
在这里插入图片描述

在这里插入图片描述
在 package.xml文件中输入依赖项并保存

<exec_depend>rclpy</exec_depend>
<exec_depend>std_msgs</exec_depend>

在这里插入图片描述
在 setup.py 中写入节点入口并保存

'talker = py_pubsub.publisher_member_function:main',
'listener = py_pubsub.subscriber_member_function:main',

在这里插入图片描述
打开终端, 在dev_ws 工作空间下构建项目

colcon build
# Tips 还有两个命令后期开发是也会经常用到, 指定package构建与指定文件夹构建,可以收藏下
colcon build --packages-select your_package_name

colcon build --base-paths path/to/your/folder

在这里插入图片描述
运行当前项目的环境设置文件, 然后就可以执行发布者, 订阅者节点了, 如果弹出请求网络访问的窗口记得点击允许。

install\setup.ps1
ros2 run py_pubsub talker

在这里插入图片描述
再打开一个终端标签页, 切换到dev_ws工作空间, 运行install\setup.ps1后也就可以运行订阅者节点了

install\setup.ps1
ros2 run py_pubsub listener

在这里插入图片描述
在这里插入图片描述
这里可以把当前工作空间的install\setup.ps1文件也可以如之前的文章<3.下载ros2并运行案例结点>中最后所写, 添加到$profile的最下方一行执行。

3. 在vscode中直接运行python节点

由于上一个文章给powershell7也增加了启动执行ros2的环境初始化文件local_setup.ps1, 所以我们也可以直接在vscode中运行节点, 此种方式没有经由ros2托管, 缺少其他ros2的附加能力。
但是如果python文件中使用了其他自定义python module的内容(如ros2中自定义了一个消息), 则需要额外在控制台中执行此项目的setup.ps1,如果不执行的话, 直接运行该py文件会报错, 提示ModuleNotFoundError: No module named ‘xxx’
当然也是可以通过如上文<3.下载ros2并运行案例结点>的方式, 将运行此项目的setup.ps1放入powershell7的启动执行中,即管理员运行ps7终端执行以下命令, 其中
echo ‘C:\WorkSpace\Ros2\dev_ws\install\local_setup.ps1’ >> $profile
这样就可以正常运行了

在这里插入图片描述
在这里插入图片描述

4. 下载并运行古月居教程代码

https://github.com/guyuehome/ros2_21_tutorials
通过git把代码下载到dev_ws/src中, 首先切换到dev_ws/src, 然后执行以下命令:

 git clone https://github.com/guyuehome/ros2_21_tutorials.git

如果没有挂梯子可能会失败, 此时可以手动把项目下载下来, 解压后移动到src中
在这里插入图片描述
移动后应入以下结构
在这里插入图片描述
在这里插入图片描述
在dev_ws中通过终端打开vscode, 然后打开topic_webcam_pub.py文件,在文件最下方输入以下命令,然后再点击运行python

if __name__ == '__main__':
    main()

在这里插入图片描述
如果是在虚拟机中运行, 可能不会唤起摄像头, 但是程序是在正常执行的,说明执行ros2节点通过cv_bridge发送图片信息的程序也是可以正常运行的。可以自行在终端里构建后运行其相应的图片发布者节点以及图片接收者节点。
在这里插入图片描述
构建后分别运行两个节点的命令如下

# 图片发布者节点
ros2 run learning_topic topic_webcam_pub

# 图片接收者节点
ros2 run learning_topic topic_webcam_sub
标签: windows

本文转载自: https://blog.csdn.net/weixin_48398592/article/details/140622507
版权归原作者 Yu cee 所有, 如有侵权,请联系我们删除。

“Windows安装ros2(Jazzy版本+win10/win11)-4.构建ros2结点”的评论:

还没有评论