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控制
4、Gazebo仿真学习——3.使用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