前期 需要完成机器人操作系统ROS(8)arbotix控制器控制小车运动

物理仿真实验

机器人底盘仿真

我是自己创建了一个工作空间model_gazebo,创建方法:参考;
如果按照上一篇文章继续操作也可以,记得把mbot_gazebo换成mbot_description

cd ~/catkin_ws/src/model_gazebo/urdf/xacro
mkdir gazebo
cd gazebo
sudo gedit mbot_base_gazebo.xacro

内容如下:声明xml文件

<?xml version="1.0"?>
<robot name="mbot" xmlns:xacro="http://www.ros.org/wiki/xacro">
<!--存放 下面 相关定义内容-->
</robot>

编写机器人配置

link添加惯性参数和碰撞属性与gazebo标签
各link的质量(mass)属性声明及其他常量声明

    <!-- PROPERTY LIST --><xacro:property name="M_PI" value="3.1415926"/><xacro:property name="base_mass"   value="20" /> <xacro:property name="base_radius" value="0.20"/><xacro:property name="base_length" value="0.16"/><xacro:property name="wheel_mass"   value="2" /><xacro:property name="wheel_radius" value="0.06"/><xacro:property name="wheel_length" value="0.025"/><xacro:property name="wheel_joint_y" value="0.19"/><xacro:property name="wheel_joint_z" value="0.05"/><xacro:property name="caster_mass"    value="0.5" /> <xacro:property name="caster_radius"  value="0.015"/> <!-- wheel_radius - ( base_length/2 - wheel_joint_z) --><xacro:property name="caster_joint_x" value="0.18"/>

颜色属性声明

    <!-- Defining the colors used in this robot --><material name="yellow"><color rgba="1 0.4 0 1"/></material><material name="black"><color rgba="0 0 0 0.95"/></material><material name="gray"><color rgba="0.75 0.75 0.75 1"/></material>

宏定义 球体惯性矩阵计算

    <!-- Defining the colors used in this robot --><material name="yellow"><color rgba="1 0.4 0 1"/></material><material name="black"><color rgba="0 0 0 0.95"/></material><material name="gray"><color rgba="0.75 0.75 0.75 1"/></material>

宏定义 圆柱体惯性矩阵计算

<!-- Macro for inertia matrix --><xacro:macro name="sphere_inertial_matrix" params="m r"><inertial><mass value="${m}" /><inertia ixx="${2*m*r*r/5}" ixy="0" ixz="0"iyy="${2*m*r*r/5}" iyz="0" izz="${2*m*r*r/5}" /></inertial></xacro:macro>

定义驱动轮的宏定义

与参考链接的主要区别在于
link增加惯性属性和碰撞属性
link添加gazebo标签
joint添加传动装置

 <!-- Macro for robot wheel --><xacro:macro name="wheel" params="prefix reflect"><joint name="${prefix}_wheel_joint" type="continuous"><origin xyz="0 ${reflect*wheel_joint_y} ${-wheel_joint_z}" rpy="0 0 0"/><parent link="base_link"/><child link="${prefix}_wheel_link"/><axis xyz="0 1 0"/></joint><link name="${prefix}_wheel_link"><visual><origin xyz="0 0 0" rpy="${M_PI/2} 0 0" /><geometry><cylinder radius="${wheel_radius}" length = "${wheel_length}"/></geometry><material name="gray" /></visual><!-- collision --><!-- the same with visual --><!--增加惯性属性和碰撞属性--><collision><origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />  <geometry><cylinder radius="${wheel_radius}" length = "${wheel_length}"/></geometry></collision><!-- inertial --><cylinder_inertial_matrix  m="${wheel_mass}" r="${wheel_radius}" h="${wheel_length}" />             </link><!--添加gazebo标签为各link配颜色 ,gazebo与rivz颜色设置不兼容--><!-- Add gazebo tag to link --><gazebo reference="${prefix}_wheel_link"><material>Gazebo/Gray</material>          </gazebo><!--joint添加传动装置,用得 transmission 标签,小车轮子用速度控制接口--><!-- Transmission is important to link the joints and the controller --><transmission name="${prefix}_wheel_joint_trans"><type>transmission_interface/SimpleTransmission</type><joint name="${prefix}_wheel_joint" ><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="${prefix}_wheel_joint_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface><mechanicalReduction>1</mechanicalReduction></actuator></transmission></xacro:macro>

定义前后轮的宏定义

