当前位置:网站首页>ROS基本编程概述
ROS基本编程概述
2022-08-02 17:57:00 【liebecl】
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
家中
边栏推荐
- 为何国内年轻人都抢购iPhone,因为它更实惠也更亲民
- 编译型语言与解释型语言的区别
- IDEA相关配置(特别完整)看完此篇就将所有的IDEA的相关配置都配置好了、设置鼠标滚轮修改字体大小、设置鼠标悬浮提示、设置主题、设置窗体及菜单的字体及字体大小、设置编辑区主题、通过插件更换主题
- golang刷leetcode 字符串(4)逆波兰式
- 衡量软件产品质量的 14 个指标
- Interviewer: can you talk about optimistic locking and pessimistic locks
- golang刷leetcode 经典(2)拓扑排序
- mysql四种隔离级别
- 从技术全景到场景实战,透析「窄带高清」的演进突破
- 记一次 .NET 某工控自动化控制系统 卡死分析
猜你喜欢
Taking advantage of cloud-network integration, e-Surfing Cloud has paved the way for digital transformation for government and enterprises
Playing in the cloud | The key technology of Tianyi cloud object storage ZOS high availability is revealed
灵动微电子发布低功耗 MM32L0130 系列 MCU 产品
针对时间的功能测试点,这里给你总结全面了
vulnhub W34kn3ss: 1
电子行业库存管理痛点与WMS仓储管理系统解决方案
Interviewer: can you talk about optimistic locking and pessimistic locks
千万级别的表分页查询非常慢,怎么办?
分布式 | dble 启动的时候做了什么之配置检测
搭建属于自己的知识库(Wikijs)
随机推荐
大事务故障案例
HDF驱动框架的API(2)
MySQL基本查询和运算符
Go 语言快速入门指南: 介绍及安装
力扣 622. 设计循环队列
pydev debugger: warning: trying to add breakpoint to file that does not exist: /tmp/xxx
How to build a quasi-real-time data warehouse?
什么是会话劫持以及如何阻止它
共享平台如何提高财务的分账记账效率?
洛谷P4799 世界冰球锦标赛
发挥云网融合优势,天翼云为政企铺设数字化转型跑道
透过案例看清API接口的作用——演示1688商品详情接口
vulnhub W34kn3ss: 1
DevOps之代码检查
攻防世界-favorite_number
衡量软件产品质量的 14 个指标
mongodb的游标
解决多版本jar包冲突问题
STL案例-招聘新员工
故障分析 | 一条 SELECT 语句跑崩了 MySQL ,怎么回事?