ros是什么

个人理解:ros是一款机器人开发系统,通常情况下基于linux系统上。可以类比为安卓系统。其中的node节点可以理解为app
可以使用apt和git下载功能包和自己书写功能包
主要使用Ubuntu来安装ros

Ubuntu使用

切换中英键

shift键,如果不行,则使用win和空格键

文件系统

主文件夹/home/user
/bin:放置系统可执行二进制文件
/etc:放置所有系统需要管理的配置文件和子目录
/opt:安装的功能包
/home: 用户目录
/lib:存放共享的库文件,被许多/bin和/sbin中程序使用

ros应用商店APT源

网址:index.ros.org
还有开源网址github.com

添加source

在用户目录下

1
vim ~/barch

在这中间添加需要添加的东西

1
2
source /opt/ros/noetic/setup.bash
source ~/acfly_ws/devel/setup.bash

超级终端

1
sudo apt install terminator

方便在一个终端窗口中打开多个终端
常用快捷键”ctrl”+”shift”+”e”/“o”/“w”上下分割、左右分割、关闭终端

node节点和package包

包中含有节点(可以用旺旺大礼包中单独零食和整个大礼包来理解)

node示例

进入到工作环境下的src目录下

1
catkin_create_pkg name rospy roscpp std_msgs

创建命令+包名+依赖
roscpp示例代码

1
2
3
4
5
6
7
8
9
10
11
12
#include <ros/ros.h>

int main(int arg, char *argv[])
{
ros::init(argc, argv, "node_name");//初始化节点
while(ros::ok())//设置成ros::ok()才能响应外部
{

}
return 0;
}

整体框架:
1、使用catkin_create_pkg创建一个软件包
2、在软件包的src文件夹下创建一个节点的cpp源码文件
3、在节点的源码文件中include包含ros的头文件
4、构建一个main函数,并在函数的开头执行ros::init()
5、构建while循环,循环条件为ros::ok()
6、在CMakeLists.tx中设置节点源码的编译规则
7、编译运行

Topic话题和Message消息

Topic:用于包和包之间的通信。
实现:一端在topic不停发布消息,另一端在对应话题接收。
话题发布者Publisher
订阅者Subsciber

小结:
1、话题Topic是节点间进行持续通讯的一种形式
2、话题通讯的两个节点通过话题的名称建立起话题通信连接
3、话题中通信的数据,叫做消息Message
4、消息Message通常会按照一定的频率持续不断的发送,以保证消息数据的实时性。
5、消息的发送方叫做话题的发布者Publisher
6、消息的接收方叫做话题的订阅者Subsciber

话题常用工具

1
2
3
4
5
6
rostopic list
#列出当前系统中所有活跃着的话题
rostopic echo 主题名称
#显示指定话题中发送的消息包内容
rostopic hz 主题名称
#统计指定话题中消息包发送频率

launch启动多个ros节点

launch使用的是xml语法

1
2
3
4
5
<launch>
<node pkg="ssr_pkg" type="yao_node" name="yao_node"/>
<node pkg="ssr_pkg" type="chao_node" name="chao_node"/>
<node pkg="ssr_pkg" type="ma_node" name="ma_node"/>
</launch>

使用python编写ros源代码

1
2
3
4
#!/usr/bin/env python3
#coding=utf-8