ROS2学习笔记:Python最小发布/接收节点

通过前边流程建立了workspace和基于Python的package框架后,下边是极简的一个Python语言实现的Publisher和Subscriber例子: import rclpy from rclpy.node import Node from std_msgs.msg import String class MinimalPublisher(Node): def __init__(self): super().__init__(‘minimal_publisher’) self.publisher_ = self.create_publisher(String, ‘topic’, 10) timer_period = 0.5 # seconds self.timer = self.create_timer(timer_period, self.timer_callback) self.i = 0 def timer_callback(self): msg = String() msg.data = ‘Hello World: %d’ % self.i self.publisher_.publish(msg) self.get_logger().info(‘Publishing: “%s”‘ % msg.data) self.i += 1 def main(args=None): […]

ROS2学习笔记:Python最小发布/接收节点 Read More »

ROS2学习笔记:C++最小发布/接收节点

通过前边流程建立了workspace和基于C++的package框架后,下边是极简的一个C++语言实现的Publisher和Subscriber例子: #include <chrono> #include <functional> #include <memory> #include <string> #include “rclcpp/rclcpp.hpp” #include “std_msgs/msg/string.hpp” using namespace std::chrono_literals; /* This example creates a subclass of Node and uses std::bind() to register a * member function as a callback from the timer. */ class MinimalPublisher : public rclcpp::Node { public: MinimalPublisher() : Node(“minimal_publisher”), count_(0) { publisher_ = this->create_publisher<std_msgs::msg::String>(“topic”,

ROS2学习笔记:C++最小发布/接收节点 Read More »

ROS2学习笔记:service服务、parameter参数、action动作

如果了解过车载总线的SOME/IP,那么再看ROS2的Service就好简单,原理基于一样,就说订阅和响应。 常用的ROS2 service命令: ros2 service list ros2 service type <service_name> ros2 service find <type_name> ros2 interface show <type_name> ros2 service call <service_name> <service_type> <arguments> 常用的ROS2 param 命令: ros2 param list ros2 param get <node_name> <parameter_name> ros2 param set <node_name> <parameter_name> <value> ros2 param dump <node_name> ros2 param load <node_name> <parameter_file> ros2 run <package_name> <executable_name> –ros-args

ROS2学习笔记:service服务、parameter参数、action动作 Read More »

ROS2学习笔记:topic话题、build包、workspace、package创建

学习topic话题感觉套用CAN总线的知识非常高效,Publisher就是在一条CAN总线写入一个信息,Subscriber就是在CAN总线监听一个信息。发送端(总线写入)可以有多个,接收端(总线监听)也可以有多个。 常用的topic命令: ros2 topic list ros2 topic echo <topic_name>: ros2 topic echo /turtle1/cmd_vel ros2 interface show <msg_type>: ros2 interface show geometry_msgs/msg/Twist ros2 topic pub <topic_name> <msg_type> ‘<args>’ : ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist “{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}” ros2 topic hz: ros2 topic hz /turtle1/pose ros2

ROS2学习笔记:topic话题、build包、workspace、package创建 Read More »

ROS2学习笔记:节点node

经历了传统汽车ECU项目开发再来看ROS的节点就特别好的理解,Node和汽车电子分布式ECU特别的像,都是挂在到总线上,汽车是CAN、以太网,ROS是DDS,也有集中不同的信号形式做交互。根据功能定位的不同节点可大可小,可复杂可简单。通信方式也可以按照数据的特点有不同的区分。Topic特别像CAN总线以及车载以太网的PDU,而ROS的Service则很像汽车的SOME/IP。Parameter的概念也很像。 比较重要的命令: ros2 run <package_name> <executable_name> 其中Package和executable不需要一一对应,一个Package可以包含多个节点,每个节点就是独立可执行的文件。同时一个Package也可以没有可执行文件,通常用来定义消息、服务、动作等,甚至是纯库包,只提供功能库,供其他package调用。甚至还有配置/Launch的文件包,只包含启动文件、参数配置等,可以将Package理解成一个容器,可以装很多东西。 在命令启动时候,可以显式修改一些节点的默认参数,语法为: ros2 run turtlesim turtlesim_node –ros-args –remap __node:=my_turtle   其他还有个作用于node比较有用的命令,查看node详细信息:   ros2 node info <node_name>    