与参考链接的主要区别在于
link增加惯性属性和碰撞属性
link添加gazebo标签

  <!-- Macro for robot caster --><xacro:macro name="caster" params="prefix reflect"><joint name="${prefix}_caster_joint" type="continuous"><origin xyz="${reflect*caster_joint_x} 0 ${-(base_length/2 + caster_radius)}" rpy="0 0 0"/><parent link="base_link"/><child link="${prefix}_caster_link"/><axis xyz="0 1 0"/></joint><link name="${prefix}_caster_link"><visual><origin xyz="0 0 0" rpy="0 0 0"/><geometry><sphere radius="${caster_radius}" /></geometry><material name="black" /></visual><!-- 碰撞属性 --><collision><origin xyz="0 0 0" rpy="0 0 0"/><geometry><sphere radius="${caster_radius}" /></geometry></collision>  <!-- 惯性属性 --><sphere_inertial_matrix  m="${caster_mass}" r="${caster_radius}" /></link><!--添加gazebo标签,为各link配颜色--><gazebo reference="${prefix}_caster_link"><material>Gazebo/Black</material></gazebo></xacro:macro>

定义主体base并添加内容

    <xacro:macro name="mbot_base_gazebo"><link name="base_footprint"><visual><origin xyz="0 0 0" rpy="0 0 0" /><geometry><box size="0.001 0.001 0.001" /></geometry></visual></link><!-- 给 base_footprint 添加标签 --><gazebo reference="base_footprint"><turnGravityOff>false</turnGravityOff></gazebo><joint name="base_footprint_joint" type="fixed"><origin xyz="0 0 ${base_length/2 + caster_radius*2}" rpy="0 0 0" />        <parent link="base_footprint"/><child link="base_link" /></joint><!--base_link添加碰撞属性和惯性属性--><link name="base_link"><visual><origin xyz=" 0 0 0" rpy="0 0 0" /><geometry><cylinder length="${base_length}" radius="${base_radius}"/></geometry><material name="yellow" /></visual><collision><origin xyz=" 0 0 0" rpy="0 0 0" /><geometry><cylinder length="${base_length}" radius="${base_radius}"/></geometry></collision>   <cylinder_inertial_matrix  m="${base_mass}" r="${base_radius}" h="${base_length}" /></link><!--base_link添加gazebo标签--><gazebo reference="base_link"><material>Gazebo/Blue</material></gazebo><wheel prefix="left" reflect="-1"/> <!-- 调用驱动轮子宏定义 --><wheel prefix="right" reflect="1"/> <!-- 调用驱动轮子宏定义 --><caster prefix="front" reflect="-1"/> <!--调用支撑轮子宏定义--><caster prefix="back" reflect="1"/> <!-- 调用支撑轮子宏定义 --></xacro:macro>

添加gazebo控制插件(类似驱动板)
继续在mbot_base_gazebo.xacro文件中编写
小车需要差速控制器,gazebo里差速控制器的插件是现成的libgazebo_ros_diff_drive.so文件

        <!-- controller --><gazebo><plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so"> <!-- gazebo提供得差速控制器插件 --><!-- 控制器所需参数 --><rosDebugLevel>Debug</rosDebugLevel><publishWheelTF>true</publishWheelTF><robotNamespace>/</robotNamespace><!-- 机器人命名空间 订阅和发布得话题 前面 会加上命名空间 /说明没有添加--><publishTf>1</publishTf><publishWheelJointState>true</publishWheelJointState><alwaysOn>true</alwaysOn><updateRate>100.0</updateRate><legacyMode>true</legacyMode><leftJoint>left_wheel_joint</leftJoint> <!-- 控制得joint在哪里,必须和上面得joint名称一致 --><rightJoint>right_wheel_joint</rightJoint><!-- 控制得joint在哪里,必须和上面得joint名称一致 --><wheelSeparation>${wheel_joint_y*2}</wheelSeparation><!-- 两个轮子得间距 --><wheelDiameter>${2*wheel_radius}</wheelDiameter><broadcastTF>1</broadcastTF><wheelTorque>30</wheelTorque><wheelAcceleration>1.8</wheelAcceleration><commandTopic>cmd_vel</commandTopic> <!-- 订阅得话题:速度控制指令 --><odometryFrame>odom</odometryFrame> <odometryTopic>odom</odometryTopic> <!-- 发布里程计信息 --><robotBaseFrame>base_footprint</robotBaseFrame><!-- 设置controler所控制的机器人的坐标系是哪个坐标系 --></plugin></gazebo> 

