一、ROS是什么
ROS是Robot Operating System的缩写,原本是斯坦福大学的一个机器人项目,后来由Willow Garage公司发展,目前由OSRF(Open Source Robotics Foundation, Inc)公司维护的开源项目。
1、是一个操作系统
也就是说操作系统是用来管理计算机硬件与软件资源,并提供一些公用的服务的系统软件。而ROS也自称是一个OS。同理,ROS则是对机器人的硬件进行了封装,不同的机器人、不同的传感器,在ROS里可以用相同的方式表示(topic等),供上层应用程序(运动规划等)调用。
2、是一种跨平台模块化软件通讯机制
ROS用节点(Node)的概念表示一个应用程序,不同node之间通过事先定义好格式的消息(Topic),服务(Service),动作(Action)来实现连接。
基于这种模块化的通讯机制,开发者可以很方便地替换、更新系统内的某些模块;也可以用自己编写的节点替换ROS的个别模块,十分适合算法开发。
此外,ROS可以跨平台,在不同计算机、不同操作系统、不用编程语言、不同机器人上使用。
3、是一系列开源工具
以下为部分
rqt_plot:可以实时绘制当前任意Topic的数值曲线;
rqt_graph:可以绘制出各节点之间的连接状态,和正在使用的Topic等;
TF:TF是Transform的简写,利用它,我们可以实时知道各连杆坐标系的位姿,也可以求出两个坐标系的相对位置;
Rviz:超强大的3D可视化工具,可以显示机器人模型、3D电影、各种文字图标、也可以很方便二次开发。
4、是一系列最先进的算法
以下为部分
Player:一款优秀的二维仿真平台,可以用于平面移动机器人的仿真,现在在ROS里可以直接使用;
OpenCV:大名鼎鼎的机器视觉开源项目,ROS提供了cv_bridge,可以将OpenCV的图片与ROS的图片格式相互转换;
OMPL:现在最著名的运动规划开源项目,已经成了MoveIt的一部分;
Visp:一个开源视觉伺服项目,已经跟ROS完美整合;
Gazebo:一款优秀的开源仿真平台,可以实现动力学仿真、传感器仿真等,也已被ROS吸收。
二、ROS产生、发展和壮大的原因和意义
ROS的发展逐渐的趋于成熟,近年来也逐步是面对着Ubuntu的更新而更新,这说明ROS已经初步进入一种稳定的发展状态,每年进行一次更新的频率同时还保留着长期支持的版本,这使得ROS在稳步的前进发展同时,也有着开拓创新的方向。目前越来越多的机器人、无人机甚至无人车都开始采用ROS作为开发平台,尽管ROS在实用方面目前还存在一些限制,但前途非常光明。
三、实践练习
1、安装
1、确定自己的ubantu版本
笔者使用的是18.4,并且确保图中所圈的是勾选状态。
2、添加ROS软件源
使用下列命令:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
3、添加密钥
使用下列命令:
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
4、安装ROS
sudo apt-get update
sudo apt-get install ros-melodic-desktop-full
5、初始化rosdep
sudo rosdep init
rosdep update
6、设置环境变量
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
此处安装我参考的这个网站
安装过程中会遇到apt-get安装出现E: Sub-process /usr/bin/dpkg returned an error code (1) 这个问题,此处参考这个解决方法
2、运行
1、打开一个新的命令行窗口运行下列命令
roscore
2、再打开一个新的命令行窗口运行下列命令
rosrun turtlesim turtlesim_node
3、再打开一个新的命令行窗口运行下列命令
rosrun turtlesim turtle_teleop_key
4、结果
依次运行上列命令之后,就可以操作小乌龟了。如下图:
四、总结
本次实验看似十分简单,实操起来问题非常多。难点全在安装ROS上,会遇到的问题非常多,好在顺利解决了。