1计算机环境:Ubuntu16.04+ros kinetic

2创建工作空间

创建ROS工作空间,命名为SmartCar,并在该工作空间中创建src文件夹。

mkdir -p /SmartCar/src

3初始化工作空间

cd /SmartCar
catkin_init_workspace

4创建文件描述包

cd /src
roscreate-pkg smartcar_description urdf

5 创建urdf描述文件

smartcar_description文件夹下创建urdf文件夹,并创建智能车的描述文件my_move_robot.xacro,写入下述代码:

<?xml version="1.0"?><robot xmlns:xacro="http://www.ros.org/wiki/xacro" xmlns:sensor="http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor"xmlns:controller="http://playerstage.sourceforge.net/gazebo/xmlschema/#controller"xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface"name="robot1_xacro"><xacro:property name="length_wheel" value="0.05" /><xacro:property name="radius_wheel" value="0.05" /><xacro:macro name="default_inertial" params="mass"><inertial><mass value="${mass}" /><inertia ixx="1.0" ixy="0.0" ixz="0.0"iyy="1.0" iyz="0.0"izz="1.0" /></inertial></xacro:macro><link name="base_footprint"><visual><geometry><box size="0.001 0.001 0.001"/></geometry><origin rpy="0 0 0" xyz="0 0 0"/></visual><xacro:default_inertial mass="0.0001"/></link><joint name="base_footprint_joint" type="fixed"><origin xyz="0 0 0" /><parent link="base_footprint" /><child link="base_link" /></joint><link name="base_link"><visual><geometry><box size="0.2 .3 .1"/></geometry><origin rpy="0 0 1.54" xyz="0 0 0.05"/><material name="white"><color rgba="1 1 1 1"/></material></visual><collision><geometry><box size="0.2 .3 0.1"/></geometry></collision><xacro:default_inertial mass="10"/></link><link name="wheel_1"><visual><geometry><cylinder length="${length_wheel}" radius="${radius_wheel}"/></geometry><!-- <origin rpy="0 1.5 0" xyz="0.1 0.1 0"/> --><origin rpy="0 0 0" xyz="0 0 0"/><material name="black"><color rgba="0 0 0 1"/></material></visual><collision><geometry><cylinder length="${length_wheel}" radius="${radius_wheel}"/></geometry></collision><xacro:default_inertial mass="1"/></link><link name="wheel_2"><visual><geometry><cylinder length="${length_wheel}" radius="${radius_wheel}"/></geometry><!-- <origin rpy="0 1.5 0" xyz="-0.1 0.1 0"/> --><origin rpy="0 0 0" xyz="0 0 0"/><material name="black"/></visual><collision><geometry><cylinder length="${length_wheel}" radius="${radius_wheel}"/></geometry></collision><xacro:default_inertial mass="1"/></link><link name="wheel_3"><visual><geometry><cylinder length="${length_wheel}" radius="${radius_wheel}"/></geometry><!-- <origin rpy="0 1.5 0" xyz="0.1 -0.1 0"/> --><origin rpy="0 0 0" xyz="0 0 0"/><material name="black"/></visual><collision><geometry><cylinder length="${length_wheel}" radius="${radius_wheel}"/></geometry></collision><xacro:default_inertial mass="1"/></link><link name="wheel_4"><visual><geometry><cylinder length="${length_wheel}" radius="${radius_wheel}"/></geometry><!--    <origin rpy="0 1.5 0" xyz="-0.1 -0.1 0"/> --><origin rpy="0 0 0" xyz="0 0 0" /><material name="black"/></visual><collision><geometry><cylinder length="${length_wheel}" radius="${radius_wheel}"/></geometry></collision><xacro:default_inertial mass="1"/></link><joint name="base_to_wheel1" type="continuous"><parent link="base_link"/><child link="wheel_1"/><origin rpy="1.5707 0 0" xyz="0.1 0.15 0"/><axis xyz="0 0 1" /></joint><joint name="base_to_wheel2" type="continuous"><axis xyz="0 0 1" /><anchor xyz="0 0 0" /><limit effort="100" velocity="100" /><parent link="base_link"/><child link="wheel_2"/><origin rpy="1.5707 0 0" xyz="-0.1 0.15 0"/>
</joint><joint name="base_to_wheel3" type="continuous"><parent link="base_link"/><axis xyz="0 0 1" /><child link="wheel_3"/><origin rpy="1.5707 0 0" xyz="0.1 -0.15 0"/></joint><joint name="base_to_wheel4" type="continuous"><parent link="base_link"/><axis xyz="0 0 1" /><child link="wheel_4"/><origin rpy="1.5707 0 0" xyz="-0.1 -0.15 0"/></joint><!-- Drive controller -->
<gazebo><plugin name="skid_steer_drive_controller" filename="libgazebo_ros_skid_steer_drive.so"><updateRate>100.0</updateRate><robotNamespace></robotNamespace><leftFrontJoint>base_to_wheel1</leftFrontJoint><rightFrontJoint>base_to_wheel3</rightFrontJoint><leftRearJoint>base_to_wheel2</leftRearJoint><rightRearJoint>base_to_wheel4</rightRearJoint><wheelSeparation>4</wheelSeparation><wheelDiameter>0.1</wheelDiameter><commandTopic>cmd_vel</commandTopic><odometryTopic>odom</odometryTopic><robotBaseFrame>base_footprint</robotBaseFrame><odometryFrame>odom</odometryFrame><torque>1</torque><topicName>cmd_vel</topicName><broadcastTF>1</broadcastTF></plugin>
</gazebo><!-- ros_control plugin --><gazebo><plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so"><robotNamespace>/robot</robotNamespace></plugin></gazebo></robot>

