把ros消息转换成中文输出

                      把ros消息转换成中文输出

c++实现

发布

//发布性能评估数据 /trilateration_time_log
void publishTrilaterationLog(const int reflectorPanelPoints_size,const double duration_count,const std::string& resultType,const std::string& resultChineseMessage,const std::string& resultENMessage,const std::string& className,int   classLine,const int time_log_fig,const int matchokReflectorPanelPointSize) {/*选择性能评估数据   /trilateration_time_logint time_log_fig_=-1;-1:全部关闭,0:全部打开 ,  -2:只打开 "1:FindCircle拟定圆心坐标,6:匹配算法,9:位姿推算" 3个性能评估数据。1:FindCircle: 通过雷达强度数据,使用三角函数拟定圆心坐标,并存入反光板数据缓存中2:匹配数据: 通过得到的圆心坐标,在已经匹配成功的反光板数据缓存中匹配数据3:匹配数据: 通过得到的圆心坐标,在储存所有的反光板数据缓存中匹配数据4:匹配数据: 通过得到的圆心坐标,在反光板数据缓存中匹配数据5:匹配数据: 匹配走广度优先算法 或 匹配走广度优先算法 + 优先使用匹配好的反光板数据6:匹配算法:从查找圆心到匹配完成需要的总执行时间7:位姿推算: 基于之前已经匹配上了反光板,推算位姿8:位姿推算: 经典三边定位最小二乘法,推算位姿9:位姿推算: 基于之前已经匹配上了反光板 + 经典三边定位最小二乘法,推算位姿
*/trilateration::trilateration_read_time_log trilateration_read_time_log2;trilateration_read_time_log2.result_type = resultType;trilateration_read_time_log2.result_chinese_message = resultChineseMessage;trilateration_read_time_log2.result_EN_message = resultENMessage;trilateration_read_time_log2.className = className;trilateration_read_time_log2.classLine = classLine;trilateration_read_time_log2.num_points = reflectorPanelPoints_size;trilateration_read_time_log2.execution_time = duration_count;trilateration_read_time_log2.time_log_fig=time_log_fig;trilateration_read_time_log2.matchokReflectorPanelPointSize=matchokReflectorPanelPointSize;//队列数量time_log_pub_.publish(trilateration_read_time_log2);
}//发布性能评估数据 10:位姿推算: 所有使用默认的 tf_last_odom_to_map_transform_ 数据 发布的移动机器人坐标if(time_log_fig_==0||time_log_fig_==10) {//-1:全部关闭,0:全部打开 ,  -2:只打开 "1:FindCircle拟定圆心坐标,6:匹配算法,9:位姿推算" 3个性能评估数据。 ,1:打开第一个,2:打开第二个 3:.....std::string resultType = "trilateration_execution";std::string resultChineseMessage = " 使用上一次 mapTodom -> tf_last_odom_to_map_transform_ 的tf数据,发布移动机器人的位置坐标。[mutex]";std::string resultENMessage = "Use the previous mapTodom ->tf_1ast_odom_to-map_transform_ tf data to publish the position coordinates of the mobile robot. [mutex]";std::string className = __FILE__; // 更改为实际的文件名int classLine = __LINE__; // 更改为实际的行号///trilateration_time_logpublishTrilaterationLog(0, duration.count(), resultType, resultChineseMessage, resultENMessage, className, classLine,time_log_fig_,matchokReflectorPanelPoint_.size());}

接收 【重点看接收转码】

#include "ros/ros.h"
#include "trilateration/trilateration_read_time_log.h"
#include <locale>
#include <codecvt>
#include <string>
#include <sstream>// 将 Unicode 转义字符串解码为 UTF-8 编码的中文字符串
std::string decodeUnicodeString(const std::string& unicode_string)
{std::string decoded_string;size_t pos = 0;size_t last_pos = 0;while ((pos = unicode_string.find("\\u", last_pos)) != std::string::npos) {decoded_string.append(unicode_string, last_pos, pos - last_pos);std::string hex_code = unicode_string.substr(pos + 2, 4);unsigned int code_point;std::stringstream ss;ss << std::hex << hex_code;ss >> code_point;char utf8_char[5] = {0};if (code_point <= 0x7F) {utf8_char[0] = code_point;} else if (code_point <= 0x7FF) {utf8_char[0] = 0xC0 | (code_point >> 6);utf8_char[1] = 0x80 | (code_point & 0x3F);} else if (code_point <= 0xFFFF) {utf8_char[0] = 0xE0 | (code_point >> 12);utf8_char[1] = 0x80 | ((code_point >> 6) & 0x3F);utf8_char[2] = 0x80 | (code_point & 0x3F);} else {utf8_char[0] = 0xF0 | (code_point >> 18);utf8_char[1] = 0x80 | ((code_point >> 12) & 0x3F);utf8_char[2] = 0x80 | ((code_point >> 6) & 0x3F);utf8_char[3] = 0x80 | (code_point & 0x3F);}decoded_string += std::string(utf8_char);last_pos = pos + 6;}decoded_string.append(unicode_string, last_pos);return decoded_string;
}// 订阅的回调函数
void chatterCallback(const trilateration::trilateration_read_time_log::ConstPtr& msg)
{// 将 Unicode 转义字符串解码为中文字符串std::string decoded_chinese_message = decodeUnicodeString(msg->result_chinese_message);// 输出所有字段的数据ROS_INFO("Time Log Fig: %d", msg->time_log_fig);ROS_INFO("Result Type: %s", msg->result_type.c_str());ROS_INFO("Class Name: %s", msg->className.c_str());ROS_INFO("Class Line: %d", msg->classLine);ROS_INFO("Decoded Chinese Message: %s", decoded_chinese_message.c_str());ROS_INFO("English Message: %s", msg->result_EN_message.c_str());ROS_INFO("Result Message: %s", msg->result_message.c_str());ROS_INFO("Number of Points: %d", msg->num_points);ROS_INFO("Match OK Reflector Panel Point Size: %d", msg->matchokReflectorPanelPointSize);ROS_INFO("Execution Time: %s", msg->execution_time.c_str());
}int main(int argc, char **argv)
{//  setlocale(LC_ALL, "");  //中文setlocale(LC_CTYPE,"zh_CN.utf8");ros::init(argc, argv, "listener");ros::NodeHandle n;ros::Subscriber sub = n.subscribe("/trilateration_time_log", 1000, chatterCallback);ros::spin();return 0;
}

python实现

import jsonunicode_string = r"\u901A\u8FC7\u96F7\u8FBE\u5F3A\u5EA6\u6570\u636E\uFF0C\u5E76\u5B58\u5165\u53CD\u5149\u677F\u6570\u636E\u7F13\u5B58\u4E2D"
decoded_string = unicode_string.encode().decode('unicode_escape')
print(decoded_string)

 控制台输出结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#绘制含流动块的管道

1&#xff0c;效果。 2&#xff0c;绘制技巧。 1&#xff0c;流动块的实质是使用Pen的自定义DashStyle绘制的线&#xff0c;并使用线的偏移值呈现出流动的效果。 Pen barPen new Pen(BarColor, BarHeight);barPen.DashStyle DashStyle.Custom;barPen.DashOffset startOffse…

MySQL-日志-优化

目录 介绍一下mysql 的日志 redo log 和binlog 的区别及应用场景 redo log 和 binlog 在恢复数据库有什么区别? redo log 是怎么实现持久化的? redo log除了崩溃恢复还有什么其他作用? &#xff08;顺序写&#xff09; redo log 怎么刷入磁盘的知道吗&#xff1f; 两阶…

重塑水利未来:智慧水利解决方案的探索与实践,从物联网、大数据到人工智能,科技如何赋能水利行业,实现智慧化管理与决策

本文关键词&#xff1a;智慧水利、智慧水利工程、智慧水利发展前景、智慧水利技术、智慧水利信息化系统、智慧水利解决方案、数字水利和智慧水利、数字水利工程、数字水利建设、数字水利概念、人水和协、智慧水库、智慧水库管理平台、智慧水库建设方案、智慧水库解决方案、智慧…

探索 IPython 的历史记录:全局命令的魔法

探索 IPython 的历史记录&#xff1a;全局命令的魔法 在数据科学和编程的世界里&#xff0c;IPython 以其强大的交互式特性成为了开发者和科学家们的首选工具。其中&#xff0c;IPython 的历史记录功能是其众多亮点之一。本文将带你深入探索如何在 IPython 中使用 %history 魔…

Python之爬虫基础

Python 是进行网络爬虫开发的热门选择&#xff0c;主要是因为其拥有丰富的库和框架&#xff0c;如 Requests、BeautifulSoup、Scrapy 等&#xff0c;这些工具极大地简化了网页数据的抓取和处理过程。以下是一些 Python 爬虫的基础知识和步骤&#xff1a; 1. 理解网络爬虫 网络…

如何通过3D开发组件HOOPS增强Navisworks数据访问?

随着建筑信息模型&#xff08;BIM&#xff09;和建筑、工程和施工&#xff08;AEC&#xff09;市场的快速发展&#xff0c;对Navisworks支持的需求也在不断增长。特别是在多个公司赞助Navisworks项目的大环境下&#xff0c;HOOPS组件的支持显得尤为重要。这些公司包括一家大型电…

【多模态学习笔记二】MINIGPT-4论文阅读

MINIGPT-4:ENHANCING VISION-LANGUAGE UNDERSTANDING WITH ADVANCED LARGE LANGUAGE MODELS 提出的MiniGPT-4使用一个投影层,将冻结的视觉编码器与冻结的先进的LLM Vicuna对齐。我们的工作首次揭示,将视觉特征与先进的大型语言模型正确对齐可以具有GPT-4所展示的许多先进的多…

从MySQL切换PostgreSQL后,改动的地方,注意事项!!!

