当前位置: 首页 > news >正文

随记:sw2urdf插件导出urdf模型在ROS2-rviz2显示

sw2urdf插件,目前官方最新版本是21年更新的1.6.1版本https://github.com/ros/solidworks_urdf_exporter/releases,其导出的urdf package是基于ros1使用的,所以在当下普遍使用的ROS2的环境下并不能直接使用,需要做相应修改。

参考文章:https://zhuanlan.zhihu.com/p/465398486

0. 前置准备

首先,准备好使用sw2urdf插件生成的urdf package,目录结构如下

并确保自己的ros2环境配置成功、rviz2已经安装等...

找一个别人改好的包,比如:GitHub - olmerg/lesson_urdf: This is a ros2 package to create an arm robot in rviz using robot_state_publisher and joint_state_publisher gui

内容包括:

能用到这个功能的基本上也都学了怎么建ros2 workspace了,下载完《lesson_urdf-master》这个包以后,可以把整个包先放到自己的workspace/src下跑一下验证下环境是否OK:

colcon build
source install/setup.bash
ros2 launch lesson_urdf view_robot_launch.py

打开后,把fixed frame改成base link正常显示 

验证好之后先删掉colcon build出来的文件夹,把《lesson_urdf-master》也从自己的workspace删掉,就好像它从没来过

1. URDF package构建

现在,由于插件生成的ros1的urdf pkg不能直接使用,github clone的包也不是我们的目标模型,我们基于这两个包直接从0攒一个新包:

step1:在workspace里创建一个新包

cd src/
ros2 pkg create my_urdf --build-type ament_python

step2: 把 《lesson_urdf-master》里的launch、meshes、rviz、urdf四个文件夹copy到my_urdf下:

step3:第二步是利用现有“轮子”的配置方式,对应地,我们要把配置内容改成自己的模型,

1)修改setup.py,把《lesson_urdf-master》的setup.py文件的所有内容直接复制到自己包的setup,py里,再把包名改成自己的包名

2)修改package.xml文件,把《lesson_urdf-master》的package.xml文件的所有内容直接复制到自己包的package.xml里,再把包名改成自己的包名

3)修改meshes文件夹,这里有两个文件夹,meshes/collision和meshes/visual,分别把两个包里原带的.STL文件删除,再从自己使用插件生成的pkg里的meshes文件夹下,找到自己的STL文件,分别全部复制到两个文件夹下

 原文件夹

 导入自己的STL文件后

4)修改urdf文件,首先把从sw_urdf插件导出的urdf文件夹中后缀为urdf的文件拷贝到自己的my_urdf的urdf文件夹下面

接下来打开,之后把urdf文件中的所有包路径改成现在的包的路径,相当多...

5)修改launch文件, 分别修改包和urdf文件的索引路径,可以顺手改一下launch文件的名字,便于区分使用

2. RVIZ2显示

以上修改都做完之后,回到工作空间colcon build编译一下,之后source install/setup.bash一下环境,接着启动launch文件

ros2 launch my_urdf view2_robot_launch.py

活了

 

http://www.xdnf.cn/news/1002061.html

相关文章:

  • 在Vue2项目中引入ElementUI详细步骤
  • Linux系统下安装elasticsearch6.8并配置ik分词
  • 【Java】浅谈ScheduledThreadPoolExecutor
  • Python实战应用-Python实现Web请求与响应
  • 智能合约的浪潮:从区块链到业务自动化的 IT 新引擎
  • 服务器-客户端下kafka的消息处理流程
  • Vue3+PDF.js 实现高性能 PDF 阅读器开发实战
  • C# 动态管理控件和事件,批量查询管理同类控件
  • JavaWeb期末速成 JSP
  • 浅谈DaemonSet
  • PRIMES“中国校准实验室”正式运营,携手东隆科技共筑精准测量新标准
  • 通过同步压缩小波变换实现信号的分解和重构
  • 概率论几大分布的由来
  • 基于STM32汽车温度空调控制系统
  • Unity-通过Transform类学习迭代器模式
  • 数据集-目标检测系列- 孔雀 数据集 peacock >> DataBall
  • FFmpeg 压缩视频文件
  • 力扣HOT100之技巧:136. 只出现一次的数字
  • C#调用C++ 结构体方法
  • GitHub 上 PAT 和 SSH 的 7 个主要区别:您应该选择哪一个?
  • Transformer 与 XGBoost 协同优化的时间序列建模
  • LSTM助力迁移学习!深度学习架构性能提升,准确率达到99.91%!
  • TCN+Transformer+SE注意力机制多分类模型 + SHAP特征重要性分析,pytorch框架
  • 用于在多个远程计算机上求解的 Ansoft RSM 设置 - Windows
  • 实战案例-FPGA的JESD204B IP核配置详解
  • 【springboot组件开发】三方中间件自定义自动装载(rabbitmq/rocketmq/cmq)
  • 记录一次jenkins slave因为本地安装多个java版本导致的问题
  • stm32f103 标准库移植rt-thread nano
  • 学习笔记整理之状态图与状态图搜索
  • Windows 提权工具(“Potato“ 系列)用法指南