ROS学习-URDF学习纪要

ROS的URDF间断的学习了,老是抓不住要领,现在又重新学习了一篇终于有点眉目,问题主要集中在<link>和<joint>的关系及其中的 <orign>标签的作用,现在记录下来,以防止再忘记。

1、总结归纳:

(1)默认就是所有link的初识joint的坐标系都在世界坐标系的原点坐标系,例如:坐标原点在圆柱的中心,长方体的中心等,坐标系满足右手法则,x轴指向屏幕左边、y轴从屏幕向外,Z轴指向上方, XYZ坐标轴,红色为X, 绿色为Y,蓝色为Z。

(2)link和joint定义robot骨架,如果我们仅仅添加更多的link元素到urdf中的话,解析器不知道该如何放置它们,所以,我们必须添加关节结点来制定link间的连接关系;

(3)link和joint中都有<origin>结点,其意义是不同的<link>中表明了可视化link结点原点在关联的joint原点坐标系的位置和朝向;而<joint>结点中的<origin>结点表明了该joint原点在其父joint坐标系中的位置和方向;

(4)定义urdf文件时,一般有一个类似base_link的固定坐标系,其中没有任何参数,默认就在世界坐标系原点,此时也同时有一个默认的joint结点与世界坐标系的位置和方向相同,该joint坐标系 就是base_link结点关联的joint坐标系,而后添加l一个ink结点和joint结点后,首先用joint结点中的<origin>信息,先旋转后平移,确定新添加的link关联的joint的坐标系(此坐标系与参考坐标系就有了一定的位置和旋转关系),此时新添加的link的中心原点就移动到该joint坐标系原点所在位置(此时link中没有origin结点),而后在link结点中添加<origin>结点,此时的变换参考坐标系是新生成的joint坐标系(此时link中心和joint原点重合),而后在参考坐标系下利用origin参数完成旋转和平移,此时可以利用rviz中的可视化处理(xyz分别是不同的颜色,此时的变换不改变joint坐标系的位置和方向),如果在添加下一个link和joint的话,新的joint的位置是相对与父link关联的joint的坐标系的变换,然后用同样的方法添加link就可以了。(可以认为joint与joint结点中定义的子link关联)。

(5)关于joint间的相对位置和角度关系,一般不存在旋转默认就是一样的或者存在90度等特殊角度的选择,至于xyz由于是可变的,可以找一个容易计算的特殊角度,先确定xyz,完成urdf的定义,当机器人运动起来后可以通过tf发布实时的位置关系,也就是说urdf中定义的joint关系只是莫个瞬间的joint位置关系。

(6)所有变换都是先旋转再平移.

(7)urdf文件加载后通过tf发布的是joint之间的坐标关系和link没有关系。


详细信息可以学习:http://blog.youkuaiyun.com/dulaiduwangduxing/article/details/45395665 

Learning URDF Step by Step