1、大写字段加上双引号&#xff0c;写了脚本可以参考&#xff1a;mysql转pg脚本 2、IFNULL转换为COALESCE。 3、LIMIT分页两个参数一个page&#xff0c;limit转换为如下写法&#xff1a; // 计算 offset&#xff0c;这里假设 page 从 1 开始int offset (page - 1) * limit;sql…

导航专业入门,高考/考研假期预习指南

导航专业入门&#xff0c;高考/考研假期预习指南 七月来临&#xff0c;各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束&#xff0c;而是新旅程的开始。对于有志于踏入IT领域的高考少年们&#xff0c;这个假期是开启探索IT世界的绝佳时机。作为该领域的前行者和经验…

DRF分页器(Django Restful Framework)

资料推荐 官方文档 https://q1mi.github.io/Django-REST-framework-documentation/api-guide/pagination_zh/ B站没有好的教学视频&#xff0c;不建议看&#xff0c;直接看官方文档吧。 PageNumberPagination 此分页样式接受请求查询参数中的单个数字页码。 Request: GET h…

【14】Github Copilot环境搭建

环境搭建 这里以Visual Studio Code为例&#xff0c;安装好vs code&#xff0c;打开扩展侧边菜单栏&#xff0c;搜索“Github Copilot”&#xff0c;会出现如下图的两个插件&#xff0c;点击安装第一个&#xff0c;另一个会附带一起安装&#xff0c;然后弹出提示重新启动vs co…

对于栈和链表,数组之间关系的一些探索

先贴脸来个图 这是一个解析图&#xff0c;总体是个栈&#xff08;stacks&#xff09;细分有数组和链表【注意这儿的linkedlist可不是Java集合List中的linklist】 对于栈&#xff0c;如果我们想向栈中添加元素&#xff0c;或者想从中删除元素&#xff0c;都必须从一个地方开始&…

阿里云DSW实例中安装并运行Neo4J

想尝试使用大模型对接Neo4J&#xff0c;在阿里云DSW实例中安装了Neo4J&#xff0c;却无法通过本地浏览器访问在DSW实例中运行的Neo4J。尝试了改neo4j.conf文件&#xff0c;以及添加专用网络的公共IP地址等方法&#xff0c;均没有成功。最后决定直接在服务器的命令行进行各种Cyp…

uniapp 页面字体乱码问题解决【已解决】

这个不是我们本身代码的问题&#xff0c;调整一下编译器就好了 打开编译器文件 2,然后以指定编码重新打开&#xff0c;选择utf-8就行了 非常简单 &#xff0c;如果你选择了之后重新渲染页面还是乱码的话&#xff0c;你就把项目关掉&#xff0c;重新启动就OK了。。。

从零开始学习嵌入式----结构体struct和union习题回顾

一、通过结构体和自定义函数实现成绩从大到小的排序&#xff0c;要求在主函数内定义结构体数组。 #include <stdio.h> //定义一个结构体类型 typedef struct Student {int age;char name[32];float score; } STU; //定义一个函数实现成绩从小到大的排序 void fun(STU *p…

基于搜索二叉树的停车收费管理系统

系统效果&#xff1a;录入汽车信息 查看汽车信息 收费信息查看 查询车库车辆 代码展示&#xff1a; //SearchBinaryTree.h #pragma once #include<iostream> #include<string> #include<time.h> #include<Windows.h> using namespace std;template<…

百分点科技入选《2024中国数据要素产业图谱1.0版》

近日&#xff0c;数据猿与上海大数据联盟发布了《2024中国数据要素产业图谱1.0版》&#xff0c;百分点科技凭借领先的数据科学技术和深入的行业洞察力&#xff0c;入选数据管理/治理、数据分析与挖掘、应急管理三大领域。 在数据要素的发展关键期&#xff0c;数据作为生产要素持…

Hadoop中的YARN组件

文章目录 YARN 的主要功能YARN 的架构YARN 的工作流程YARN 的优势总结 YARN&#xff08;Yet Another Resource Negotiator&#xff09;是 Hadoop 生态系统中的一个关键组件&#xff0c;负责资源管理和作业调度。它是 Hadoop 2.x 及更高版本中的核心模块&#xff0c;旨在提高集群…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【26】【内网穿透】cpolar

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【27】【内网穿透】cpolar 内网穿透cpolar内网穿透联调配置练习—使用公网地址访问gulimall.com参考 内网穿透 正常的外网需要访问我们项目的流程是&#xff1a; 买服务器并且有公网固定…

怎么压缩视频文件?简单的压缩视频方法分享

视频已成为我们日常生活中不可或缺的一部分。但随着视频质量的提高&#xff0c;文件大小也逐渐成为我们分享的阻碍。如何有效压缩视频文件&#xff0c;使其既能保持清晰&#xff0c;又能轻松分享&#xff1f;今天&#xff0c;给大家分享五种实用的视频压缩方法&#xff0c;快来…