当前位置:网站首页>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)能力成熟度模型
面试官:可以谈谈乐观锁和悲观锁吗
Open Source Summer | [Cloud Native] DevOps (5): Integrating Harbor
手机银行体验性测试:如何获取用户真实感受
redis总结_多级缓存
NeRF: The Secret of 3D Reconstruction Technology in the Popular Scientific Research Circle
宝塔搭建实测-基于ThinkPHP5.1的wms进销存源码
LeetCode 2349. 设计数字容器系统(SortedSet)
leetcode:622. 设计循环队列【循环队列板子】
Data Governance: The Evolution of Data Integration and Application Patterns
随机推荐
AtomicInteger详解
千万级QPS下服务如何才能平滑启动
新特性解读 | MySQL 8.0 GIPK 不可见主键
解决多版本jar包冲突问题
洛谷P2880 Balanced Lineup G
洛谷P4799 世界冰球锦标赛
深入理解IO流(第一篇)
洛谷P2345 MooFest G
一朵“云“如何带来产业新变革
Wechat Gymnasium Appointment Mini Program Graduation Design Finished Works (7) Mid-term Inspection Report
55.【sort函数的升序降序】
洛谷P5094 MooFest G 加强版
leetcode:622. 设计循环队列【循环队列板子】
Technical life | How to draw a big picture of business
CUDA+Pycharm-gpu版本+Anaconda安装
MySQL基本查询和运算符
成功部署工业物联网的五个关键
电子行业库存管理痛点与WMS仓储管理系统解决方案
Data Governance: The Evolution of Data Integration and Application Patterns
Open Source Summer | [Cloud Native] DevOps (5): Integrating Harbor