【UR5机械臂Moveit避障】【2-2】kinect v2驱动以及ros包简易安装+cuda简易安装

目录

有错误或没说清楚的地方欢迎评论指正,我会修改的,谢谢大家

安装驱动:

事先安装cuda后会编译报错

测试驱动:

安装ros包:

测试ros包:

重新安装cuda


有错误或没说清楚的地方欢迎评论指正,我会修改的,谢谢大家

参考1:Kinect V2 在ros-noetic使用(ubuntu20.04)_noetic 对应的驱动libfreenect-CSDN博客

参考2:ROS中使用Kinect v2-CSDN博客

由于d435i点云太差,我后续改用了实验室现有的kinectv2,首先注意一点,kinectv2必须要插在usb3.0的接口上,使用

lsusb
lsusb -t

查看接口是不是插在3.0 的Foundation上,一定要连在root_hub 3.0上面。在usb3.0的问题上卡了我整整一天,除了重装usb驱动等软件层面的尝试,我甚至买了pciex1带4口usb3.0的扩展板,但是主板不行就是不行,所以小伙伴如果发现自己的usb有蓝色口,lsusb也有root_hub3.0,但是插上去就变成2.0的情况,请换其他电脑试试,不要想着装啥usb驱动或者改bios设置或者物理外接usb3.0,我都试过了,没用(小概率事件,我是因为主板太老,之后也是还一个新主板解决的)。

注意看同bus(物理接口)下的kinect的位置,我这里就是bus006,可以看bus006是3.0 root hub,这样就算可以了。

虚拟机我测试一下发现没法连接到设备,具体请看链接

所以有kinectv2的同学还是请使用双系统或者改用其他的深度相机好了。(如果有虚拟机使用v2成功的同学请一定要告诉我,我也很想用虚拟机连v2!)

安装驱动:

先apt安装必要组件:

sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libturbojpeg0-dev
sudo apt-get install libglfw3-dev

再下载libfreenect2并编译安装

git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
make install

应该没什么问题。

事先安装cuda后会编译报错

报错内容:

cuda_kde_depth_packet_processor.cu:39:10: fatal error: helper_math.h: 没有那个文件或目录

倒也是查到些帖子,但是不用点进去,因为没解决问题。链接1:http://t.csdnimg.cn/UJrXd

链接2:http://t.csdnimg.cn/qART4 链接3:http://t.csdnimg.cn/m8QPH

其实解决这个问题很简单,既然安装cuda之后会编译报错,那么卸载cuda之后再编译不就好了。卸载cuda参考链接:http://t.csdnimg.cn/fAfVF

我用的方法一,官方卸载程序总归是最好的。

卸载cuda方法:

找到cuda所在位置

/usr/local/cuda-11.x/bin

找到其中有cuda-uninstaller,右键此地打开终端

sudo ./cuda-uninstaller

卸载好之后把/libfreenect2/build里的东西删掉,然后重新编译

cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
make install

卸载完cuda之后就编译通过了,配环境真是太好玩辣。就为了解决这个问题,中途使用了sudo apt autoremove命令导致显卡驱动崩溃后进不了系统。后续进win备份ubuntu的文件(使用linuxreader)+重作系统+安装各种东西耗时近一天。这个命令属实小白杀手,而且已经在很多博客里看到了,太坑了。

测试驱动:

新开终端

cd libfreenect2/build
sudo ./bin/Protonect

可以看到图像而且过程中不自动闪退就是没问题。

安装ros包:

cd ~/catkin_RealSense_ws/src/
git clone https://github.com/code-iai/iai_kinect2.git
cd iai_kinect2

注意下一步和参考不一样,原来的rosdep install -r --from-paths .会报错

lu@lu-linux:~/catkin_RealSense_ws/src/iai_kinect2$ rosdep install -r --from-paths .
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
iai_kinect2: Cannot locate rosdep definition for [kinect2_registration]
kinect2_bridge: Cannot locate rosdep definition for [kinect2_registration]
kinect2_calibration: Cannot locate rosdep definition for [kinect2_bridge]
kinect2_viewer: Cannot locate rosdep definition for [kinect2_bridge]
Continuing to install resolvable dependencies...
#All required rosdeps installed successfully

解决方法的参考链接没保存,但是就是改为如下命令(注意改成自己的工作空间):

