Ubuntu14.04安装和配置ROS Indigo

安装ROS

配置Ubuntu的软件源

配置Ubuntu要求允许接受restricted、universe和multiverse的软件源,可以根据下面的链接配置:
https://help.ubuntu.com/community/Repositories/Ubuntu

配置成如下图所示即可,一般情况下,这些配置都是默认的。

添加软件源到sources.list

设置软件源的代码如下:

一旦添加了正确的软件源,操作系统就知道去哪里下载程序,并根据命令自动安装软件。

设置密钥

安装

首先确认你的Debian的软件包索引是最新的。Debian计划是一个致力于创建一个自由操作系统的合作组织。我们所创建的这个操作系统名为 Debian。Debian系统目前采用Linux内核或者FreeBSD内核。

在ROS中有许多不同的函数库和工具,建议是完全安装,也可以根据自己的要求分别安装。完全安装时的工具包括ROS、rqt、可视化环境rviz、通用机器人库robot-generic libraries、2D(如stage)和3D(如Gazebo)仿真环境2D/3D simulators、导航功能包集navigation and 2D/3D(移动、定位、地图绘制、机械臂控制)、感知库perception(如视觉、激光雷达、RGB-D摄像头等)。

初始化rosdep

rosdep不仅能够使你更方便的安装一些系统依赖程序包,而且ROS的一些主要部件的运行也需要rosdep。

安装rosinstall

rosinstall命令是一个使用的非常频繁的命令,使用这个命令可以轻松的下载许多ROS软件包。

设置环境

添加ROS的环境变量,这样,当你打开你新的shell时,你的bash会话中会自动添加环境变量。

配置你的ROS环境

注意:当你用像apt这样的软件包安装管理器安装ROS,那么这些软件包用户是没有权利的去编辑的,当创建一个ROS package和处理一个ROS package时,你应该始终选择一个你有权限工作的目录作为工作目录。

管理你的环境

在安装ROS的时候,你会看到提示:source(命令)几个setup.*sh文件,或者甚至添加sourcing到你的shell启动脚本中。这是必须的,因为ROS依赖于结合使用shell环境的概念上。这使得开发依赖不同版本的ROS或者不同系列的package更加容易。

如果你在寻找或者使用你的ROS package上有问题,请确定的你的ROS环境变量设置好了,检查是否有ROS_ROOT和ROS_PACKAGE_PATH这些环境变量。

如果没有,你需要source一些setup.*sh文件。

环境设置文件是为你产生的,但是可以来自不同的地方:

  • 使用package管理器安装的ROS package提供setup.*sh文件;
  • rosbuild workspace使用像rosws这样的工具提供setup.*sh文件;
  • setup.*sh文件在编译和安装catkin package时作为副产品创建。

注意:rosbuild和catkin是两种组织和编译ROS代码的方式,前者简单易用,后者更加复杂但是提供更多灵活性尤其是对那些需要去集成外部代码或者想发布自己软件的人。

如果你在Ubuntu 14.04上使用apt工具安装ROS,那么你会在'/opt/ros/indigo/'目录中有setup.*sh文件,你可以这样source它们:

你每次打开新的shell都需要运行这个命令,如果你把source /opt/ros/indigo/setup.bash添加进.bashrc文件就不必要每次打开一个新的shell都运行这条命令才能使用ROS的命令了。

创建ROS工作环境

对于ROS Groovy和之后的版本可以参考以下方式建立catkin工作环境。在shell中运行:

可以看到在src文件夹中可以看到一个CMakeLists.txt的链接文件,即使这个工作空间是空的(在src中没有package),任然可以建立一个工作空间。

catkin_make命令可以非常方便的建立一个catkin工作空间,在你的当前目录中可以看到有build和devel两个文件夹,在devel文件夹中可以看到许多个setup.*sh文件。启用这些文件都会覆盖你现在的环境变量,想了解更多,可以查看文档catkin。在继续下一步之前先启动你的新的setup.*sh 文件。

为了确认你的环境变量是否被setup脚本覆盖了,可以运行一下命令确认你的当前目录是否在环境变量中:

输出:

至此,你的环境已经建立好了,可以继续学习ROS文件系统了!

参考链接


Ubuntu14.04安装和配置ROS Indigo

ubuntu 16.04/ubuntu 17.10下解决wireshark权限问题

ubuntu 16.04/ubuntu 17.10下使用wireshark可能会遇到如下权限问题:

也有可能列表中找不到我们抓包的网卡。

可以使用如下方法解决:

1.添加wireshark用户组

2.将dumpcap更改为wireshark用户组

3.让wireshark用户组有root权限使用dumpcap

4.将需要使用的用户名(一般都是当前登陆用户)加入wireshark用户组

参考链接


ubuntu下解决wireshark权限问题

macOS Sierra升级到macOS High Sierra后执行cc,git命令报错

macOS Sierra升级到macOS High Sierra后执行cc,git等命令报错,错误信息如下:

解决方法如下:

参考链接


mac更新系统后Git不能用,提示missing xcrun at

Windows 7系统上安装CentOS 7后通过修改grub2添加Windows 7启动引导项

按照以往的经验,先安装Windows 7之后,再装CentOS 7,那么CentOS 7应该会自动添加Windows 7启动项。但是安装完成后,发现启动项里没有Windows 7

我们需要手动添加Windows 7的启动项。

我们需要修改grub2的模版文件,然后执行grub2-mkconfig自动重建grub2引导列表。