ROS2学习笔记:节点node Read More »

ROS2学习笔记:小乌龟、rqt

小乌龟几乎是所有学习ROS第一个例子,就像写代码的“Hello World”一样。通过这个小例子可以初步了解ROS2中几个核心的概念:node节点、topic话题、parameter参数等。 首先是小乌龟安装: sudo apt update sudo apt install ros-humble-turtlesim 然后重开两个窗口,一个是小乌龟节点,一个是控制节点: ros2 run turtlesim turtlesim_node ros2 run turtlesim turtle_teleop_key XXX 再开一个Terminal,通过下列命令可以看当前网络的node, topic, service, actin: ros2 node list ros2 topic list ros2 service list ros2 action list rqt 是 ROS 2 的图形用户界面(GUI)工具。在 rqt 中完成的所有操作也可以在命令行中完成,但 rqt 提供了一种更用户友好的方式来操作 ROS 2 元素,直观,新手友好。 XXX XXX 对于网络整体拓扑的查看,以及快速简单看一个数据或者触发一个命令,rqt真的挺简单实用的。

ROS2学习笔记:小乌龟、rqt Read More »

ROS2学习笔记:缘由、安装

这几年机器人行业爆火,而我在的智驾领域差开始稳定,一定程度到了淘汰赛阶段,我想横向看看机器人有没有更合适的机会。整理学习相关知识的过程中,ROS是避不开的一环。虽然之前做项目也用到过,但是几乎都忘光了完全达不到面试水平,趁着最近找工作回顾知识点,系统再看一遍记录一下。 关于ROS2安装这部分,官网教程非常非常细致有效了,没有遇到太多的坑。建议根据各自的系统版本以及所需ROS2版本,去到对应的官网教程来安装。比如说我是Ubuntu22.04对应的是humble版本的ROS2,地址在这里: https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html 需要注意的是安装完成后需要在每个Termianl 加载一下ROS2环境,比如在Ubuntu系统下: source /opt/ros/humble/setup.bash 这个步骤经常忘记,如果想一劳永逸的话,可以将该命令写在~/.bashrc 中,用不着每次手动加载。 echo “source /opt/ros/humble/setup.bash” >> ~/.bashrc 这样环境安装对绝大多数就差不多了。如果工程比较复杂可能还需要设置一些Domain ID以防止相同命令在不同节点串行,这个在需要的时候配置也OK,初期不太懂得到。

ROS2学习笔记:缘由、安装 Read More »

我在中国银行的负面体验

