电控视觉环境搭建

2023-12-10

暂时无法在飞书文档外展示此内容

C/C++环境搭建

Windows

Visual Studio

https://www.bilibili.com/video/BV11R4y1s7jz

Linux

详见下方的CMake工程搭建。

ARM Keil MDK(ARM单片机环境搭建)

介绍以及环境推荐

  1. Keil MDK是ARM公司旗下官方软件。最主流的单片机开发环境IDE,没有之一。
  2. 推荐版本:
    1. 新手:无脑 ARM Keil MDK 5 + CubeMX(新手前期只准先安装ARM Keil MDK 5,不准用CubeMX)
    2. 老鸟:无脑 VScode + CMake + CubeMX

Arm Keil MDK 5 + CubeMX【推荐小鸟(新手)】

简介

  1. 最主流的开发环境(即便有很多致命缺点),没有之一。新手无脑用,新手必须用这个方案开发STM32。
  2. 缺点很明显:上古的界面,上古的代码补齐,仅支持Windows,且只有X86的32位版本。

Windows

https://www.bilibili.com/video/BV18T411r7Yu

所需文件获取方式:

  1. 社团的U盘(直接拷贝)
  2. 官网:
    1. MDK5官网:https://www.keil.com/demo/eval/arm.htm
    2. MDK5的FW固件下载链接:https://www.keil.arm.com/devices/
    3. ARM编译器下载链接:
      1. ARMCC(AC5)必下:https://developer.arm.com/downloads/view/ACOMP5?revision=r5p6-07rel1
      2. ARMCLANG(AC6)一般MDK5最新版都自带,不用下https://developer.arm.com/downloads/view/ACOMPE
      3. AC5与AC6对比(一般不用看):https://developer.arm.com/Tools and Software/Arm Compiler for Embedded FuSa#Editions

    4. Keil MDK 5 破解注册机(请关闭杀毒软件再下载): keygen.iso or https://www.duote.com/soft/907739.html
    5. Java_JRE下载(一般下载Windows Offline (64-bit),需要安装JRE才可以打开CubeMX):https://www.java.com/en/download/manual.jsp
    6. CubeMX官网:https://www.st.com.cn/zh/development-tools/stm32cubemx.html
    7. 正点原子配套资料1(A盘资料F1):http://www.openedv.com/docs/boards/stm32/zdyz\_stm32f103\_warshipV4.html
    8. 正点原子配套资料2(A盘资料F4):http://www.openedv.com/docs/boards/stm32/zdyz\_stm32f407\_explorerV3.html

Arm Keil MDK 5 + VScode(Keil Assistant)【不推荐】

简介

  1. 该方式是折中方案,介于MDK5和MDK6之间的方案,可以规避掉一部分MDK5的缺点。(但是由于C/C++插件过于垃圾,所以不太推荐使用)

Windows

配置教程:

快速配置的视频:

https://www.bilibili.com/video/BV18e4y1H7xX

如果遇到一些问题,请看下方这个视频:

https://www.bilibili.com/video/BV19V411g7gD/

  1. 请安装好MDK5,CubeMX,VScode等软件
  2. 安装VScode插件

  1. 配置Keil Assistant
    1. 点击扩展设置

    1. 找到MDK5的路径

    1. 复制一下路径

    1. 填入刚才复制的路径

  1. 用VScode打开MDK5工程
    1. 打开工程



  2. 然后就可以用VScode编辑源码了

注意事项(必看):
须知
  1. 该方式仅仅为折中方案,比单用MDK5好用一点,但远没有MDK6好用。
  2. VScode只负责代码编辑(建议别用Keil Assistant的编译等功能)。
  3. MDK5负责编译,下载,debug,添加源文件,头文件等其他一切操作。
  4. 优点:解决了AC6编译器的go to definition失效的问题(AC6全是优点,这是唯一缺点);解决了MDK5上古界面的不护眼;解决了MDK5代码提示拉跨;可以使用各种VScode的插件提高编辑效率。
  5. 缺点:需要同时开着VScode和MDK5,各司其职,不统一。C/C++插件的代码提示虽比mdk5好,但也是过于拉胯。(远不如MDK6+Clangd)