至于set root=(hd0,1),还是set root=(hd0,msdos1),或者set root=(hd0,msdosX),请在启动列表中按下e键,进入grub rescue模式,执行ls命令列出分区,如果第一个启动不了,请逐个分区都试试。

参考链接


Centos7 + Windows7 双系统,通过修改grub2,重新添加 Win7 启动引导项

macOS High Sierra (10.13)制作Windows 7安装U盘

  1. Open a Terminal (under Utilities)
  2. Convert the ISO to UDRW format hdiutil convert -format UDRW -o destination_file.img source_file.iso
  3. Run diskutil list and determine the device node assigned to your flash media (e.g., /dev/disk2)
  4. Run diskutil unmountDisk /dev/diskN (replace N with the disk number from the last command; in the previous example, N would be 2)
  5. Execute sudo dd if=/path/to/destination_file.img.dmg of=/dev/diskN bs=1m (replace /path/to/destination_file.img.dmg with the path where the image file is located; for example, ./win7.img.dmg)
    • Using /dev/rdisk instead of /dev/disk will faster, 20x
    • If you see the error dd: Invalid number '1m', you are using GNU dd. Use the same command but replace bs=1m with bs=1M
    • If you see the error dd: /dev/diskN: Resource busy, make sure the disk is not in use. Start the 'Disk Utility.app' and unmount (don't eject) the drive
  6. Run diskutil eject /dev/diskN, and remove your flash media when the command completes (this can take a few hours on slower drives)

继续阅读macOS High Sierra (10.13)制作Windows 7安装U盘

ThinkPad-T440通过U盘启动的方式升级BIOS

最近在ThinkPad-T440上安装最新的Ubuntu 17.04的时候,系统提示如下信息:

通过提示,可以看到是系统的CPU微码部分没有更新到最新,导致系统在执行部分功能的时候发生了异常,升级BIOS可以解决这个问题。

在联想官网上下载最新的BIOS光盘镜像(假定镜像名为BIOSCD.iso之后,发现无法直接通过U盘启动系统。原因是光盘的镜像格式不符合U盘启动需要的格式,需要进行转换之后才可以正常启动系统。

可以通过如下的方式,转换下载到的镜像文件之后,刷新BIOS

之后,重启系统即可。

继续阅读ThinkPad-T440通过U盘启动的方式升级BIOS

WD MyCloud编译PHP-7.1安装包

1.按照How to successfully build packages for WD My Cloud from source中的介绍,搭建完成WDMyCloud的编译环境

2.使用如下方式编译:

3.编译php-apcu,这个模块WD MyCloud需要

上面下载的代码由于是国外的服务器,因此可能会出现一直无法下载成功的情况,可以从这里下载代码的拷贝。PHP源代码点击这里PHP7 Debian编译配置文件点击这里dh-php源代码点击这里php-apcu源代码点击这里,  php-apcu-bc源代码点击这里

WDMyCloud中安装的时候执行如下命令:

注意,这部分的功能目前仅仅是可用,还没有达到完全正常的情况,如果出现问题,可以切换回PHP5,目前已知的完美切换回到原来的PHP5的办法就是卸载上面安装的所有PHP7的相关应用才能切换成功,否则总有部分小功能不是太正常.

参考链接


神经网络瘦身:SqueezeNet

2016年2月份,UC Berkeley和Stanford一帮人在arXiv贴了一篇文章:

这篇文章做成了许多人梦寐以求的事——压缩神经网络参数。但和以往不同,原作不是在前人网络基础上修修补补(例如Deep Compression),而是自己设计了一个全新的网络,它用了比AlexNet少50倍的参数,达到了AlexNet相同的精度!

关于SqueezeNet的创新点、网络结构,国内已经有若干爱好者发布了相关的简介,如这篇这篇,国外的文献没有查,相信肯定也有很多。

本文关注的重点在SqueezeNet为什么能实现网络瘦身?难道网络参数的冗余性就那么强吗?或者说很多参数都是浪费的、无意义的?

继续阅读神经网络瘦身:SqueezeNet

OpenMediaVault-3.0.89在系统更新升级后无法挂载磁盘

OpenMediaVault-3.0.89在执行应用升级

重启无法自动挂载磁盘,查看系统日志,看到如下内容:

这个原因是由于collectd的升级导致了无法使用systemd来启动。而Openmediavaule加载硬盘的时候依赖collectd模块,这个模块的启动问题导致全部磁盘都无法加载。

目前的做法是升级到最新的OpenMediaVault-4.0,参考OpenMediaVault系统升级

但是升级后会遇到如下错误:

以及

修复方法为:

参考链接


ROS Kinetic切换OpenCV到2.X版本

注意,本文章只针对简单的应用,不涉及到复杂的严重依赖OpenCV模块的项目。如果依赖复杂,可能会导致OpenCV 2.XOpenCV 3.X的运行时库同时被加载,导致运行时候崩溃。

最近在使用ROS开发项目,代码从Indigo(Ubuntu 14.04)升级到KineticUbuntu 16.04)。

发现OpenCV升级到了opencv-3.2.0-dev版本,但是实际使用中发现代码在opencv-2.4.9版本上能正确运行,但是升级到opencv-3.2.0-dev版本之后,就不能正常工作了。

为了查找问题,需要降级一下OpenCV版本。

网上查找了一下,找到如下解决方法:

然后修改如下的内容(修改之前请注意先备份

指向系统自带的opencv-2.4.9版本

修改完成后,必要的情况下,请在删除~/workspace/ros/catkin/目录下的builddevel目录之后,重新编译。

参考链接