编辑xacro文件

在同级目录下创建sudo gedit mbot_gazebo.xacro
mbot_gazebo.xacro文件内容

<?xml version="1.0"?>
<robot name="arm" xmlns:xacro="http://www.ros.org/wiki/xacro"><xacro:include filename="$(find model_gazebo)/urdf/xacro/gazebo/mbot_base_gazebo.xacro" /> <!-- 包含文件 --><mbot_base_gazebo/>    <!-- 调用宏定义 -->
</robot>

编辑launch文件

cd ~/catkin_ws/src/mbot_description/launch/xacro
mkdir gazebo
cd gazebo
sudo gedit mbot_base_gazebo.launch

mbot_base_gazebo.launch文件内容

<launch><!-- 设置launch文件的参数 --><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="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 --inorder '$(find model_gazebo)/urdf/xacro/gazebo/mbot_gazebo.xacro'" /> <!-- 运行joint_state_publisher节点,发布机器人的关节状态  --><node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node> <!-- 运行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>

运行

roslaunch model_gazebo mbot_base_gazebo.launch

创建仿真环境

直接添加环境模型

其实就是在上面打开的GAZEBO中进行添加自己想要的仿真工具
模型放置到~/.gazebo/models 文件夹下——------在gazebo的左侧列表点击“insert”(可以看到里面有很多的模型,我们只需要从列表中拖出我们需要的模型放置到仿真环境中就可以)

如果insert列表为空,或者打开GAZEBRO里面不显示建造的模型,参考最下面错误集合:错误4


最终添加的环境内容

②保存仿真环境
File——Save World As——放置在功能包~/catkin_ws/src/mbot_description/worlds下面(路径自己选择,主要是在 ~/catkin_ws/src/)
最后退出即可。

使用Building Editor创建

1.打开空白的gazebo

roslaunch gazebo_ros empty_world.launch

2.打开Building Editor

3.保存建立的虚拟环境

4.关闭Building Editor

环境效果

5.添加一些model

添加完成的效果

6.保存最终环境


虚拟环境创建完成。

实现gazebo和rviz结合使用仿真

了解就好,下面会具体应用

只需要我们在launch文件中:
设置launch文件的参数处加如.world文件的路径即可这样就可以选择相要使用的仿真环境

    <!-- 设置launch文件的参数 world_name的value值应该指向上一个创建好的world文件--><arg name="world_name" value="$(find mbot_gazebo)/worlds/playhouse.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"/>

摄像头仿真

需要在完成上面内容后,才可以继续

编辑xacro文件

cd ~/catkin_ws/src/model_gazebo/urdf/xacro
mkdir sensors
cd sensors
sudo gedit camera_gazebo.xacro

内容如下:

<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="camera"><xacro:macro name="usb_camera" params="prefix:=camera"><link name="${prefix}_link"><inertial><mass value="0.1" /><origin xyz="0 0 0" /><inertia ixx="0.01" ixy="0.0" ixz="0.0"iyy="0.01" iyz="0.0"izz="0.01" /></inertial><visual><origin xyz=" 0 0 0 " rpy="0 0 0" /><geometry><box size="0.01 0.04 0.04" /></geometry><material name="black"/></visual><collision><origin xyz="0.0 0.0 0.0" rpy="0 0 0" /><geometry><box size="0.01 0.04 0.04" /></geometry></collision></link><gazebo reference="${prefix}_link"><material>Gazebo/Black</material></gazebo><gazebo reference="${prefix}_link"> <!-- 这个sensor代表的link --><sensor type="camera" name="camera_node"><update_rate>30.0</update_rate><!-- 摄像头发布频率 --><camera name="head"><horizontal_fov>1.3962634</horizontal_fov><!-- 摄像头可视范围 --><image><width>1280</width><!-- 摄像头分辨率 --><height>720</height><!-- 摄像头分辨率 --><format>R8G8B8</format><!-- 摄像头数据格式 --></image><clip><near>0.02</near><!-- 最近距离 --><far>300</far><!-- 最远距离 --></clip><noise><type>gaussian</type><!-- 摄像头高斯噪声 --><mean>0.0</mean><stddev>0.007</stddev></noise></camera><plugin name="gazebo_camera" filename="libgazebo_ros_camera.so"><!-- 加载插件,实现摄像头功能 --><alwaysOn>true</alwaysOn><updateRate>0.0</updateRate><cameraName>/camera</cameraName><!-- 命名空间 --><imageTopicName>image_raw</imageTopicName><!-- 发布图片信息话题名称 --><cameraInfoTopicName>camera_info</cameraInfoTopicName><!-- 发布摄像头信息话题名称 --><frameName>camera_link</frameName><!-- 数据的坐标系统 --><hackBaseline>0.07</hackBaseline><distortionK1>0.0</distortionK1><distortionK2>0.0</distortionK2><distortionK3>0.0</distortionK3><distortionT1>0.0</distortionT1><distortionT2>0.0</distortionT2></plugin></sensor></gazebo></xacro:macro>
</robot>

