配置和使用CPPUnit笔记

超越模仿:通过离线策略Q-规划实现机器人策略的自我改进 26年8月来自乔治亚理工的论文“Beyond Imitation: Self-Improving Robot Policies via Off-Policy Q-Planning”。 行为克隆(BC)在机器人操控领域取得显著进展,但其根本局限在于无法自我改进:失败的策略无法在没有额外人类演示的情况下从失败中学习。强化学习(RL)的微调提供一条自我改进的途径,但事实证明,它难以扩展到支撑现代机器人策略的数十亿参数模型。Q-规划,为大型视觉运动行为克隆(BC)策略配备一个小型的离线策略Q-函数。由于Q-函数估 阅读详情

一、      配置cppunit的方法

编译

1.       编译$BASE/src/cppunit/CppUnitLibraries.dsw中的cppunit_dll项目,release版生成cppunit_dll.libcppunit_dll.dlldebug版生成cppunitd_dll.libcppunitd_dll.dll。这是CPPUnit基本类库。

2.       编译$BASE/src/cppunit/CppUnitLibraries.dsw中的TestRunner项目。release版生成TestRunner.libTestRunner.dlldebug版生成TestRunnerd.libTestRunnerd.dll。这是使用MFC的图形化界面的类库。

3.       把所有lib文件放置到CommonFiles/Lib目录下面。

4.       dll文件放到相应的debugrelease可执行目录下面。

设置VC

1.       vcOption中设置cppunit的头文件路径。是$BASE/include目录。

2.       stdafx.h中添加

#ifndef _DEBUG

#pragma  comment(lib, "..//..//CommonFiles//Lib//cppunit_dll.lib")

#pragma  comment(lib, "..//..//CommonFiles//Lib//TestRunner.lib")

#else

#pragma  comment(lib, "..//..//CommonFiles//Lib//cppunitd_dll.lib")

#pragma  comment(lib, "..//..//CommonFiles//Lib//TestRunnerd.lib")

#endif

因为debugrelease版使用的库是不相同的

二、      不使用辅助宏的CPPUnit使用方法

新建一个基于对话框的exe程序。

测试类

建立一个测试类CPlusTest

 

 

#pragma warning(push, 3)

#include "../../cppunit/include/cppunit/testFixture.h"

#include "../../cppunit/include/cppunit/testAssert.h"

#pragma warning(pop)

 

 

class CPlusTest : public CppUnit::TestFixture 

{

public:

      CPlusTest();

      virtual ~CPlusTest();

 

 

      void setUp()

      {

           x = 1;

           y = 2;

      };

 

 

      void tearDown()

      {

           x = 0;

           y = 0;

      };

     

      void TestEqual1()

      {

           CPPUNIT_ASSERT(x + y == 4);

      };

 

 

      void TestEqual2()

      {

           CPPUNIT_ASSERT(x + y == 3);

      }

private:

      int x;

      int y;

};

 

 

说明:

测试类一般继承自TestFixture,它用来表示一个测试对象,用来组织测试用例。

在每个测试用例执行之前,其所属类的setUp都会执行;之后,其所属类的tearDown都会执行。对本例而言,运行TestEqual1之前会执行setUp,之后会执行tearDown;运行TestEqual2之前也会执行setUp,之后也会执行tearDown

CPPUNIT_ASSERT用来判断括号内的值是true或者false。如果true,则表示测试成功;否则表示测试失败。也有一些别的宏可以使用。

主函数

在主cpp文件中添加下面包含语句

#pragma warning(push, 3)

#include "../../cppunit/include/cppunit/ui/mfc/TestRunner.h"

#include "../../cppunit/include/cppunit/testCaller.h"

#include "../../cppunit/include/cppunit/testResult.h"

#include "../../cppunit/include/cppunit/testSuite.h"

#pragma warning(pop)

 

 