文字🦟编码有问题
  1. 问题如下:

  1. 手动改编码(点右下角的UTF-8,推荐用下方的插件解决,比手改便捷):

  1. 插件(VScode的特点就是插件多,不用插件的vscode失去了灵魂)

该插件会自动提示你当前的编码有问题,自动猜测正确编码,点击yes就可以自动修改。

误报错

不用管,只要MDK5编译不报错就行。

无法go to definition

(如果有问题才需要做,没问题就不要管)

在下面框中加上:(加完后可能还会误报错,但是已经可以正常go to definition了)

..\**

或者 将Include Path这一栏里的绝对路径全改为相对路径(下方只列举一部分):

..\applications\Inc
..\bsp\boards\Inc

Arm Keil MDK 6 (基于VScode)【暂不推荐】

简介

  1. 优点:改善了MDK5的基本所有已知缺点,简直是开发者福音。
  2. 缺点:学习成本较高,没有一定的电脑常识驾驭不了。
  3. 目前暂时还不是很推荐单独使用,因为即便你会用,队友也不一定会用,这样工程无法互通。但如果你有能力,就是想用MDK6,那用也无妨,自己用着顺手为主。
  4. 但是非常推荐配合使用,MDK6配合MDK5一起使用。使用MDK5添加源文件,添加头文件等操作(不要忘记添加完源文件和头文件后,用mdk5编译一下);使用MDK6转化刚才的mdk5工程,进行源码编辑,编译,debug等等操作。(这样无论是用mdk5还是mdk6的队友,都可以打开你的工程直接食用啦)(看不懂这段话问学长)

Windows && Linux

ARM Keil MDK6使用教程

告别Keil MDK : VScode+CMake环境部署【非常推荐老鸟】

(开发起来目前感觉还是挺舒服的,日后电控组组长如果觉得好用,可以统一一下IDE)

主要现在有三个使用比较广的编译器.

armclang(AC6):编译巨快,开销巨小.(不论是编译,还是开销都非常优秀)

armcc(AC5):编译巨慢,开销很小.(仅仅只是开销小)

armgcc:编译较快,开销略大.(仅仅只是编译快)

所以说armgcc并没有那么大的优势,但是也可以接受。

主要是ARMCC和ARMCLANG是商用编译器,而ARMGCC是开源编译器,所以可以搭配CMake,Makefile等使用,可以更好管理项目,也可以支持全平台(Windows,Linux,MacOS等)

详细教程STM32+CMake工程部署

Linux基本配置

Vinci机器人队Linux入门教程

CMake工程搭建

CMake C/C++编译环境配置

OpenCV_CUDA环境搭建

Linux

更推荐在Linux上部署,一些深度学习的东西,在Linux上的运行速度要明显远远高于Windows。

如果你没有空闲硬盘装Linux了,可以考虑WSL2(在Windows上运行的Linux子系统2),虽有一点点性能损失,但速度也远远高于Windows。

WSL2安装教程Vinci机器人队Linux入门教程

实体机Linux**>WSL2>>**Windows

关于cv_bridge:最好在安装ros之前编译opencv,这样安装ros时,cv_bridge就会自己指向已经安装过的opencv,并且ros不会另外安装opencv,如此就可以通过find_package指令找到电脑上仅有的cv_bridge和opencv,保证系统环境不被污染。关于补救办法,请看常见问题

保证显卡正常

请确保 英伟达驱动、CUDA、cuDNN 全部安装成功并且版本正确。

(安装驱动、CUDA、cuDNN教程:Vinci机器人队Linux入门教程)


# 检查显卡驱动
nvidia-smi

# 验证CUDA是否安装成功
nvcc -V

# 检查cuDNN版本命令(仅仅只是查了头文件)
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

出现下图这样的,则你是有英伟达驱动,CUDA以及cuDNN的

安装依赖项