记得删除中文注释!

编辑带有摄像的xacro文件

urdf/xacro/gazebo/目录下创建:sudo gedit mbot_with_camera_gazebo.xacro
文件内容
注:两个需要改的地方:就是第四第五行文件要核对好自己的路径

<?xml version="1.0"?>
<robot name="arm" xmlns:xacro="http://www.ros.org/wiki/xacro"><!--需要改动的地方 ! 这两个路径需要能找到文件;一个是机器人的配置;一个是新增的摄像信息--><xacro:include filename="$(find model_gazebo)/urdf/xacro/gazebo/mbot_base_gazebo.xacro" /><!-- include机器人底盘mbot_base_gazebo.xacro --><xacro:include filename="$(find model_gazebo)/urdf/xacro/sensors/camera_gazebo.xacro" /><!-- include机器人传感器摄像头camera_gazebo.xacro --><!-- 声明参数 --><xacro:property name="camera_offset_x" value="0.17" /><xacro:property name="camera_offset_y" value="0" /><xacro:property name="camera_offset_z" value="0.10" /><!-- Camera --><joint name="camera_joint" type="fixed"><!-- 摄像头joint连接方式 --><origin xyz="${camera_offset_x} ${camera_offset_y} ${camera_offset_z}" rpy="0 0 0" /><parent link="base_link"/><child link="camera_link"/></joint><xacro:usb_camera prefix="camera"/><!-- 调用摄像头宏 --><mbot_base_gazebo/><!-- 调用机器人底盘宏 -->
</robot>

编辑launch文件

带摄像头的机器人launch文件

cd ~/catkin_ws/src/mbot_description/launch/xacro/gazebo
sudo gedit view_mbot_with_camera_gazebo.launch

view_mbot_with_camera_gazebo.launch文件内容
注:两个参数world_namerobot_description的路径要核对好

<launch><!--world_name的value值应该指向上一个创建好的world文件--><arg name="world_name" value="$(find model_gazebo)/worlds/playhouse.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"/><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 --inorder '$(find model_gazebo)/urdf/xacro/sensors/mbot_with_camera_gazebo.xacro'" /> <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node> <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><node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"args="-urdf -model mrobot -param robot_description"/> </launch>

运行gazebo

roslaunch mbot_description view_mbot_with_camera_gazebo1.launch

用qt工具查看摄像头当前画面

rqt_image_view

如果提示bash: rqt: 未找到命令 rqt_image_view rqt_graph等等,参考错误5

选择**/camera/image_raw**

启动键盘控制

roslaunch mbot_teleop mbot_teleop.launch

键盘主要有u,i,o,j等。
通过按按键j,u,i,o控制摄像头视角

摄像头仿真就完成了。

Rviz查看摄像头采集的信息

