当前位置:网站首页>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
家中
边栏推荐
猜你喜欢
DevOps之代码检查
What skills are the most practical for college students in communications?
监控易火星版即将亮相:分布式运维帮助TOP3000大企业跨越管理鸿沟
Security First: Tools You Need to Know to Implement DevSecOps Best Practices
TSF微服务治理实战系列(一)——治理蓝图
基于HDF的LED驱动程序开发(1)
Go 语言快速入门指南:第二篇 变量与常量
一文看懂推荐系统:概要01:推荐系统的基本概念
下载mysql的源码包
“12306”的架构到底有多牛逼?
随机推荐
影响PoE供电传输距离的除了网线还有啥?
面试官:可以谈谈乐观锁和悲观锁吗
千万级别的表分页查询非常慢,怎么办?
针对时间的功能测试点,这里给你总结全面了
golang刷leetcode滑动窗口(9) 颜色分类
危及安全的常见物联网攻击有哪些?
织梦自定义表单添加全选和全不选功能按钮
企业云成本管控,你真的做对了吗?
数据治理:数据集成和应用模式的演进
vulnhub W34kn3ss: 1
Go 语言快速入门指南:第二篇 变量与常量
AtomicInteger详解
方法的使用
判断文件属主
golang源码分析(19)简单编译器-计算器
宝塔搭建实测-基于ThinkPHP5.1的wms进销存源码
How to build a quasi-real-time data warehouse?
codeforces:E. Add Modulo 10【状态压缩 + 找规律】
golang刷leetcode 经典(1) LRU缓存机制
docker安装Oracle之后常用的一些命令