ubuntu相关

1.ubuntu 16.04使用run方式安装nvidia显卡驱动

我们在使用一些神经网络框架的时候通常需要GPU版本,而GPU版本需要我们拥有显卡,而要想使用显卡我们必须要首先安装显卡驱动。首先到下述网址搜索对应版本驱动。

https://www.nvidia.cn/Download/index.aspx?lang=cn

根据自己的显卡型号搜索对应版本的驱动,如下图所示,我的电脑显卡为GeForce 940MX。

下面来讲解具体的安装步骤:

(1)禁用nouveau,打开终端,输入

sudo gedit /etc/modprobe.d/blacklist.conf

在文件的最后部分添加下面两行代码:

blacklist nouveau
options nouveau modeset=0

(2)在终端输入下面代码,然后重启电脑。

sudo update-initramfs -u

3)重启电脑之后,在终端输入下面代码,查看禁用nouvean是否成功,没有任何输出表示禁用成功。

lsmod | grep nouveau

(4)将之前下载好的驱动run文件拷贝至home目录,然后在在终端输入下面语句,这个语句会关闭图形界面

sudo service lightdm stop

如果之前安装过其他版本的驱动需要卸载掉原有驱动,输入下面语句:

sudo apt-get remove nvidia-*

(5)同时按住Fn+Ctrl+Alt+F1,在界面中输入用户名和密码,然后在home目录下给驱动run文件赋予权限:

sudo chmod  a+x NVIDIA-Linux-x86_64-440.44.run

(6)安装驱动,注意必须要在尾部加-no-opengl-files,否则会出问题。

sudo ./NVIDIA-Linux-x86_64-440.44.run -no-opengl-files

(7)接下来出现

The distribution-provided pre-install script failed! Are you sure you want to continue? 选择 yes 继续。

Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 选择 No 继续。

问题没记住,选项是:install without signing 问题大概是:Nvidia's 32-bit compatibility libraries? 选择 No 继续。

Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 选择 Yes 继续

(8)关机重启,打开终端,输入下面语句查看是否安装成功。

nvidia-smi

如果出现类似于下图这样的,表示安装成功。

2.解决ubuntu系统下anaconda与ROS的冲突问题

问题描述:在我安装完anaconda3之后,我发现当我输入下述语句启动turtlebot时居然出错了!

roslaunch turtlebot_bringup minimal.launch

原因在于我们在安装anaconda3的时候,默认是将anaconda的路径加入到系统的环境变量中去的,也就是.bashrc文件中的这条语句

 export PATH="/home/zpp/anaconda3/bin:$PATH"

我们知道anaconda3用的python版本是Python 3.x版本,而ros下的python版本是Python 2.7版本。这就导致了系统环境中的python默认版本为python 3.x,因此ros中的相关程序可能在新的python版本下运行错误。

例如,在安装完anaconda3后,在终端输入

python -V

查看python版本,我的终端输出Python 3.7.4.而没装anaconda之前,输入上述语句查看Python版本系统输出为Python 2.7.12

解决办法:

打开.bashrc文件,将其中下面的这段关于anaconda初始化的代码删去。

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/zpp/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/zpp/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/zpp/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/zpp/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

同时,为了保证我们也能正确的使用anaconda,我们在.bashrc文件最后一行输入

alias condaenv='. /home/zpp/anaconda3/etc/profile.d/conda.sh'

这样,当我们每次想使用anaconda的时候,我们只要在终端输入condaenv即可初始化anaconda,然后正常执行各种conda命令。

这样的话,我们的ros程序就可以正常执行啦,conda我们想使用的时候只要在终端输入condaenv即可像平时一样使用anaconda.

3.ubuntu系统下一台电脑连接两台Kinect V1

只要在自己的工作空间中随便一个包中新建一个launch文件夹,然后在里面新建一个launch文件,launch文件内容里拷贝如下内容即可。

<launch>
<!-- Parameters possible to change-->
<arg name="camera1_id" default="#1" /><!--here you can change 1@0 by the serial number -->
<arg name="camera2_id" default="#2" /><!--here you can change 2@0 by the  number -->
<!--arg name="camera1_id" default="B00366600710131B" /--><!--here you can change 1@0 by the serial number -->
<!--arg name="camera2_id" default="B00364210621048B" /--><!--here you can change 2@0 by the serial number -->
<!--arg name="camera3_id" default="#3" /--><!--here you can change 3@0 by the serial number -->
<arg name="depth_registration" default="true"/>
 
<!-- Default parameters-->
<arg name="camera1_name" default="kinect1" />
<arg name="camera2_name" default="kinect2" />
<!--arg name="camera3_name" default="kinect3" /-->
 
<!-- Putting the time back to realtime-->
<rosparam>
/use_sim_time : false
</rosparam>
 