<think>我们参考引用内容,特别是引用[3]中提到的最简单解决方案:在ubuntu设置中把系统更新打开。结合引用[2]中提到的不要勾选安全更新以外的任何更新(保持低版本)似乎有矛盾,但实际是引用[2]建议在安装前不要更新系统(保持低版本以避免依赖冲突),而引用[3]则是在安装出现依赖问题时通过打开系统更新(可能是为了更新系统以解决依赖)来解决。 根据错误信息,核心问题是依赖关系不满足,通常是因为系统中某些软件包版本过高或过低,与ROS所需版本冲突。 解决方案思路: 1. 确保系统更新设置正确,允许安装必要的依赖(如引用[3]所述,打开系统更新)。 2. 尝试更新系统(但注意引用[2]建议不要更新非安全更新,所以需要谨慎)。 3. 使用aptitude工具(引用[3]提到)智能解决依赖冲突。 4. 如果以上不行,尝试分步安装各个组件(ros-noetic-desktop, ros-noetic-perception等)。 具体步骤: 步骤1:检查更新设置 打开“软件更新”(Software & Updates),在“更新”选项卡中,确保“更新”设置为“重要安全更新”“推荐更新”(或者按照引用[3]的方法,打开系统更新)。然后执行: ```bash sudo apt update sudo apt upgrade ``` 注意:升级系统可能会更新大量软件包,有可能解决依赖问题,但也可能引入新的问题(如引用[2]所担心的)。如果担心,可以先备份。 步骤2:尝试安装ros-noetic-desktop-full 如果更新后再次尝试安装: ```bash sudo apt install ros-noetic-desktop-full ``` 步骤3:如果仍然出现依赖问题,使用aptitude 按照引用[3]中提到的: ```bash sudo apt install aptitude sudo aptitude install ros-noetic-desktop-full ``` 在aptitude的交互界面中,它会提供解决方案。通常它会提示一些降级或升级其他包的计划,我们选择接受方案(按Y)。注意,在提示时,它会显示将要进行的操作(安装、删除、降级等),请仔细查看,确保不会删除重要软件包。如果第一个方案不行,可以按n键查看下一个方案,直到找到一个合适的方案(通常选择接受降级一些包)。 步骤4:分步安装 如果aptitude也不行,可以尝试分别安装各个组件: ```bash sudo apt install ros-noetic-desktop sudo apt install ros-noetic-perception sudo apt install ros-noetic-simulators sudo apt install ros-noetic-urdf-sim-tutorial ``` 然后再次尝试安装ros-noetic-desktop-full,或者不安装full版本,因为以上组件已经包含了大部分功能。 步骤5:清理重试(如果之前安装失败有残留) 如果之前安装失败,可能有残留的包,可以尝试清理(参考引用[4]提到的问题,但注意引用[4]是arch的pamac,我们使用apt): ```bash sudo apt autoremove sudo apt autoclean ``` 然后重新执行安装。 步骤6:更换软件源(特别是国内用户) 如果下载速度慢导致安装失败,可以更换为国内源(如清华源): 1. 备份原source.list文件 ```bash sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak ``` 2. 编辑sources.list,替换为清华源(ubuntu 20.04): ```bash sudo sed -i 's@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list sudo sed -i 's@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list ``` 3. 同样,更换ROS的源: ```bash sudo sh -c '. /etc/lsb-release && echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list' ``` 4. 更新 ```bash sudo apt update ``` 步骤7:初始rosdep 安装完成后,需要初始rosdep: ```bash sudo rosdep init rosdep update ``` 注意:如果遇到网络问题,可以使用国内源初始rosdep(如使用中科大的rosdepc)。 总结:优先尝试步骤1步骤2,如果不行再用步骤3(aptitude),再不行就分步安装(步骤4)。过程中注意更换国内源(步骤6)可以加速下载避免网络问题。 最后,验证安装: ```bash source /opt/ros/noetic/setup.bash roscore ``` 如果出现roscore命令,则安装成功。 引用文献: [^1]: 报错内容显示依赖关系不满足 [^3]: 提到打开系统更新后重新安装即可成功</think>以下是解决ROS Noetic安装依赖问题的完整方案,结合引用中的成功经验: ### 解决方案步骤 #### 1. **启用系统更新(关键步骤)[^3]** ```bash # 打开软件更新设置 sudo software-properties-gtk ``` 1. 在"更新"选项卡中: - 勾选**所有更新**(重要安全更新、推荐更新、不稳定更新) - **取消勾选**自动更新 2. 保存后执行: ```bash sudo apt update sudo apt upgrade ``` #### 2. **分步安装依赖组件** ```bash # 先安装核心组件 sudo apt install ros-noetic-desktop # 再安装其他依赖 sudo apt install \ ros-noetic-perception \ ros-noetic-simulators \ ros-noetic-urdf-sim-tutorial ``` #### 3. **使用aptitude解决冲突[^3]** ```bash # 安装aptitude工具 sudo apt install aptitude # 交互式解决依赖 sudo aptitude install ros-noetic-desktop-full ``` 在交互界面中: 1. 出现解决方案时按`n`查看下一个方案 2. 选择包含**降级操作**的方案(通常标记为`[降级]`) 3. 确认方案后按`y`执行 > **注意**:此操作可能降级系统包,建议先备份重要数据[^4] #### 4. **清理残留文件(如果之前安装失败)[^4]** ```bash sudo apt autoremove sudo rm -rf /var/lib/apt/lists/* sudo apt clean sudo apt update ``` #### 5. **国内用户优化软件源** ```bash # 更换Ubuntu源 sudo sed -i 's|http://archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list # 更换ROS源 sudo sed -i 's|packages.ros.org|mirrors.tuna.tsinghua.edu.cn/ros|g' /etc/apt/sources.list.d/ros-latest.list # 更新源 sudo apt update ``` ### 验证安装成功 ```bash # 初始化环境 source /opt/ros/noetic/setup.bash # 测试核心功能 roscore & rosnode list # 应显示/rosout rosversion -d # 应输出noetic ``` ### 常见问题解决 | 问题类型 | 解决方案 | |---------|---------| | `依赖: python3-catkin-pkg` | `sudo apt install python3-catkin-pkg` | | `rosdep初始化失败` | `sudo rosdep init --rosdistro noetic`<br>`rosdep update --include-eol-distros` | | `roscore启动失败` | 检查环境变量:`echo $ROS_DISTRO` | | `CPU频率限制` | `sudo cpufreq-set -g performance` | ### 安装流程图 ```mermaid graph TD A[开始] --> B{启用所有系统更新} B -->|成功| C[分步安装组件] B -->|失败| D[使用aptitude] C --> E{是否报错} D --> E E -->|是| F[清理残留文件] E -->|否| G[验证安装] F --> C G --> H[完成] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值