ROS安装

ROS安装可参考官方文档:

https://wiki.ros.org/melodic/Installation/Ubuntu

因为ros版本需要与Ubuntu的版本对应,如本机是Ubuntu 18.04需要安装Melodic,

Setup your sources.list

Setup your computer to accept software from packages.ros.org.

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

Set up your keys

sudo apt install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

Installation Desktop-Full Install: (Recommended) :

sudo apt install ros-melodic-desktop-full

Environment setup

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

Dependencies for building packages

Up to now you have installed what you need to run the core ROS packages. To create and manage your own ROS workspaces, there are various tools and requirements that are distributed separately. For example, rosinstall is a frequently used command-line tool that enables you to easily download many source trees for ROS packages with one command.

To install this tool and other dependencies for building ROS packages, run:

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

Initialize rosdep

Before you can use many ROS tools, you will need to initialize rosdep. rosdep enables you to easily install system dependencies for source you want to compile and is required to run some core components in ROS. If you have not yet installed rosdep, do so as follows.

sudo apt install python-rosdep

但是由于被墙,以下命令无法是使用

sudo rosdep init
rosdep update

解决方案参考

ROS安装过程中如何解决 rosdep update 命令出现错误 - 知乎

总结一下就是

  1. 改用手机热点(玄学无用,切勿当真)
  2. 改hosts文件附加 www.rawgithubusercontent.com 的IP地址(随着墙墙的壮大,能用的IP越来越少了)
  3. 用 .github 代替 .rawgithub(本质无差)
  4. 修改 TIMEOUT 值(此法治标不治本。它有点用,但不完全有用,建议还是使用下文的必杀招)

作者采用代理方法,如下:

1 打开包含资源下载函数的文件:

$ sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py

2. 添加代理:

url="https://ghproxy.com/"+url

下面是代码修改的位置

3. 修改/usr/lib/python2.7/dist-packages/rosdistro/__init__.py文件中的DEFAULT_INDEX_URL

$ sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'

4. 修改其余(4个)文件中的地址,在地址 https://raw.githubusercontent.com/... 前添加https://ghproxy.com/

//行数不一定一一对应,以实际网址所在位置为准,基本上就在附近
$ sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
//修改第36行的地址
$ sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 72行
//修改第72行
$ sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
//修改第39行
$ sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py
//修改第68行、119行

5. 解决 Hit 第五个地址的报错

$ sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
//在第204行添加如下代码(即在该函数块下的第一行处)
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url
//注意,原网址中代理地址的双引号是中文,直接粘贴复制会报字符识别错误

6. 再次运行

sudo rosdep init
rosdep update

7.验证安装是否成功:

首先输入 roscore

然后再打开一个终端(快捷键: Ctrl+Shift+T ),输入 rosrun turtlesim turtlesim_node。系统会弹出一个窗口,窗口的中间有一只海龟。

然后再打开一个终端(快捷键: Ctrl+Shift+T ),输入rosrun turtlesim turtle_teleop_key。这时按照窗口中的提示就可以驱动小海龟进行运动了。

如果上述命令都可以运行,证明ROS已经安装成功啦。

环境配置

创建工作空间:

1)打开终端,在根目录下创建文件夹catkin_ws

cd ~
mkdir catkin_ws

2) 进入catkin_ws文件夹,并在里面建立新的src文件夹。

cd catkin_ws
mkdir src

3)进入src文件夹,并把当前文件夹初始化为workspace属性的文件夹。

此时,如果/home/你的用户名/catkin_ws/src文件夹下出现了CMakeLists文件,说明工作空间生成成功。

4)接下来对工作空间进行编译,打开一个新终端,进入catkin_ws文件夹。

cd catkin_ws

开始编译。

catkin_make

编译成功后/home/你的用户名/catkin_ws下会出现develbuild文件。

5)产生install文件夹。

catkin_make install

6)创建功能包。(功能包是存放源码的最小单元)

cd src
catkin_create_pkg test_pkg std_msgs rospy roscpp

此时会产生一个test_pkg文件夹,这是安装包的名字。

● 然后对功能包进行编译。

cd catkin_ws
catkin_make

7)设置环境变量,打开一个新终端。

sudo gedit ~/.bashrc

