ros用法

以下适用于 ubuntu 16.04系统,因此对应着 ROS Kinetic. 另一个比较流行的版本是 ROS Melodic.
1. 参考资料:
http://wiki.ros.org/cn
https://github.com/

2. 基本概念
ROS (Robot Operating System) 机器人操作系统,包含包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理等模块,开源,有什么功能,怎么使用

3. 几种不同的通信方式
(1)基于同步RPC样式通信的服务(services)机制
(2)基于异步流媒体数据的话题(topics)机制
(3)用于数据存储的参数服务器(Parameter Server)

3. 安装ROS
https://blog.csdn.net/softimite_zifeng/article/details/78632211?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7.baidujs&dist_request_id=1619578033968_08009&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7.baidujs


4. 安装rqt_graph
$ sudo apt-get install ros-kinetic-rqt-graph


5. 创建工作空间
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace

6.编译源文件
$ cd ~/catkin_ws/
$ catkin_make

7. source添加Ros搜索的路径
$ source devel/setup.bash

8.修改系统环境变量文件
$ sudo gedit ~/.bashrc
$ source ~/catkin_ws/devel/setup.bash

9. 验证环境变量
$ echo $ROS_PACKAGE_PATH

10. 案例-小海龟
(1)新终端,初始化环境:$ roscore
(2)新终端,打开节点:$ rosrun turtlesim turtlesim_node
(3)新终端,打开键盘控制功能:$ rosrun turtlesim turtle_teleop_key
(4)新终端,查看ROS节点信息:$ rosrun rqt_graph rqt_graph

11. ros常用命令工具
$ rostopic
$ rosservice
$ rosnode
$ rosparam
$ rosmag
$ rossrv


12.工作空间
src:代码空间
build:编译空间
devel:开发空间
install:安装空间


13. 创建功能包
$ cd ~/catkin_ws/src
$ catkin_creat_pkg <package_name> [depend1] [depend2] [depend3]

14. C++程序编译功能包
$ cd ~/catkin_ws
$ catkin_make
$ source ~/catkin_ws/devel/setip.bash (添加到~/.bashrc后就不用运行这句话,但是需要重新打开一个终端)

15.编写功能包
(1)初始化ros节点名(不可重复)
(2)创建节点句柄
(3)创建publisher

16.python脚本可直接执行
$ rosrun learning_topic pose_subscriber.py

17. 认识功能包里的文件
(1)CMakeLists.txt 编译配置文件
(2)include头文件库,如果需要用到自己或别人写的头文件,可放在该文件夹下
(3)launch启动脚本文件夹,里面包含.launch文件,功能是一次性启动多个节点
(4)package.xml清单文件,包含软件包的相关信息的描述,包括版本号,开发者信息,各软件包之间的依赖关系
(5)src程序源码库,存放编写的cpp或者python源码文件

18. ros基本框架
(1)节点node
节点是ROS机器人系统里任何操作的单元,可以理解为每一个节点可以实现一个小功能;
节点与节点之间可以相互通信,相互协调完成工作;
(2)话题topic
话题是ROS里的一个通信方法,topic里包含了消息的名称,类型,内容;
节点可以发布或者订阅某个或某几个话题;
话题有两个重要的性质:a.话题的发布频率;b.话题的消息类型;
(3)发布者和订阅者publisher & subscriber
ROS里的节点node可能是发布者或者是订阅者,甚至两者都兼备;
发布者就是发布topic的节点,订阅者就是订阅topic的节点;
消息类型参考: http://wiki.ros.org/std_msgs

 

posted @ 2021-05-07 10:58  勤奋的小呆  阅读(378)  评论(0编辑  收藏  举报