正式入职一个月了,知道了工作中相关记录的重要性。这里不定期更新工作中遇到的各种技术问题。以便后续回顾,不在一条路上跌倒两次。
一、无法挂载NTFS移动硬盘的解决办法:
插入硬盘时提示:
sudo mount -t ntfs-3g /dev/sdb6 /home/media/P
$MFTMirr does not match $MFT (record 0).
Failed to mount '/dev/sdb6': 输入/输出错误
NTFS is either inconsistent, or there is a hardware fault, or it's a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows twice. The usage of the /f parameter is very
important! If the device is a SoftRAID/FakeRAID then first activate
it and mount a different device under the /dev/mapper/ directory, (e.g.
/dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation
for more details.
解决办法:sudo ntfsfix /dev/*** ***为报错时告知的硬盘挂载分区
二、两台Ubuntu主机共享一套键鼠的办法:(俩台需要在同一个局域网下)
1. sudo apt-get installsynergy /quicksynergy
2. 服务端配置:(键鼠接口所在的机器即是服务端)
sudo vim /etc/synergy.conf
section: screens
myserver:
myclient:
end
section: links
myserver:
right = myclient
myclient:
left = myserver
end
其中的right与left根据两台显示器实际左右关系调整。
3. 运行:
服务端运行:
synergys
客户端运行:
synergyc
server hostname 直接写为服务端ip地址即可。
三、配置ssh与vnc使得Windows系统可远程Ubuntu
1、ssh:
(1)sudo apt-get install openssh-server
(2)sudo ps -e |grep ssh -> sudo service ssh start
(3)sudo gedit /etc/ssh/sshd_config
把配置文件中的"PermitRootLogin without-password"加一个"#"号,把它注释掉-->再增加一句"PermitRootLogin yes"-->保存
2、vnc:
(1)desktop sharpe
(2)sudo apt-get install dconf-editor -> 运行dconf-editor
(3)
依次展开org->gnome->desktop->remote-access
这里也可以直接设置远程控制选项,但重要的是将“requre-encryption”去掉。
如果不想每次远程登陆都在ubuntu上点一下允许的话,注意也要把promotion-enabled选项去掉
四、配置TX2开机自启动roslaunch
按照网上的各种教程方法进行了尝试,发现将roslaunch写入的脚本文件,通过其方法启动,均失败。现象为sh脚本文件开机可正常启动,通过ps -aux|grep roslaunch 可查看到roslaunch进程,但通过rosnode list查看不到相关节点的启动。
故经过多次尝试放弃,采用一种较差的方式解决。即将其sh脚本文件写入~/.bashrc中,可实现。但存在一个小问题,每次通过ssh远程连接TX2默认重新启动一次sh脚本。
五、在TX2上编译opencv遇到的报错:
error: ‘NppiGraphcutState’ does not name a type operator NppiGraphcutState*()
解决办法:
在graphcuts.cpp中将
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
六、绑定USB口
由于ubuntu USB设备号为从零开始依次累加,所以多个设备每次开机后设备号不固定,机器人每次开机都要蛋疼的按顺序插,
在网上找到一种方法:udev的规则
udev的规则说明,可以参考博客说明:http://blog.csdn.net/cokewei/article/details/8281239
将端口重映射到新的固定的名字,并且设置其权限为可读。使用对应的id端口映射到固定的名字上。
1 |
|
查看对应的usb端口信息
1 2 3 4 5 6 7 |
|
udev的规则
$kernel, %k:设备的内核设备名称,例如:sda、cdrom。
ID 10c4:ea60 表示usb设备的ID(这个ID由芯片制造商设置,可以唯一表示该设备)
10c4 usb_device_descriptor.idVendor
ea60 usb_device_descriptor.idProduct
依据上面信息写udev文件:我用的是rplidar的激光雷达usb串口
我的串口设备信息
1 |
|
1 |
|
1 |
|
创建生效后重新插拔USB
1 |
|
显示
1 2 3 |
|
多个不同型号设备可使用这种方法来区分
打开设备时,用(/dev/rplidar)即可。
本解决方式 转自:https://blog.csdn.net/walleva96/article/details/78347612