Origin 2018 的坐标轴中文标签发生倒立/翻转

在使用Origin2018软件进行图表制作时,输入中文后更换中文字体会遇到文字倒立的问题。本文介绍了解决此问题的方法,即避免使用带有“@”前缀的中文字体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

在使用 origin 2018 作图时,坐标轴或者是标签中输入中文后,将其更换中文字体(英文字体没有该问题)后发生倒立的情况

 

解决:

后来发现 Origin 2018 中存在两种中文字体,其中一种是包含“@”前缀的(如“@黑体”),另一种是没有前缀的(一般在最底部)

只有当使用“@”前缀的字体时,才会发生文字翻转的问题,解决方案就是使用不带“@”前缀的中文字体。

 

转载于:https://www.cnblogs.com/sylar5/p/10044930.html

<think>我们正在讨论如何在URDF(Unified Robot Description Format)中定义一个倒置的物体。在URDF中,物体的姿态(位置和方向)是通过关节(joint)和连杆(link)的相对关系来定义的。如果我们想要一个物体是倒置的(例如,一个倒立的圆锥体),我们需要调整其坐标系的朝向。 在URDF中,每个连杆(link)都有自己的坐标系,而关节(joint)则定义了子连杆相对于父连杆的位姿(包括平移和旋转)。为了使得一个物体看起来是倒置的,我们可以通过设置关节的旋转(通常使用欧拉角或四元数)来旋转物体180度(或π弧度)绕某个(通常是x或y)。 例如,如果我们有一个圆锥体(cone),通常它的尖端指向z正方向。如果我们想要它倒置(即尖端指向z负方向),我们可以将其绕x旋转180度。这样,原来的z正方向就会变成z负方向。 在URDF中,旋转通常用四元数表示。绕x旋转180度的四元数为:(w, x, y, z) = (0, 1, 0, 0) 或者等价于 (cos(π/2), sin(π/2)*1, 0, 0) 但是注意,旋转180度(π弧度)的四元数应该是 (cos(π/2), sin(π/2)*1, 0, 0) 不对,实际上旋转θ角度的四元数为 (cos(θ/2), sin(θ/2)*axis_x, sin(θ/2)*axis_y, sin(θ/2)*axis_z)。 对于绕x旋转180度(θ=π): w = cos(π/2) = 0 x = sin(π/2) * 1 = 1 y = 0 z = 0 所以四元数为 (0, 1, 0, 0) 或者 (0, -1, 0, 0)(两者等价,因为四元数旋转相同)。 在URDF中,我们可以在定义关节(joint)时,通过设置<origin>元素中的rpy(roll, pitch, yaw)属性来指定旋转,或者直接使用四元数(xyzw)。但通常我们使用rpy(因为更直观)然后URDF解析器会将其转换为四元数。 例如,我们可以这样写: <origin rpy="3.14159 0 0" xyz="0 0 0"/> 这表示绕x旋转π弧度(180度),y和z旋转0度。 因此,如果我们有一个连杆(link)表示一个圆锥体,并且我们希望它倒置,我们可以将它连接到父连杆(可能是base_link)的关节(joint)的<origin>设置为绕x旋转180度。 示例URDF片段: ```xml <?xml version="1.0"?> <robot name="inverted_cone_robot"> <!-- Base Link (if needed) --> <link name="base_link"/> <!-- The inverted cone link --> <link name="inverted_cone"> <visual> <geometry> <cone length="0.5" radius="0.1"/> </geometry> <material name="red"> <color rgba="1 0 0 1"/> </material> </visual> </link> <!-- Joint connecting base_link to inverted_cone, with 180 degrees rotation around x-axis --> <joint name="inverted_cone_joint" type="fixed"> <parent link="base_link"/> <child link="inverted_cone"/> <origin rpy="3.14159 0 0" xyz="0 0 0.25"/> <!-- Rotated 180 degrees around x, and lifted 0.25m in z (if needed) --> </joint> </robot> ``` 在这个例子中,圆锥体(cone)的原始方向是尖端沿z正方向。通过绕x旋转180度,尖端将指向z负方向,从而实现了倒置。 注意:如果物体本身在建模时就已经是倒置的(例如,在3D建模软件中创建时就已经倒置),那么在URDF中就不需要额外的旋转。但通常情况下,我们使用标准方向建模,然后通过URDF的<origin>来调整方向。 另外,如果物体需要被倒置并且还要相对于父连杆有一定的位置偏移,可以在<origin>的xyz属性中设置。 总结:在URDF中定义一个倒置的物体,关键在于在连接该物体的关节(joint)的<origin>中设置一个旋转(绕x或y旋转180度),使得物体的朝向翻转。 根据以上内容,我们可以生成相关问题: §§相关问题§§ 1. URDF中如何定义连杆(link)的几何形状? 2. 除了旋转,URDF中<origin>元素还可以设置哪些变换? 3. 在URDF中,除了使用四元数,还有哪些方式可以表示旋转? 4. 如何通过URDF描述一个物体的多个方向(例如,同时绕多个旋转)?</think>### 在URDF中定义倒置物体的方法 在URDF(Unified Robot Description Format)中定义倒置物体(如倒立摆、倒立圆锥等),核心是通过坐标系旋转实现姿态翻转。以下是具体实现步骤: #### 1. **坐标系旋转原理** 物体倒置的本质是将局部坐标系绕旋转180°。以倒立圆锥为例: - 标准圆锥:尖端沿z正方向($+z$) - 倒置圆锥:尖端需指向z负方向($-z$) - 旋转方案:绕x旋转180°($rpy = [\pi, 0, 0]$) #### 2. **URDF实现代码** ```xml <!-- 倒立圆锥示例 --> <link name="inverted_cone"> <visual> <geometry> <cone length="0.5" radius="0.1"/> <!-- 原始方向:尖端朝+z --> </geometry> <origin rpy="3.14159 0 0" xyz="0 0 0.25"/> <!-- 关键:绕x旋转180° --> <material name="red"> <color rgba="1 0 0 1"/> </material> </visual> </link> <!-- 连接到基础连杆 --> <joint name="cone_base_joint" type="fixed"> <parent link="base_link"/> <child link="inverted_cone"/> <origin xyz="0 0 0"/> <!-- 位置偏移可在此调整 --> </joint> ``` #### 3. **关键参数说明** | 参数 | 说明 | 数学表示 | |---------------|----------------------------------------------------------------------|-----------------------| | `<origin rpy>` | 旋转角度(roll, pitch, yaw) | $R_x(\pi) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & -1 \end{bmatrix}$ | | `<origin xyz>` | 物体中心相对于关节的位置偏移 | $\vec{p} = [0, 0, h]$ | | `cone length` | 圆锥高度(尖端到底面距离) | $h = 0.5$ | #### 4. **验证方法** - 在RViz中加载URDF,检查坐标系箭头方向: - 倒置后:z(蓝色箭头)应向下 - 物理仿真测试:在Gazebo中观察物体是否稳定倒立 #### 5. **进阶技巧** - **动态倒立物体**(如倒立摆):添加旋转关节并设置平衡控制器 ```xml <joint name="pendulum_joint" type="continuous"> <axis xyz="1 0 0"/> <!-- 绕x自由旋转 --> <limit effort="100" velocity="10"/> </joint> ``` - **复合形状倒置**:对`<inertial>`和`<collision>`使用相同的`<origin>`以保证物理属性一致 > **注意**:所有视觉/碰撞/惯性元素需应用**相同旋转变换**以避免位姿不一致[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值