● 在打开的.bashrc文件的末尾加一行,保存后并退出

source ~/catkin_ws/devel/setup.bash

● 刷新一下环境变量。

cd catkin_ws
source devel/setup.bash

至此便完成了工作空间和功能包的创建,之后便可以在功能包中写程序并运行了。

(1)下载一个中科院软件所的仿真环境。

github网址:https://github.com/DroidAITech/ROS-Academy-for-Beginners

要是网速慢也可网盘自取

链接:https://pan.baidu.com/s/1B8NRfcKIysgkMhAlHDb6Ow 
提取码:1017

在该软件包中,包含了以下功能包:

软件包 内容
robot_sim_demo 机器人仿真程序,大部分示例会用到这个软件包
topic_demo topic通信,自定义msg,包括C++和python两个版本实现
service_demo service通信,自定义srv,分别以C++和python两种语言实现
action_demo action通信,自定义action,C++和python两种语言实现
param_demo param操作,分别以C++和python两种语言实现
msgs_demo 演示msg、srv、action文件的格式规范
tf_demo tf相关API操作演示,tf示例包括C++和python两个版本
name_demo 演示全局命名空间和局部命名空间下参数的提取
tf_follower 制作mybot机器人 实现mybot跟随xbot的功能
urdf_demo 创建机器人urdf模型,在RViz中显示
navigation_sim_demo 导航演示工具包,包括AMCL, Odometry Navigation等演示
slam_sim_demo 同步定位与建图演示,包括Gmapping, Karto, Hector等SLAM演示
ros_academy_for_beginners Metapacakge示例,依赖了本仓库所有的pacakge
robot_orbslam2_demo ORB_SLAM2的演示

下载好后,将上述zip文件解压缩后放至/home/你的用户名/catkin_ws/src文件目录下。

(2) 安装依赖项:(上文已经解决被墙的问题,否则此步会无法安装完所需的依赖)

cd ~/catkin_ws
rosdep install --from-paths src --ignore-src --rosdistro=melodic -y

(3)检查gazebo版本,该仿真环境要求gazebo的版本在7.0以上。

gazebo -v

如果gazebo版本低于7.0,则需要进行手动升级,依次执行如下命令即可。

 sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -sudo apt-get updatesudo apt-get install gazebo7

(4)编译工作空间。

cd ~/catkin_ws
catkin_make

刷新环境变量。

source ~/catkin_ws/devel/setup.bash
rospack profile

source ~/catkin_ws/devel/setup.bash (如果在~/.bashrc文件的末尾添加了source ~/catkin_ws/devel/setup.bash,则此步骤可以省略。)

ORB-SLAM2的安装与配置

1. 安装cmake,gcc,g++,git

先安装配置ORB-SLAM2所必要的一些工具(已经安装的忽略)

sudo apt-get update
sudo apt-get install cmake gcc g++ git

2. 安装Pangolin0.5(过高版本会导致错误)

3. 安装Eigen3

4. 安装OpenCV3(4会导致错误)

5. 安装ORB-SLAM2

(1)普通模式

● 运行如下命令,对其进行编译(注意在src文件夹中打开终端)

cd ORB_SLAM2
chmod +x build.sh
./build.sh

● 进行测试,验证是否安装成功。

下载数据集,Computer Vision Group - Dataset Download,下载第一个fr1/xyz即可。由于是国外数据集,需要挂梯子,否则下载很慢。也可自取,

链接:https://pan.baidu.com/s/1Li7ci0AkJzGWZspxQ19yvw 
提取码:1017

下载好后,进入/home/你的用户名/catkin_ws/src/ORB_SLAM2文件夹创建一个文件夹:data,将下载好的数据集压缩包提取到data文件夹下面,然后在ORB_SLAM2文件夹下打开一个终端:

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ./data/rgbd_dataset_freiburg1_xyz

可以跑通数据集,则证明安装成功。

(2)ROS模式

为了能够在线实时地运行ORB-SLAM2,需要借助ROS。SLAM在ROS下跑和非ROS下跑的区别:可以把ROS理解成在Linux系统下集成了许多好用的第三方和多进程编程的一个库集。在ROS下跑SLAM可以使用ROS的许多成熟的方法库。不在ROS下跑,很多进程间通信、同步、回调之类的就需要自己去设计。

