ubuntu 22.04源码装ros1 noetic

2024-01-12 08:04
文章标签 源码 ubuntu ros1 22.04 noetic

本文主要是介绍ubuntu 22.04源码装ros1 noetic,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ubuntu 22.04源码装ros1 noetic

文章目录

  • ubuntu 22.04源码装ros1 noetic
    • 1. 安装依赖
    • 2. 更换rosdep相关的rep链接
    • 3. 安装 rosdep
    • 4. 创建工作空间下载源码并安装
    • 5. 编译代码
      • 5.1 修复rosconsole* log相关问题**error**
      • 5.3 python-sip配置相关
      • 5.4 *std::share_mutex* 相关 c++11 与c++17
      • 5.5 opencv库的安装
      • 5.6 assimp 库安装
      • 5.7 ogre库的安装
      • 5.8 ogre库中class Vector3 传统问题,
    • 6. 安装版

参考链接

https://gist.github.com/Meltwin/fe2c15a5d7e6a8795911907f627255e0

1. 安装依赖

sudo apt-get install python3-rosdep python3-rosinstall-generator python3-vcstools python3-vcstool build-essential

2. 更换rosdep相关的rep链接

参考:https://blog.csdn.net/zyh821351004/article/details/135519444?spm=1001.2014.3001.5501

mkdir -p ~/.ros/rosdep
cd ~/.ros/rosdep
~/.ros/rosdep$ git clone git@github.com:ros/rosdistro.git cat rosdep/sources.list.d/20-default.list
yaml file:///home/robot/.ros/rosdep/rosdistro/rosdep/osx-homebrew.yaml osx# generic
yaml file:///home/robot/.ros/rosdep/rosdistro/rosdep/base.yaml
yaml file:///home/robot/.ros/rosdep/rosdistro/rosdep/python.yaml
yaml file:///home/robot/.ros/rosdep/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/robot/.ros/rosdep/rosdistro/releases/fuerte.yaml fuerte# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list

 
yaml file:///home/robot/.ros/rosdep/rosdistro/rosdep/osx-homebrew.yaml osx# generic
yaml file:///home/robot/.ros/rosdep/rosdistro/rosdep/base.yaml
yaml file:///home/robot/.ros/rosdep/rosdistro/rosdep/python.yaml
yaml file:///home/robot/.ros/rosdep/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/robot/.ros/rosdep/rosdistro/releases/fuerte.yaml fuerte# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py

#DEFAULT_SOURCES_LIST_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list'
DEFAULT_SOURCES_LIST_URL = 'file:///home/robot/.ros/rosdep/rosdistro/rosdep/sources.list.d/20-default.list'

sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py

#REP3_TARGETS_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
REP3_TARGETS_URL = 'file:///home/robot/.ros/rosdep/rosdistro/releases/targets.yaml'

sudo gedit /usr/lib/python3/dist-packages/rosdistro/init.py

#DEFAULT_INDEX_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
DEFAULT_INDEX_URL = 'file:///home/robot/.ros/rosdep/rosdistro/index-v4.yaml'
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list 
sudo rosdep init
rosdep update

3. 安装 rosdep

sudo rosdep init
rosdep update

4. 创建工作空间下载源码并安装

mkdir ./noetic_ws
cd ./noetic_ws
rosinstall_generator desktop --rosdistro noetic --deps --tar > noetic-desktop.rosinstall
mkdir ./src
vcs import --input noetic-desktop.rosinstall ./srcrosdep install --from-paths ./src --ignore-packages-from-source --rosdistro noetic -y

等待下载完成
备份打包源码 csdn_下载:

noetic-desktop.rosinstall  noetic-base.rosinstall
noetic-desktop.rosinstall   737行类似:
- tar:local-name: actionlib/actionliburi: https://github.com/ros-gbp/actionlib-release/archive/release/noetic/actionlib/1.14.0-1.tar.gzversion: actionlib-release-release-noetic-actionlib-1.14.0-1
- tar:local-name: anglesuri: https://github.com/ros-gbp/geometry_angles_utils-release/archive/release/noetic/angles/1.9.13-1.tar.gzversion: geometry_angles_utils-release-release-noetic-angles-1.9.13-1
/opt/ros/noetic_ws/src$ ls
actionlib              metapackages           rqt_moveit
angles                 navigation_msgs        rqt_msg
bond_core              nodelet_core           rqt_nav_view
catkin                 pluginlib              rqt_plot
class_loader           python_qt_binding      rqt_pose_view
cmake_modules          qt_gui_core            rqt_publisher
common_msgs            qwt_dependency         rqt_py_console
common_tutorials       resource_retriever     rqt_reconfigure
control_msgs           robot_state_publisher  rqt_robot_dashboard
diagnostics            ros                    rqt_robot_monitor
dynamic_reconfigure    rosbag_migration_rule  rqt_robot_plugins
executive_smach        ros_comm               rqt_robot_steering
filters                ros_comm_msgs          rqt_runtime_monitor
gencpp                 rosconsole             rqt_rviz
geneus                 rosconsole_bridge      rqt_service_caller
genlisp                roscpp_core            rqt_shell
genmsg                 ros_environment        rqt_srv
gennodejs              roslint                rqt_tf_tree
genpy                  roslisp                rqt_top
geometry               rospack                rqt_topic
geometry2              ros_tutorials          rqt_web
geometry_tutorials     rqt                    rviz
gl_dependency          rqt_action             std_msgs
image_common           rqt_bag                urdf
interactive_markers    rqt_common_plugins     urdf_tutorial
joint_state_publisher  rqt_console            vision_opencv
kdl_parser             rqt_dep                visualization_tutorials
laser_geometry         rqt_graph              webkit_dependency
media_export           rqt_image_view         xacro
message_generation     rqt_launch
message_runtime        rqt_logger_level