启动rviz `rosrun rviz rviz
添加 add
1.选择机器人模型 RobotModel ,画面出现机器人
2.摄像头信息 image,选择image topic为/camera/image_raw 出现画面信息
通过键盘控制机器人,查看摄像头所得到的效果

错误

如果下面的错误没有你出现的,可以参考这篇 问题解决-----ROS中Gazebo学习的问题解决合集(初次运行黑屏、运行launch文件后闪退、黑屏;gazebo联合rviz出现process has died等的解决办法)
大部分问题都可以参考上面的链接总结,感谢大佬!

错误1


报错原因分析:
1.不接入网络情况下会输出Unable to find uri[model://my1stmodel]
2.接入网络后,如果找不到该模型,会联网在Gazebo远程模型数据库中寻找,由于自己创建的模型名称,在Gazebo模型数据库中是不存在的,所以会一直停在命令行waitForService: Service [/gazebo_gui/set_physics_properties] has not been advertised, watting...

错误2

gzserver: /build/ogre-1.9-mqY1wq/ogre-1.9-1.9.0+dfsg1/OgreMain/src/OgreRenderSystem.cpp:546: virtual void Ogre::RenderSystem::setDepthBufferFor(Ogre::RenderTarget*): Assertion bAttached && “A new DepthBuffer for a RenderTarget was created, but after creation” “it says it’s incompatible with that RT”’ failed.

错误原因:
原因是gazebo的版本过低,与Rviz不兼容。ubuntu16.04匹配的ros版本是kinetic,kinetic安装过程中会自动下载低版本的gazebo,然后RViz又是新版本的。
解决办法:
(1)通过下面指令可以看到gazebo版本是7.0.0

xx@ubuntu:~$ gazebo --version
Gazebo multi-robot simulator, version 7.0.0

主要是升级gazebo版本,具体步骤如下:

  1. 添加下载源
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
  1. 添加软件包密钥
 wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
  1. 更新系统下载源
sudo apt-get update
  1. 升级gazebo
    安装gazebo7或以上的版本
sudo apt-get install gazebo8 或gazebo9
  1. 测试gazebo版本
xx@ubuntu:~$ gazebo --version
Gazebo multi-robot simulator, version 7.16.1
  1. gazebo升级后,gazebo可正常运行,而且可以加载模型

如果还是不行,可能是显卡驱动比较陈旧,需要更新,更新英伟达的驱动


错误3

[gazebo_gui-3] process has died [pid 2238, exit code 134…(略)

方法一:gazebo启用3D加速选项方面存在一些问题,可从VM设置中禁用设置3D加速选项。禁用该选项后,仿真环境运行会比较缓慢,但可以正常工作。如图所示:

方法二:更改SVGA_VGPU10变量:
1先在终端执行export SVGA_VGPU10=0
2然后再执行roslaunch语句,比如我的是roslaunch ur_gazebo ur3.launch

错误4

Error [parser.cc:581] Unable to find uri[model://sun] Error [parser.cc:581] Unable to find uri[model://ground_plane]

参考https://aichen.blog.csdn.net/article/details/124391936

解决: 第一次下载安装gazebo的时候没有将模型文件models下载下来,所以缺少了sunground plane等模型。我们按照他说的链接,或者到github中下载下来放到.gazebo文件夹中即可。所需要的models文件我已经放到了百度云盘中,可以直接下载。
注意,要在.gazebo中建立models文件夹,把下载好的众多包放到里面,不要建立model,我第一次少写了一个s,结果加载不到。

如果在/home/use_name下找不到`.hazebo’文件,原因是它被隐藏了,在当前页面状态中,按下ctrl+h显示隐藏文件,如

错误5

bash: rqt: 未找到命令 rqt_image_view rqt_graph等等
解决办法:
可能是rqt被不小心卸载了,重装就好

sudo apt-get install ros-kinetic-rqt
sudo apt-get install ros-kinetic-rqt-graph
sudo apt-get install ros-kinetic-rqt-common-plugins

参考

