A-A+

ROS 新手问题Q&A粗略合集——by 西工大一小学生

2015年06月06日 ROS 评论 6 条 阅读 9,341 次

首先感谢flluo ,信任我,让我当了ROS群的管理员,说起来已经是第三个群了。。。其实我只是话痨而已,根本不是大神,爱丁堡学长才是大神。。。(话说我的挖的坑那么多,怎么填还是问题。。。)

 

随着ROS的普及,ROS开发者的壮大,大家水平层次不齐,很多是有关ubuntu linux的问题,或者一些非常基础可以自己解决的问题都拿到群上来说,我觉得这样不太好。。。。所以我尝试整理了一下常见的一些问题,以及解决方法或者寻求解决方法的途径,尽量增加大家的讨论质量。还有就是希望几个大神群主,或者Lee神、top,多组织线下聚会,这样一下子团结起来不是更好。

 

1.ROS安装部分:

大部分问题集中于apt-get 使用上

首先看下这个:http://jingyan.baidu.com/article/22a299b51648e09e19376ae7.html

遇到类似 unmet dependency 时候,说明软件包安装的依赖出问题了,估计是误删或者ROS安装的时候要求软件版本有误,这个主意一下:

图片1

主要集中于ubuntu 14.04 14.04.1 与之后的 ubuntu 14.04.2 在opengl版本上的一些分歧,我也被坑过的.......

遇到hash sum mismatch 的时候,有可能是你apt-get update 中途退出,直接装的时候会出这个问题:http://askubuntu.com/questions/41605/trouble-downloading-packages-list-due-to-a-hash-sum-mismatch-error

总之,apt-get出问题了,都不能算是ROS的问题,问ROS社区帮助不是很大偶......google是大家的好基友。

关于ROS deb软件包的概念:ROS 是一堆耦合程度很松的软件集合(除了一些通讯核心库和基础库,很多功能性的软件包之间完全独立)。安装位置一般在/opt/ros 下。ROS deb 安装是没有源码的,寻找源码要到wiki上的 source:标签寻找(详见之后的如何使用ROS wiki)

 

  • ROS基础使用部分:

首先处理环境变量的问题,一开始,按照ROS install 做完之后,试着敲一下ROS的命令行工具来检测初始环境变量是否完好,比如roscore。

一般来说,使用

export | grep ROS

图片2图片3图片4

(这是我没配置进阶包类似于rosjava ros-android 没有设置多机等等的基础ROS环境设置,新手们可以照着这个看自己哪个地方有问题)

而缺哪些环境变量会出现哪种问题,这个实在是千奇百怪,我细说一下各个环境变量的含义,大家也不要太浮躁,耐心看完自己处理问题最好。

与使用ROS有关的环境变量:

运行时用到的:

$PATH :这个是你命令行中命令查找路径,换句话说,如果PATH 中没有你ROS相关的目录的话,是没办法使用命令行工具的,一般roscore not found 就是这个有问题。

$PYTHONPATH :这个是python寻找package时的路径,如果有误的话,import ROS相关的包就会找不到

 

构建时用到的:

$CPATH  $CMAKE_PREFIX_PATH  $LD_LIBRARY_PATH  $PKG_CONFIG_PATH

$CMAKE_PREFIX_PATH :一堆主要和cmake有关的东西,出错也基本是一起出,出问题了自己的catkin_ws 构建就会出各种错。

 

ROS本身的环境变量:

1》ROS文件系统相关的:

$ROS_PACKAGE_PATH:(基本这就是50%以上问题的元凶)这个环境变量主要影响ROS文件系统工具查找ros package,指定几个地址去找相应的package,一般自建的catkin_ws 不把它的路径加入的话,是无法通过ROS命令行工具以及roslaunch 来运行或者调用里面的包的。(简单来说就是各种not found)

 

2》ROS核心通讯相关:

$ROS_ROOT:给出ROS 核心通讯组件的路径

$ROS_MASTER_URI:给出ROS MASTER的URI,一般是本机上,11311端口。

 

3》ROS多机通讯相关:

$ROS_IP/$ROS_HOSTNAME: 一般选一个用,多机连一起的时候,设置好这个就可以了,用于标示自己的在网络中的位置。

$ROS_NAMESPACE:表示本机上的namespace,本机上node中的name都会有这个namespace做前缀。

 

4》工具相关:

$ROS_WORKSPACE:使用rosinstall 和 rosws工具的同学看好了,这个表示这些工具的作用区域,而使用rosws init 会设置这个变量,如果没有设置这个以上工具使用会有问题的。

 

(还有一些新手基本不会用到的高阶环境变量就不说了。。。。)

仔细看$ROS_PACKAGE_PATH

然后就要说道这些环境变量的设置了:

一开始在apt-get install ros-desktop-full之后,教程就会让你

