[笔记]SolidWorks转URDF 在rviz2中显示

参考文献:

https://www.bilibili.com/video/BV1Tx411o7rH/?spm_id_from=333.1391.0.0\&vd_source=8c291048db828334db1603123facf791

感谢古月居的教程参考。

系统1环境 windows11 ,solidworks 2023

系统2环境 Ubuntu22, Ros2(Humble)

1.下载、安装sw_urdf_exporter插件

html 复制代码
https://wiki.ros.org/sw_urdf_exporter

直接下载安装包。

win11环境直接安装即可。

2.从装配文件导出URDF模型

2.1 装配好所有零件

2.2 在每个电机的位置添加旋转轴

选中关节电机(或者铰链结构),上方菜单[插入]->[参考集合体]->[基准轴]。直到处理完所有关节电机。

2.3 打开URDF导出器

工具\]-\>\[Tools\]-\>\[Export as URDF

2.5 设置每一个连杆




最后点击[ Preview and Export ]导出URDF

2.5 检查参数


注意保存文件只能小写英文字母,因为这里决定了ros的包名。此处保存名称为armrobot.

3.修改文件

由于默认生成的urdf及其包属于ros1的文件,此处要在ros2使用,需要做一点修改。

3.1 package.xml

包管理标签需要修改为ros2的风格

xml 复制代码
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
  <name>armrobot</name>
  <version>1.0.0</version>
  <description>
    <p>URDF Description package for armrobot</p>
    <p>This package contains configuration data, 3D models and launch files for armrobot robot</p>
  </description>
  <author>TODO</author>
  <maintainer email="TODO@email.com">TODO</maintainer>
  <license>BSD</license>

  <buildtool_depend>ament_cmake</buildtool_depend>

  <depend>robot_state_publisher</depend>
  <depend>joint_state_publisher_gui</depend>
  <depend>rviz2</depend>
  <depend>ros2launch</depend>

  <export>
    <build_type>ament_cmake</build_type>
  </export>
</package>

3.2 CMakeLists.txt

bash 复制代码
cmake_minimum_required(VERSION 3.8)
project(armrobot)

# 查找依赖包
find_package(ament_cmake REQUIRED)

# 安装资源文件到合适位置
install(
  DIRECTORY config launch meshes urdf
  DESTINATION share/${PROJECT_NAME}
)

ament_package()

3.3 新增启动文件display.launch.py

放在launch目录下

python 复制代码
import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    pkg_share = get_package_share_directory('armrobot')
    
    urdf_path = os.path.join(pkg_share, 'urdf', 'armrobot.urdf')
    
    with open(urdf_path, 'r') as f:
        robot_description = f.read()
    
    return LaunchDescription([
        Node(
            package='joint_state_publisher_gui',
            executable='joint_state_publisher_gui',
            name='joint_state_publisher_gui'
        ),
        Node(
            package='robot_state_publisher',
            executable='robot_state_publisher',
            name='robot_state_publisher',
            parameters=[{
                'robot_description': robot_description
            }]
        ),
        Node(
            package='rviz2',
            executable='rviz2',
            name='rviz2'
        )
    ])

3.4 下载额外的依赖

bash 复制代码
sudo apt-get update    #如果 显示404、无法下载等 请换源
sudo apt install ros-humble-robot-state-publisher 
sudo apt install ros-humble-joint-state-publisher
sudo apt install ros-humble-joint-state-publisher-gui

4 运行

armrobot放在.../WS/src目录下,然后 $ cd ...WS/ 。

4.1 编译工作区

bash 复制代码
cd ..../WS/
colcon build #确保包被成功编译
source install/setup.bash
ros2 launch armrobot display.launch.py 

4.2 设置rviz2 使用urdf模型

运行后打开了rviz2,点[Add]添加RobotModel,Topic选择发布的唯一话题。

世界坐标系选择base_link。

相关推荐
wdfk_prog4 小时前
[Linux]学习笔记系列 -- hashtable
linux·笔记·学习
深情的小陈同学6 小时前
工作学习笔记 —— 支持手机端的添加表单行操作
笔记·学习·ai编程
am心8 小时前
学习笔记-小程序-导入商品浏览功能实现
笔记·学习
布谷歌8 小时前
开发笔记:如何消除秘钥数据对RPC负荷、日志、系统安全的伤害?
网络·笔记·网络协议·rpc
hkNaruto8 小时前
【AI】AI学习笔记:LangGraph入门 三大典型应用场景与代码示例及MCP、A2A与LangGraph核心对比
人工智能·笔记·学习
kingmax542120088 小时前
北京高一历史上学期期末考情分析与核心知识点精讲(完整版)-吐血整理-全网最全
笔记·学习方法·历史
宵时待雨9 小时前
数据结构(初阶)笔记归纳3:顺序表的应用
c语言·开发语言·数据结构·笔记·算法
智者知已应修善业9 小时前
【C语言 dfs算法 十四届蓝桥杯 D飞机降落问题】2024-4-12
c语言·c++·经验分享·笔记·算法·蓝桥杯·深度优先
九成宫9 小时前
计算机网络期末复习——第4章:网络层 Part Three
网络·笔记·计算机网络·软件工程
whale fall10 小时前
【雅思听力语料库5.1】
笔记·学习