6创建launch文件

  在/smartcar_description文件夹下建立launch文件夹,并创建智能车的launch文件 my_move_roboot.launch,描述代码如下:

<?xml version="1.0"?>
<launch><include file="$(find gazebo_ros)/launch/empty_world.launch"></include><!-- Load the URDF into the ROS Parameter Server --><param name="robot_description"command="$(find xacro)/xacro.py '$(find smartcar_description)/urdf/my_move_robot.xacro'" /><node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" /><!-- Run a python script to the send a service call to gazebo_ros to spawn a URDF robot --><node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"args="-urdf -model robot1 -param robot_description -z 0.05"/></launch>

7安装键盘控制器包

使用如下命令安装

 sudo apt-get install ros-hydro-teleop-twist-keyboardrosstack profilerospack profile

8.启动并运行,让小车动起来

a)启动.launch文件

source devel/setup.bash
roslaunch smartcar_description my_move_roboot.launch

b)启动键盘控制器

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

通过以上步骤,就可以启动gazebo,通过键盘控制,机器人就会做出相应的运动;

以下是机器人模型在rviz中显示。

参考https://blog.csdn.net/qq_16775293/article/details/88189184

上边gazebo显示模型主要参考https://blog.csdn.net/ktigerhero3/article/details/65443920

ros-gazebo-仿真环境搭建相关推荐

  1. Baxter的Gazebo仿真环境搭建

    注:这是一篇配置失败的文章,原因是Ubuntu20.04不支持Qt4,catkin_make通不过,不是20.04的可以尝试一下,或者有大神能不能帮忙看下在ubuntu20.04装baxter仿真环境 ...

  2. ROS中阶笔记(四):机器人仿真—Gazebo物理仿真环境搭建(重点)

    ROS中阶笔记(四):机器人仿真-Gazebo物理仿真环境搭建(重点) 文章目录 1 ros_control 1.1 ros_control安装 2 Gazebo仿真步骤(重点) 2.1 配置物理仿真 ...

  3. ROS开发笔记(5)——基于 python 开发 Turtlebot3 Gazebo仿真环境下键盘操控移动机器人(Teleop-bot )

    前文中记录了随机移动机器人的开发过程,本文内容为Turtlebot3 Gazebo仿真环境下Teleop-bot 键盘操控移动机器人,主要包含以下几个部分: 1.键盘驱动(按键驱动发布keys话题) ...

  4. UR5机械臂仿真环境搭建

    UR5机械臂仿真环境搭建 重要参考: ROS官网教程 前段时间,实验室采购了一台UR5机械臂,今天花了一下午,对照官网教程,完成了仿真环境搭建,期间遇到了一些问题,好在最后都解决了.机械臂的运动规划和 ...

  5. pybullet机器人仿真环境搭建 1.安装pybullet,测试官方示例,基础环境搭建

    pybullet机器人仿真环境搭建 1.安装pybullet 前言 安装 测试官方示例 基础环境搭建 导入pybullet 创建服务端 (可选)配置图形GUI 添加资源路径 设置重力 加载模型 迭代运 ...

  6. ROS | Gazebo仿真—阿克曼(Ackermann)四轮小车模型

    ROS | Gazebo仿真-阿克曼(Ackermann)四轮小车模型 1. 仿真描述 2. Gazebo简介 2.1 Gazebo的典型用途 2.2 Gazebo的主要特点 3. ros_contr ...

  7. gazebo仿真环境中添加robotiq 2f 140的gripper_controller控制器

    gazebo仿真环境中添加robotiq 2f 140的gripper_controller控制器 搭建环境: ubuntu: 20.04 ros: Nonetic sensor: robotiq_f ...

  8. Gazebo——仿真平台搭建(基于Ubuntu20.04)

    目录 Gazebo安装配置 创建仿真环境 仿真使用 Rviz查看摄像头采集的信息 Kinect仿真 问题解决: 1.gazebo--SpawnModel: Failure - model name m ...

  9. 如何生成gazebo仿真环境的二维地图真值

    在移动机器人仿真中,二维地图真值可以用来评价slam建图结果,也可以直接给路径规划算法提供输入. 利用gazebo进行仿真时,有很多方法都可以获取静态仿真环境的二维地图真值,本文将对以下链接: hyf ...

  10. Turtlebot+ROS Stage仿真环境实现MPC轨迹跟踪

    在无人车系统(十一):轨迹跟踪模型预测控制(MPC)原理与python实现[40行代码]中介绍了MPC方法在无人车轨迹跟踪中的应用.以Udacity中的例子作为引子,详细介绍了MPC的原理,无人车的运 ...