rosdep install --from-paths ~/catkin_RealSense_ws/src/iai_kinect2 --ignore-src -r

其实这步不走也行,因为鱼鱼的ros挺新加上这个iai_kinect2是个老包,所以更新一般都是没安装东西就success。

之后再运行剩余命令:

cd ~/catkin_RealSense_ws
catkin_make -DCMAKE_BUILD_TYPE="Release"

这时候会有报错,但是和上面链接中都有。参考:http://t.csdnimg.cn/od7KF

1.pcl报错

哪个包(注意我这里的包指的是ros包,也就是你xxx_ws里的一个个包,这里的报错一般是iai_kinect2里的kinect2_viewer这个包)的pcl报错就在哪个包的cmakelist.txt中添加如下语句,前面添加即可:

ADD_COMPILE_OPTIONS(-std=c++11 )
ADD_COMPILE_OPTIONS(-std=c++14 )
set( CMAKE_CXX_FLAGS "-std=c++11 -O3" )

2.cv报错

其中,要从CV_改为cv::的是(不要直接CV_批量替换cv::,精确到后续的字母再替换):

iai_kinect2/kinect2_calibration/src/kinect2_calibration.cpp中的

CV_IMWRITE_PNG_COMPRESSION

iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp(下面四个在一起的而且只出现过一次,一起改了就行)中的

CV_IMWRITE_JPEG_QUALITY
CV_IMWRITE_PNG_COMPRESSION
CV_IMWRITE_PNG_STRATEGY
CV_IMWRITE_PNG_STRATEGY_RLE

还有剩下几个rgb格式转换的如CV_BGRA2BGR这类不用改,在开头添加

#include <opencv2/imgproc/types_c.h> 

iai_kinect2/kinect2_viewer/src/viewer.cpp中

开头添加下面语句来解决CV_AA报错:

#include<opencv2/imgproc/imgproc_c.h>

编译应该没问题了。

测试ros包:

先把launch中的publish_tf改一下,改为true,免得以后每次启动相机都要拖一个publish_tf:=true

新开终端

roslaunch kinect2_bridge kinect2_bridge.launch
rviz

发现usb权限不够,参考:http://t.csdnimg.cn/TMUrH

[Error] [Freenect2Impl] failed to open Kinect v2: @4:4 LIBUSB_ERROR_ACCESS Access denied (insufficient permissions)
[Info] [Freenect2Impl] found 0 devices
[ERROR] [1716947808.656803435]: [Kinect2Bridge::initDevice] no Kinect2 devices found!
[ERROR] [1716947808.658274517]: [Kinect2Bridge::start] Initialization failed!
[FATAL] [1716947808.679535272]: Failed to load nodelet '/kinect2_bridge` of type `kinect2_bridge/kinect2_bridge_nodelet` to manager `kinect2'
[kinect2_bridge-3] process has died [pid 517159, exit code 255, cmd /opt/ros/noetic/lib/nodelet/nodelet load kinect2_bridge/kinect2_bridge_nodelet kinect2 __name:=kinect2_bridge __log:=/home/lu/.ros/log/b1e85080-1d5e-11ef-b29a-313dc61e5df7/kinect2_bridge-3.log].
log file: /home/lu/.ros/log/b1e85080-1d5e-11ef-b29a-313dc61e5df7/kinect2_bridge-3*.log

解决方法:

新开终端+复制规则

cd libfreenect2/platform/linux/udev/
sudo cp 90-kinect2.rules /etc/udev/rules.d/

重新插拔kinect2的usb口

重新启动roslaunch

roslaunch kinect2_bridge kinect2_bridge.launch
rviz

成功

消除畸变参考我的另一篇文章,链接(我做了消除畸变之后对相机标定的效果改善不明显)。之后就是准备相机标定了。

重新安装cuda

之前卸载了cuda,重新安装其实也很简单,我之前安装的是cuda11.8:

下载链接:

https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=runfile_local

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

只要之前nvcc -V成功,那么现在也就没问题,因为.bashrc里的path没有因为之前的卸载而消失。

如果是第一次安装cuda,那么在上面两步做完之后nvcc -V大概率是不显示上面内容的,这时候需要编辑.bashrc文件。

另开终端

sudo gedit ~/.bashrc

添加以下内容(通用,不需要管cuda版本)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda

保存,另开终端,这时候nvcc -V就没问题了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值