当前位置:网站首页>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
家中
边栏推荐
- 如何减轻企业账户被劫持的攻击?
- How to ensure the security of smart factories?
- selenium安装和环境配置Firefox
- 研发运营一体化(DevOps)能力成熟度模型
- SQL Alias 别名
- 【软考软件评测师】基于经验的测试技术
- Enterprise cloud cost control, are you really doing it right?
- Smart Microelectronics Releases Low-Power MM32L0130 Series MCU Products
- 载20(S)-人参皂苷/细胞穿膜肽-单克隆抗体-载丝裂霉素白蛋白纳米微球的制备
- 危及安全的常见物联网攻击有哪些?
猜你喜欢

Data Governance: The Evolution of Data Integration and Application Patterns

Code Inspection for DevOps

从技术全景到场景实战,透析「窄带高清」的演进突破

一文看懂推荐系统:概要01:推荐系统的基本概念

mongodb的游标

来亲自手搭一个ResNet18网络

shell中awk命令的if条件语句引入外置变量

Security First: Tools You Need to Know to Implement DevSecOps Best Practices

企业云成本管控,你真的做对了吗?

HDF驱动框架的API(3)
随机推荐
SQL Alias 别名
为何国内年轻人都抢购iPhone,因为它更实惠也更亲民
MySQL基本语法
Endanger the safety of common Internet attacks have?
浅谈混迹力扣和codeforces上的几个月
NeRF: The Secret of 3D Reconstruction Technology in the Popular Scientific Research Circle
一朵“云“如何带来产业新变革
洛谷P4316 绿豆蛙的归宿
数据治理:数据集成和应用模式的演进
How to deal with security risks posed by machine identities
golang源码分析(19)简单编译器-计算器
redis总结_多级缓存
【秒杀办法】根据二叉树的先序遍历、中序遍历、后序遍历快速创建二叉树
Wechat Gymnasium Appointment Mini Program Graduation Design Finished Works (7) Mid-term Inspection Report
从技术全景到场景实战,透析「窄带高清」的演进突破
VSTO踩坑记录(1)- 从零开始开发outlook插件
MySQL基本操作和基于MySQL基本操作的综合实例项目
LiveGBS国标GB/T28181流媒体平台支持主子码流切换主码流stream/streamprofile
How can services start smoothly under tens of millions of QPS
【软考软件评测师】基于经验的测试技术