# Debian系系统
sudo apt install -y libcurl4 build-essential pkg-config cmake-gui \
    libopenblas-dev libeigen3-dev libtbb-dev \
    libavcodec-dev libavformat-dev \
    libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev \
    libswscale-dev libgtk-3-dev libpng-dev libjpeg-dev \
    libcanberra-gtk-module libcanberra-gtk3-module libv4l-dev python3-dev python3-numpy

# RHEL红帽系系统
bash -c 'sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm'
sudo dnf install -y curl gcc gcc-c++ make cmake cmake-gui \
    openblas-devel eigen3-devel tbb-devel \
    ffmpeg-libs ffmpeg-devel \
    gstreamer1-plugins-base-devel gstreamer1-devel \
    gtk3-devel libpng-devel libjpeg-devel \
    libc=aanberra-gtk3 libcanberra-devel v4l-utils v4l2loopback openexr-devel python3-dev python3-numpy

下方表格是这些依赖的说明

生成 OpenCV 的主要依赖项
名称
编译系统
图像库
OpenBLAS
Eigen3
Intel TBB
FFMPEG
GStreamer
GTK
Video4Linux

下载OpenCV源码

https://github.com/opencv/opencv

https://github.com/opencv/opencv\_contrib


# 创建文件夹存放源码
mkdir -p ooppccvv
cd ooppccvv


# 解压源码
unzip ./opencv-4.11.0.zip
unzip ./opencv_contrib-4.11.0.zip

确认一下 opencv 目录和 opencv-contrib 目录位于相同的父目录内,并确认这两个目录下都存在 modules 子目录:(一般不用确认,只要你照着敲我上方的命令,一定没问题)

CMake编译

准备工作

# 创建build文件夹用于装CMake生成的内容:
cd opencv-4.11.0
mkdir -p build && cd build

OpenCV使用CMake与Makefile进行编译,编译选项较多,详见(也可以不看,不过不同版本有些CMake编译选项是不同的):

https://docs.opencv.org/4.10.0/db/d05/tutorial\_config\_reference.html

下方被划掉的是在OpenCV4.11.0中已经不复存在的参数,但是可能在其他版本的OpenCV中仍有效,请自行用CMake-LAH(不推荐)命令或者CMake-gui(推荐)查看。

OpenCV4.11.0 CMake常用编译选项表一览
序号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
  1. 查询GPU Compute Capability(CUDA_ARCH_BIN参数):

https://developer.nvidia.com/cuda-gpus#collapseOne

进入网站后,

GeForce代表英伟达游戏系列显卡,常见的有GTX1080,RTX3080,RTX 4080等。

Jetson代表工控机序列显卡。

我是3060Laptop(笔记本移动端显卡,所以找右列的Notebook下方的3060)

如果你是3060(台式桌面端,则要找左列的3060)

通过图得知,我的显卡算力(GPU Compute Capability)为8.6,所以我的CMake的CUDA_ARCH_BIN参数为8.6。

CUDA_ARCH_PTX为BIN的最高值,我只设置了一个BIN,所以最高值就是这个8.6。(只有你要给电脑更换显卡的情况下,才要给BIN设置多个值,就需要把你要用的显卡的值全包含在BIN中,而PTX只需要BIN的最高值即可)

  1. Python3的路径查询,请在终端中使用,检查是否都有结果生成,确保打印出的结果符合预期后再进行下面的CMake生成操作。(不需要记住路径)

当然你也可以用命令反馈出来的路径复制出来,这个路径就是参数的值。


# Python3 C++接口库的路径
python3 -c "import sysconfig; from os.path import join; print(join(sysconfig.get_config_var('LIBDIR'), sysconfig.get_config_var('LDLIBRARY')))"

# Python3 矩阵库头文件的路径
python3 -c "import numpy; print(numpy.get_include())"

# OpenCV 的 Python3 包安装的路径。
python3 -c "import sysconfig; print(sysconfig.get_path('purelib'))"

# Python3 头文件的路径
python3 -c "import sysconfig; print(sysconfig.get_path('include'))"
CMake编译**(两种方式选其一)**

