4. 开发环境搭建:Python环境、NumPy/SciPy、Matplotlib、PyBullet/CoppeliaSim安装
说实话,搭建开发环境这事儿,看着简单,但坑是真不少。我见过太多人卡在第一步——装个库都能装出各种幺蛾子。今天咱们就把这事儿捋清楚,一步到位。
4.1 Python环境:选对版本,少走弯路
我个人习惯用Python 3.8或3.9。为什么?因为PyBullet和CoppeliaSim的Python绑定,对这两个版本支持最稳。你想想看,要是装了个3.12,结果发现某个库不兼容,那得多闹心。
推荐版本:Python 3.8.10 或 3.9.13
下载地址:python.org 直接下载安装包就行
安装时记得勾选「Add Python to PATH」。嗯,这一步很多人会忘,然后命令行里敲python没反应,又跑回来问我怎么回事。
小技巧:装完以后,打开命令行输 python --version 和 pip --version,确认一下版本号。我每次装完新环境都会先跑这一步,省得后面出问题还得回头排查。
4.2 虚拟环境:隔离才是王道
做仿真项目,依赖管理特别重要。你不可能把所有库都装到全局环境里,那样迟早会乱套。我建议用 venv 或者 conda 创建独立的虚拟环境。
我个人更倾向 venv,轻量、简单。操作起来就几行命令:
# 创建虚拟环境
python -m venv robot_sim_env
# 激活环境(Windows)
robot_sim_env\Scripts\activate
# 激活环境(Mac/Linux)
source robot_sim_env/bin/activate
激活后,命令行前面会出现 (robot_sim_env) 字样。看到这个,就说明你已经在虚拟环境里了。我曾经有一次忘了激活环境,直接装了一堆库到全局,结果另一个项目全崩了……从那以后,我每次开新项目第一件事就是建虚拟环境。
4.3 NumPy/SciPy:科学计算的基石
做机器人仿真,矩阵运算是家常便饭。NumPy 和 SciPy 就是干这个的。安装很简单:
pip install numpy scipy
装完之后,我习惯先跑个简单测试:
import numpy as np
print(np.__version__)
from scipy.spatial.transform import Rotation as R
r = R.from_euler('xyz', [0, 0, 90], degrees=True)
print(r.as_matrix())
这段代码会创建一个绕Z轴旋转90度的旋转矩阵。输出结果应该是:
[[ 0. -1. 0.]
[ 1. 0. 0.]
[ 0. 0. 1.]]
如果能看到这个矩阵,说明 NumPy 和 SciPy 都装好了。我在做六自由度机械臂的运动学解算时,天天跟这些矩阵打交道。说白了,后面所有关节角度、末端位姿的计算,都离不开它们。
4.4 Matplotlib:把数据画出来
仿真跑完了,数据得可视化吧?Matplotlib 就是干这个的。安装命令:
pip install matplotlib
我一般会测试一下能不能正常绘图:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title('测试绘图')
plt.show()
如果弹出一个窗口,画了一条正弦曲线,那就没问题。注意,如果你用的是远程服务器或者 WSL,可能需要设置后端。我之前在 WSL 里折腾了半天,最后加了 import matplotlib
matplotlib.use('TkAgg') 才搞定。
4.5 PyBullet:轻量级物理引擎
PyBullet 是我个人非常推荐的一款物理引擎。安装简单,功能强大,而且完全免费。直接 pip 就行:
pip install pybullet
装完以后,跑个官方示例看看效果:
import pybullet as p
import pybullet_data
# 连接物理引擎
p.connect(p.GUI)
p.setAdditionalSearchPath(pybullet_data.getDataPath())
# 加载地面和机器人
p.loadURDF("plane.urdf")
p.loadURDF("r2d2.urdf", [0, 0, 0.5])
# 运行仿真
while True:
p.stepSimulation()
运行后应该会弹出一个3D窗口,里面有一个 R2D2 机器人站在地面上。如果能看到这个画面,恭喜你,PyBullet 环境搭建成功了。
注意:PyBullet 的 GUI 模式需要图形界面支持。如果你在纯命令行服务器上跑,记得把 p.GUI 改成 p.DIRECT,这样就不会弹窗了。
4.6 CoppeliaSim:更专业的仿真平台
CoppeliaSim(以前叫 V-REP)是另一款强大的仿真工具。它比 PyBullet 更重,但功能也更丰富。安装步骤稍微多一点:
- 去官网下载 CoppeliaSim 安装包(免费版够用)
- 解压到某个目录,比如
C:\CoppeliaSim - 安装 Python 绑定:
pip install coppeliasim-zmqremoteapi-client
测试连接:
import coppeliasim_zmqremoteapi_client as zmq
client = zmq.RemoteAPIClient()
sim = client.getObject('sim')
# 启动仿真
sim.startSimulation()
print("CoppeliaSim 连接成功!")
sim.stopSimulation()
注意,运行这段代码前,得先打开 CoppeliaSim 软件,并且确保远程 API 服务是开启的。我第一次用的时候忘了开服务,结果报错半天找不到原因……
4.7 知识体系总览
下面这张图,把整个开发环境的结构梳理了一下。你看一眼就明白各个组件之间的关系了:
4.8 常见问题与避坑指南
| 问题 | 原因 | 解决方法 |
|---|---|---|
| pip 安装慢 | 默认源在国外 | 用国内镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名 |
| PyBullet 弹不出窗口 | 缺少图形界面 | 改用 p.DIRECT 模式,或者装 VNC |
| CoppeliaSim 连不上 | 远程 API 没开启 | 在 CoppeliaSim 里点菜单栏:Add-ons → ZMQ Remote API |
| Matplotlib 中文乱码 | 缺少中文字体 | 设置字体:plt.rcParams['font.sans-serif'] = ['SimHei'] |
我的经验:所有库装完后,建议写一个 requirements.txt 文件,把当前环境的依赖都记录下来。命令是 pip freeze > requirements.txt。这样换电脑或者重装系统时,一条 pip install -r requirements.txt 就能恢复所有环境。我吃过亏,项目做了一半电脑坏了,环境全没了……从那以后,每个项目我都留一份 requirements.txt。
好了,环境搭建这块就说到这儿。你按这个流程走一遍,基本不会出大问题。如果遇到什么奇怪的报错,多半是版本冲突或者路径问题。别慌,仔细看看报错信息,一般都能找到线索。