● 将包含Examples/ROS/ORB_SLAM2的路径添加到ROS_PACKAGE_PATH环境变量中。打开.bashrc文件并在最后添加以下行。
● 将包含Examples/ROS/ORB_SLAM2的路径添加到ROS_PACKAGE_PATH环境变量中。打开.bashrc文件并在最后添加以下行

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS

保存后并退出,刷新环境变量。

source ~/.bashrc

● 此仿真环境下,发布的相机图像的话题为/camera/depth/image_raw和/camera/rgb/image_raw,所以我们slam接受话题的数据时名称要一致。打开/home/xxy/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/ ros_rgbd.cc进行修改。位置大概在68行左右,修改成如下所示:

message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/rgb/image_raw", 1);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "camera/depth/image_raw", 1);

● 编译ROS下的ORB-SLAM2
ORB_SLAM2文件夹下打开终端:

chmod +x build_ros.sh
./build_ros.sh

这里编译的时候可能会有一些错误,如:

Building ROS nodes
./build_ros.sh: line 2: $'\r': command not found
./build_ros.sh: line 3: cd: $'Examples/ROS/ORB_SLAM2\r': No such file or directory
mkdir: cannot create directory ‘build\r’: File exists

这是由于文件格式不对导致,解决方案是

dos2unix build.sh
dos2unix build_ros.sh

详细的解释下文会有提及

如果出现:

/usr/bin/ld: CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/RGBD.dir/build.make:192: recipe for target '/home/ghj/ROS_SIM/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/RGBD' failed

 这个是因为缺少库,可以用命令:

locate寻找boost_system boost_filesystem ,找到boost_system.so和 boost_filesystem.so然后复制到orb-slam2的lib目录下

参考:

Undefined reference to symbol '_ZN5boost6system15system_categoryEv' · Issue #494 · raulmur/ORB_SLAM2 · GitHub

出现错误:

error: ‘usleep’ was not declared in this scope
         usleep(mT*1000);

这个算是比较常见的问题了,解决方案是:

在以下文件中加入#include<unistd.h>

src中
LocaMapping.cc
Tracking.cc
System.cc
LoopClosing.cc
Viewer.cc

Examples/Monocular中
mono_euroc.cc
mono_kitti.cc
mono_tum.cc

Examples/RGB-D中
rgbd_tum.cc

/Examples/Stereo中
stereo_kitti.cc
stereo_euroc.cc

Examples/ROS/ORB_SLAM2/src/AR
ViewerAR.cc

运行仿真

运行仿真时,建议关闭虚拟机的加速3D图形,否则运行会卡顿。

(1)roscore是节点和程序的集合,这些节点和程序是基于ROS的系统所必需的。运行roscore,使ROS节点建立通信。

打开一个新终端,输入:

roscore

(2)打开仿真环境。打开一个新终端,输入:

roslaunch robot_sim_demo robot_spawn.launch

可能会出现

roslaunch: command not found

此时需要安装

sudo apt-get install rosbash

然后再运行

roslaunch robot_sim_demo robot_spawn.launch 

通过拖拽达到合适的视角即可 

这里可能存在一个问题,有些版本的ROS可能出现

Warning [parser.cc:950] XML Element[mu], child of element[link] not defined in SDF. Ignoring[mu]. You may have an incorrect SDF file, or an sdformat version that doesn't support this element.
Warning [parser.cc:950] XML Element[mu], child of element[link] not defined in SDF. Ignoring[mu]. You may have an incorrect SDF file, or an sdformat version that doesn't support this element.
Warning [parser.cc:950] XML Element[mu], child of element[link] not defined in SDF. Ignoring[mu]. You may have an incorrect SDF file, or an sdformat version that doesn't support this element.
Warning [parser.cc:950] XML Element[mu], child of element[link] not defined in SDF. Ignoring[mu]. You may have an incorrect SDF file, or an sdformat version that doesn't support this element.
Warning [parser.cc:950] XML Element[mu], child of element[link] not defined in SDF. Ignoring[mu]. You may have an incorrect SDF file, or an sdformat version that doesn't support this element.

导致界面没有模型,解决的方案有两种,一是更改sdf文件的格式,还有一种比较彻底的方法是换ROS版本(这个是melodic,kinetic需要切换分支)

