测试环境:python3.6 Ubunut18.04
1.因为jetsonnano nx板是属于ARM架构下的ubuntu系统和普通的虚拟机或者ubuntu系统安装的pcl方法不同,所以为了避免明明跟着教程走却出现一些不知名的问题这个坑,写下来也方便自己记忆和能帮助到大家。
2.我配置环境前喜欢先创建一个虚拟环境,方便调试和避免环境串了。
archiconda的安装
- 为什么选择archiconda呢?因为英伟达的板子包括妙算都是arm架构类似手机架构不能像电脑那样安装Linux 的anconda和win10的的ancoda
- 下载archiconda
这里我直接给出我的百度云链接,因为去官网下载至少30分钟,先用电脑下载到另一个u盘再插入英伟达板子.
把文件放入jetsonnano nx的板子后复制粘贴到主目录,在该文件所在处单击鼠标右键打开终端终端输入cd
1.sudo ./Archiconda3-0.2.3-Linux-aarch64.sh 安装 2.sudo vim ~/.bashrc 3.最后一行添加export PATH=~/archiconda3/bin:$PATH 4.退出后刷新source ~/.bashrc
conda create -p XXXXX python=3.6 conda activate XXXXX激活虚拟环境,往后想进入虚拟环境就运行此行代码 离开虚拟环境命令conda env list conda remove -p XXXXX --all 删除虚拟环境 虚拟环境可在archiconda文件的env里看到 Xxxx是你自己想创建的虚拟环境名称,为什么选3.6呢?因为jetson nano nx搭建其已经自带python2.7和python3.6,直接用其只有的python创建即可。
- 配置cuda
1.gedit ~/.bashrc终端运行 2.底行输入 export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export CUDA_ROOT=/usr/local/cuda 3.保存退出 4.source ~/.bashrc刷新环境 nvcc -V检查cuda环境出现cuda10.2就是配置成功
首先安装C++版本的PCL库
sudo apt update #不更新可能找不到最新的版本 sudo apt install libpcl-dev #安装pcl依赖库
安装python-pcl
直接pip安装会报错,原因是pip会直接安装pcl1.8版本,与python3.6不兼容,必须自己编译安装。先去下载源码,然后解压后,先不着急安装,把setup.py打开,修改里面的语句。
https://github.com/strawlab/python-pcl
在726行 VTK=7.0 改为6.3
752中 'vtkXXXX-' + vtk_version 删除,其中XXXX代表
vtkexpat vtkfreetype vtkgl2ps vtkhdf5 vtkhdf5_hl vtkjpeg vtkjsoncpp vtklibxml2 vtkNetCDF vtkNetCDF_cxx vtkoggtheora vtkpng vtkproj4 vtksqlite vtktiff vtkzlib
编译安装
python setup.py build_ext -i python setup.py install
成功后是没有反馈的,终端输入python
为了节约时间也可以放入编译文件,建议还是自己编译一下,比较时间也不是很长。
链接:https://pan.baidu.com/s/1SZAbfU0e_gGTlzLr85TcTw
提取码:1111
--来自百度网盘超级会员V3的分享
测试pcl
1、创建一个test_pcl文件夹,然后创建一个源文件test_pcl.cpp,代码如下:
#include <iostream>
#include <pcl/common/common_headers.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/console/parse.h>
using namespace std;
int main(int argc, char **argv) {//柱型点云测试
cout << "Test PCL !" << endl;
pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
uint8_t r(255), g(15), b(15);
for (float z(-1.0); z <= 1.0; z += 0.05) {//制作柱型点云集
for (float angle(0.0); angle <= 360.0; angle += 5.0) {
pcl::PointXYZRGB point;
point.x = cos (pcl::deg2rad(angle));
point.y = sin (pcl::deg2rad(angle));
point.z = z;
uint32_t rgb = (static_cast<uint32_t>(r) << 16 | static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));
point.rgb = *reinterpret_cast<float*>(&rgb);
point_cloud_ptr->points.push_back (point);
}
if (z < 0.0) {//颜色渐变
r -= 12;
g += 12;
}
else {
g -= 12;
b += 12;
}
}
point_cloud_ptr->width = (int) point_cloud_ptr->points.size ();
point_cloud_ptr->height = 1;
pcl::visualization::CloudViewer viewer ("pcl—test测试");
viewer.showCloud(point_cloud_ptr);
while (!viewer.wasStopped()){ };
return 0;
}
#include <iostream>
#include <pcl/common/common_headers.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/console/parse.h>
using namespace std;
int main(int argc, char **argv) {//柱型点云测试
cout << "Test PCL !" << endl;
pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
uint8_t r(255), g(15), b(15);
for (float z(-1.0); z <= 1.0; z += 0.05) {//制作柱型点云集
for (float angle(0.0); angle <= 360.0; angle += 5.0) {
pcl::PointXYZRGB point;
point.x = cos (pcl::deg2rad(angle));
point.y = sin (pcl::deg2rad(angle));
point.z = z;
uint32_t rgb = (static_cast<uint32_t>(r) << 16 | static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));
point.rgb = *reinterpret_cast<float*>(&rgb);
point_cloud_ptr->points.push_back (point);
}
if (z < 0.0) {//颜色渐变
r -= 12;
g += 12;
}
else {
g -= 12;
b += 12;
}
}
point_cloud_ptr->width = (int) point_cloud_ptr->points.size ();
point_cloud_ptr->height = 1;
pcl::visualization::CloudViewer viewer ("pcl—test测试");
viewer.showCloud(point_cloud_ptr);
while (!viewer.wasStopped()){ };
return 0;
}
在test_pcl文件夹下再创建一个配置文件CMakeLists.txt,代码如下:
cmake_minimum_required(VERSION 2.6)
project(test_pcl)
find_package(PCL 1.2 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(test_pcl test_pcl.cpp)
target_link_libraries (test_pcl ${PCL_LIBRARIES})
install(TARGETS test_pcl RUNTIME DESTINATION bin)
编译源代码
在test_pcl文件夹下再建一个build文件夹,在终端中进入build文件夹下。
输入cmake ..
进行工程分析,然后输入make
进行编译。
运行源代码
编译成功后,输入./test_pcl
运行可执行文件,运行成功!出现自由拉伸旋转的点云图
至此,恭喜你!PCL安装成功且运行成功!!!
参考链接
https://blog.csdn.net/qq_42257666/article/details/124574029?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166799730916782388092430%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166799730916782388092430&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-124574029-null-null.142^v63^control,201^v3^control_2,213^v2^t3_control2&utm_term=ubuntu%20pcl%E6%B5%8B%E8%AF%95&spm=1018.2226.3001.4449
https://blog.csdn.net/qq_54609718/article/details/124997287?ops_request_misc=&request_id=&biz_id=102&utm_term=jetson%20nx%20pcl&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-124997287.142^v63^control,201^v3^control_2,213^v2^t3_control2&spm=1018.2226.3001.4187