Ubuntu18.04实现ROS安装及小海龟实例

一、ROS简介

1、含义

ROS(机器人操作系统,Robot Operating System),是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。

2、发展

  • 简洁:ROS是设计得尽可能方便简易。您不必替换主框架与系统,因为ROS编写的代码可以用于其他机器人软件框架中。毫无疑问的,ROS更易于集成与其他机器人软件框架。事实上ROS已完成与OpenRAVE、Orocos和Player的整合。
  • ROS-agnostic库:【agnostic:不可知论】建议的开发模型是使用clear的函数接口书写ROS-agnostic库。
  • 语言独立性:ROS框架很容易在任何编程语言中执行。我们已经能在Python和C++中顺利运行,同时添加有Lisp、Octave和Java语言库。
  • 测试简单:ROS有一个内建的单元/组合集测试框架,称为“rostest”。这使得集成调试和分解调试很容易。
  • 扩展性:ROS适合于大型实时系统与大型的系统开发项目

二、ROS安装

1、添加软件源

命令:

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

效果:
在这里插入图片描述

2、添加密钥

命令:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

效果:

在这里插入图片描述

3、安装ROS

命令:

sudo apt update
sudo apt-get install ros-melodic-desktop-full

效果:
在这里插入图片描述

在这里插入图片描述

注意:不同的Ubuntu版本所对应的下载名称不同
16.04--------------------------------------------kinetic
18.04--------------------------------------------melodic
20.04--------------------------------------------noetic

4、初始化rosdep

sudo rosdep init
rosdep update
  • 找不到命令问题:

    先执行sudo apt install python-rosdep命令在执行上文命令

  • list Website may be down.问题:

cd /etc
sudo gedit hosts

