ROS学习笔记(一)

♀尐吖头ヾ 提交于 2020-01-25 08:58:33

ROS总体设计:

提高机器人研发中的软件复用率。

ROS文件夹文件介绍

安装目录,默认在/opt/ros路径下

bin文件放置可执行程序。可执行命令。在执行命令命令前,要设置环境变量。
include文件夹包含的是通过命令行终端安装的代码头文件。
lib文件夹包含的是启动功能的节点。
share文件夹安装的功能包的接口,例如话题,服务。

ROS命令

使用roscore命令启动ROS Master
catkin_create_pkg 创建功能包。
rospack 获取功能包信息
catkin_make 编译工作空间中的功能包。
rosdep 自动安装功能包依赖的其他包。
roscd 功能包目录跳转
roscp 拷贝功能包中的文件
rosed 编辑功能包中的文件。
rosrun 运行功能包中的可执行文件。
roslaunch 运行启动文件。
可以看见详细命令信息说明。
rosnode --help

ROS实践——第一个ROS例程

启动ROS Master roscore
启动小海龟仿真器 rosrun turtlesim turtlesim_node
启动小海龟控制节点 rosrun turtlesim turtle_teleop_key
turtlesim指的是启动的节点所在的功能包的名字。
turtlesim_node指的是节点名字。
turtle_teleop_key节点指的是可ro以用键盘控制运动。要点击turtle_teleop_key终端。
使用rqt_graph可视化工具查看系统中运行的计算图。
/turtlesim就是小海龟仿真器节点。
/teleop_turtle是键盘控制节点。这两个节点通过话题连接,/turtle1/cmd_vel就是通过键盘控制的速度等具体数值。/rosout节点是ros系统必须存在的一个节点,功能是订阅所有节点发布的日志信息。
rosnode list 查看节点列表。
查看节点的具体信息,rosnode info /turtlesim
Publications指节点发布的话题信息。
rostopic list查看 哪些话题在发布或者订阅。
rostopic info /turtle1/cmd_vel 查看话题的具体信息。
rostopic echo /turtle1/cmd_vel 监听话题中的具体消息。主要包含两方面的内容,线速度(m/s)和角速度(弧度/秒)
发布话题消息:rostopic pub /turtle1/cmd_vel geometry_msgs/Twist “linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0”
添加频率信息:rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist “linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0”

查看服务列表 rosservice list
通过服务来新生一只海龟:osservice call /spawn “x: 0.0
y: 0.0
theta: 0.0
name: ‘’”

创建工作空间

什么是工作空间

工程空间是一个存放工程开发相关文件的文件夹。
src:代码空间
build:编译空间,放置编译过程中的中间文件。
devel:开发空间,放置编译生成的可执行文件。
install:安装空间
catkin_init_workspace 是将catkin_wl这个文件夹初始化成ros当中的一个工作空间。会在src文件夹中生成CmakeLists.txt文件。这个文件会告诉系统这是ros的一个工作空间。使用catkin_make命令,需要到catkin_wl文件夹下。因为此时工作空间中没有功能包以及源码,所以只会在工作空间的根目录下生成两个文件夹。

设置环境变量:source devel/setup.bash 这个命令只会在当前终端下生效。
推荐:最好把source devel/setup.bash命令放置到终端的配置文件中。
vim ~/.bashrc进入文件中,在最下边添加source ~/catkin_wl/devel/setup.bash,使用source ~/.bashrc命令使刚才的配置生效。查看环境变量时会看到如下两个路径:/home/lidajiu/catkin_wl/src:/opt/ros/kinetic/share

创建功能包

std_msgs是ros已经定义好的数据结构。
rospy 是ros提供的python接口。
roscpp 是ros提供的C++ 编程接口。
执行catkin_create_pkg learning_communication std_msgs rospy roscpp命令后,会在src文件夹下生成learning_communication文件夹,这个文件下最重要的是CmakeLists.txt文件和package.xml文件。Cmakelist文件会放置如何编译这个功能包的一些选项。需要CmakeLists这个接口来设置的。package会放置一些介绍功能包的信息。

编译功能包后,会在编译过程中看到,
在这里插入图片描述
因为刚才已经把环境变量配置到终端的配置文件中,此时不需要重复设置环境变量了

工作空间的覆盖

查看ROS相关的环境变量

env | grep ros

可以看到有两个功能包的路径。
在这里插入图片描述

这两个路径就是ros查找功能包时候要查找的路径。

ROS通信编程

在learning_communication中的CmakeLists.txt中添加下边四段代码。

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

在catkin_wl工作空间下,输入命令catkin_make.执行后,会在如图所示地方有两个可执行文件。
在这里插入图片描述
如何运行可执行文件

  1. 启动roscore 把ros master 启动
  2. 直接输入命令,如图。
    在这里插入图片描述
如何自定义话题消息
  1. 新建一个文件夹,新建一个msg文件。
    在这里插入图片描述
动作编程

比如让一个机器人去一个目标点,在去的过程中希望机器人能够发实时状态,或者错误的状态。

分布式通信

ROS是一种分布式软件框架,节点之间通过松耦合的方式进行组合。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!