我用的中行服务不多,就一张工资卡,平常消费理财也不用它,基本上工资一到账就转到别的卡去了。所以真正和中行打交道的机会很少,可就那么两三次去营业厅,每次都有让我觉得不舒服的地方。 第一次去中行是办卡。当时整体感觉其实还行,也是后来才知道,办卡的时候就被柜员给“安排”了。过程是这样的:入职前公司说需要一张中行卡,我就找了望京一家最近的网点。开户挺顺利,办完卡工作人员接着帮我开手机银行,结果人脸识别一直失败。银行的人说,是不是证件照片差别太大了?这个验证是传给公安系统的,他们不负责,传回来失败他们也左右不了。我一想,确实有可能,身份证都快十年了,样子没变化那是假的。我当时想着,唉,那有空去更新一下身份证吧,反正也快到期了,等办了新证件再来一趟。 当我离开自助机收拾东西要走的时候,那个柜员过来说:没有手机银行很不方便的,其实还有办法可以开。你可以自己用手机APP注册绑定,就是自助申请的额度只有2万,可以先凑合用。我刚刚还有点失落,一听这消息还挺开心,2万也够了,毕竟我也没那么多钱。当时觉得这工作人员挺好,挺为客户考虑的。 第二次去中国银行是12月年底,期间2W限额我感觉完全够用,但是到了12月的工资转不出了,我看APP显示年度限额是20W在年底已经满了,于是我就到了青年路附近另一家网点将年度限额做一个提额。 到了网点,我和工作人员说,20万的年度转账限额到了,12月的钱转不出去,需要提额。对方第一反应是:都年底了,你等几天不就能用了?我说,那不就用了明年的20万额度?到了明年年底又不够了。然后她带我到一台自助机前操作。到了某一步,屏幕上两个选项:左边大概是“转账汇款限额”,右边是“电子渠道转账汇款限额”。工作人员用笔指左边让我点。我当时有点迷惑,还和她确认了一下,她说是左边的。 点进去之后,页面显示额度是1000万。她问我:够吗?我一下子有点不好意思,感觉好像是我自己弄错了,我的限额明明挺好的,还来麻烦人家一趟。但马上我又想到,我确实在12月转账失败了,而且在手机APP里也清清楚楚看到过“20万”这个数字。于是我掏出手机给她看,并说:会不会刚才选错了?是不是该选“电子渠道转账汇款限额”?她说:那看一下吧。于是又重新操作了一遍。果然,在那个选项里,额度就是20万。 我调整额度后,在确认步骤又需要人脸验证——又失败了。我想,坏了坏了,公安验证又掉链子了,今天可能办不成了。我问工作人员能不能去柜台办理,这个自助机可能搞不定,之前也遇到过这样情况。她说那只能叫审核人员来。于是另一名工作人员拿着一个Pad过来,拿着我的身份证和我本人认真对比了一下,在Pad上操作后,验证就通过了。我当时很惊讶:还可以这样啊? 有了第二次的经历,我才感觉第一次开卡时可能就被“忽悠”了。当时他们告诉我人脸识别是公安系统负责,失败他们也没办法,却只字不提还可以人工核验。反而“好心”教我手动开通一个限制版的手机银行。我当时被套路了还在感激人家,意识到之后感觉非常不好。 第二次改限额,我觉得自己可能又一次被带偏了。现在回想,“转账汇款限额”应该是这张卡的整体限额(包括柜台),“电子渠道转账汇款限额”才是我真正用到的手机APP转账限额。我和工作人员明确说了“手机转账限额到了”,她却带我去调整体限额。如果我是在柜台转账受限,怎么会跑到自助机上调限额呢?我很难理解,一个人如果在柜台转不出钱,会专门跑到自助机上去提额吗?我非常怀疑这位工作人员是故意混淆概念,把总限额和电子渠道限额混为一谈,好草草把我打发掉。 在第二次的营业厅里,另一件事让我更觉得这位工作人员心思不正。我办完业务收拾东西时,一位年纪挺大的老奶奶进来咨询,问有没有保本的定期存款。她反复强调:一定要保本的存款,说她去了好几家银行,其他银行的“定期”不保本,中间取出来会损失好多钱。 作为稍微有点金融常识的人,我大概听明白了:老奶奶想要的就是最普通的银行定期存款,即使提前支取,也只是损失部分利息,本金不会少。但其他银行可能给她推荐了封闭式理财产品,不保本,提前支取损失可能很大。老奶奶不懂这些,只能反复用“定期”“保本”“存款”来强调。 但接待我的这位工作人员立刻说:有的有的。然后拿起前台桌子上一个立牌广告说:这个就是,是保本的,两年(还是三年)定期的,六个月后就能取。她用的词——“保本”“存款”“定期”——每个字都精准回应了老人的问题,但那明明是个理财产品。我不相信一个银行员工会分不清“定期存款”和“定期理财”。在老人如此明确的需求下,还这样抠字眼、推销产品,这心思真的不太正。 我和中行接触不多,但仅有的几次进营业厅,好像没有一次不被“引导”、不被“敷衍”。感觉工作人员和我不是站在一边的,表面上是服务客户,实际上更像有一种对立关系:尽量不开电子银行,或者尽量开低额度的;尽量不提额,能打发就打发;不管客户需要什么,能拉来理财就拉理财。不知道这是中行就这样培训,还是业务人员的个人行为。如果是培训出来的,那这家银行的价值观真的太糟糕了;如果是个别人行为,那这“心思不正”的比例也太高了——我总共就去过两次营业厅,两次都让我遇上,连对老奶奶也不放过,也要让她买个理财。 唉,怎么说呢,作为渺小的个体,能做的非常有限。如果之后公司不用中行作为工资卡,我大概也没有再用中行的必要了吧。  

