【笔记】macOs arm架构安装虚拟机Ubuntu环境:ROS2 + Python开发

macOs arm架构安装虚拟机Ubuntu环境:ROS2 + Python开发

Ubuntu、ROS2、Python版本关系

ROS2版本 发布年份 支持状态 Python版本 Ubuntu版本
Jazzy 2024 最新 Python3.12 Ubuntu 24.04
Iron 2023 LTS到2027 Python 3.10 Ubuntu 22.04
Humble 2022 LTS到2027 Python 3.10 Ubuntu 22.04
Rolling 持续更新 开发版 Python 3.10-3.12 多种

一、Ubuntu基础系统安装搭建

1、下载VMware Fusion

(1)下载VMware-Fusion-13.6.2-24409261_universal.dmg

我用夸克网盘给你分享了「VMware-Fusion-13.6.2-24409261_universal.dmg」,点击链接或复制整段内容,打开「夸克APP」即可获取。

/094838Nq2k😕

链接:https://pan.quark.cn/s/cd6bf0b1b0ee

提取码:5cAy

(2)下载完成双击安装即可

2、下载Ubuntu镜像文件(推荐Ubuntu 22.04 LTS)

下载Ubuntu 24.04(Noble) LTS镜像文件

ubuntu-24.04-desktop-arm64.iso

https://mirrors.huaweicloud.com/ubuntu-cdimage/ubuntu/releases/24.04/release/

3、创建虚拟机

创建自定虚拟机------》继续

选择Linux------> Ubuntu 64位arm

之后一直默认点到完成。

(1)重要!!调整硬盘大小 (在没有把操作系统安装完成之前,之后扩容有些许麻烦)

在虚拟机------>硬盘 里面调整硬盘大小

(2)调整完硬盘大小之后CD/DVD里面把下载的镜像选择上,在启动磁盘里面选择CD/DVD,重新启动就可以进行下一步配置了

(3)查看Ubuntu版本:cat /proc/version

二、系统级安装ROS2

1、安装ROS2(推荐安装Humble 更稳定)

方式一:官方文档:https://docs.ros.org/en/rolling/Installation/Ubuntu-Install-Debs.html

方式二:鱼香ROS:

复制代码
sudo apt update #该命令会从默认的软件服务器拉取所有的软件列表

#运行安装工具。根据指示一步步安装
wget http://fishros.com/install -O fishros && bash fishros 

2、ROS2安装成功后查看ROS2环境变量参数

打印参数:printenv | grep -i ROS

不需要在Pycharm的环境变量里面增加打印的参数,这个属于系统环境变量,会自动去读取。

3、卸载ROS2 rolling

bash 复制代码
sudo apt remove ~nros-rolling-* && sudo apt autoremove

4、ROS2开发入门:鱼香ROS

https://fishros.com/d2lros2/#/humble/chapt2/get_started/5.使用RCLPY编写节点

4.1 Linux下的.a文件和.so文件

在widows平台下,静态链接库是.lib文件,动态库文件是.dll文件。在linux平台下,静态链接库是.a文件,动态链接库是.so文件。

4.2 简单ros2开发常用步骤

4.2.1 创建功能包
bash 复制代码
cd chapt2/chapt2_ws/src/
ros2 pkg create example_py  --build-type ament_python --dependencies rclpy
4.2 编写程序

编写ROS2节点的一般步骤

bash 复制代码
1. 导入库文件
2. 初始化客户端库
3. 新建节点
4. spin循环节点
5. 关闭客户端库

在example_py/example_py下创建node_02.py:

python 复制代码
import rclpy
from rclpy.node import Node

def main(args=None):
    """
    ros2运行该节点的入口函数
    编写ROS2节点的一般步骤
    1. 导入库文件
    2. 初始化客户端库
    3. 新建节点对象
    4. spin循环节点
    5. 关闭客户端库
    """
    rclpy.init(args=args) # 初始化rclpy
    node = Node("node_02")  # 新建一个节点
    node.get_logger().info("大家好,我是node_02.")
    rclpy.spin(node) # 保持节点运行,检测是否收到退出指令(Ctrl+C)
    rclpy.shutdown() # 关闭rclpy

修改setup.py:

python 复制代码
    entry_points={
        'console_scripts': [
            "node_02 = example_py.node_02:main"
        ],
    },
)
4.3 编译运行节点
bash 复制代码
# 编译节点
cd chapt2/chapt2_ws/
colcon build
# source环境
source install/setup.bash
#运行节点
ros2 run example_py node_02

节点运行起来之后,可以使用ros2 node list查看现有节点

三、 安装Anaconda和PyCharm创建conda环境

1、下载anaconda 的sh文件安装------>安装anaconda,运行sh文件:

bash 复制代码
bash anacondaxx.sh

2、conda环境创建原理

conda是一个开源的包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。

2.1 环境的概念

conda环境是一个独立的目录,其中包含特定版本的软件包和它们的依赖。每个环境都是相互隔离的,这意味着在一个环境中安装的软件包不会影响其他环境。

2.2 创建环境的步骤

bash 复制代码
# 创建新环境
conda create -n myenv python=3.8

# 激活环境
conda activate myenv

# 停用当前环境 如果当前激活了目标环境,需先停用:
conda deactivate

# 删除指定环境 使用以下命令删除虚拟环境: 
conda remove -n 环境名称 --all 
#示例:删除名为 myenv 的环境: conda remove -n myenv --all