source /opt/ros/<distro>/setup.bash (大家一定要懂一点linux,不懂的我解释一下,就是执行setup.bash这个脚本)

这个脚本的作用:(翻译自脚本注释)设置各种环境变量,设置工具链(主要就是之前cmake一堆环境变量和设置),它会尽可能的撤销已有的设置的改变。(先source 自己工作空间的setup.bash 再source  opt安装的setup.bash 关于自己工作空间的一些设置,比如ROS_PACKAGE_PATH就会没有的

然后使用catkin_init_workspace , catkin_make 后会有source /home/<user>/catkin_ws/devel/setup.bash

之前的设置(opt那边的ROS setup)会overlay 到home这边的 setup里,所以基本source了自己工作空间里的setup.bash,以上说的环境变量以及设置都会做好,再有那些特殊需求,自己export 设置就好了。

 

然后就是关于/hom/<user>/文件夹下.bashrc是个啥:

这个文件是关于这个用户的bash shell 设置,每次以当前用户打开命令行都会运行一遍这个脚本,大家为了不用每次都source一遍,所以把命令写到了这个脚本里面。

关于这个脚本一些更具体的知识:http://blog.163.com/wang_hai_fei/blog/static/309020312008728333912/

 

(对新手的忠告:一般出问题90%都跟以上这些设置有关,先检查这些,自己体会做做笔记,更加重要的是要先了解linux和一些周边的知识,学习ROS不需要很着急,着急反而事倍功半)

 

  • ROS 里进阶使用:

Ros主要工作流程 (坑略大)

Urdf的概念(这个得自己看机器人学导论然后再说才说的清楚)

Roslaunch 注意事项(这个坑略大,以后再填)

 

  • gazebo使用问题:

最大的问题对于新手来说,就是gazebo开始的时候会去连接gazebo官网的远端模型数据库(remote model database),而国内你懂的,基本连不上,所以gazebo就会自己崩掉(gazebo 4以上版本不会出现了).(症状一般是wait timeout一类的提示,然后没有出来仿真界面自己退出了)

这个解决方法是:

先下载gazebo的模型文件集合,然后添加环境变量

图片5

完美解决。至于之后的各种问题,再讨论吧。。。。

 

  • 怎么看wiki:

(终于到了本文的重点)

wiki的结构是这样的:基本按照package为单元来介绍

举个例子:

图片6

找源码看 source ,找单独的package教程看右边的package link

有拿oxygen生成的api文档,相关的教程(如果有的话),也有一些比较重要的信息,这些在源码文件中都找得到。。。。

下面格式基本是(1)算法简介,(2)使用方法,(3)节点信息(订阅发布那些信息,提供哪些service,有哪些参数)

 

查找具体功能包一般看

图片7

Browse software ,里面有各个版本发型的所有package列表,可以通过这个直接进入你感兴趣的package文档。

图片8图片9

查找ROS基础库文档,也可以通过之前的方式,但是找到略麻烦

APIs页面的编排还是非常具有逻辑性的,这样也可以快速定位到你需要的基础库。

Wiki主页,找基础库看core library ,找具体硬件支持看robots,具体传感器支持找sensors(虽然支持版本有些旧)最后都是定位到具体的package上,具体参照package的阅读方法。

 

比较难找的但是常用的:

Roslaunch xml文件标签说明:http://wiki.ros.org/roslaunch/XML

Urdf xml 文件标签说明:http://wiki.ros.org/urdf/XML

Roscpp api 文档:http://docs.ros.org/jade/api/roscpp/html/

Rospy api 文档:http://docs.ros.org/jade/api/rospy/html/

 

(先整这么多,大三狗伤不起啊。。。。)

 

标签:

6 条留言  访客:6 条  博主:0 条

  1. zhangrelay

    这个合集应该在群里分享

  2. Sunsh1n333

    exbot@ubuntu:~$ export | grep ROS
    declare -x ROSLISP_PACKAGE_DIRECTORIES=""
    declare -x ROS_DISTRO="indigo"
    declare -x ROS_ETC_DIR="/opt/ros/indigo/etc/ros"
    declare -x ROS_MASTER_URI="http://localhost:11311"
    declare -x ROS_PACKAGE_PATH="/opt/ros/indigo/share:/opt/ros/indigo/stacks"
    declare -x ROS_ROOT="/opt/ros/indigo/share/ros"
    运行后是这个样子,怎么搞。。求助

  3. vonyud

    能不能告诉一下ros的群号?我这边只有linux系统打不开网站上的加入qq群。

    • poyoten

      109434898

  4. 少壮

    vali vali good 小学生大神好样的

  5. 冰点

    挺好的,谢谢大神分享总结

给我留言

Copyright © ExBot易科机器人实验室 保留所有权利.   Theme   Robin modified by poyoten

用户登录

分享到: