机器人编程趣味实践02-程序(Hello World)
上一节,概述中(机器人编程趣味实践01-简要介绍)简要说明课程包含内容。
- 互联网
- 物联网
- 智联网(机器人)
开篇
这些设备平台的Hello World,具体有哪些差异呢???
对于如上设备,它的Hello World,就是测心跳,然后发送可在网页显示,如何做到的?
起步
先从一段简单的程序讲起吧^_^
#include <iostream> //头文件using namespace std; //名字空间int main() //主函数
{cout<<"终端最简单的文本显示"<<endl;return 0;
}
这个程序适用于手机和电脑,编译后执行效果如下:
这个程序包含头文件、名字空间和主函数。
注意,在主函数中只有输出cout。这是所有代码学习最本原的基础,这个程序属于单机终端显示,最最简陋的人机交互,发布的是一个事先预定的消息。
它不属于
- 互联网程序
- 物联网程序
- 机器人程序
思考:
- 如何实现多台电脑之间信息交互?(互联网)
- 如何实现多台传感器设备之间数据共享?(物联网)
- 如何实现多台机器人之间行动协调?(机器人)
提示:
- 数据或信息(不一定是真实世界反映)
- 实际环境测量信息
- 基于环境信息完成任务或改变
人工智能等内容后续以案例形式补充
跃升
单向消息发布:
windows电脑发送Hello World给linux电脑,如下图所示:
左侧为windows,右侧为linux,此为单向消息传送。
然后在linux端开启消息发布,windows端不仅能查看自己发布的消息,也能看到linux发布的消息。
通过这类工具外加一些图形化皮肤,可以制作局域网聊天工具,当然图片之类也可传送。
问题引出!
- 异步通信
- 同步通信
两台或多台电脑之间的时间如何同步呢???
如何实现实时的视频传送呢???
Linux端参考程序如下:
#include <chrono>
#include <functional>
#include <memory>
#include <string>#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"using namespace std::chrono_literals;class MinimalPublisher : public rclcpp::Node
{
public:MinimalPublisher(): Node("minimal_publisher"), count_(0){publisher_ = this->create_publisher<std_msgs::msg::String>("topic", 10);timer_ = this->create_wall_timer(2000ms, std::bind(&MinimalPublisher::timer_callback, this));}private:void timer_callback(){auto message = std_msgs::msg::String();message.data = "来自Linux的消息" + std::to_string(count_++);RCLCPP_INFO(this->get_logger(), "Publishing: '%s'", message.data.c_str());publisher_->publish(message);}rclcpp::TimerBase::SharedPtr timer_;rclcpp::Publisher<std_msgs::msg::String>::SharedPtr publisher_;size_t count_;
};int main(int argc, char * argv[])
{rclcpp::init(argc, argv);rclcpp::spin(std::make_shared<MinimalPublisher>());rclcpp::shutdown();return 0;
}
对比一下,第一段程序,有很多类似的地方,但是复杂一些。这个案例发布的消息是键盘输入的字符。
回顾本文开始的那个案例,那是一个物联网消息案例,数据为心跳频率。
那么机器人程序Hello World如何编写???
限于篇幅,预知详情,参考如下链接:
- https://blog.csdn.net/ZhangRelay/article/details/83789116
总结
程序(Hello World)由单机发展到网络,表达形式也变得丰富多彩,对处理器和网络带宽的要求也显著提高。
- 从互联网的消息交流
- 到物联网的现实物体数字化
- 再到机器人与现实世界交互协作
- 虚拟和现实融合越来越紧密
这一切都源自与来自数字芯片所发出的:
Hello World
Hello World
Hello World
Hello World
-End-
机器人编程趣味实践02-程序(Hello World)相关推荐
- 机器人编程趣味实践20-版本课程(教学)
如何选择一款合适的工具入门机器人编程,相信经过前面19节,会有一个模糊的概念. 比如需要一定的编程基础如: C++ Python 机器人学的相关知识,哇哦,这好像不是一个零基础就能轻松上手的内容,事实 ...
- 机器人编程趣味实践14-机器人三维仿真(Gazebo+TurtleBot3)
之前,介绍了节点.主题.服务和行动等基本概念,以及rqt和rosbag2等工具. 采用了官方改版的二维环境,那么现在玩耍一下更为逼真的三维仿真环境吧. 仿真软件Gazebo 机器人TurtleBot3 ...
- 机器人编程趣味实践19-武林秘籍(文档)
机器人技术快速发展,教程等迭代速度非常快,周期在1-2年,新生期都是如此,进入成熟期会好很多,文档迭代周期会延长至3-5年.至于那些经典技术通常生命周期长达10年或更久. 在开启本文之前,推荐一篇: ...
- 机器人编程趣味实践06-程序(节点)
分别输入如下命令: ros2 run examples_rclcpp_minimal_publisher publisher_lambda ros2 run turtlesim turtlesim_n ...
- 机器人编程趣味实践07-信息交互(主题)
在网络上,沟通交流的方式主要有文字.图片和视频.对于专业人士,通常是公式和代码. 在表述一个数学或物理规律所用字节或占用空间由小到大: 公式 文字 图片 视频 理解难度由简单到困难,如下: 视频 图片 ...
- 机器人编程趣味实践18-他山之石(功能包)
机器人操作系统功能包可以使用如下两种方式使用: sudo apt install xxx colcon build xxx 第一种是打包的安装文件,第二种是源代码编译. 如何自己编写功能包后续细说,本 ...
- 使用ROS2机器人操作系统进行多机器人编程技术实践(Multi-Robot Programming Via ROS2 )
简介 ROS2机器人操作系统简介2021英文字幕版本 使用机器人操作系统ROS2和机器人中间件框架系统RMF进行多机器人系统集成,高层规划及其应用等. 上图所示机器人按规划路径进行物流运输或场地巡逻任 ...
- 解读机器人编程课的示教准则
随着不少中小学校开设机器人编程课,少儿学编程日渐火爆.各类培训机构不失时机,将机器人编程教育奋力包装一番,推向社会:不学编程就是新一代文盲,机器人编程成为升学必修,编程必须从娃娃抓起.小则5.6岁,大 ...
- python录入学生信息网_干货满满 | Python趣味编程教学实践
Python趣味编程教学实践 近几年间,Python 的火热有目共睹,在IEEE Spectrum 2020 编程语言 Top 10排行榜中,Python位居第一.这是因为Python 与人工智能.机 ...
最新文章
- kotlin设置CORS跨域资源共享,java设置允许跨域,服务端如何设置 springboot中设置跨域资源共享
- 赢在中国 - 史玉柱经典语录
- sealed关键字用法
- 【算法与数据结构】在n个数中取第k大的数(基础篇)
- 在几何画板中如何制作圆柱的侧面展开动画_基本尺规作图过程展示 | 几何画板...
- 《剑指offer》把字符串转为整数
- Java程序员的推荐阅读书籍
- 伪指令endp告诉汇编程序_全国2004年10月高等教育自学考试微型计算机原理及应用试题历年试卷...
- 分享几套古典复古式的UI设计
- loadrunner四大部分
- 如何判断一个算式是几位运算
- 181007扇贝有道每日一句
- MyBatis-Plus配置全局sql注入器后,BaseMapper中方法失效
- mybatisplus代码生成器构建项目以及lambd链式编程
- OpenFOAM动网格的通量修正
- 【转载】2005中文博客排名报告
- Java 随机点名器
- 基带信号与频带信号的基础认识
- 洛谷 Cantor 表
- VC++各种文件作用
热门文章
- 相对论漫谈(原著:幽灵蝶)
- 【Web技术】1517- 你知道前端水印功能是怎么实现的吗?
- 《如何高效学习》【加】斯科特·扬 著 读书笔记
- golang-奇淫巧技
- 苹果维修日期计算机,我的苹果笔记本在官网怎么查不到生产日期提示日期的地方显示2.4 2.2GHz啥意思,...
- matlab心形图大全,几个经典的函数图像,有趣的函数图像,matlab画图
- Tessy导入S32K代码工程报错
- 宝塔linux怎么操作,宝塔linux面板 怎么操作
- 解读opentsdb之aggregator
- CentOS Linux release 7.8.2003 系统上部署KVM系统