当前位置: 首页 > news >正文

大象机械臂myCobot 280 JN 2023和D435i相关环境配置

目录

    • 一、安装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
  1. 其他常用命令
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-devsudo 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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring Boot 中的 starter 是什么
  • 大脑可视化:多种方式实现fMRI的ROI的绘图
  • C语言 | Leetcode C语言题解之第363题矩形区域不超过K的最大数值和
  • 如何解决git@github.com: Permission denied (publickey)异常
  • k8s Pod生命周期详解
  • 動態IP設置反向代理教程
  • 【playwright篇】 Locator对象的方法详解
  • 鸿蒙OS promptAction的使用
  • 大模型重塑就医体验:医联MedGPT助力健康中国建设
  • 「漏洞复现」同享人力资源管理系统-TXEHR V15 SFZService.asmx SQL注入漏洞
  • verilog实现STFT
  • 【功能自动化】WebTours实现订票流程并设置检查点
  • 小程序学习day11-生命周期函数、组件所在页面的生命周期、自定义组件的插槽、自定义组件的父子通信
  • VS2022 - 制作自己的C#类库dll,并输出Unity识别的pdb调试信息文件
  • 7. 数据结构—二叉树(链式存储)
  • 自己简单写的 事件订阅机制
  • AngularJS指令开发(1)——参数详解
  • codis proxy处理流程
  • flutter的key在widget list的作用以及必要性
  • github从入门到放弃(1)
  • React16时代,该用什么姿势写 React ?
  • Spring框架之我见(三)——IOC、AOP
  • 服务器之间,相同帐号,实现免密钥登录
  • 诡异!React stopPropagation失灵
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 使用SAX解析XML
  • 手写一个CommonJS打包工具(一)
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 我的面试准备过程--容器(更新中)
  • 正则表达式
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 回归生活:清理微信公众号
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #define,static,const,三种常量的区别
  • $.ajax()参数及用法
  • (07)Hive——窗口函数详解
  • (10)STL算法之搜索(二) 二分查找
  • (145)光线追踪距离场柔和阴影
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (不用互三)AI绘画工具应该如何选择
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (排序详解之 堆排序)
  • (一)appium-desktop定位元素原理
  • (转)Scala的“=”符号简介
  • (转)Sql Server 保留几位小数的两种做法
  • (转载)(官方)UE4--图像编程----着色器开发
  • (自适应手机端)行业协会机构网站模板
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NetCore+vue3上传图片 Multipart body length limit 16384 exceeded.
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • // an array of int
  • @PreAuthorize注解