关于开源C++机器人库robotics library

robotics library库是一个功能全面的,面向机械臂和机器人领域的运动规划碰撞检测开源仿真C++库,图形显示使用的是Coin3d,碰撞检测使用了很多像bullet,ode,solid,fcl等开源库,提供很多基于随机采样算法的运动规划算法实现,官网是 https://www.roboticslibrary.org/
在这里插入图片描述
其中create model页详细说明了怎么创建机械臂动力学模型,https://www.roboticslibrary.org/tutorials/create-a-robot-model/ ,包括:
Acquiring Kinematics Data
这一般在机械臂出厂图纸可以获取,包括各个关节的旋转角度范围
在这里插入图片描述
Denavit-Hartenberg Parameters
机械臂常见的就是DH参数

在这里插入图片描述
RL::MDL tree structure of the robot described in this tutorial, consisting of six revolute joints and seven links.
RL:MDL tree描述的一个六自由度机械臂的运动链

后面还有用实体建模工具建机械臂各个臂的几何模型,这个要转成vrml网格模型,由于机器人运动仿真的时候要实时的进行碰撞计算,这个几何模型要把实际的机械臂各个实体模型要包住才行。
最后就是场景描述文件,都是写在rlsg.xml和rlmdl.xml中,一个是场景描述,一个是运动模型描述,这样rlCoachMdl.exe才能读取它们对建模的机器人进行可视化,正运动学(forward kinematics,就是修改关节角度参数,计算出各个臂几何体的位置姿态),逆运动学(inverse kinematics ,就是已知机械臂末端位置姿态,计算解出各个臂各个关节是否有可能的位姿和关节角度值,可能有一个或者多个解,也可能没有解)。
robot model建出来了,可以用它的进行后续的规划
Specify a Path Planning Scenario
在这里插入图片描述
主要是围绕创建rlplan.xml文件,其中指定了机械臂的rlsg.xml.xml和rlmdl.xml模型文件,environment描述障碍物几何模型,机械臂的起点(start),这里的点由于机械臂有n个独立的关节参数,所以这里的点是向量(x0,x1x2,…xn-1)所以一般robot的解算空间都是三维以上,机器人运动规划问题都是高维问题,虽然robot是在三维中的,然后指定终点(goal),指定规划器(这里例子是prm 翻译过来叫概率路线图法)
然后到rl plan demo.exe就会等待解算,过一段时间,就出现一堆密密麻麻的线,找到一条path,机械臂就从起点运动起来,绕过障碍物,运动到终点。
由于目前机械臂运动规划算法大多是概率随机采样策略,所以两次规划的路线不一样,终点和障碍物情况对解算速度影响很大,特别密的障碍物可能很难找到一条路径,但是有时候人工以为找不到的算法反而能找到,规划(规划不限于路径,运动等,像社会经济,数学问题,推理,证明,下棋,不胜枚举…)问题也是人工智能方面的一个热难点的烧脑的学科领域。

C++中使用Robotics Library(RL)时,可以通过调用运动学和动力学算法的函数来使用其功能。使用动态转换(dynamic_cast)可以在子类中访问这些函数。例如,可以使用dynamic_cast<rl::mdl::Kinematic*>(model.get())来获取运动学对象,使用dynamic_cast<rl::mdl::Dynamic*>(model.get())来获取动力学对象。 此外,RL还提供了ri::util部分,它提供了独立于操作系统的功能,如高精度计时器数据、线程和线程同步。在以前的版本中,RL使用自己的实现,但现在使用了C++11结构,并包括其他功能的扩展。你可以查看线程支持的文档以获取更多详细信息。 还可以使用std::chrono来访问当前时间。根据操作系统的不同,精度以纳秒(Linux)或微秒(Windows)为单位。可以使用std::chrono::steady_clock::now()函数获取当前时间,然后使用std::chrono::duration<rl::math::Real>(now).count()将其转换为以秒为单位的时间戳。 在使用RL时,可以使用rlDynamics2Demo对象的方法来设置机器人的位置(setPosition(q)),计算质量矩阵(calculateMassMatrix())并获取质量矩阵的值(getMassMatrix())。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [机器人C++(3)Robotics Library API介绍](https://blog.csdn.net/yohnyang/article/details/126459359)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值