<!-- Launching first kinect-->
<include file="$(find openni_launch)/launch/openni.launch">
<arg name="device_id" value="$(arg camera1_id)"/>
<arg name="camera" value="$(arg camera1_name)"/>
<arg name="depth_registration" value="$(arg depth_registration)" />
 
<node name="rviz" pkg="rviz" type="rviz"/>
</include>
 
<!-- Launching second kinect-->
<include file="$(find openni_launch)/launch/openni.launch">
<arg name="device_id" value="$(arg camera2_id)"/>
<arg name="camera" value="$(arg camera2_name)"/>
<arg name="depth_registration" value="$(arg depth_registration)" />
 
<node name="rviz" pkg="rviz" type="rviz"/>
</include>
 
<!-- Launching third kinect-->
<!--include file="$(find openni_launch)/launch/openni.launch"-->
<!--arg name="device_id" value="$(arg camera3_id)"/-->
<!--arg name="camera" value="$(arg camera3_name)"/-->
<!--arg name="depth_registration" value="$(arg depth_registration)" /-->
<!--/include-->
 
</launch>

例如,我的ROS中的一个工作空间为work_ws,该工作空间里有一个包,假设名为experiment,则我们只需要在experiment包里面新建一个假设名为test.launch,那么我们只要在终端输入

roslaunch experiment test.launch

即可同时启动两台kinect,并且他们发布的话题名是不一样的,开头以kinect1与kinect2做区分。

4.ubuntu 16.04使用anaconda创建python虚拟环境

在深度学习训练网络的时候,我们难免需要一个环境。但是通常情况下,我们可能在用别人的代码跑训练,不同的代码可能基于把不同的环境配置,这时候我们就特别需要使用anaconda创建python虚拟环境。这样我们运行特定的工程只要选择对应的虚拟环境就好了。anaconda是一个开源的python包管理器,其可以方便的下载我们需要的python包。

4.1 创建独立的python环境

我们就可以创建一个名称为work的虚拟环境,并指定使用python2.7 版本(conda会自动找版本下载)。

打开终端输入:

conda create -n work python=2.7

其会提示我们需要下载相应的python包,输入y开始下载。下载完成后,环境就创建成功了。

4.2 切换环境

conda activate work

即可激活刚刚创建的虚拟环境,然后我们就可以在这个环境下面安装各种各样的包啦。conda会帮我们自动匹配我们需要的版本,方便的是,如果我们需要下载一些框架的gpu版本,它会自动帮我们撞上cuda与cudnn,完全不用我们操心。也就是说,当我们需要下载一个库的时候,其会将这个库所依赖的其他库一起给装上,特别方便。

4.3 conda常用命令

source activate // 切换到base环境(默认环境)
conda env list // 列出conda管理的所有环境
conda search ***//搜索是否有***包可以在conda上下载
conda create -n work python=2.7 // 创建一个名为learn的环境并指定python版本
source activate work//激活当前环境
activate work// 切换到work环境
conda list // 列出当前环境的所有包
conda install requests 安装requests包
conda remove requests 卸载requets包
conda remove -n work --all // 删除work环境及下属所有包
conda update requests 更新requests包
conda env export > environment.yaml // 导出当前环境的包信息
conda env create -f environment.yaml // 用配置文件创建新的虚拟环境

4.4 有时候,在我们创建的虚拟环境下,使用conda install 可能会发现conda没有相应的包,这时候我们可以使用pip search 命令去搜索指定的包,如果有的话,就pip install ,也会自动的加载到我们的环境中。

4.5 在我们搭建好虚拟环境之后,我们该如何使用我们的虚拟环境呢?我们可以在pycharm中使用该虚拟环境,具体是在pychram中选择Project Interpreter,然后点击齿轮图标,点击add,然后选择Conda Environment,然后选中Existing environment,然后选择我们之前搭建的虚拟环境就OK啦!

5.关于Ubuntu使用Kinect V1执行roslaunch openni_launch openni.launch报错的问题:

错误情况如图所示:

这种情况是因为我们的device_id设置的不对,那么我们该如何查看正确的device_id呢?其实很简单,我们只需观察SensorV2那一行,我们发现2. device on bus 001:67,所以正确的device_id应该为2,系统默认的device_id为1,所以我们应该输入下面语句:

roslaunch openni_launch openni.launch device_id:=#2

这样我们就会发现执行成功了。同理,我是在电脑连接两台kinect v1的时候一直报错,我是按照本篇博客的第3条进行设置的,也就是device_id分别为1和2,执行报错如下:

可以发现,正确的device_id应该为3和4(只需观察SensorV2所在行device前面的数字),所以我应该把第3条中的default值改为#3和#4。另外,我们务必要通过lsusb命令查看是否有两台kinect与电脑连接上了,如果电脑显示并没有两台kinect连接上,那可能就是其他问题了。我通过lsusb命令执行如下:

可以看见有两个Microsoft Corp. Xbox NUI Camera,这说明有两个kinect连接上了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值