因为电脑配置的不同,每个电脑的硬件,软件(依赖包)等都不同,所以我能跑起来的你不一定一下就能跑成功。

一般很难风调雨顺,如果有问题及时去百度,谷歌,OpenCV论坛上找答案。

论坛:https://forum.opencv.org/

CMake终端命令方式(不建议,更建议用GUI的方式,这种终端的方式容易出奇奇怪怪的问题)
cmake .. -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_INSTALL_PREFIX=/usr/local \
        -DBUILD_SHARED_LIBS=ON \
        -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.11.0/modules \
        -DOPENCV_ENABLE_NONFREE=ON \
        -DBUILD_TESTS=ON \
        -DBUILD_PERF_TESTS=ON \
        -DOPENCV_GENERATE_PKGCONFIG=ON \
        -DWITH_GTK=ON \
        -DWITH_CUDA=ON \
        -DENABLE_FAST_MATH=ON \
        -DCUDA_FAST_MATH=ON \
        -DWITH_CUBLAS=ON \
        -DCUDA_ARCH_BIN="8.6" \
        -DCUDA_ARCH_PTX="8.6" \
        -DCUDA_HOST_COMPILER=/usr/bin/gcc-13 \
        -DWITH_CUDNN=ON \
        -DOPENCV_DNN_CUDA=ON \
        -DWITH_IPP=ON \
        -DWITH_TBB=ON \
        -DWITH_OPENMP=ON \
        -DWITH_PTHREADS_PF=ON \
        -DOPENCV_PYTHON3_VERSION=3.12 \
        -DPYTHON3_EXECUTABLE=/usr/bin/python3 \
        -DPYTHON3_LIBRARY=$(python3 -c "import sysconfig; from os.path import join; print(join(sysconfig.get_config_var('LIBDIR'), sysconfig.get_config_var('LDLIBRARY')))") \
        -DPYTHON3_NUMPY_INCLUDE_DIRS=$(python3 -c "import numpy; print(numpy.get_include())") \
        -DPYTHON3_PACKAGES_PATH=$(python3 -c "import sysconfig; print(sysconfig.get_path('purelib'))") \
        -DPYTHON3_INCLUDE_DIR=$(python3 -c "import sysconfig; print(sysconfig.get_path('include'))") \
        -DWITH_OPENGL=ON

你可以根据你的需要,按照之前的说明来自行增减或修改这些选项。如果 cmake 命令出错,往往是缺少依赖项或配置的生成选项不正确所致,可根据提示信息来检查。如果执行成功,就可以进行编译(请看Makefiles编译部分)了:

CMake-GUI方式(推荐,不过太麻烦,但是问题少,且更好找问题)
  1. 打开CMake-GUI:

配置一下这俩路径

点击左下角配置,选择Makefiles

  1. 配置参数

根据上方表格去挨个参数进行配置。填完所有选项后,配置完毕点Configure.

在配置参数遇到问题,请看下面的常见问题章节。

你可以根据你的需要,按照之前的说明来自行增减或修改这些选项。如果 cmake 命令出错,往往是缺少依赖项或配置的生成选项不正确所致,可根据提示信息来检查。如果执行成功,就可以进行编译(进行Makefiles编译)了:

常见问题

####### 无CUDA选项 有时候CMake-GUI只会在编译后才显示某些参数(比如只有编译过WITH_CUDA才会显示CUDA相关的选项)。

所以你需要先把WITH_CUDA打上勾,再点左下角的config,这样才会出现和CUDA相关的选项,再把那些选项配置一下。

####### 模组的路径与命令行方式不同 需要注意的是,这个相对路径与直接敲CMake命令配置的参数不同,这里是../opencv_contrib-4.11.0/modules

####### OPENCV_PYTHON3_VERSION参数的类型错了 在cmake-gui中不知道为何OPENCV_PYTHON3_VERSION参数的类型成了布尔型。

需要手动改为字符串型数据。

上图就是问题所在,这里竟然是个布尔值。

先删掉该选项。

