Windows+ROS2+PyCharm以及C++QT5的环境配置以及例程

本文详细描述了如何在Windows11上安装和配置ROS2Humble版本,包括安装VisualStudio、Chocolatey、Python、C++运行时库,以及处理编译过程中遇到的问题,如Qt相关依赖和环境变量设置。
摘要由CSDN通过智能技术生成

一、操作环境

操作系统:Windows 11

ROS2版本:Humble(如果是Windows10请安装foxy版本)

Qt版本:Qt5.14.2

编译工具:colcon

二、配置过程

根据ROS2官网以及其他教程总结,所需的资料包如下,也可以自己去官网下载,资料包链接:

ROS2资料包icon-default.png?t=N7T8https://pan.baidu.com/s/1zjaVdMhAloOv3OtHLoMajg  提取码:KZR4

2.1 安装vs2019

如果不安装Visual studio很可能会编译失败,安装时选择如下即可:

 2.2 安装Chocolatey

以管理员身份运行CMD,复制以下命令运行:

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

安装完成后,输入choco,会显示:

 2.3在线安装python

choco install -y python --version 3.8.3

安装成功后,输入python,会显示:

按Ctrl+z回车会退出python状态,将python添加到系统环境变量的最上方。

2.4 安装Visual C++ Redistributables 

输入命令:

choco install -y vcredist2013 vcredist140

Windows操作系统上运行使用C++编写的应用程序所需的运行时组件。这些组件包含了在运行C++应用程序时所需的库文件和依赖项,如果没有安装,在运行C++程序时可能会出现缺少某些DLL库。

 2.5 离线安装OpenSSL

安装 OpenSSL 是因为 ROS 2 依赖于 OpenSSL 来支持安全通信的功能。

双击压缩包中的OpenSSL安装,或者从官网下载安装,不要下载安装带Light或者Win32的版本。装完后将openSSl添加环境变量:

setx /m OPENSSL_CONF "C:\Program Files\OpenSSL-Win64\bin\openssl.cfg"

2.6 安装其他依赖 

choco install -y cmake

离线安装 asio、cunit、eigen、tinyxml-usestl tinyxml2、bullet。可从Github下载,或者从以上网盘内提取,输入以下命令:

choco install -y -s F:\roswininstall asio cunit eigen tinyxml-usestl tinyxml2 bullet

其中F:\roswininstall 为自己电脑放置文件的路径。

将xmllint文件夹解压后放置在C盘,可从网盘中提取,或者从ROS2官网推荐的地址区下载ROS2官网推荐的地址icon-default.png?t=N7T8https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html#id10

C:\xmllint\bin 添加到环境变量中

升级pip和setuptools:

python -m pip install -U pip setuptools==59.6.0

安装python其他依赖:

python -m pip install -U catkin_pkg cryptography empy importlib-metadata lark==1.1.1 lxml matplotlib netifaces numpy opencv-python PyQt5 pillow psutil pycairo pydot pyparsing==2.4.7 pyyaml rosdistro

 安装成功后会出现如下:

如果输入指令后没反应,请关掉CMD并重启,确保python正常运行。 

2.7 离线安装ROS2

可从网盘中提取ROS2安装包,或者从其他地方下载,win10安装foxy版本,win11安装humble版本。离线包下载地址icon-default.png?t=N7T8https://ros-win.visualstudio.com/ros-win/_artifacts/feed/public

输入以下命令,其中F:\ROS2是离线包存放的地址。

choco source add -n=ros-win -s=“F:\ROS2”  #离线包本地存放地址
choco source remove -n=chocolatey
choco source add -n=chocolatey -s"https://chocolatey.org/api/v2/"  --priority=1
choco upgrade chocolatey-windowsupdate.extension

 更新成功后,输入以下命令开始安装humble版本:

choco upgrade ros-humble-desktop --pre -y --execution-timeout=0

 安装完后测试ROS2,设置环境变量:

call C:\opt\ros\humble\x64\local_setup.bat

输入指令运行小海龟:

ros2 run turtlesim turtlesim_node

 出现如下界面说明ROS2安装成功。

三、PyCharm配置

①、将工程项目的python解释器改为ros2下的python解释器。

②、选定Python解释器

③、点击添加路径按钮

④、将添加对应的路径

配置好后运行python发布话题的程序,在CMD终端可接收到消息:

打印helloworld的python例程:

import rclpy

from std_msgs.msg import String


def main(args=None):
    rclpy.init(args=args)

    node = rclpy.create_node('minimal_publisher')
    publisher = node.create_publisher(String, 'topic', 10)

    msg = String()
    i = 0

    def timer_callback():
        nonlocal i
        msg.data = 'Hello World: %d' % i
        i += 1
        node.get_logger().info('Publishing: "%s"' % msg.data)
        publisher.publish(msg)

    timer_period = 0.5  # seconds
    timer = node.create_timer(timer_period, timer_callback)

    rclpy.spin(node)

    # Destroy the timer attached to the node explicitly
    # (optional - otherwise it will be done automatically
    # when the garbage collector destroys the node object)
    node.destroy_timer(timer)
    node.destroy_node()
    rclpy.shutdown()


if __name__ == '__main__':
    main()

四、编译运行C++

4.1 编译C++运行过程

确保已经安装以上的ROS2环境以及Qt5.14.2,并写好CMakeLists.txt文件,该文件的编写可参考另一篇博客:

Ubuntu20.04+ROS2+Qt5(c++)+vscode环境配置icon-default.png?t=N7T8https://blog.csdn.net/weixin_45353151/article/details/135496761?spm=1001.2014.3001.5502

打开x64 Native Tools Command Prompt for VS 2019

使用以下call命令设置环境变量,类似于Ubuntu中的source命令:

call C:\opt\ros\humble\x64\local_setup.bat

将环境切换到C++程序的工程目录下:

使用以下命令对工程进行编译:

colcon build

编译成功后切换到生成的install目录下,并重新call环境:

使用ros2的命令即可运行编译后的程序:

五、问题记录

1、编译c++时Could not find a package configuration file provided by "Qt5SerialPort"

如果使用到Qt的串口,编译报错时需要设置Qt5SerialPort的目录,在CmakeList.txt中修改如下:

2、运行时提示:无法定位程序输入点,Qt动态链接库问题

解决方法:修改电脑中的环境变量:

注意msvc2017_64要放在mingw73_64的上面,才能保证使用的是msvc2017_64;

只需添加如上Qt的环境变量,多余的都要删除:

3、如果用到Qt中的SQL数据库,运行时提示SqlDatabase:QSQLITE driver not loaded

SqlDatabase:available drivers:QSQLITE QODBC QODBC3 QPSQL QPSQL7 open test.db fail等问题:

出现以上问题报错的原因可能是windows10下foxy版本的ROS2并不兼容Qt的SQL数据库,将电脑升级到windows11并安装对应的humble版本的ROS2即可运行。

4、如果程序运行不起来,或者运行小乌龟ros2 run turtlesim turtlesim_node时提示“无法定位程序输入点 inflateValidate于动态链接库 call C:\opt\ros\humble\x64\bin\libpng16.dll上”:

解决方式:在电脑的系统环境变量上C:\opt\ros\humble\x64\bin后面加一个\,改成如下后,重启终端即可运行。

  • 16
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值