在文本后面添加(ip是通过https://site.ip138.com进行输入raw.githubusercontent.com查询获取得到,任意选择一个)

ip raw.githubusercontent.com

不过这里存在网络问题,如果使用的是移动网通过上面方法也无法解决问题,最终用电信网解决。

  • ERROR: error loading sources list: <urlopen error <urlopenerrortimedout(https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml)问题:

本地安装:

(1)下载文件:https://github.com/ros/rosdistro
(2)解压文件:unzip rosdistro-master.zip -d rosdistro
(3)修改文件:sudo nano /etc/ros/rosdep/sources.list.d/20-default.list
(4)修改内容:

#os-specific listings first
yaml file:///home/lyy/ros/rosdistro/rosdep/osx-homebrew.yaml osx

#generic
yaml file:///home/lyy/ros/rosdistro/rosdep/base.yaml
yaml file:///home/lyy/ros/rosdistro/rosdep/python.yaml
yaml file:///home/lyy/ros/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/levy/ros/rosdistro/releases/fuerte.yaml fuerte

#newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

注意:gbpdistro filelevy为自己的用户名注意修改

(5)修改另外的文件

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

DEFAULT_SOURCES_LIST_URL一行注释,在其后添加如下内容

DEFAULT_SOURCES_LIST_URL = 'file:///home/levy/ros/rosdistro/rosdep/sources.list.d/20-default.list'

在这里插入图片描述

(6)修改rep3.py文件

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

REP3_TARGETS_URL一行注释,在其后添加如下内容

REP3_TARGETS_URL = 'file:///home/levy/ros/rosdistro/releases/targets.yaml'

(7)修改__init__.py文件

sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py

DEFAULT_INDEX_URL一行注释,在其后添加如下内容

DEFAULT_INDEX_URL = 'file:///home/levy/ros/rosdistro/index-v4.yaml'

安装完成后:rosdep update
在这里插入图片描述

5、设置环境变量

命令:

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

效果:

在这里插入图片描述

三、小海龟实例

三条命令分别开启三个命令终端
在第三个终端按上下左右键控制小海龟

1、运行小海龟

启动ROS master:

roscore

启动小海龟仿真器:

rosrun turtlesim turtlesim_node

启动小海龟控制节点:

rosrun turtlesim turtle_teleop_key

效果:
在这里插入图片描述

2、话题器查看节点信息

rosnode list

节点:
在这里插入图片描述

rosnode info /XXXX

具体节点查看

效果:
在这里插入图片描述

rostopic echo /turtle1/cmd_vel

监听话题内容

在这里插入图片描述

3、控制量移动海龟

控制小海龟运动,就发布一个消息,发布小海龟线速度,rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:修改linear的X为1.0,回车后,看见小海龟向前运动了一截。如果想按照一定的频率发布消息,那就要加一个参数,rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist …,即可。
在这里插入图片描述

4、C++程序编写小海龟圆形

工作空间workspace,我们在开发一个ROS项目的时候,是以工作空间来代表一个项目的。

  • workspace: 工作空间 build:ros编译打包的结果产出目录。我们不需要对这个文件夹做任何编辑操作,属于自动生成。
    devel: 开发所需要的目录 src:存放package的目录 CMakeLists.txt:
    整个工作空间编译的脚本。此文件我们通常不用去做修改操作。

工作单元package,一个项目中可以创建多个工作单元,这个工作单元,我们称之为package。

  • pkg1: package的名称,开发过程中根据自己实际情况进行创建设定。

  • CMakeLists.txt:当前package的编译脚本。通常需要为c++代码添加编译时的依赖,执行等操作。

  • package.xml: package相关信息。通常添加一些ros库的支持 i- nclude文件夹: 存放c++ 头文件的

  • config文件夹:存放参数配置文件,格式为yaml launch文件夹:存放.launch文件的。 src:c++源代码

  • scripts:python源代码 srv:存放定义的

  • service msg: 存放自定义的消息协议 action: 存放自定义的action

2.1 Workspace创建
新建工作空间目录结构

1.新建一个文件夹,命名为catkin_ws

2.在文件夹 catkin_ws 下创建一个文件夹 src

3.移动到src目录下输入catkin_init_workspace。在src文件夹中出现CMakeLists.txt文件

4.返回catkin_ws,对其进行编译

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws
catkin_make

在这里插入图片描述
设置环境变量是为了让系统知道功能包的位置在哪,以便能找到。确保安装脚本正确地覆盖了工作空间,ROS_PACKAGE_PATH环境变量包含在目录中。
在catkin_ws路径下终端输入source devel/setup.bash,使系统知道功能包放置在catkin_ws这个工作空间下。
检查环境变量
查看当前环境变量,终端输入:
在这里插入图片描述
创建package
来到workspace的src目录下,新建my_turtle_package包
在这里插入图片描述
catkin_create_pkg是创建package的命令。运行以上命令,会新建好package的目录,并且在目录中创建CMakeLists.txt,package.xml,src,include等文件和 目录第一个参数firstros是指创建的package名称,可以根据自己的实际需求去设定。

后面的参数roscpp,rospy,rosmsg是指当前创建的这个package需要提供哪些环境依赖。

roscpp是对c++的一种依赖,有了它就可以用c++开发ros程序。
rospy是对python的一种依赖,有了它就可以用python开发ros程序。
进入my_turtle_package的src文件中
在这里插入图片描述
创建CPP文件并编写程序

touch yuan.cpp
gedit yuan.cpp

复制代码:
在这里插入图片描述
修改CMakeLists.txt文件内容
返回my_turtle_package,打开CMakeLists.txt文件

cd  ..
gedit CMakeLists.txt

在CMakeLists.txt文件中找到##Declare a C++ executable,在这一行的前面添加如下内容:

add_executable(yuan src/yuan.cpp)
target_link_libraries(yuan ${catkin_LIBRARIES})

在这里插入图片描述

进入catkin_ws,编译程序:

cd ~/catkin_ws/
catkin_make

在这里插入图片描述
运行实例:

roscore
rosrun turtlesim turtlesim_node
cd  ~/catkin_ws/
source devel/setup.bash			#程序注册
rosrun my_turtle_package yuan

在这里插入图片描述

四、总结

1、参考

https://blog.csdn.net/qq_43279579/article/details/114291635
https://blog.csdn.net/qq_44339029/article/details/120579608
https://blog.csdn.net/qq_54347584/article/details/129369824?spm=1001.2014.3001.5502

2、总结

  • 安装rosdep时注意Ubuntu版本对应的名称
  • 注意小海龟的启动依赖性和环境问题
  • 大概了解ROS系统,通过小海龟具有基本体验
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值