目录
- 一、安装Google拼音输入法
- 二、安装CUDA 10.2
- 三、安装conda管理环境
- 四、配置D435i相机SDK
- 五、安装realsense-ros
大象机器人的这款机械臂,用的Jetson nano做的主控,给的系统的ubuntu20,默认python版本是3.8。并且没有配置CUDA,在用这款机械臂做视觉相关的项目,需要自己配置一些环境。
一、安装Google拼音输入法
1. 首先下载中文语言包,在图形化页面下载会报错,所以这里直接用命令行进行安装。下载完成后,再去语言支持里面将系统语言更改为汉语,全局应用后重启。
sudo apt-get install language-pack-zh-han*
2. 系统语言变更完成后,会发现不能拼音输入中文,输入方法添加也没有中文选项,这里需要自己配置。通过下载googlepinyin来解决不能输入中文的问题。googlepinyin是基于fcitx框架的,直接输入就可以完成安装,然后去语言支持里面将ibus框架改为fcitx框架,然后卸载ibus框架,注意按顺序完成。
sudo apt-get install fcitx-googlepinyin # 安装fcitx和googlepinyin
sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/ # 设置fcitx开机自启动
sudo apt-get remove ibus # 更改系统语言框架后,卸载ibus
然后输入fcitx-config
可以调出设置窗口,添加googlepinyin。
如何还是不能输入,可以试一试安装搜狗输入法,在所有安装过程中,注意提示信息,如果出现报错什么的,就安装提示的相关依赖包。
二、安装CUDA 10.2
1. 查询版本
因为myCobot 280 JN 2023默认镜像没有安装CUDA,所以需要自己进行安装。Jetson nano是arm系统的,并且通过jtop
工具可以知道Jetpack版本是4.6.4
,没有jtop工具输入sudo pip3 install jetson-stats
进行安装。
对应官网,可知Jetpack 4.6.4支持CUDA 10.2,cuDNN 8.2.1
。下面通过Jetson官方的SDK Manager进行。
2. 准备CUDA和cuDNN安装包
由于官网没有arm版本的安装包,所以需要通过SDK Manager工具来下载,需要的设备是一个搭载ubuntu18的虚拟机或物理机。
-
安装SDK Manager
打开NVIDIA的jetpack下载网址,点击下载SDK Manager,使用前请先注册/登录NVIDIA账号。
-
下载完deb包后,输入
sudo dpkg -i sdkmanager_1.5.0-7774_amd64.deb
安装。如果报错找不到依赖,输入sudo apt --fix-broken install
解决。 -
安装完成后打开软件,这里不需要连接硬件,因为我们的目的是通过这个刷机工具下载对应版本的CUDA和cuDNN安装包。
-
选择对应的硬件和JetPack版本后点击下一步。
-
勾选同意协议后会开始下载,这里就会下载相关安装包到指定目录
-
下载完成后,在下载目录中拷贝CUDA和cuDNN安装包。
3. 安装CUDA和cuDNN
- 将准备好的安装包拷贝到Jetson nano中。
- 安装CUDA
sudo dpkg -i cuda-repo-l4t-10-2-local_10.2.460-1_arm64.deb
sudo apt-key add /var/cuda-repo-10-2-local/7fa2af80.pub
sudo apt update
sudo apt-get install cuda-toolkit-10-2
- 安装安装cuDNN
sudo dpkg -i libcudnn8_8.2.1.32-1+cuda10.2_arm64.deb
sudo dpkg -i libcudnn8-dev_8.2.1.32-1+cuda10.2_arm64.deb
- 配置环境变量
sudo gedit ~/.bashrc
打开配置文件,在末尾添加下面内容:
export CUBA_HOME=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.2/bin:/usr/local/bin/cmake:$PATH
执行source ~/.bashrc
使其生效。
- 拷贝cudnn到cuda安装路径下
cudnn其实是直接安装到了默认安装路径usr/include和usr/lib下的,因此需要将其拷贝到cuda安装路径下,执行下面命令进行拷贝。
sudo cp /usr/include/cudnn.h /usr/local/cuda/include/
sudo cp /usr/lib/aarch64-linux-gnu/libcudnn* /usr/local/cuda/lib64/ # 时间有点久,耐心等待,不是卡了
- 重新生成cudnn库的软连接
cd /usr/local/cuda/lib64
sudo chmod +r libcudnn*
sudo rm -rf libcudnn.so libcudnn.so.8
sudo ln -s libcudnn.so.8.2.1 libcudnn.so.8
sudo ln -s libcudnn.so.8 libcudnn.so
sudo ldconfig
4. 测试
输入nvcc -V
,出现版本号,说明安装成功。
三、安装conda管理环境
Jetson nano架构是aarch64,与win10,linxu不同,所以不能安装Anaconda,这里安装对应的archiconda。
1. 安装archiconda
下载安装包
wget https://github.com/Archiconda/build-tools/releases/download/0.2.2/Archiconda3-0.2.2-Linux-aarch64.sh
安装
bash Archiconda3-0.2.3-Linux-aarch64.sh
2. 配置环境变量
打开配置文件
sudo gedit ~/.bashrc
在文档最后一行添加
export PATH=~/archiconda3/bin:$PATH
3. 创建虚拟环境
创建python3.8的torch虚拟环境
conda create -n torch python=3.8
4. 换源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
- 其他常用命令
conda update -n base conda # update最新版本的 conda
conda create -n xxxx python=3.X # 创建python3.X的xxxx虚拟环境
conda activate xxxx # 开启xxxx环境
conda deactivate # 关闭环境
conda env list # 显示所有的虚拟环境
conda info -e # 显示所有的虚拟环境
conda install -c channel/path // # 下载包
conda remove --n env_name package_name # 卸载包
pip uninstall package_name # 先进入环境然后卸载包
conda remove -n env_name --all # 删除虚拟环境
conda deactivate # 退出当前conda环境
rm -rf anaconda3 # 卸载conda
四、配置D435i相机SDK
官方步骤
1. 下载pyrealsense2源码
先去github上下载源码,pyrealsense2源码下载链接,下载zip后解压,建议不要下载太高的版本,这里用的2.31。解压后进入到解压后的文件夹内,后续操作基于此。
2. 安装依赖
sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev
sudo apt-get install libglfw3-dev
sudo apt-get update
sudo apt-get upgrade
3. 执行许可证脚本
cd librealsense
./scripts/setup_udev_rules.sh
./scripts/patch-realsense-ubuntu-lts.sh
4. cmake编译并安装
mkdir build && cd build # 创建build文件并进入
cmake ../ -DBUILD_PYTHON_BINDINGS:bool=true -DPYTHON_EXECUTABLE=/usr/bin/python3.8 # 注意绑定python的路径
sudo make uninstall
sudo make clean
make
sudo make install
5. 环境变量配置
编译完成之后,可以在/usr/local/lib下发现编译生成的librealsense2相关动态库文件,将此路径配置到.bashrc文件中。
export PYTHONPATH=$PYTHONPATH:/usr/local/lib:/usr/lib/python3/dist-packages/pyrealsense2
6 测试
realsense-viewer
启动SDK工具
执行source ~/.bashrc
,运行python3,import pyrealsense2
导包看是否报错。
到这一步,很多文章都没有错,但是本人在编译安装后发现,realsense-viewer启动SDK工具能正常开启深度和红外,但是在
import pyrealsense2后,使用dir(pyrealsense2)查看接口发现没有可用接口。
这说明在用python程序启动不了相机,这种问题解决方案如下:
- 查看编译安装pyrealsense2包的路径
python3
>> import pyrealsense2 as rs
>> rs.__path__
[‘/usr/lib/python3/dist-packages/pyrealsense2’]
- 然后在之前编译后的
build/Release
文件夹下找到下列文件然后复制
- 将复制的文件粘贴到前面查询的路径中的
/usr/lib/python3/dist-packages
下,注意不是粘贴到/usr/lib/python3/dist-packages/pyrealsense2
下 - 重新测试,发现接口都有了
python3
>> import pyrealsense2 as rs
>> dir(rs)
[‘/usr/lib/python3/dist-packages/pyrealsense2’]
- 程序打开相机测试
import pyrealsense2 as rs
import cv2
import numpy as np
# 创建 pipeline 对象
pipeline = rs.pipeline()
# 配置 pipeline,启用彩色和深度流,设置分辨率和帧率
config = rs.config()
config.enable_stream(rs.stream.color, 1280, 720, rs.format.bgr8, 30)
config.enable_stream(rs.stream.depth, 848, 480, rs.format.z16, 30)
# 启动 pipeline
profile = pipeline.start(config)
# device = profile.get_device()
# device.hardware_reset()
# 将深度图对齐到彩色图
align_to = rs.stream.color
align = rs.align(align_to)
try:
while True:
# 等待下一帧数据
frames = pipeline.wait_for_frames()
# 获取对齐后的彩色和深度帧
aligned_frames = align.process(frames)
color_frame = aligned_frames.get_color_frame()
depth_frame = aligned_frames.get_depth_frame()
if not color_frame or not depth_frame:
continue
# 将彩色和深度帧转换为 numpy 数组
color_image = np.asanyarray(color_frame.get_data())
depth_image = np.asanyarray(depth_frame.get_data())
# 显示彩色图像
cv2.imshow('Color Image', color_image)
# 可根据需要对深度图像进行处理或显示
depth_gray = cv2.convertScaleAbs(depth_image, alpha=255 / 4000)
cv2.imshow('Depth Image', depth_gray)
# 按下 'q' 键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
finally:
# 停止 pipeline 并关闭所有窗口
pipeline.stop()
cv2.destroyAllWindows()
- 其实到这里,前面加入的环境变量也可有可无,我这里删除后,仍然可以正常使用。很多文章中提到的在cmake时绑定python,在按照后可以在/usr/local/lib/python3.6/pyrealsense2中找到生成的动态库文件,我这里没有发现,可能是这款nano系统是ubuntu20,并且环境是大象机器人修改后的,所以有一些不一样。采用源码编译安装后,realsense-view和pyrealsense2包都是已经安装的。关于使用-官网下载安装包,采用离线安装的方式,我在安装后发现接口正常,但是启动不了相机,所以直接采用源码编译安装是最可靠的。
五、安装realsense-ros
1. ROS1下安装
官方文档
2. ROS2下安装
官方文档
要注意查看下载的版本所支持的ros版本。否则编译不会成功。
3. 启动ROS节点
roslaunch realsense2_camera rs_camera.launch