再重新添加一个该选项。


# 查看python3版本
python3 --version

在下面填上3.12,后面的小版本号不用填。

Makefiles编译

后面 -j 参数的意义是使用所有 CPU 参与编译。如果启用了 CUDA ,生成过程会比较慢,请耐心等待。编译期间如果出错往往是编译器、系统库、三方库的版本兼容性问题,找问题的难度偏大。

请在build目录下进行下方命令。


# 内存小于16GB
make all

# 内存等于16GB
make all -j$(( $(grep -c ^processor /proc/cpuinfo) / 2 ))

# 内存大于32GB
make all -j$(grep -c ^processor /proc/cpuinfo)

# 或者自行规定线程数量(比如16线程)
make all -j16

全核跑编译

如图才是真编译成功,没有错误。

生成结束后,执行以下命令进行安装:

$(grep -c ^processor /proc/cpuinfo)变量为CPU线程的数量。(这样可以使CPU全力多线程进行编译)


# 内存小于16GB
sudo make install

# 内存等于16GB
sudo make install -j$(( $(grep -c ^processor /proc/cpuinfo) / 2 ))

# 内存大于32GB
sudo make install -j$(grep -c ^processor /proc/cpuinfo)

# 或者自行规定线程数量(比如16线程)
sudo make install -j16

无报错则安装成功

配置OpenCV环境变量ENV

  1. 可能需要配置一下lib的路径:
vim ~/.bashrc

在最底下加上下方的内容


# 设置 LD_LIBRARY_PATH
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
  1. 其他的不用配置,开箱即用(可以配置一下pkg-config),

检查是否安装成功:

opencv_version

测试OpenCV_CUDA(CMake程序示例)

  1. CMake是一定要掌握的,请看下方文档学习:CMake C/C++编译环境配置
  2. 如图测试完毕:

  1. 下方是实例工程我已上传至GitHub供大家下载:(下方示例工程里的CMake模板不是最新的,可能不如新版功能齐全,不如新版各方面设计的更周到,如果想找最新版模板请看CMake C/C++编译环境配置)

https://github.com/tungchiahui/opencv\_cuda\_test


# 克隆源码
git clone https://github.com/tungchiahui/opencv_cuda_test.git

# cd进工程
cd opencv_cuda_test

# cd进build目录
cd build

# 进行cmake编译
cmake ..

# 进行make编译+进行make install安装(最大线程)
make install -j$(grep -c ^processor /proc/cpuinfo)

# 给予脚本执行权限
sudo chmod a+x ../script/setup_vinci_emis.bash
sudo chmod a+x ../script/vinci_emis
sudo chmod a+x ../install/.setup.bash

# 执行环境脚本
source ../script/setup_vinci_emis.bash

# 执行demo1二进制程序
../script/vinci_emis run demo1

或者直接点击RunStart Debugging或者Run Without Debugging都可以。(已经将launch.json及task.json全部配置好了)(发现bug及时call我,call我之前,请看最新CMake模板是否已经修复了该bug,若未修复,再call我)

测试完毕

常见问题

cmake -jx编译遇到operator!=或权重weight相关问题
  这个问题大多发生在ubuntu20.04或者cuda12.2上,编译时添加contrib库,对应ros版本为noetic,opencv版本为4.8.0。

  github上的讨论:

https://github.com/ros-perception/vision\_opencv/tree/kinetic

根据GitHub中的解决方案,将对应报错.hpp文件中的相应代码修改(若只是有一些WARNING那大可不必修改):

114 opencv/modules/dnn/src/cuda4dnn/primitives/normalize_bbox.hpp 中 if (weight != 1.0)改为 if (weight != static_cast<T>(1.0))

124 opencv/modules/dnn/src/cuda4dnn/primitives/region.hpp 中if (nms_iou_threshold > 0)

改为 if (nms_iou_threshold > static_cast<T>(0))

再次编译

make -j16
ros原装opencv与自己搭建的opencv_cuda冲突的问题