5. 编译代码

./src/catkin/bin/catkin_make_isolated -DCMAKE_BUILD_TYPE=Release

会遇到一些列报错:

5.1 修复rosconsole* log相关问题error

用rosconsole_log4cxx.cpp里面的代码全部替换源代码src/rosconsole/src/rosconsole/impl/rosconsole_log4cxx.cpp

替代rosconsole_log4cxx.cpp
https://gist.github.com/kintzhao/3947142d3161e11e5a0c326b79e9ebdb### 5.2 qt5库相关的安装

sudo apt install  libqt5widgets5  qtcreator qtbase5-dev qt5-qmake cmake

5.3 python-sip配置相关

sudo apt install  sip-dev python3-sip-dev python3-pyqt5.sip
sudo apt install  python3-pyqt5.sip python3-pyqt5 pyqt5-dev 

5.4 std::share_mutex 相关 c++11 与c++17

下载 change_cpp.py 文件到ws路径下,change_cpp.py

import os
from colorama import Fore, StyleWANTED_WIDTH = 100
DISPLAY_WIDTH = min(WANTED_WIDTH, os.get_terminal_size().columns - 2)
print("┏" + "".center(DISPLAY_WIDTH, "━") + "┓")
print(f"┃{Fore.RED}" + "CMakeLists to C++17 Utils".center(DISPLAY_WIDTH, " ") + f"{Style.RESET_ALL}┃")
print(f"┃{Style.BRIGHT+ Fore.BLACK}" + "Meltwin - 2023".center(DISPLAY_WIDTH, " ") + f"{Style.RESET_ALL}┃")
print("┗" + "".center(DISPLAY_WIDTH, "━") + "┛")
print()REPLACE_FILTER = {"-std=c++11":"-std=c++17","COMPILER_SUPPORTS_CXX11": "COMPILER_SUPPORTS_CXX17","CMAKE_CXX_STANDARD 11": "CMAKE_CXX_STANDARD 17","CMAKE_CXX_STANDARD 14": "CMAKE_CXX_STANDARD 17"
}def fix_cmakelist(cmakelist_path: str) -> None:print(f"{Fore.YELLOW}{Fore.RESET}Found {Fore.RED}{cmakelist_path}{Fore.RESET}", end=" ")with open(cmakelist_path, "r") as handle:data = handle.read()# Replacingchanged = Falsefor key, value in REPLACE_FILTER.items():if data.find(key) != -1:data = data.replace(key, value)changed = Trueif changed:with open(cmakelist_path, "w") as handle:handle.write(data)print(f"{Fore.GREEN}Fixed !" if changed else f"{Fore.BLUE}Nothing to change")def walk_dir(dir: str, depth = 0) -> None:if depth >=2:returnfor d in os.listdir(dir):cmakelist_path = f"{dir}/{d}/CMakeLists.txt"if not os.path.isfile(cmakelist_path):walk_dir(f"{dir}/{d}", depth+1)else :fix_cmakelist(cmakelist_path)if __name__ == "__main__":# Get all the CMakeLists.txtwalk_dir("./src")

将当前src目录下工程cmake中c++17方式的调整为c++11

  python3 change_cpp.py

5.5 opencv库的安装

 sudo apt install  libopencv-dev

5.6 assimp 库安装

 sudo apt install  libassimp-dev python3-pyassimp

5.7 ogre库的安装

sudo apt install  libogre-1.12-dev
sudo apt install  libogre1.12.10

5.8 ogre库中class Vector3 传统问题,

注释掉文件plant_flag_tool.h imu_visual.h 中的class Vector3 定义

gedit /opt/ros/noetic_ws/src/visualization_tutorials/rviz_plugin_tutorials/src/plant_flag_tool.hnamespace Ogre
{
class SceneNode;
//class Vector3;
}
gedit /opt/ros/noetic_ws/src/visualization_tutorials/rviz_plugin_tutorials/src/imu_visual.hnamespace Ogre
{
//class Vector3;
class Quaternion;
}

编译基本就可以通过了,一共184个包

<== Finished processing package [184 of 184]: 'xacro'

6. 安装版

当前路径安装 或 指定路径安装

./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/noetic

这篇关于ubuntu 22.04源码装ros1 noetic的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/597256

相关文章

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

如何安装HWE内核? Ubuntu安装hwe内核解决硬件太新的问题

《如何安装HWE内核?Ubuntu安装hwe内核解决硬件太新的问题》今天的主角就是hwe内核(hardwareenablementkernel),一般安装的Ubuntu都是初始内核,不能很好地支... 对于追求系统稳定性,又想充分利用最新硬件特性的 Ubuntu 用户来说,HWEXBQgUbdlna(Har

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,