最新文章

  1. Android高级编程(笔记)-第6章 数据存储、检索和共享--2--本地文件
  2. 谷歌浏览器Software Reporter Tool长时间占用CPU解决办法
  3. 对一千万条数据进行排序---编程珠玑第二版 第一章
  4. 我的第一个oracle触发器
  5. 关于COMMIT WORK and COMMIT WORK AND WAIT在SAT中的讨论
  6. python3网络编程传输图片_python网络编程(图片传输)
  7. MongoDB学习路线
  8. 通向KDE4之路(十一):Amarok2开辟起步
  9. delphi语言转为汇编语言_计算机语言
  10. [Ext JS 4] 布局之实战二 - 中间区块不会自动伸展 (tab)续
  11. 小话设计模式五:模板方法模式
  12. php上传虚假图片,解决PHP上传多个图片并校验的代码问题
  13. linux中crontab的用法
  14. Screw导出数据库表信息
  15. 一元云购CMS微信分享打不开解决办法
  16. python中从键盘输入五个单词输出以元音字母开头的单词_matlab中 从一个文本读出所有英文单词,并且把所有以元音字母开头的字母首字母 的代码怎么写...
  17. IDA PRO 静态反汇编与OllyDbg动态调试实战技巧汇总
  18. 我的柏楚系统激光切割机锁机了
  19. android新架构模式_Android MVIReact架构模式
  20. c语言程序设计教学理念,微课程理念下C语言程序设计教学改革.doc

热门文章

  1. PDF不能打印怎么办?
  2. 小程序分享功能怎么做_微信电影小程序怎么做?微信电影小程序项目收益图分享...
  3. OSPF路由协议详解与实战演练
  4. phpstudy打不开localhost
  5. 小笨狗的编程感悟:如何成为一个优秀的程序员
  6. 说一下zoom:1的原理,万一被问到呢?
  7. jQuery实现异形轮播图
  8. SQL DATENAME(month,getdate())返回的数据为英文日期及把日期转为字符去比较的性能问题
  9. keyston api与代码router映射
  10. 使用SSD mobilenet训练自己的数据集