sw模型转urdf,并在gazebo和rviz中显示
- 1.sw模型转urdf
- 1.1建立机器人的三维模型
- 1.2机器人三维模型预处理
- 1.3装配
- 1.4建立坐标系
- 2.显示
- 2.1.在gazebo中显示
- 2.2.在rviz中显示
- 3.让模型运动
- 3.1、下载插件
- 3.2、删除gazebo7,下载gazebo9
- 3.3、错误解决
1.sw模型转urdf
1.1建立机器人的三维模型
建立机器人完整的三维模型
1.2机器人三维模型预处理
首先将完整的机器人三维装配体模型从关节处分开,并分别另存为几个独立的子装配体![在这里插入图片描述](https://img-blog.csdnimg.cn/20210505201403162.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yX1l1XzE5OTc=,size_16,color_FFFFFF,t_70)
然后将每个子装配体另存为零件格式
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210505201624448.png)
注意选择要保存的几何为所有零部件,这样转换得到的零件保留了子装配体的质量、惯量等物理特征量。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210505201749763.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yX1l1XzE5OTc=,size_16,color_FFFFFF,t_70)
1.3装配
将转换得到的零件再次装配起来,注意要让各部件的位置关系尽量特殊,如垂直或共线等。
1.4建立坐标系
1)在各个关节处插入基准轴并命名
2)建立各个连杆的坐标系
这比较关键,因为使用的是sw_2_urdf插件,所以坐标系的设置不能随意,要按照其规则来建立。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210505203403505.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yX1l1XzE5OTc=,size_16,color_FFFFFF,t_70)
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中显示
roscore
- 2.运行launch文件,运行此命令的终端为运行编译、注册命令所在的终端
roslaunch ~/catkin_ws/src/car/launch/gazebo.launch
若gazebo一直preparing your world,参考这个
运行
cd ~/.gazebo/
git clone https://github.com/osrf/gazebo_models.git models
2.2.在rviz中显示
roscore
- 2.运行launch文件,运行此命令的终端为运行编译、注册命令所在的终端
roslaunch ~/catkin_ws/src/car/launch/display.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
警告,
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021040415363837.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yX1l1XzE5OTc=,size_16,color_FFFFFF,t_70)
则运行
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
错误,
![在这里插入图片描述](https://img-blog.csdnimg.cn/202104041543159.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yX1l1XzE5OTc=,size_16,color_FFFFFF,t_70)
则运行如下命令即可:
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、错误解决
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)