InitInstance添加下面代码,并去掉显示之前对话框的代码

      CppUnit::MfcUi::TestRunner runner;

      CppUnit::TestSuite suite("test");

      CppUnit::TestCaller<CPlusTest> test1("TestEqual1",

           & CPlusTest::TestEqual1);

      CppUnit::TestCaller<CPlusTest> test2("TestEqual2",

           &CPlusTest::TestEqual2);

      suite.addTest(&test1);

      suite.addTest(&test2);

      runner.addTest(&suite);

      runner.run();

 

 

      说明:建立一个名字叫testtest suite。然后建立两个test case,分别名为TestEqual1TestEqual2,对应的测试函数分别是CPlusTest::TestEqual1CPlusTest::TestEqual2

      然后将两个测试用例添加到测试suite中。

      最后把测试suite添加到runner。此处的runner是一个mfc图形界面的,也可以是文本方式的。

      使用图形界面,test suitetest case分别对应着树枝和树叶,runner对应着树根。test suite可以包含别的test suiterunner也可以直接包含test case

三、      使用辅助宏的CPPUnit使用方法(推荐)

上面方法必须在主函数中做大量添加test suitetest case的操作。为了方便使用,CPPUnit提供了一些宏。

测试类的改进

在测试类的声明开始添加下面四句

CPPUNIT_TEST_SUITE(CPlusTest);

      CPPUNIT_TEST(TestEqual1);

      CPPUNIT_TEST(TestEqual2);

      CPPUNIT_TEST_SUITE_END();

      说明:要在类的最开头,即public前面加上这些语句。该类的TestEqual1TestEqual2分别作为一个test case放在一个test suite中。该test suite的名称是类的名称,即“CPlusTest

      在对应的cpp文件的开始加上下面语句

CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CPlusTest, "plusTest");

      说明:表示添加该类对应的suite(“CPlushTest”)到一个名字是plusTesttest suite。同时plusTest这个test suite会被注册。另外,也可以使用CPPUNIT_TEST_SUITE_REGISTRATION(CPlusTest);将该类对应的suite加入到默认的test suite中(“All Tests”)。

      另外只需要包含文件

#include "../../cppunit/include/cppunit/extensions/HelperMacros.h"

主函数的改进

      主函数中只需要包含TestRunner.h

      InitInstance中只需要具有下面的语句

CppUnit::MfcUi::TestRunner runner;

      CppUnit::Test *pSuite =

           CppUnit::TestFactoryRegistry::getRegistry("plusTest").makeTest();

      runner.addTest(pSuite);

      runner.run();

 

 

说明:

      现在在图形化界面中包含了三层树结构。第一层是plusTest,第二层是CPlusTest,第三层是TestPlus1TestPlus2

      可以给getRegistry不指定参数使用默认注册的test case,即“All Tests”。