2.3 环境隔离原理

  • 目录隔离:每个环境在envs/目录下有独立文件夹
  • PATH修改:激活时将该环境的bin/目录添加到PATH最前面
  • 环境变量:设置COND_DEFAULT_ENV和CONDA_PREFIX环境变量

2.4 包管理和依赖解析

bash 复制代码
# 安装包时的依赖解析过程
conda install numpy pandas

# Conda会:
# 1. 解析包依赖关系
# 2. 检查冲突
# 3. 下载兼容的包版本

2.5 conda使用的Python解释器

conda不使用系统自带的python,而是自己管理独立的Python解释器。当你创建一个新的conda环境时,conda会在这个环境的目录中安装一个独立的Python解释器(如果你在创建时指定了python版本)。这样,每个环境都可以有自己特定版本的python和包,互不干扰。python解释器位于环境目录下的python可执行文件。

3、Pycharm创建conda的原理

PyCharm是一个集成开发环境(IDE),它支持使用conda来管理项目环境。当在PyCharm中创建一个新的conda环境时,PyCharm实际上是在后台调用conda命令来创建环境。

问题1:安装conda环境显示SSL证书验证失败

解决:看下系统时间是否正确(使用虚拟机快照打开系统时间可能不对),重启看看

问题2:ModuleNotFoundError:no module named rclpy

解决方式:添加ros2相关包rclpy路径到Interpreter Paths下

bash 复制代码
# 配置步骤:
1. PyCharm → Preferences/Settings
2. Project → Python Interpreter
3. 点击齿轮图标 → Show All
4. 选择你的解释器 → 点击文件夹图标(Show paths for the selected interpreter)
5. 点击 "+" 添加自定义路径
添加ros2相关路径:`/opt/ros2/rolling/lib/python3.12/site-packages`

# 典型需要添加的路径:
- 项目源码根目录
- 包含自定义库的目录
- 第三方库的非标准安装路径
- 共享模块目录

问题3:ImportError: librcl_action.so: cannot open shared object file: No such file or directory

问题分析:librcl_action.so文件是动态库

解决:我错误地直接运行py文件了,没有使用ros2

的构建编译,ros2开发要使用ros2的构建编译运行规则

bash 复制代码
colcon build
source install/setup.bash
ros2 run example_py node_02

问题4:ubuntu24.04 ros2(jazzy)ros2 launch的时候 报错 packge "usb_cam " not found

注意ROS2版本,使用Jazzy,不要使用Rolling开发版

bash 复制代码
# 更新软件包列表
sudo apt update

# 搜索可用的 usb_cam 包
apt search ros-jazzy-usb-cam

# 安装 usb_cam 包
sudo apt install ros-jazzy-usb-cam

# 重新加载环境
source /opt/ros/jazzy/setup.bash
bash 复制代码
1、package "usb_cam" not found 下载包sudo apt install ros-jazzy-usb-cam
2、/home/lc/ 需要改成自己的路径/home/xxx/Documents/项目名
3、no moudle not found:pip install 下载
4\Error in cpuinfo: prctl(PR_SVE_GET_VL) failed

5\Unable to open camera calibration file [/home/hri/.ros/camera_info/head_camera.yaml]
解决办法:

sudo apt-get install ros-indigo-image-view
bash 复制代码
apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令

4、python包下载镜像设置

4.1 terminal中设置永久镜像:

bash 复制代码
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

4.2 验证配置是否生效:

bash 复制代码
pip config list

4.3 附:常用国内镜像

bash 复制代码
# 清华大学
https://pypi.tuna.tsinghua.edu.cn/simple
# 阿里云
https://mirrors.aliyun.com/pypi/simple
# 豆瓣
https://pypi.douban.com/simple
# 中国科学技术大学
https://pypi.mirrors.ustc.edu.cn/simple
# 华为云
https://repo.huaweicloud.com/repository/pypi/simple

https://www.qishuxia.com/modules/article/txtarticle.php?id=289661

相关推荐
2601_962885727 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
打工仔折腾 AI7 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
信誓旦旦的程序猿7 小时前
【Python量化实战宝典 #21】北向资金跟随手册:聪明钱择时信号(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
严谨的麻辣烫8 小时前
静态 ISP 代理请求超时怎么排查?Python 与 curl 实战
python·http·requests·1024程序员节·网络排障
李某学编程9 小时前
基于ARM的微机原理学习笔记(一)
arm开发·笔记·学习
KeepRobots9 小时前
11-01 温哥华不回拨:用 60 行 Python 查你的工单系统会不会差一小时(KeepRobots 工程笔记)
python
xiao77mwq9 小时前
你以为 OCR 慢?实测 81.3 s 里全是故障代价:如何把「定格态」消掉,让耗时从 6.5 s 到 13 倍差距显出原形
python
深圳市益普科技有限公司10 小时前
半导体良率管理YMS:良率与设备参数的相关性,先拉哪几组数据
人工智能·python·算法
“AI国潮设计-小江”10 小时前
【AIGC实战】Python+SDXL打造“潮汕英歌舞IP”万能立牌插件,批量生成“发财元宝蛋糕”视觉营销方案(附源码)
开发语言·人工智能·python·prompt·aigc
sbjdhjd10 小时前
AI产业周度动态:从“更强模型”走向“可执行、可治理、可计价”的系统竞争 (2026年10月19日—10月25日)
人工智能·笔记·ai·开源·gemini·信息差·claude code