[ROS学习](2)ROS简介及基础操作
1、简介
机器人设计包含了
- 硬件设计
- 嵌入式软件设计
- 上层软件设计
- 机械结构设计
- 机械加工
机器人操作系统 (Robot Operating System,ROS )
- 适用于机器人的开源元操作系统
- 集成了大量的工具、库、协议,提供类似OS所提供的功能,简化对机器人的控制
- 提供了分布式获取、构建、编写和运行代码的工具和库,类似于机器人的框架
- ROS系统是通讯机制(Plumbing)、工具软件包(Tools)、机器人高层技能(Capabilities,例如扫图、导航等)以及机器人生态(Ecosystem)的集合体
ROS设计目标
- 代码复用
- 分布式:ROS是一个进程,可适用于分布式处理
- 松耦合:接口间的耦合性较低,只需关注各自领域即可
- 精简:为了复用性
- 语言独立性:多语言适配
- 易于测试:含内置测试框架
- 大型应用:适用于大型运行时系统和大型开发流程
- 丰富的组件化工具包
- 免费且开源
2、基础操作
2-1、创建一个工作空间
mkdir ./ros_work_space/src
# 初始化工作空间
catkin_init_spacce
# 返回 ros_work_space/src 编译该工作空间
catkin_make
2-2、创建hello ros
c++
程序
创建包
# 在 创建好的工作空间 src 目录下 创建一个名为 helloros 的功能包 (roscpp rospy std_msgs为该功能包的依赖项)
catkin_create_pkg helloros roscpp rospy std_msgs
于该功能包的 src
目录下创建 c++
文件
touch helloros_c.cpp
编辑该 c++
文件 作为源程序
#include "ros/ros.h"
int main(int argc, char *argv[])
{
//执行 ros 节点初始化
ros::init(argc,argv,"hello");
//创建 ros 节点句柄(非必须)
ros::NodeHandle n;
//控制台输出 hello world
ROS_INFO("hello world!");
return 0;
}
编辑该功能包下 CMakeLists.txt
文件
# 找到136行的 去除注释符号 并修改为
add_executable(功能包名 src/helloros_c.cpp)
# 找到149行的函数 去除注释符号 并修改为
target_link_libraries(功能包名
${catkin_LIBRARIES}
)
返回工作空间目录下编译该工作空间
catkin_make
编译成功后,启动ros
核心
roscore
执行该功能包中的程序
# 添加环境变量
source ./devel/setup.bash
# 执行helloros包下的功能包 例 讲上述功能包名设置为 roshello
rosrun helloros roshello
若无错误即可看到输出 (该输出是由 cpp
程序中的 ROS_INFO()
函数执行的结果)
2-3、创建 hello ros
python
程序
于 2
中创建的 功能包下 创建 scripts
文件夹(作为python
文件存放的文件夹)
cd helloros
mkdir scripts
进入 scripts
文件夹 创建 helloros_p.py
的 python
程序
cd scripts
touch helloros_p.py
编辑该 helloros_p.py
程序
#! /usr/bin/env python
## 指定 Python 解释器
# 1 导包
import rospy
# 2 编写函数主入口
if __name__ == "__main__":
rospy.node("hello")
# 3 输出 日志
rospy.loginfo("hello ROS!")
由于 python
文件属于脚本文件,因此需要添加 可执行权限
chmod +x helloros_p.py
# 可使用 ll 命令 查看权限
修改 helloros
功能包下 CMakeLists.txt
文件
# 162 行 去除解释 修改文件名
catkin_install_python(PROGRAMS
scripts/helloros_p.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
返回 ros_work_space
目录下 编译工作空间
catkin_make
打开新终端 运行 roscore
roscore
在之前打开的终端中 加载 setup.bash
并执行程序 helloros_p.py
source ./devel/setup.bash
rosrun helloros helloros_p.py
若无错误,则可看到输出 hello ROS!