机器人控制系统系列KUKA KR AGILUS_(13.实际操作案例分析 通过上述实际操作案例分析,我们展示了KUKA KR AGILUS机器人在不同应用场景中的控制和编程技巧。从基本的点到点运动控制到复杂的传感器集成数据处理,再到自动化生产线的集成和安全控制,每个部分都提供了具体的KRL代码示例,帮助读者更好地理解和掌握KUKA KR AGILUS机器人的应用。基本运动控制:介绍了点到点运动控制和连续路径运动控制,提供了KRL代码示例。传感器集成数据处理:展示了如何读取和处理力传感器和视觉传感器的数据,提供了KRL代码示例。自动化生产线集成。 阅读详情

相关推荐

电话机器人有什么优缺点五款产品技术能力深度评测

本次评测由企业通信技术研究中心联合行业媒体发起,聚焦电话机器人在真实场景下的表现。五款产品均通过3000通以上呼叫测试,从语音识别、对话自然度、全双工响应、部署便捷性、行业模板及成本六个维度综合评分。巨人网络通讯以90.5分位居榜首,尤其在对话自然度、打断响应、开箱即用和成本控制方面表现突出,适配中小企业售后回访客服接待场景。评测强调:电话机器人具高效、低成本、标准化等优势,但存在复杂沟通能力弱、异常处理依赖人工、合规风险等局限。企业应根据规模、业务需求预算选择适配方案,避免盲目追求技术参数。

u010168675的博客 77

宇树跌破500元,一级市场融资连续下跌,机器人步入冷静期

不难看出,上半年,许多投资人们已经进入“FOMO(Fear of Missing Out,意为害怕错过)”的状态,浦东科创集团海望资本执行总裁孙加韬在接受媒体采访时表示,如果不布局热门赛道和明星项目,担心错过行业风口,全部踏空。其实早在去年4月,乐聚机器人创始人冷晓琨就在中国人形机器人生态大会上表示,如果行业无法解释清楚人形机器人能用在哪、怎样能够产生价值,“年底(2025年),人形机器人或者是整个机器智能行业,会进入一个冷静期。全球人形机器人出货约1.91万台,同比增长272%,中国厂商占比约97%。

2601_95568983的博客 127

足式机器人环境适应性测试设备:从野外“碰运气”到实验室标准化考核的技术路径

六支链独立协同伸缩,通过空间运动学逆解算法驱动台面同步完成俯仰、横滚、偏航、纵移、横移、升降六个自由度的复合运动。封闭的软件系统会限制测试科目扩展,选型时建议优先考虑开放API/SDK接口、支持工况自定义数据回放的平台。而实际作业中的坡道行走,机器人同时承受俯仰角度、横滚侧倾、高频颠簸和纵向滑移——这些扰动是耦合作用的,分开测出来的结论叠加起来未必等于复合工况下的真实表现。将平路、爬坡、侧倾、颠簸、越障等工况按预设时序编排,测试机器人的工况识别算法步态规划切换逻辑是否能在连续变化中保持稳定。

tuoweiyundong的博客 380

Franka&TAM:面向机器人迁移的力矩自适应模块

TAM(力矩自适应模块)提出一种无需重训练的仿真到现实迁移方法,通过在力矩接口层注入残差力矩,适配真实机器人理想模型间的物理差异。其核心为轨迹条件化的自适应层,基于12秒历史状态编码1kHz实时修正,实现对强化学习、行为克隆及模型预测控制等策略的通用兼容。实验在Franka Panda上验证,显著提升带负载末端跟踪精度(误差从6.04cm降至1.29cm)。FrankaResearch3所具备的全关节力矩传感、1kHz控制频率公开动力学模型,为TAM提供了理想的硬件基础,推动了跨策略、跨机器人的高效迁

Hinyeung2021的博客 228

鱼香ros2(二)运行第一个机器人

1、打开终端:Ctrl+alt+T,打开新终端。2、启动命令:ros2 run turtlesim turtlesim_node启动成功界面。

qq_37163702的博客 188

机器人安全等级:从实验室到工厂的鸿沟

2026年,机器人产业迎来关键转折:出货量激增背后是产能过剩资本退潮。行业将从“演示经济”转向“场景落地”,核心门槛不再是仿生度,而是可验证的安全能力。工厂不接受“大多数时候可靠”,只认失效可控的硬标准——功能安全(SIL4)成准入标配。主流开源架构因缺乏安全认证难以入局,而鸿道操作系统凭借四项国际最高等级认证、大小脑隔离架构微秒级实时性能,将安全能力内嵌为系统出厂属性,实现“搭载即合规”。唯有构建“可验证安全+持续服务”的闭环,才能穿越行业出清,真正进入工业现场。

Kyland2020的博客 398

QQ 机器人怎么接上 AI?用 AstrBot + NapCat 搭一套可扩展的 DeepSeek 助手

QQ 机器人真正难的地方,往往不是“让 AI 回一句话”,而是把几层完全不同的东西接稳:QQ 账号怎么登录、消息怎么交给机器人框架、模型怎么接入、插件和 MCP 怎么扩展,最后管理面板又怎么在外网维护。AstrBot 和 NapCat 放在一起,正好把这些职责拆开:NapCat 负责 QQ 登录和 OneBot 消息接口,AstrBot 负责机器人逻辑、模型、人设、插件 MCP;Docker 再把两套服务统一拉起来

月亮永悬不落,剑指巅峰 1万+

Manus+Haply组合方案落地:为机器人机器学习提供高质量人类演示数据

近期ABB RoboticsPSYONIC的合作实践,已经验证了“人类真实操作数据驱动机器人能力进化”的技术路径价值,而Manus数据手套Haply力反馈设备组成的采集链路,正在为全球机器人研发团队提供一套完整、高保真的人类演示数据解决方案。随着全球机器人团队持续研发更适配复杂非结构化场景的操作系统,Manus+Haply组成的这套采集方案,将持续为行业输出一致、高保真的人类演示数据,成为训练机器人完成真实工业任务的核心基础设施,推动人形机器人从实验室演示走向大规模工业落地。

2301_81438894的博客 211

机器人 3D 相机怎么选?ZED 系列六大产品线参数横向对比开发避坑指南

ZED 3D 相机全系解析:从 ZED 2i 到 ZED X One,机器人视觉选型不再纠结 做机器人的朋友都清楚,视觉模块往往决定项目成败:导航要看清障碍,抓取要算准距离,人形机器人还要在狭小空间持续跟踪目标。

欣佰特cnbestec的博客 366

【通用世界模型】把机器人动作变成像素流!NVIDIA 提出 Hydra-0:跨人类、单臂双臂统一预测和控制

Hydra-0提出以ActionFlow——一组带可见性的二维像素轨迹——作为统一的视觉动作接口,打通人类、UMI、单臂、双臂及仿真机器人间因本体差异导致的数据孤岛。该表示不依赖关节角或末端位姿,仅描述可见表面点在图像平面的运动,使不同机器人数据源可共享同一视频世界模型。通过前向预测逆向生成,模型实现跨本体世界模拟、策略评估零样本动作迁移,在RoboLab上成功率预测相关系数达r=0.96。其核心突破在于:让视频模型学习“点如何动”,而非“机器怎么转”,为通用机器人世界模型提供可追溯、可执行的视觉动作

weixin_44887311的博客 199

机器人如何训练?从任务编排、数据采集到模型部署的完整技术链路

机器人真正进入工业现场,难点早已不只是训练一个模型,而是如何把任务定义、技能编排、数据采集、模型训练、仿真评测现场部署连接成完整闭环。本文从机器人训练工程链路出发,解析 Teleoperation、Trajectory、Sim2Real、Robot Data Engine 等关键环节,并结合工业机器人开发训练平台实践,探讨机器人如何从“单任务 Demo”走向可复用、可持续迭代的规模化开发体系。

qq_40453532的博客 361

机器人开始问为什么,物理AI 人类学习路线 作答

HINT 则把长程操作里的语言意图稳住——语义推理只在操作模式切换时被调用,目标一旦选定,就靠多视角跟踪一路保持,基础动作模型不必新增参数,防止模型被密集的视觉变化带偏。这种记录不是给动作贴标签,而是把操作发生的环境条件一并存下:同样的动作处在不同的场景记忆里,对模型意味着不同的物理约束。而回到训练数据,还有一条更靠前的路:物理AI 人类第一视角数据 记录的是操作者「看到什么、怎么判断、如何调整」,操作的前因后果随视频一起保留,意图因果天然在场——知道为什么做这个动作,才是通用性的起点。

jushenAGI的博客 186

电子签约在机器人租赁平台怎么落地?合同模板、CA证书、存证技术方案

电子签约在机器人租赁平台怎么落地?合同模板、CA证书、存证技术方案做机器人租赁平台,电子签约系统这一环绕不过去:设备单台价值从几万到上百万,押金动辄数万,一份说不清楚的合同足以让平台在纠纷里吃大亏。我们从零对接电子签约的前后大约花了六周,中间在合同模板参数化和存证链路上反复改了好几版。这篇文章把合规基础、对接流程、模板设计和存证方案一次讲透。

程序员weixin_sodomany的博客 76

Zero-WAM——基于人类视频的上下文世界-动作建模:面对未见任务,给一段人类示范视频作为prompt,不微调直接输出对应的机器人未来视频和可执行动作

本文提出Zero-WAM,一种基于人类视频的上下文学习机器人模型,实现零样本跨任务泛化。通过构建HumanGen数据集(8.6K任务,74.2K人机配对样本),利用机器人轨迹自动生成语义匹配的人类视频,解决数据稀缺问题。创新性提出“上下文未来片段预测”(IFP)训练目标,迫使模型依赖视频提示而非捷径,提升对未见任务的泛化能力。该工作推动具身智能向大模型时代迈进,验证了大模型在机器人领域的强大潜力。

结构之法 算法之道 319

硬件开发笔记:非侵入式机器人梯控外挂平层传感器的滤波校准实录

对于实施工程师和开发者而言,不要过度迷信上层算法,回归底层的物理隔离电气滤波,踏踏实实地把传感器的位置调好、把防抖代码写健壮,才是项目快速交付、减少半夜报修的最优解。必须将24V的弱电信号线单独穿管,或者使用带屏蔽网的线缆,并将屏蔽层单端接地接到轿顶的金属梁上。变频器启动时的电磁辐射、电梯高速运行时的机械震动,导致传感器传回来的信号充满了毛刺(Glitch)。用塞尺测量光电探头槽隔光板的距离,确保探头两侧间隙均等(通常保持在5mm左右的居中位置),防止电梯在水平晃动时刮擦探头。

Robustel的博客 169

Sensodrive|SensoJoint 力控关节模组:连续体机器人绳张力闭环的实验平台方案

SensoJoint关节模组通过输出端扭矩传感器直接测量力矩,配合多项补偿实现真实柔顺;支持虚拟弹簧软硬可调、CST张力控制用于连续体机器人;低速丝滑;开放EtherCAT/ROS2;适用于连续体、外骨骼等。摘要需简洁,在150字内。注意字数。</think>SensoJoint关节模组将柔顺做成输出端可测可控的力矩闭环,内置扭矩传感器直测真实力矩,配合多项补偿实现物理弹簧般手感;支持零力矩及虚拟刚度/阻尼调节,

欣佰特cnbestec的博客 357

智能硬件消费级机器人出海:如何用 AI 知识库降低海外无故障退货率(NTF)?

深度剖析割草机、扫地机、泳池清洁机等智能硬件出海中高达 60%-70% 的 NTF(No Fault Found)无故障退货顽疾。系统化拆解多模态交互排障知识库构建、错误码映射、工单端到端闭环逆向物

Shulex的博客 111

2026 机器人工程实例(五):让 Allegro Hand 在 MuJoCo 中完成接触抓取——抓取状态机、稳定抬升受控释放

本文基于 MuJoCo 和 Allegro Hand V3 构建一套独立的四指灵巧手接触抓取实验台。系统使用仿真接触力和物体状态驱动抓取状态机,完成渐进合拢、多指接触确认、稳定抬升、横向转移、受控释放和托盘放置验收;同时提供手动控制面板、失败关闭、JSON/CSV 报告、批量扰动测试和历史失败记录。本文重点说明关节到位为何不等于抓取成立、提高托盘摩擦为何不能替代正确撤手,以及如何为仿真抓取建立可复查的成功判据。

GSYY0510的博客 598
上一篇: Levels of Use Cases(form uml distilled)
下一篇: umlchina公共课上课笔记
zdwillie
博客等级 码龄22年 2粉丝 7原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值