我在中国银行的负面体验 Read More »

沉浸式体验“五星航空”:我在国泰和香港机场感受到的细节魔力

上周去了趟香港,在订票时候看到班次最多同时也是时间最方便的是国航和国泰的飞机。之前坐过国航飞机很多很多次了,比较熟悉并且常用的飞行积分也是在国航,国泰的话之前没有体验过不太清楚,所以我出发前倾向于坐国航,但是实际订票时候由于一些其他原因返程订成了国泰,我收获的体验却大大超出我的期待,也终于明白了很多次亲友给我推荐国泰的原因。 首先在首都飞香港的航班中,国航和国泰的往返航班时间都差不多,并且两个航空公司相互也是共享代码航班,规格档次也应该差不多,价格上也类似,国航1633,国泰1626,国泰稍微便宜一些。 去程我是乘坐国航CA111,空客330机型,国际航班我在APP没办法自己生成登机牌,需要去人工窗口,对于行李托运的话这条国际线路也需要去到人工。登机后是熟悉的经济舱座位,整体配置相对陈旧,需要摁很多下才能摁下一个触屏按钮很难操控的多媒体中心,以及几年没啥变化的电影库,反应速度就像是十几年前刚有的安卓触屏手机。 餐饮上往返我都选的是鸡肉,去程国航很像宫保鸡丁中间的鸡丁,甜口的,然后有一个水果和一个凉菜,印象中之前国航会有一个伊利的酸奶,不知道为啥这次没有酸奶甜品。整体来说用来充饥感觉够了,但是离好吃还有一段距离。 返程是国泰CX336,刚到机场就被震撼到了,正常柜台窗口位置上大多数自助送行李的履带,而大厅到处是这种一排一排的自助机,既可以值机打印登机牌,还可以打印托运行李贴纸。乘客自己按需打印好然后贴到行李上,再送到窗口履带,整个流程就办理完成了,超级得有效率。并且这种方式对于i人更是友好,全部自己完成不需要与工作人员做太多交流,同时可以选择熟悉的语言来操作,国际友人友好。 看自助机上边的告示,除了美国的航班需要去人工,剩下的全球所有的航线都可以使用自助机进行值机以及行李牌打印和自助托运。如果没有托运行李,甚至不需要任何现场操作,手机值机然后Apple Wallet使用手机上边机票即可去登机。整体体验下来,香港机场在出发大厅每个旅客需要的时间在0010分钟左右,即不需要托运直接就去安检乘机,一点时间都不需要在这里耽误,即使是有托运行李现场值机,10分钟也足够了。而对比北京首都机场,不能APP下载登机牌,即使是没有托运行李也得去趟柜台打印个登机牌,有托运行李可能时间还要多一些,整体看差不多每个乘客在出发大厅得需要10-30分钟时间。 到了安检处习惯性地准备将液体、电脑、电池、尤其充电宝拿出来分开检查,尤其充电宝需要特别上心。我走之前将苹果的MagSafe留在了家里,因为是两三年前买的没有3C标志,即使是苹果官方的品质一流的产品,也不能带上飞机会被来的时候首都机场没收。但是到达安检口看到下边提示,不需要将任何包里的东西拿出来,只需要将口袋的物品放入托盘,随身行李整体放托盘即可。然后由于我将手机拿出去口袋应该没金属了,过安全门没有响,所以也不需要人工搜身核验,等包包过完X光机即可拿东西走人。整体的安检就像是在北京过地铁一样的,很丝滑,安检体验很棒,同时能够能够明显感受出这样子效率高很多。 上飞机的过程以及舱内的体验也是感觉到点滴间的到位与高级,首先经济舱的等级会按照座位在舱内前后分批登机,这样很有效地避免了通道拥堵,在之前这些年达成国航国内外航班,没有印象有类似的安排;其次是进入机舱感觉到的高级感,这个设计审美可能每个人感受不同,大家可以看下下边内部环境与上边国航照片或者自己印象中国航的舱内环境比较一下。然后是舱内Wifi,据说国航也有,但是我只遇到过局域网看电影的那种,真正通互联网的没体验过,有好友如果知道哪个航线有国际互联网WiFi,也和我分享一下啊。到达座位后对于娱乐系统的感受可以说是我坐过所有国内外各大航空经济舱遇到的最好的设备了,4K大屏超级的细腻,各种操作也非常的丝滑流畅,像是瞬间进化到了iPhone的时代,不像是国航那样一个按钮点好几次都点不动的感觉。电影内容也是每月更新,我也是第一次见到经济舱娱乐系统支持使用自己的蓝牙耳机,以及支持和舱内好友同步观看的航班。关键的关键,这里还可以充电,有一个方口USB和一个Type-C USB,印象中在一些航班见过方口USB,但是插上去没有电。   接下来关于餐饮的对比,我也是选的鸡肉,拿到的是炸鸡块。另外国泰的餐具是不锈钢的,也是在经济舱不常见到,细节中的高级感。关键的的关键,国泰的甜点是哈根达斯,坐过这么多航空公司的经济舱,唯一的一个提供的雪糕是哈根达斯的,我当时真的有点被震惊到了。 对于这段旅程的记录,到这里也差不多了。起初只是一次偶然的选择,却让我体验到了香港机场与国泰航空的“惊艳”。回头查了些资料才发现,香港机场常年拿着“全球最佳机场”的称号,国泰也多次获得“最佳经济舱”“最佳机上娱乐系统”,亲身体验下来,确实名副其实。作为长期从北京出发、习惯乘坐国航的乘客,不得不说,我是真羡慕大湾区旅客能更方便地选择这种级别的出行体验。当然,话说回来,两家机场、两家航司并没有本质性的天差地别——都能把乘客安全送到目的地,都有餐食、航电娱乐、差不多的流程。可整体感觉就是不太一样:首都机场有不少地方还可以优化,国航的许多环节也显得有些粗糙。就像甜品里的伊利和哈根达斯、手机里的安卓和 iPhone——都不错,都有拥趸,也不存在所谓“云泥之别”,价格也差不多国航只比国泰贵几块钱,但就是能感受到那点细腻度、那点被认真对待的差距。 也正是这趟旅程,让我意识到:原来一次飞行也能像一段被悉心对待的相处——舒服、体贴、不必言说,却能让人记得很久。那些细节累积起来,会化成一种久违的安心,让人在云端短暂逃离日常的匆忙,重新感受到“被善待”的重量。也或许,旅行的意义从来不只是移动,而是在某些不经意的瞬间里,让我们重新相信世界可以是温柔、有序、值得期待的。希望你在下一次起飞时,也能遇见属于自己的那份温柔。而我会继续把这些细小却真实的感受记录下来,写给未来的自己,也写给此刻正在阅读的你。

沉浸式体验“五星航空”:我在国泰和香港机场感受到的细节魔力 Read More »