GitHub - DroidAITech/ROS-Academy-for-Beginners at melodic

(3)运行键盘控制节点。打开另一个终端,输入:

rosrun robot_sim_demo robot_keyboard_teleop.py

通过i,j,k等控制小车移动,q/z加减速等。

此时出现 /usr/bin/env: ‘python\r’: No such file or directory 

大致是由于这个python文件是在windows上写的,然后我在ubuntu上run就出现这个问题,主要是换行符导致的。

在windows下,用两个连续的符号进行换行: ‘\r’和’\n’ ,其中 ‘\r’为回车符,’\n’为换行符
在ubuntu下,用一个符号进行换行:’\n’
所以直接使用这种在windows上写的python代码就会出问题,而且这些符号是隐藏的,想查看,还要打开显示选项,并且每一行都有,改起来相当费劲。

解决方案是安装一个工具:
先下载,然后对需要调整格式的python文件使用就可以了,如下:
sudo apt-get install dos2unix
dos2unix abc.py(如上文提到的./src/ROS-Academy-for-Beginners/robot_sim_demo/scripts/robot_keyboard_teleop.py)

然后再rosrun这个python文件就不会报错了! 非常好用,亲测可行。

(4)运行orbslam2,打开一个新终端,输入:

这里需要注意的是我们需要用到ROS文件里面的相机参数文件Zdzn.yaml而不是ORB文件里面的相机参数。

rosrun ORB_SLAM2 RGBD /home/ghj/ROS_SIM/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/ghj/ROS_SIM/src/ROS-Academy-for-Beginners-melodic/orbslam2_demo/param/Zdzn.yaml

此时通过按键控制机器人移动,即可进行定位与建图工作!

总结,需要四个命令,四个窗口:

roscore
roslaunch robot_sim_demo robot_spawn.launch

rosrun robot_sim_demo robot_keyboard_teleop.py

rosrun ORB_SLAM2 RGBD /home/ghj/ROS_SIM/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/ghj/ROS_SIM/src/ROS-Academy-for-Beginners-melodic/orbslam2_demo/param/Zdzn.yaml

非正常退出gazebo,运行roslaunch robot_sim_demo robot_spawn.launch会出现

运行roslaunch gazebo_ros empty_world.launch指令,出现process has died的报错[gazebo-1] process has died [pid 397, exit code 255, cmd /opt/ros/melodic/lib/gazebo_ros/gzserver -e ode worlds/empty.world __name:=gazebo __log:=/home/jiqiang/.ros/log/366747d8-0841-11ed-adde-1c1bb54aa7d6/gazebo-1.log].
log file: /home/zgjldx/.ros/log/366747d8-0841-11ed-adde-1c1bb54aa7d6/gazebo-1*.log

解决方法是杀掉对应的进程

killall gzserverkillall gzclient

再运行roslauch即可

rosrun robot_sim_demo robot_keyboard_teleop.py

此外

rostopic list

可以查看查看机器人发布的所有的话题,其中/camera/depth/image_raw和/camera/rgb/image_raw即为深度和rab的图像话题。(与我们上文改的一致)

rosrun image_view image_view image:=/camera/depth/image_raw
rosrun image_view image_view image:=/camera/rgb/image_raw

上述两个命令可以查询机器人所采集到的图像:

下图是orbslam程序运行的日志

场景地图

实时帧图

其中SLAM_MODE表示当前模式,KFs:1表示地图中总关键帧总数为1,MPs:1006表示地图中的地图点总数为1006,Matches:807表示成功陪陪的特征点总数为807

生成的轨迹图(蓝色表示关键帧,红色代表参考地图点,其实就是tracking里面的local mappoints,黑色点表示所有地图点,红色点属于黑色点的一部分,绿色的线表示共视关系)

链接:https://pan.baidu.com/s/1khI-JtKhf7ZASvp9_0PY5w 
提取码:xew2

ROS仿真环境安装与配置相关推荐

  1. 【学习ROS】linux安装并配置ROS环境

    http://wiki.ros.org/cn/ROS/Tutorials/InstallingandConfiguringROSEnvironment 安装并配置ROS环境 Description: ...

  2. (一)ROS Kinetic的安装与配置,

    第一次,机器人学起来 kinglee988关注 2018.11.26 04:59:17字数 2,760阅读 5,099 Copyright (c)  陕西科技大学北斗机器人协会,版权所有 David ...

  3. ROS下载、安装与配置

    ROS下载.安装与配置 1.ROS下载 下载Ubuntu 18.04桌面版镜像文件(附链接:https://ubuntu.com/download/desktop): ps.原本源下载速度国慢,推荐使 ...

  4. python qt designer 重定向_Python+PyQt5+QtDesigner+PyUic+PyRcc环境安装与配置

    Python+PyQt5+QtDesigner+PyUic+PyRcc环境安装与配置 Python+PyQt5+QtDesigner+PyUic+PyRcc环境安装与配置 Python+PyQt5+Q ...

  5. Linux环境安装并配置Maven

    一.Linux环境安装并配置Maven 1. 进入官网下载Tomat安装包 2. 解压安装Tomcat 3. 配置可执行权限 4. 配置可执行端口(避免端口冲突) 5. 验证Tomcat是否可以正常启 ...

  6. RabbitMQ消息队列之一:RabbitMQ的环境安装及配置

    RabbitMQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们 ...

  7. 生产环境安装、配置、管理PostgreSQL14.5数据库集群。pgpool 4.3.3参数中文说明

    1 生产环境安装.配置.管理PostgreSQL14.5 欢迎观看我发布的视频 "生产环境安装.配置.管理PostgreSQL14.5数据库集群" 数据库软件不是简单的安装上就好, ...

  8. CentOS 安装 tomcat 环境安装及配置过程完整版

    CentOS 安装 tomcat 环境安装及配置过程 查看安装包信息 yum info tomcat 安装 yum -y install tomcat 查看是否安装成功 rpm -q tomcat 输 ...

  9. python+selenium环境安装及配置

    參考:python+selenium环境安装及配置 https://blog.csdn.net/tyx199397/article/details/79268111 Selenium_HTMLTest ...

  10. 九七的Windows内核驱动开发 WIN10-2004+VS2019+WDK驱动开发环境安装及配置

    WIN10-2004+VS2019+WDK驱动开发环境安装及配置 一.定义介绍   本节介绍如何在Windows10系统(2004版本,操作步骤中有如何查看版本)中安装VS2019及WDK开发包,并进 ...

最新文章

  1. python导入自定义模块和路径问题
  2. Spring Security 实战干货:OAuth2第三方授权初体验
  3. 程序世界的秘密(下)(完)
  4. oracle not available
  5. spring项目启动执行特定方法
  6. Python内置数据类型之Dict
  7. linux判断网站被采集,网站被采集的几个处理方法(非技术)
  8. Python爬虫自动下载音乐(网易)
  9. 香港设计师带来仿生机器人,其身体 70% 构造均由3D打印完成
  10. 统计英文、数字、空格以及其他字符的数量,go语言
  11. android 电视安装apk,给一切安卓智能电视安装第三方软件市场
  12. ovirt4.4.10安装配置USB重定向
  13. Java字符串排序设计(升序排列)
  14. 迭代算法与递归算法的概念及区别
  15. java main 参数解析_Java Main参数解析(Args4j)
  16. 【黑马程序员】vue学习笔记(未完)
  17. 【系统架构设计师】软考高级职称,一次通过,倾尽所有,软考【系统架构设计师】论文写作方法必知必会!!!!
  18. CSDN日报180605——《认知升级是令我们变得优秀的重要基石》
  19. 99计数器c语言,数字显示00-99计数器
  20. bootstrap-pagination数据全部加载到前端再进行处理_求助!vue单页项目如何改造路由使其能够进行分模块打包?...

热门文章

  1. 各地的公安接口的配置说明书
  2. 泰坦尼克号数据下载链接
  3. c语言病毒编程,[原创]用C语言写病毒(3)
  4. 模块已加载,但找不到入口点DLLRegisterServer
  5. shapefile文件格式说明
  6. ping/tracert/telnet
  7. 怎么仿站下载整站的文件
  8. python声音报警_python:基于tkinter打造的股票实时监控声音报警器! 自动监控,声音警报...
  9. Java工程师成神之路(2019正式版)
  10. depends的用法