sw solidworks导urdf到ros2操作方法
SW导出的URDF是ROS1功能包,package.xml里是catkin,CMakeLists里是catkin,launch是roslaunch,网上转ROS2要改ament_cmake,改launch,改mesh路径,还要装一堆ROS工具,对只会SW的人来说就是天书,我写了个exe,把SW导出的ROS1包拖进去,输出直接是ROS2功能包,不用懂ROS。
SW里先装SW2URDF插件,工具菜单,插件,勾选SW2URDF,没有就去官网下对应版本,2018以后基本自带,装完工具菜单多一个Export as URDF,点它,左边树里加link,每个link选零件,设原点,加joint,选旋转或移动,选轴,填限位,填effort和velocity,base_link固定,tool0留空。
导出时选一个空文件夹,生成urdf文件夹,里面有urdf、meshes、launch、config,package.xml是ROS1的,CMakeLists是catkin的,launch用roslaunch,mesh是STL或DAE,路径写package://,这个包直接放ROS1能用,放ROS2不行。

双击exe,选这个ROS1包文件夹,选输出文件夹,点生成,exe读package.xml,把catkin换成ament_cmake,把roslaunch换成ros2 launch,把joint_state_publisher换成joint_state_publisher_gui,把robot_description参数保留,生成一个ROS2功能包,名字后面加_ros2,里面package.xml和CMakeLists都是ament_cmake,launch是.py。
生成的ROS2包结构,package.xml用ament_cmake,CMakeLists用ament_cmake,launch文件是python,用LaunchDescription,Node,IncludeLaunchDescription,urdf用xacro,mesh路径package://包名/meshes/,config里joint_names,rviz配置,直接colcon build能过。
把包放到ros2_ws/src,cd ros2_ws,colcon build,source install/setup.bash,ros2 launch 包名 display.launch.py,如果报错找不到mesh,看package.xml里有没有export mesh,没有就加,或者把mesh路径改成绝对路径,rviz里fixed frame改成base_link,joint_state_publisher_gui拖滑块看关节动。
关节轴方向反了,SW里改轴,重新导出,exe重新跑,URDF里轴方向是xyz,ROS2里右手定则,Z朝上,SW里Y朝上,SW2URDF导出时会自动转,有时会反,手动改urdf里rpy,或者改joint origin的rpy,改完保存,重新colcon build。
exe只做格式转换,不处理模型,模型有问题在SW里改,零件名带空格、中文、特殊符号,改掉,关节名不要重复,base_link和tool0固定,其他连杆名和关节名对应,exe生成后不用手动改,直接colcon build,如果SW里改了模型,重新导出,重新跑exe。
再导出时,先删掉旧ROS2包,重新跑exe,或者exe里加覆盖选项,覆盖前备份,手动改过的urdf会被覆盖,手动改过的launch也会被覆盖,所以手动改的东西记在单独文件里,每次重新生成后复制进去,exe放在内网共享,路径问作者,版本更新看readme。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删