教程参考:
ROS——ArbotiX+Rviz仿真
✳✳ROS——Gazebo物理仿真环境搭建
ros + gazebo未报错却加载不出来机器人模型 解决办(这里面的代码不添加注释可以直接复制)
[ROS——Gazebo物理仿真安装
解决的问题参考链接
ros + gazebo未报错却加载不出来机器人模型 解决办
Assertion `bAttached && “A new DepthBuffer for a RenderTarget was created, but after creation“ “it s
解决 gazebo_gui-3 process has died pid 2238, exit code 134
https://blog.csdn.net/Will_Ye/article/details/116428880

机器人操作系统ROS(9)Gazebo物理仿真(摄像头仿真)相关推荐

  1. ROS机器人SLAM学习:Gazebo定位与导航仿真

    ROS机器人SLAM学习:Gazebo定位与导航仿真 一. 在 gazebo 中构建一个用于建图和导航的虚拟环境,可以使用 Building Editor工具创建,也可以使用其他功能包中已有的虚拟环境 ...

  2. <笔记>机器人操作系统ROS理论与实践--第一讲:认识ROS

    <笔记>机器人操作系统ROS理论与实践--第一讲:认识ROS 前言 一.为什么需要ROS 二.ROS的总体设计 1.一个目标 2.五个特点 3.四位一体 三.ROS的系统实现--三个层次 ...

  3. 机器人操作系统ROS(1)

    ROS总体设计 ROS五个特点 点对点设计 一个使用ROS的系统包括一系列进程,这些进程存在于多个不同的主机并且在运行过程中通过端对端的拓扑结构进行联系,如图2所示.虽然基于中心服务器的那些软件框架也 ...

  4. 关于机器人操作系统(ROS)学习前须知二三

    ROS基础资料 1.什么是ROS? ROS(机器人操作系统,Robot Operating System),是专为机器人软体开发所设计出来的一套电脑作业系统架构.它是一个开源的元级操作系统(后操作系统 ...

  5. ROS笔记(19) 摄像头仿真

    ROS笔记(19) 摄像头仿真 1. 创建模型 2. 添加模型 3. 添加Gazebo插件 4. Gazebo仿真 1. 创建模型 除了雷达这种传感器外,平时还会用到摄像头传感器 简单的构建一个长方体 ...

  6. 计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能

    博客中大量介绍了将Ubuntu等Linux系统借助机器人操作系统ROS实现机器人控制设计开发和物联网功能案例,并可基于OpenAI等实现人工智能相关训练. 这篇博文围绕windows系统展开,之前也写 ...

  7. 机器人操作系统ROS—深度相机+激光雷达实现vSLAM建图与导航 转载

    原文:机器人操作系统ROS-深度相机+激光雷达实现vSLAM建图与导航_wx5d23599e462fa的技术博客_51CTO博客 这次将带大家学习如何使用深度相机实现机器人的视觉SLAM建图及导航. ...

  8. 机器人操作系统ROS(8)arbotix控制器控制小车运动

    本文内容:在 Ubuntu 18.04 虚拟机中,基于安装配置好 ROS Ketinc上,进行 URDF 机器人建模的详细步,同时配置摄像. 说明:本文是之前的延伸,该节需要参考上节机器人操作系统RO ...

  9. 《机器人操作系统ROS原理与应用》——1.3 智能机器人的分类

    本节书摘来自华章出版社<机器人操作系统ROS原理与应用>一 书中的第1章,第1.3节,作者:周兴社 杨刚 王岚,更多章节内容可以访问云栖社区"华章计算机"公众号查看. ...

  10. 一文读懂自动驾驶中的机器人操作系统ROS

    一.什么是机器人操作系统ROS 1.ROS(Robot Operating System)是一个操作系统 ROS是对机器人的硬件进行了封装,不同的机器人.不同的传感器,在ROS里可以用相同的方式表示( ...

最新文章

  1. python十大标准_python对标准类型的分类
  2. 【JavaScript】AJAX教程
  3. Java设计模式(一):策略设计模式
  4. Jyputer 项目工程设置Github同步,本地代码上传Github实例演示
  5. VMtools的安装与卸载
  6. jqgrid学习(1)
  7. 按值传递时 php必须复制值,PHP笔试题汇总
  8. IOS之使用AwesomeMenu框架令人惊叹的菜单
  9. php html标签自定义属性,详解H5的自定义属性data-*
  10. 学习KMP (概念 + 模板 + 例题: 子串查找)
  11. easyPR源码解析之plate_judge.h
  12. TCP/IP(五)传输层之细说TCP的三次握手和四次挥手
  13. 锐捷交换机配置命令大全_锐捷交换机常用配置命令汇总
  14. file* linux,Linux基础——file命令与magic file
  15. JDK 和 JRE 有什么区别
  16. ab st语言编程手册_AB-PLC自学笔记
  17. 怎么写竞品分析报告(思路):
  18. JavaScript中的get和set方法讲解
  19. Java基本功一之JDK配置Java基本语法
  20. webstorm配置和使用

热门文章

  1. 家用路由器与企业路由器有什么区别
  2. VISIO同时选中多条线
  3. 思维导图工具Thebrain:动态思维导图简介
  4. 漫漫人生录 | 一个月薪 120000 的[ 北京 ] 程序员的真实生活
  5. 类人猿易语言云控系统开发 + 附加安卓模拟器中控+ 内存操控 系列课程
  6. 网贷逾期会有什么后果,又如何解决呢?
  7. 客户贷款逾期预测[5] - 特征工程
  8. 人大与加拿大女王大学金融硕士在短学制中成就别样的人生
  9. 启动错误Passenger::SecurityException “Line too long”
  10. 火狐插件 测试浏览器兼容性_在Firefox中测试和报告插件兼容性