原因:ros自带的cv_bridge自动链接ros的opencv,而ros自带的opencv没有cuda加速,故报错。

Ubuntu允许多版本 opencv共存,不建议直接卸载opencv,可能导致相关环境异常。

解决方案:额外配置一个版本的cv_bridge进行opencv的链接

ROS1

解决方案:

https://github.com/ros-perception/vision\_opencv/tree/kinetic中下载对应版本的cv\_bridge

先对cv_bridge中的CmakeList.txt进行修改,OpencvDIR对应自己的opencv安装路径,并将修改包名:

project(cv_bridge_480)#修改为你的包名,加个版本号就可以
set(OpenCV_DIR "/home/liu/opencv/opencv-4.8.0")
find_package(OpenCV 4.8.0 REQUIRED
  COMPONENTS
    opencv_core
    opencv_imgproc
    opencv_imgcodecs
  CONFIG
)

修改package.xml中的包名

  <name>cv_bridge_480</name>

此时将cv_bridge作为一个ros功能包进行编译,把包整体复制进你工作空间的src中进行编译

cp -rf ./cv_bridge ~/Yolo_Tensorrt_Demo/demo01_test/src
catkin_make

然后就可以将cv_bridge作为功能包使用了,在你原本的包CmakeLists中添加

find_package(cv_bridge_480)

package.xml:

<build_depend>cv_bridge_480</build_depend>
<build_export_depend>cv_bridge_480</build_export_depend>
<exec_depend>cv_bridge_480</exec_depend>

到这里自定义的cv_bridge包就配好了

如果你还想在vscode中使用代码补全,添加路径一直到cv_bridge包的include就可以,我这里是另一个工作空间,都一样。

"includePath": [
    "/home/liu/cv_bridge_ws/src/cv_bridge/include",
    "/home/liu/cv_bridge_ws/src/cv_bridge"

]
ROS2

详见ROS2机器人操作系统教程中CV_Bridge章节.

opencv编译爆内存的问题

解决方案:采用多核编译,一般采用make -j16 (这里16是CPU线程数,可以根据实际情况进行调整)即可解决,cpu线程越多,编译速度就越快

windows中:

Mingw:

mingw64-make -j16

值得注意的是,mingw并不支持windows上的opencv_contrib编译,这在configure一开始就会提示

Vs:

https://blog.csdn.net/hollyholly5/article/details/68062513

linux中:
make -j$(grep -c ^processor /proc/cpuinfo)

Windows

详见使用OpenCV推理Yolov8模型(C++)

YOLO环境搭建

Windows

深度学习算法-Yolo系列

Linux(WSL2也能用)

ROS环境搭建

ROS机器人操作系统教程

ROS2机器人操作系统教程

ROS1已经EOF了,官方鼓励使用ROS2.

推荐的搭建环境

方案一(推荐)

ROS1=Kubuntu20.04**(Noetic与20.04双双寿终正寝)**

ROS2=Kubuntu22.04+

仍然建议使用22.04+Humble Noetic,Humble,Jazzy这几个LTS之间主要有以下区别:

  1. Noetic是ROS1的LTS(长支持版),将于2025年5月31日EOF寿终正寝,自带算法比较老,依赖于其他非自带算法,但是教程最多,第三方算法支持也比较多。
  2. Humble是ROS2的第一个LTS,支持到2027年5月31日或海龟节,自带老版Gazebo Classic和新版Igntion Gazebo(独一份支持新旧两个Gazebo版本比较好的ROS版本),选择性比较广,自带算法比较新,教程正在逐渐增多中,第三方算法也在逐渐增多中,很多用ROS1的人都在往ROS2Humble上转。
  3. Jazzy是ROS2第二个LTS,支持到2029年5月31日或海龟节,在Humble的基础上,多了一些功能,但只有新版Gazebo Sim,针对Jazzy做ROS2教程的资料很少很少,而且很多第三方算法也并未针对Jazzy做相应版本,但是Jazzy目前来看兼容很多Humble的算法与教程,目前除了新版Gazebo改名需要改一些标记语言的标签外,没发现其他代码不兼容的地方。

