Jetson nano NX板虚拟环境安装python-pcl进行点云验证

发布于:2022-11-09 ⋅ 阅读:(9) ⋅ 点赞:(0) ⋅ 评论:(0)

测试环境:python3.6 Ubunut18.04

1.因为jetsonnano nx板是属于ARM架构下的ubuntu系统和普通的虚拟机或者ubuntu系统安装的pcl方法不同,所以为了避免明明跟着教程走却出现一些不知名的问题这个坑,写下来也方便自己记忆和能帮助到大家。

2.我配置环境前喜欢先创建一个虚拟环境,方便调试和避免环境串了。

archiconda的安装

  1. 为什么选择archiconda呢?因为英伟达的板子包括妙算都是arm架构类似手机架构不能像电脑那样安装Linux 的anconda和win10的的ancoda
  2. 下载archiconda
  3. 这里我直接给出我的百度云链接,因为去官网下载至少30分钟,先用电脑下载到另一个u盘再插入英伟达板子.

  4. https://pan.baidu.com/s/1W9LjQsmdM6RwSUH3x4wmJA提取码:1111

  5. 把文件放入jetsonnano nx的板子后复制粘贴到主目录,在该文件所在处单击鼠标右键打开终端终端输入cd

  6. 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创建即可。
  7. 配置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库

  8. sudo apt update  #不更新可能找不到最新的版本
    sudo apt install libpcl-dev #安装pcl依赖库

    安装python-pcl

  9. 直接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代表

  10. vtkexpat
    vtkfreetype
    vtkgl2ps
    vtkhdf5
    vtkhdf5_hl
    vtkjpeg
    vtkjsoncpp
    vtklibxml2
    vtkNetCDF
    vtkNetCDF_cxx
    vtkoggtheora
    vtkpng
    vtkproj4
    vtksqlite
    vtktiff
    vtkzlib

    编译安装

  11. 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