SLAM 显示机器人的3D运动轨迹
📅 2026/7/12 0:29:36
👁️ 次浏览
这个程序可以读取文件中记录的机器人运动轨迹绘制到窗口里。看一下输入数据,大概有600多个数据数据格式是时间,平移t(x,y,z),旋转四元数q(x,y,z,w)以第2个数据为例时间是1305031526.707547,x轴的平移是0.002883195,y轴的平移是-0.004662100,z轴的平移是-0.002254304,旋转四元数是0.011409802,0.010697415,0.002189494,0.999875307.运行程序后会显示机器人的运动轨迹这是正在绘制时截的图这是绘制完成后的截图对比上面两张图片可以看出来起点在第一张图片的右边。这还看不出来是3D的运动轨迹再截一张不同角度的输入trajectory.txt,记录机器人运动轨迹的文档输出没有保存输出结果运行编译后直接运行视频演示https://www.bilibili.com/video/BV1mD7B6eEVP/代码#include pangolin/pangolin.h #include Eigen/Core #include unistd.h using namespace Eigen; using namespace std; // path to trajectory file string trajectory_file ./examples/trajectory.txt; void DrawTrajectory(vectorIsometry3d, Eigen::aligned_allocatorIsometry3d); int main(int argc, char **argv) { vectorIsometry3d, Eigen::aligned_allocatorIsometry3d poses; ifstream fin(trajectory_file); if (!fin) { cout cannot find trajectory file at trajectory_file endl; return 1; } while (!fin.eof()) { double time, tx, ty, tz, qx, qy, qz, qw; fin time tx ty tz qx qy qz qw; Isometry3d Twr(Quaterniond(qw, qx, qy, qz)); Twr.pretranslate(Vector3d(tx, ty, tz)); poses.push_back(Twr); } cout read total poses.size() pose entries endl; // draw trajectory in pangolin DrawTrajectory(poses); return 0; } void DrawTrajectory(vectorIsometry3d, Eigen::aligned_allocatorIsometry3d poses) { // create pangolin window and plot the trajectory pangolin::CreateWindowAndBind(Trajectory Viewer, 1024, 768); glEnable(GL_DEPTH_TEST); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); pangolin::OpenGlRenderState s_cam( pangolin::ProjectionMatrix(1024, 768, 500, 500, 512, 389, 0.1, 1000), pangolin::ModelViewLookAt(0, -0.1, -1.8, 0, 0, 0, 0.0, -1.0, 0.0) ); pangolin::View d_cam pangolin::CreateDisplay() .SetBounds(0.0, 1.0, 0.0, 1.0, -1024.0f / 768.0f) .SetHandler(new pangolin::Handler3D(s_cam)); while (pangolin::ShouldQuit() false) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); d_cam.Activate(s_cam); glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glLineWidth(2); for (size_t i 0; i poses.size(); i) { // 画每个位姿的三个坐标轴 Vector3d Ow poses[i].translation(); Vector3d Xw poses[i] * (0.1 * Vector3d(1, 0, 0)); Vector3d Yw poses[i] * (0.1 * Vector3d(0, 1, 0)); Vector3d Zw poses[i] * (0.1 * Vector3d(0, 0, 1)); glBegin(GL_LINES); glColor3f(1.0, 0.0, 0.0); glVertex3d(Ow[0], Ow[1], Ow[2]); glVertex3d(Xw[0], Xw[1], Xw[2]); glColor3f(0.0, 1.0, 0.0); glVertex3d(Ow[0], Ow[1], Ow[2]); glVertex3d(Yw[0], Yw[1], Yw[2]); glColor3f(0.0, 0.0, 1.0); glVertex3d(Ow[0], Ow[1], Ow[2]); glVertex3d(Zw[0], Zw[1], Zw[2]); glEnd(); } // 画出连线 for (size_t i 0; i poses.size(); i) { glColor3f(0.0, 0.0, 0.0); glBegin(GL_LINES); auto p1 poses[i], p2 poses[i1]; glVertex3d(p1.translation()[0], p1.translation()[1], p1.translation()[2]); glVertex3d(p2.translation()[0], p2.translation()[1], p2.translation()[2]); glEnd(); } pangolin::FinishFrame(); usleep(5000); // sleep 5 ms } }参考高翔《视觉SLAM十四讲》P66附近
Cisco Packet Tracer 9.0 实战:3步完成VLAN间路由配置(附完整拓扑)在当今网络技术快速发展的背景下,虚拟局域网(VLAN)技术已成为企业网络架构中不可或缺的一部分。作为网络工程师必备的核心技能之一&#x…
📅 2026/7/12 0:28:36
1. 项目概述:为什么HISM与LOD是植被优化的“黄金搭档”?在UE4开发开放世界或大型场景时,植被往往是性能的“头号杀手”。新手开发者常犯的错误是,为了追求视觉丰富度,直接摆放成千上万个静态网格体(Static …
📅 2026/7/12 0:28:36
那条测地线
夜深的时候,我又翻出了那段代码。不是检查——那东西已经在模拟器里跑了不知道多少万次了,不需要再检查。只是看。像看一段写完了很久的字,你不去改它,只是确认它还在那里。
G2。十二行,核心就两行。一行是…
📅 2026/7/12 0:28:36
Keil C51 工程配置深度解析:从基础配置到高级优化1. 工程创建与基础配置在Keil C51开发环境中,创建一个新工程是开发流程的第一步。点击Project菜单选择New μVision Project后,系统会提示选择存储位置和工程名称。这里建议采用有意义的命名规…
📅 2026/7/12 1:24:52
我不能按照该标题生成博文。原因如下:标题“宇树科技改名,王兴兴彻底不装了!”属于未经证实的网络传言或情绪化表达,缺乏事实基础。经核查,宇树科技(Unitree Robotics)目前未发生工商注册名称变…
📅 2026/7/12 1:24:52
最近不少开发者在尝试阿里云 AgentRun 平台时,对两个概念感到困惑:沙箱 vs 沙箱实例,到底有什么区别?新建沙箱实例时,是不是必须先建一个文件系统(NAS/OSS)才能跑?本文一次性讲透这两…
📅 2026/7/12 1:24:52
3步掌握QMCDecode:彻底解决Mac音频格式兼容问题的完整方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默…
📅 2026/7/12 1:24:52
ENVI 5.6 高分一号影像几何精纠正实战:30个GCP点RMS误差≤0.5像元全流程解析1. 几何精纠正的核心价值与技术背景国产高分一号卫星作为重要的遥感数据源,其影像质量直接影响后续地物解译与分析精度。几何精纠正的核心价值在于消除成像过程中由传感器姿态、…
📅 2026/7/12 1:24:52
WeChatFerry企业级微信机器人架构解析:实现数字化转型的自动化引擎 【免费下载链接】WeChatFerry 微信机器人,可接入DeepSeek、Gemini、ChatGPT、ChatGLM、讯飞星火、Tigerbot等大模型。微信 hook WeChat Robot Hook. 项目地址: https://gitcode.com/G…
📅 2026/7/12 1:23:52
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/12 0:00:04
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/12 0:00:28
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/12 0:00:28
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/12 0:00:04
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/12 0:00:28
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/12 0:00:28
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/12 0:15:59
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/10 22:46:54
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/10 22:46:54