ROS

ROS1. ROS测试启动ros master 打开一个终端roscore启动小海龟仿真器 新打开一个终端rosrun turtlesim turtlesim_node启动海龟控制节点 新打开一个终端rosrun turtlesim turtle_teleop_key2. ROS是什么一套为机器人所做的操作系统=通信机制+开发工具+应用功能+生态系统通信机制:松耦合分布式通信开发工具:命令行、TF坐标变换、Rviz、Qt工具箱、Gazebo应用功能:Navigation、SLAM、Mo
摘要由CSDN通过智能技术生成

ROS

1. ROS测试

启动ros master 打开一个终端roscore

启动小海龟仿真器 新打开一个终端rosrun turtlesim turtlesim_node

启动海龟控制节点 新打开一个终端rosrun turtlesim turtle_teleop_key

2. ROS是什么

一套为机器人所做的操作系统=通信机制+开发工具+应用功能+生态系统

通信机制:松耦合分布式通信

开发工具:命令行、TF坐标变换、Rviz、Qt工具箱、Gazebo

应用功能:Navigation、SLAM、Moveit

生态系统:发行版、软件源、ROS wiki、邮件列表、ROS Answers、博客

3. Ros中的核心概念

节点(Node)——执行单元
  • 执行具体任务的进程、独立运行的可执行文件
  • 不同节点可使用不同的编程语言,可分布式运行在不同的主机
  • 节点在系统中的名称必须是唯一的
节点管理器(ROS Master)——控制中心
  • 为节点提供命名和注册服务
  • 跟踪和记录话题/服务通信,辅助节点相互查找、建立连接
  • 提供参数服务器,节点使用此服务器存储和检索运行时的参数
话题(Topic)——异步通信机制
  • 节点间用来传输数据的重要总线
  • 使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一
消息(Message)——话题数据
  • 具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型
  • 使用编程语言无关的.msg文件定义,编译过程中生成对应的代码文件
服务(Service)——同步通信机制
  • 使用客户端/服务器(C./S)模型,可无端发送请求数据,服务器完成处理后返回应答数据
  • 使用编程语言无关的.srv文件定义请求和应答数据结构,编译过程中生成对应的代码文件
话题 服务
同步性 异步 同步
通信模型 发布/订阅 服务端/客户端
底层协议 ROSTCP/ROSUDP ROSTCP/ROSUDP
反馈机制
缓冲区
实时性
节点关系 多对多 一对多
适用场景 数据传输 逻辑处理
参数(Parameter)——全局共享字典
  • 可通过网络访问的共享、多变量字典
  • 节点使用此服务器来存储和检索运行时的参数
  • 适合存储静态、非二进制的配置参数,不适合存储动态配置的数据
功能包(Package)
  • ROS软件中的基本单元,包含节点源码、配置文件、数据定义等
功能包清单(Package manifest)
  • 记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等

元功能包(Meta Packages)

  • 组织多个用于同一目的功能包

4. ROS命令行工具的使用

4.1 常用命令
  • rostopic
  • rosservice
  • rosnode
  • rosparam
  • rosmsg
  • rossrv
  • rosrun 功能包 功能包节点
4.2 rqt_graph
4.3 rosnode

rosnode list 把系统所有节点显示出来

rosnode info /turtlesim 答打印节点信息

4.4 rostopic(两下Tab补全)

rostopic list 系统的所有话题

rostopic pub -r 10 (发布频率) /turtle1/cmd_vel(话题名) XXXXX(发送数据内容) 可以发布的内容

4.5 rosmsg

rosmsg show 消息

4.6 rosservice

rosservice list

rosservice call /spawn (可以再开一个服务)

4.7 rosbag

应用场景:保存一次飞行记录,然后复现

话题记录rosbag record -a -O cmd_record

话题浮现rosbag play cmd_record.bag

5. 创建工作空间与功能包

5.1 工作空间(workspace)

工作空间是一个存放工程开发相关的文件夹

  • src:代码空间
  • build:编译空间
  • devel:开发空间
  • Install:安装空间

创建工作空间

mkdir -p ./catkin_ws/src
cd ./catkin_ws/src
catkin_init_workspace

编译工作空间

cd ./catkin_ws/
catkin_make
catkin_install

设置环境变量

source devel/setup.bash

检查环境变量

echo $ROS_PACKAGE_PATH

5.2 功能包

catkin_create_pkg<package_name>[depend1][depend2][depend3]()

创建功能包

cd ./catkin_ws/src
catkin_create_pkg  test_pkg  msgs rospy roscpp#cpp c++程序,py python程序

编译功能包

cd ./catkin_ws
catkin_make
source ./catkin_ws/devel/setup.bash

6. 发布者Publicsher的编程实现

1.创建功能包

cd ./catkin_ws/src
catkin_create_pkg  learning_topic roscpp rospy std_msgs geometry_msgs turtlesim

2.在src下写cpp

如何实现一个发布者

  • 初始化ROS节点
  • 向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型
  • 创建消息数据
  • 按照一定频率循环发布消息

文件名 velocity_publisher.cpp

/**
*该例程将发布turtle1/cmd_vel话题,消息类型为geometry_msgs::Twist
*/
#include <ros/ros.h>
#include <geometry/Twist.h>
int main(int argc, char **argv)
{
    //ROS节点初始化
    ros::init(argc,argv,"velocity_publisher");
    //创建节点句柄
    ros::NodeHandle n;
    //创建一个Publisher,发布名为/turtle/cmd_vel的topic,消息类型为geometry_msgs::Twist,队列长度为10
    ros::Publisher turtle_vel_pub=n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",10);
    //设置循环频率
    ros::Rate loop_rate(10);
    
    int count=0;
    while(ros::ok(
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值