sw模型转urdf,并在gazebo和rviz中显示

1.sw模型转urdf

1.1建立机器人的三维模型

建立机器人完整的三维模型

1.2机器人三维模型预处理

首先将完整的机器人三维装配体模型从关节处分开,并分别另存为几个独立的子装配体在这里插入图片描述

然后将每个子装配体另存为零件格式
在这里插入图片描述
注意选择要保存的几何为所有零部件,这样转换得到的零件保留了子装配体的质量、惯量等物理特征量。
在这里插入图片描述

1.3装配

将转换得到的零件再次装配起来,注意要让各部件的位置关系尽量特殊,如垂直或共线等。

1.4建立坐标系

1)在各个关节处插入基准轴并命名
2)建立各个连杆的坐标系
这比较关键,因为使用的是sw_2_urdf插件,所以坐标系的设置不能随意,要按照其规则来建立。
在这里插入图片描述
1为父连杆
2为子连杆
3为这两个连杆间的关节
4为子连杆固连坐标系
5为关节的轴线
6包含了两项,x,y,z为子连杆的固连坐标系原点在父连杆固连坐标系下的位置,R,P,Y为子连杆的固连坐标系在父连杆固连坐标系下的姿态表示
7为5所指示的关节的轴线在子连杆固连坐标系下的方位表示
但是实践发现,导出urdf后关节轴的实际位置与5所指示的轴线无关,而是由5和6共同决定的,即实际关节轴为过子连杆固连坐标系原点且与5轴线的指向相同,所以一般要让5所指示的关节轴线与固连坐标系原点重合,因此一般使用改进的DH法(固连坐标系前置)建立机器人坐标系

1.3在urdf插件中设置
注意,在urdf中的第一个baselink的坐标确定了urdf在rviz中的机器人位姿,如baselink的z轴在urdf中指向正上方

2.显示

将urdf文件放入工作空间的src文件夹下后,运行

cd ~/catkin_ws  //回退到工作空间路径
catkin_make		//编译工作空间
source ~/catkin_ws/devel/setup.bash		//将源文件加到注册表中便于其他程序搜索使用

2.1.在gazebo中显示

  • 1.另开终端,启动节点管理器
roscore  //启动节点管理器
  • 2.运行launch文件,运行此命令的终端为运行编译、注册命令所在的终端
roslaunch ~/catkin_ws/src/car/launch/gazebo.launch	//运行launch文件

若gazebo一直preparing your world,参考这个

运行

cd ~/.gazebo/
git clone https://github.com/osrf/gazebo_models.git models

2.2.在rviz中显示

  • 1.另开终端,启动节点管理器
roscore  //启动节点管理器
  • 2.运行launch文件,运行此命令的终端为运行编译、注册命令所在的终端
roslaunch ~/catkin_ws/src/car/launch/display.launch	//运行launch文件

若终端出现如下错误

ROS_MASTER_URI=http://localhost:11311

ERROR: cannot launch node of type [joint_state_publisher_gui/joint_state_publisher_gui]: joint_state_publisher_gui
ROS path [0]=/opt/ros/kinetic/share/ros
ROS path [1]=/home/yxy/catkin_ws/src
ROS path [2]=/opt/ros/kinetic/share
process[robot_state_publisher-2]: started with pid [4143]

只需要针对Ubuntu16版本安装对应的joint_state_publisher_gui即可,如下

sudo apt-get install ros-kinetic-joint-state-publisher-gui

若在rviz中出现global status:warn警告,
在这里插入图片描述

则运行

rosrun tf static_transform_publisher 0 0 0 0 0 0 map base_link 50
  • 3.添加模型,点击add添加robotmodel,并且在global options 的fixed frame中选择模型的基座baselink,一般status:error错误就会消失
    若还出现status:error错误,
    在这里插入图片描述
    则运行如下命令即可:
rosrun joint_state_publisher joint_state_publisher

即可

3.让模型运动

参考
1、ROS中控制机器人运动的实现(在gazebo中显示)

2、探究–gazebo里 关节是如何动起来的____实现默认插件joint控制

3、ROS Control

4、Gazebo仿真学习——3.使用ROS-control设置模拟控制器驱动机器人关节

5、[ROS 学习笔记]ros_control

3.1、下载插件

sudo apt-get install ros-kinetic-controller-manager
sudo apt-get install ros-kinetic-joint-state-controller
sudo apt-get install ros-kinetic-gazebo-ros-control

3.2、删除gazebo7,下载gazebo9

参考ubuntu16.04卸载gazebo7安装gazebo9
要不然会出错,提示要安装gazebo9

3.3、错误解决

  • 1
ROS: Could not load controller 'joint_state_controller' because controller type 'joint_state_control

参考这个,将该安装的控制器的插件都安装了

sudo apt-get install ros-kinetic-joint-state-controller
sudo apt-get install ros-kinetic-effort-controllers 
sudo apt-get install ros-kinetic-position-controllers 
sudo apt-get install ros-kinetic-joint-trajectory-controller

版权声明:本文为mr_yu_1997原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。