模型搭建
文章目录
- 本文参考了古月居的ROS入门教程
- 模型效果
源码地址
https://gitee.com/HOY_Z/ros_-visual-nav_-arm
ROS版本:noetic
文件结构
vn_robot_description
<<< config
<<< launch
<<< urdf
------<<<gazebo
-----------<<< worlds
-----------<<< sensors
<<< meshes
创建功能包
- 依赖于xacro urdf
- 建立四个文件夹
- config:放置rviz中的配置文件
- launch
- urdf:存放描述模型的文件
- meshes
编写模型描述文件.xacro
基本语法
* a 属性和算术运算(用于封装 URDF 中的一些字段,比如: PAI 值,小车的尺寸,轮子半径 ....)
* b 宏(类似于函数实现,提高代码复用率,优化代码结构,提高安全性)
* c 文件包含(机器人由多部件组成,不同部件可能封装为单独的 xacro 文件,最后再将不同的文件集成,组合为完整机器人,可以使用文件包含实现)
## rviz配置
描述文件为
gazebo/arm_gazebo.xacro #机械臂描述文件
gazebo/vnbot_base_gazebo.xacro #底盘描述文件
gazebo/vnbot_gazebo.xacro #机器人描述文件
显示机器人模型
- 左下角Add —> 选择RobotModel
- 隐藏显示可以点击Visual Enable
显示坐标系
- 左下角Add --> 选择TF
- 坐标系的大小可以通过 Marker Scale配置
保存配置
左上角File --> Save Config As --> 保存到config文件夹下xxx.rviz
每次打开rviz并加载上次保存
- launch文件中写入
<!-- 运行rviz可视化界面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find vn_robot_description)/config/vnbot.rviz" required="true" />
launch文件
urdf
文件为launch/display_vnbot_gazebo.launch
<launch>
<arg name="model" default="$(find xacro)/xacro '$(find vn_robot_description)/urdf/xacro/gazebo/vnbot_gazebo.xacro'" />
<arg name="gui" default="true" />
<param name="robot_description" command="$(arg model)" />
<!-- 设置GUI参数,显示关节控制插件 -->
<param name="use_gui" value="$(arg gui)"/>
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<!-- <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" /> -->
<node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher_gui" output="screen" />
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<!-- 运行rviz可视化界面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find vn_robot_description)/config/vnbot.rviz" required="true" />
</launch>
gazebo
文件为 launch/display_vnbot_rviz.launch
<launch>
<!-- 设置launch文件的参数 -->
<arg name="world_name" value="$(find vn_robot_description)/urdf/xacro/gazebo/worlds/room.world"/>
<arg name="paused" default="false"/>
<arg name="use_sim_time" default="true"/>
<arg name="gui" default="true"/>
<arg name="headless" default="false"/>
<arg name="debug" default="false"/>
<!-- 运行gazebo仿真环境 -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(arg world_name)" />
<arg name="debug" value="$(arg debug)" />
<arg name="gui" value="$(arg gui)" />
<arg name="paused" value="$(arg paused)"/>
<arg name="use_sim_time" value="$(arg use_sim_time)"/>
<arg name="headless" value="$(arg headless)"/>
</include>
<!-- 加载机器人模型描述参数 -->
<param name="robot_description" command="$(find xacro)/xacro '$(find vn_robot_description)/urdf/xacro/gazebo/vnbot_gazebo.xacro'" />
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher_gui" output="screen" />
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" output="screen" >
<param name="publish_frequency" type="double" value="50.0" />
</node>
<!-- 在gazebo中加载机器人模型-->
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
args="-urdf -model mrobot -param robot_description"/>
</launch>
gazebo创建地图
直接添加模型
使用editor
#### 打开gazebo的同时加载world
- 建立完模型后File --> Save World As --> xxx.world
最后效果
下一节 六轴机械臂Moveit配置&深度相机kinect配置
`