ROS基本编程概述

ROS简述

ROS的维基百科解释如下。

ROS全称机器人操作系统(Robot Operating System),是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。

简单来说:ROS是机器人操作系统(Robot Operating System)的英文缩写。ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。它具备通讯机制,开发工具,应用功能,生态系统四大功能。

目前ros系统广泛应用于自动驾驶领域和机器人领域。

node和topic

Node类似于linux系统中的进展,而topic就是node之间的通讯方式。一个node可以定义要发送的topic名字和数据类型,类似于广播的形式,而另一个node则可以订阅该topic,从而实现了两个node之间的通信。

roscore

roscore,启动节点管理器,在一个ros系统中,有且只有一个,它是ros节点运行的前提,所以在执行启动ros节点前,第一步都需要执行roscore。

rviz

Rviz是ROS中一款三维可视化平台,一方面能够实现对外部信息的图形化显示,另外还可以通过rviz给对象发布控制信息,从而实现对机器人的监测与控制。目前在自动驾驶行业中广泛应用。

显示

ROS系统中定义了很多消息类型,例如点云数据,路径点数据等等,rviz可以将这些数据进行监控和图形化显示。

插件

在rviz中,可以通过QT添加插件,用来发送topic给ros系统,从而实现对机器人或者汽车的反向控制。

常规API函数和数据类型

初始化函数

用于初始化节点

ros::init(argc,argv,"Node_name");

节点句柄

自动打开和关闭节点;命名空间

ros::NodeHandle rosNh_;

订阅topic

//定义订阅者
ros::Subscriber rosSub_;
//订阅topic
rosSub_ = rosNh_.subscribe("topic_name",1,&callbackFunction,this);
//回调函数的实现
void callbackFunction(const sensor_msgs::PointCloud2ConstPtr& rosData)
{
	getPointCloud2(rosData.get());
}

阻塞进展

ros::spin();

发送topic

//定义发布者
ros::Publisher rosPub_;
//话题名字和数据长度
rosPub_ = rosNh_.advertise("topic_name",10);
//设置循环的频率
ros::Rate loop_rate(20);
//初始化消息类型
geometry_msgs::Twist vel_msg;
vel_msg.linear.x = 0.5;
vel_msg.angular.z = 0.2;
//发布消息
rosPub_.publish(vel_msg);

————
2022/07/19
家中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值