機器人仿真(1)Ubuntu24.04下CLion的ROS2開發環境配置

目錄

  • 一、前言
  • 二、配置要求
    • 安裝ROS2
    • 安裝CLion
  • 三、配置步驟
  • 四、后記

一、前言

近日CLion已開放非商用免費使用。相比教程中常用的VSCode,CLion在自動補全、調試和環境變量配置等方面表現更為出色。不過截至本文撰寫時,CLion官網僅提供了Windows系統下的ROS2支持配置方案(ROS2 setup tutorial),需要通過--cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON選項導出編譯命令,再手動加載和添加編譯目標,操作較為繁瑣。為此,我嘗試采用頂層CMakelists方案來解決這一問題,最終成功打造了流暢的CLion+ROS2開發環境。

二、配置要求

安裝ROS2

ROS2的安裝已經有許多博客詳細介紹,博主最常使用的安裝方式是魚香ROS一鍵安裝,具體參考:動手學ROS2-3.動手安裝ROS2

安裝CLion

CLion的安裝參考Jetbrains官網即可:Download CLion,官網為Ubuntu提供了命令行安裝sudo snap install clion --classic,但是博主之前snap安裝的CLion有很多bug,可能是對Ubuntu 24.04支持不好,所以仍然建議下載.tar.gz然后配合alias命令使用。

我的CLion安裝路徑如下

 ~/Softwares ------------------------------------------------------- 16:15:58 
> pwd
/home/star/Softwares~/Softwares ------------------------------------------------------- 16:15:59 
> tree -L 3 clion
clion
└── CLion-2025.1.2└── clion-2025.1.2├── bin├── build.txt├── help├── Install-Linux-tar.txt├── jbr├── lib├── license├── modules├── plugins└── product-info.json10 directories, 3 files

~/.zshrc中添加如下代碼

alias clion="/home/star/Softwares/clion/CLion-2025.1.2/clion-2025.1.2/bin/clion"

這樣就可以通過clion .的方式直接從命令行將一個目錄打開為CLion項目了。

三、配置步驟

以博主的工作空間為例,一個ROS2的工作空間結構如下,可以發現相比于ROS1,ROS2的工作空間沒有頂層的CMakeLists.txt,因此無法像CLion配置ROS1一樣通過頂層的CMakeLists.txt管理整個工作空間。

├── build
│   ├── ament_cmake_environment_hooks
│   ├── ament_cmake_index
│   ├── ament_lint_cmake
│   ├── ament_xmllint
│   ├── CMakeFiles
│   ├── decomp_ros2_msgs
│   ├── decomp_ros2_utils
│   ├── decomp_util
│   ├── log
│   ├── poly_planner2
│   ├── quadrotor_msgs
│   └── Testing
├── install
│   ├── poly_planner2
│   └── quadrotor_msgs
├── log
│   ├── build_2025-06-30_14-37-21
│   ├── build_2025-06-30_14-37-52
│   ├── build_2025-06-30_14-43-14
│   ├── latest -> latest_build
│   └── latest_build -> build_2025-06-30_14-43-14
└── src├── DecompROS2├── poly_planner2└── quadrotor_msgs27 directories

那么我們可不可以通過手動引入CMakeLists.txt來管理整個工作空間呢?答案是肯定的,在Github上我找到了答案,可以參考:kai-waang/colcon-toplevel-cmake,具體操作如下

  1. 克隆上述倉庫到/opt/ros/scripts/cmake
sudo git clone https://github.com/kai-waang/colcon-toplevel-cmake /opt/ros/scripts/cmake
  1. 切換到工作空間下
cd ~/Workspaces/px4_ws # 此處替換為自己的工作空間
  1. 將剛才克隆的倉庫的toplevel.cmake拷貝到工作目錄頂層(和src/同級)
cp /opt/ros/scripts/cmake/toplevel.cmake ./CMakeLists.txt
  1. 編譯工作空間,從命令行啟動CLion
colcon build	# 這一步是為了生成 install/setup.zsh
clion .
  1. 如果是第一次用CLion打開這個工作空間,會彈出下面的窗口,點擊OK即可
    在這里插入圖片描述
  2. 進入 Settings > Build, Execution, Deployment > ToolChains,在Environment file中選擇當前工作空間下的install/setup.zsh
    在這里插入圖片描述
  3. 進入 Settings > Build, Execution, Deployment > CMake,在Build directory中輸入build
    在這里插入圖片描述
  4. 通過修改頂層的CMakeLists.txt,可以控制只編譯某幾個包,類似于colcon build --packages-select xxx ,我的頂層的CMakeLists.txt修改如下:
cmake_minimum_required(VERSION 3.14)
project("PROJECT_NAME")include("/opt/ros/scripts/cmake/colcon.cmake")# only for clion highlighting and analysis
colcon_add_subdirectories(BUILD_BASE "${PROJECT_SOURCE_DIR}/build"BASE_PATHS "${PROJECT_SOURCE_DIR}/src/"--packages-select decomp_ros2_msgs quadrotor_msgs
)
  1. Reload CMake Project,可以看到如下的輸出。
    在這里插入圖片描述
    同時可以在Run/Debug Configuration下可以看到這個包下面所有的build targets,接下來就可以正常編譯、運行和調試了!

四、后記

使用頂層CMakeLists帶來了便捷智能的開發體驗,但是不能存在同名的build targets,如果需要使用--cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON,我已經在JetBrains官網反饋了Ubuntu下教程的缺失問題,雖然對于CLion熟練用戶來說看著Win的教程也可以完成配置,但是還是希望他們能夠盡快給出更好的解決方案。

最后祝大家編程愉快,idea多多,bug少少~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87189.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87189.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87189.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPF兩種綁定方式的分析

一、兩種綁定方式的分析 你提供的代碼展示了兩種不同的屬性綁定實現方式:傳統的CLR屬性配合INotifyPropertyChanged接口,以及WPF依賴屬性(DependencyProperty)系統。 相同點 目的相同:兩種方式都是為了實現屬性值變化時通知UI更新數據綁定…

【零基礎學AI】第14講:支持向量機實戰 - 文本分類系統

本節課你將學到 理解支持向量機的核心思想和幾何直覺 掌握SVM的關鍵參數和核函數選擇 學會文本數據預處理和特征提取 完成一個郵件分類項目 對比SVM與其他算法的性能差異 開始之前 環境要求 Python 3.8內存: 建議2GB 需要安裝的包 pip install pandas numpy scikit-learn …

美團 mtgsig1.2 最新版分析

聲明: 本文章中所有內容僅供學習交流使用,不用于其他任何目的,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關! 逆向分析 部分代碼 result cp.call…

【實戰】CRMEB Pro 企業版安裝教程(附 Nginx 反向代理配置 + 常見問題解決)

一、前言 CRMEB Pro 是一款企業級高并發高性能的電商系統,支持 Linux 服務器環境,需要 PHP 8.0 及以上版本,兼容多種 WEB 服務器(如 Nginx 和 Apache),并支持 MySQL 數據庫。本文將詳細介紹如何從零開始安…

解決Linux下根目錄磁盤空間不足的問題

ubantu中提示根目錄磁盤空間不足 解決辦法:對根目錄磁盤空間進行擴展。 一、使用lsblk查看磁盤使用情況 命令行輸入:lsblk aaaubuntu:~/Desktop$ lsblk可以看到sda5是掛載在根目錄上的。所以我們要對sda5進行擴展 二、擴展硬盤空間 1、關閉虛擬機 2、…

【C++】--入門

前面我們學習C語言的時候,我們也有講過C的部分歷史,我們看其名字就知道其和我們的C語言肯定是有密不可分的關系的,我們的C是在C的基礎上發展的,其彌補了C語?在表達能?、可維護性 和可擴展性??的不?。 下面為C的近年來的幾次…

JAVA內存區域劃分

根據《JAVA虛擬機規范》的規定,JAVA虛擬機在執行JAVA程序的過程中會把內存劃分為不同的數據區域。不同類型的數據會存儲在不同的區域,理解JAVA內存區域的工作細節對理解JAVA多線程、線程安全性有著重要意義。 注意,JAVA內存區域的劃分與我們…

Navicat 導入 SQL 文件

1. 安裝并打開 Navicat 安裝 Navicat(如 Navicat Premium、Navicat for MySQL),百度或者淘寶就有很多破解版。 打開 Navicat,進入主界面。 2. 新建數據庫連接 點擊左上角 “連接” 按鈕,選擇你對應的數據庫類型&…