方案二(也是比较推荐,但是要多学个Docker)

  1. 系统发行版:Fedora KDE(学长比较推荐,选一个自己喜欢的其他Linux发行版也行)
  2. ROS1Noetic安装方式:Docker
  3. ROS2Humble/Jazzy安装方式:Docker 详看Docker教程

方案三(可以用)

  1. 系统发行版:Kubuntu 22.04 Jammy LTS / Kubuntu 24.04 Jammy LTS
  2. ROS1Noetic安装方式:西南交通大佬的ppa(详见上面ROS文档中,仅amd64(x86_64))
  3. ROS2Humble / ROS2Jazzy安装方式:官方二进制安装方式(详见上面的ROS2文档中)

方案四(可以用)

  1. 系统发行版:Windows10及以上
  2. WSL2发行版:Ubuntu24.04 Noble LTS
  3. ROS1Noetic安装方式:西南交通大佬的ppa(详见上面ROS文档中,仅amd64(x86_64))
  4. ROS2Jazzy安装方式:官方二进制安装方式(详见上面的ROS2文档中)

QT环境搭建

安装QT

QT5


# debian系
sudo apt install qt5-default          # 基础开发工具(qmake、moc 等)
sudo apt install qtbase5-dev          # Qt5 核心库开发文件
sudo apt install qttools5-dev         # Qt5 工具(Qt Designer、Linguist 等)

# 红帽系

# 安装 Qt5 核心开发包
sudo dnf install qt5-qtbase-devel      # Qt5 核心库开发文件
sudo dnf install qt5-qttools-devel     # Qt5 工具(Qt Designer、Linguist 等)

# 安装常用模块(按需选择)
sudo dnf install \
  qt5-qtdeclarative-devel \           # Qt Quick
  qt5-qtsvg-devel \                   # SVG 支持
  qt5-qtwayland-devel \               # Wayland 支持
  qt5-qtwebengine-devel               # WebEngine 支持

QT6

https://www.qt.io/product/qt6


# debian系
sudo apt install qt6-base-dev qt6-tools-dev

# 红帽系
sudo dnf install qt6-qtbase-devel qt6-qttools-devel

sudo dnf install qt6-qtdeclarative-devel qt6-qtsvg-devel qt6-qtwayland-devel qt6-qt5compat-devel qt6-qtwebsockets-devel

VScode环境配置

主要是CMake搭建QT5/QT6开发环境,详看CMake C/C++编译环境配置

QT Designer生成.ui

主要是用下面这个软件进行图形化设计,然后生成.ui文件再转化为.h文件用于C/C++工程。

比如我们创建一个Helloworld窗口,打开QT Designer之后,选择创建Widget。

拖进来,输入Hello World!

可以调字体大小。

可以修改objectName,即是C++代码里调用的类名称。

最后保存.ui文件,一般是保存在功能包下的form文件夹下。

调用.ui类并编译运行

首先先确保你的VScode+CMake配置正确。

然后再cmake ..,接着make install,此时QT_Projects/QT6/QT6_Template/build/src/QT6TEST/目录下会出现.h文件。

然后可以在代码中引用这个.h。

接着实现自己的代码功能就可以了。

#include "QT6TEST/inc/qt6_test.hpp"
#include <QApplication>
#include <QWidget>
#include "ui_mywidget.h"

int qt6_test(int argc,char **argv)
{
    QApplication app(argc, argv);

    // 创建主窗口和 UI 对象
    QWidget mainWindow;
    Ui::MyWidget ui;        // Ui 命名空间中的类名与 .ui 文件中的 class 属性一致
    ui.setupUi(&mainWindow);

    // 设置窗口标题
    mainWindow.setWindowTitle("Hello Qt6!");

    // 显示窗口
    mainWindow.show();

    return app.exec();
}

我这里有个配置好的QT6环境,你可以clone下来使用。

https://github.com/tungchiahui/QT\_Projects/tree/main/QT6/QT6\_Template

Docker环境搭建

Docker教程

--- END ---