做完标定后,测试避障功能,都是坑
typedef pcl::PointXYZRGB PointT;
pcl::transformPointCloud(*cloud_in,*cloud,cam2rb);
pcl::copyPointCloud(*cloud_in,*cloud);
pcl::io::savePCDFileASCII ("cloud1_trans.pcd", *cloud); //pcl::io::savePCDFileBinary("cloud1_trans.pcd", *cloud);
若以pcl::PointXYZRGB读取pcd文件,copy一份然后保存到硬盘,用pcl_viewer看不到保存的点云
而后以pcl::PointXYZ读取,便可以看到。之前遇到到这个问题,如果pcd文件不含有rgb信息但强行以pcl::PointXYZRGB读取会自动赋值rgb为黑色(0, 0, 0),而pcl_viewer背景为黑色,所以看不到任何点云。but这次我读取的是带有rgb信息的pcd啊…
这是小插曲,后面开始踩坑
坑一
方法:moveit自带的MotionPlanning可以直接import file
试了下不能直接导入.pcd文件,但是可以直接导入.ply文件,所以直接运用
pcl::transformPointCloud(*cloud_in,*cloud,cam2rb);
得到基于机械臂base的点云,然后直接通过终端命令
pcl_pcd2ply xxx.pcd xxx.ply
运行打开rviz
roslaunch ur3_moveit_config moveit_rviz.launch config:=true
import网上的standford bunny,效果如图:
import刚才生成的xxx.ply文件,报错如下:
eigen: too many iterations in Jacobi transform.
rviz: /build/ogre-1.9-mqY1wq/ogre-1.9-1.9.0+dfsg1/OgreMain/include/OgreAxisAlignedBox.h:252:void Ogre::AxisAlignedBox<