《Go語言高級編程》玩轉RPC

《Go語言高級編程》玩轉RPC 一、客戶端 RPC 實現原理:異步調用機制 Go 的 RPC 客戶端支持同步和異步調用,核心在于 Client.Go 方法的實現: 1. 同步調用(Client.Call)的本質 func (client *Client) Call(serviceMet…

四大核心要素驅動汽車智能化創新與相關芯片競爭格局

作者:北京華興萬邦管理咨詢有限公司 翔煜 商瑞 智能汽車時代的加速到來,使車載智能系統面臨前所未有的算力需求。隨著越來越多車型引入電子電氣架構轉向中心化、智能駕駛的多傳感器融合、智能座艙的多模態交互以及生成式AI驅動的虛擬助手等創新技術&a…

照明新基建:塔能科技如何用數字骨骼支撐智慧城市生長

一、能源管理困局:雙碳目標下的市政用電痛點 在雙碳背景下,城市照明用電量已引起市政部門的重點關注。據國家統計局統計:我國城市照明用電量已占據全市城市用電量的28%,部分城市的照明用電量已高達35%以上,高壓鈉燈傳統…

讓Claude Code像Cursor一樣好用

最近折騰AI工具,發現Claude Code真是個寶藏。但說實話,初學者一上手,十有八九會被命令行那一堆黑框框勸退。你以為你用熟了?其實你只解鎖了Claude Code不到20%的威力,剩下的80%都藏在命令行背后的“黑魔法”里。00后誰…

ROS 2 中更改從設備(如電機控制器)的運動模式

在 ROS 2 中更改從設備(如電機控制器)的運動模式(例如從位置模式切換到速度模式),需要通過操作模式(Mode of Operation,對應對象字典索引0x6060) 進行設置。結合你的配置&#xff08…

樸素貝葉斯分類

一、樸素貝葉斯算法概述 樸素貝葉斯(Naive Bayes)是一種基于貝葉斯定理的簡單概率分類算法,它假設特征之間相互獨立("樸素"的含義)。盡管這個假設在現實中很少成立,但該算法在許多實際應用中表現優異,特別是…

python協程:yield實現協程執行、生成器取值的三種方式

yield關鍵字執行流程 注意:yield關鍵字的調用次數如果超過了任務執行次數會報錯,提示stopiteration異常,例如 正常范圍內的任務執行 # 定義一個任務(函數1) def task1():for i in range(3):print(f----task1 i {i}-…

pdf刪除一頁 python實現(已驗證)

首先安裝庫 使用PyPDF2 首先,確保你已經安裝了PyPDF2。如果沒有安裝,可以通過pip安裝: pip install PyPDF2 然后運行 import PyPDF2def remove_page(input_pdf_path, output_pdf_path, page_number_to_remove):# 打開PDF文件with open(i…

2025.1版本PyCharam找不到已存在的conda虛擬環境

前言 創建Python項目指定conda虛擬環境是最常用的操作,我下載的2025.1版本PyCharam編譯器找不到我已經創建好的conda虛擬環境,解決方法如下 目錄 問題描述 問題解決 總結 問題描述 我使用2025.1版本PyCharam編譯器創建項目指定已經存在的虛擬環境出現如下情景 說是我沒有…

開機啟動項在哪里設置 實用步驟分享

電腦開機時,系統會自動運行一系列程序,其中包括必要的系統進程和用戶自行添加的啟動項。然而,過多的啟動項可能會導致開機速度變慢,影響系統性能。因此,合理管理開機啟動項,可以優化電腦的運行效率。電腦開…

LeetCode--39.組合總和

前引:明天就考最后一趟考試,最近考試周,我時時斷更,從明天開始,就會一直更新了,可以期待一下 解題思路: 1.獲取信息: 給定一個無重復的整數數組和一個目標值 從數組中選取任意數量的…

Visual Studio2022和C++opencv的配置保姆級教程

1.c桌面開發和windows平臺開發(Visual Studio2022安裝時) 2.下載OPenCV 3.系統屬性→添加環境變量→Path 4.VS2022配置opencv 5.項目→屬性→VC目錄中的包含目錄和庫目錄 5.項目→屬性→VC目錄中的包含目錄和庫目錄 包含 目錄添加: D:\…