学习ROS-Academy-for-Beginners-noetic,修改记录

一.编译安装ROS-Academy-for-Beginners-noetic

可以参考我之前的博客ROS-Academy-for-Beginers-noetic安装教程

之后可以看到里面提供了很多例程,包括

| 软件包 | 内容 |
| :--- | :----: |
| **robot_sim_demo** | 机器人仿真程序,大部分示例会用到这个软件包 |
| **topic_demo** | topic通信,自定义msg,包括C++和python两个版本实现 |
| **service_demo** | service通信,自定义srv,分别以C++和python两种语言实现 |
| **action_demo** | action通信,自定义action,C++语言实现 |
| **param_demo** | param操作,分别以C++和python两种语言实现 |
| **msgs_demo** | 演示msg、srv、action文件的格式规范 |
| **tf_demo** | tf相关API操作演示,tf示例包括C++和python两个版本 |
| **name_demo** | 演示全局命名空间和局部命名空间下参数的提取 |
| **tf_follower** | 制作mybot机器人 实现mybot跟随xbot的功能 |
| **urdf_demo** |  创建机器人urdf模型,在RViz中显示  |
| **navigation_sim_demo** | 导航演示工具包,包括AMCL, Odometry Navigation等演示 |
| **slam_sim_demo** | 同步定位与建图演示,包括Gmapping, Karto, Hector等SLAM演示 |
| **orbslam2_demo** | ORB_SLAM2的演示 |
| **rtabmap_demo** | rtabmap的演示 |
| **cartographer_demo** | cartographer安装演示包|
| **dependlib** | ubuntu18所依赖的包(melodic不自带) |
| **ros_academy_for_beginners** | Metapacakge示例,依赖了本仓库所有的pacakge |

 具体可看作者的github链接

项目原地址

在每个例程的README.md文件可以看到使用教程;在跑完例程后,我们开始尝试修改一些东西,来使他变得更有趣,更多样化。

二.修改仿真环境

1.首先了解文件的架构

├── CMakeLists.txt
├── launch
│ ├── include
│ │ └── xbot-u.launch.xml #机器人模型(设置机器人初始位置)
│ └── robot_spawn.launch #启动launch文件显示仿真环境
├── models #仿真空间
│ ├── ISCAS_groundplane #地板
│ │ ├── materials
│ │ │ ├── scripts
│ │ │ │ └── ISCAS_groundplane.material
│ │ │ └── textures
│ │ │ └── ISCAS_groundplane.png
│ │ ├── model.config
│ │ └── model.sdf
│ ├── ISCAS_Museum #墙面
│ │ ├── meshes
│ │ │ ├── ISCAS_museum.dae
│ │ │ ├── zd_011.jpg
│ │ │ ├── zd_021.jpg
│ │ │ ├── zd_031.jpg
│ │ │ └── zd_041.jpg
│ │ ├── model.config
│ │ └── model.sdf
│ ├── ISCAS_post
│ │ ├── meshes
│ │ │ └── post.dae
│ │ ├── model.config
│ │ └── model.sdf
│ └── meshes #各个模型渲染的部分包括基底以及pitch、yaw平台以及相机和激光雷 达
│ ├── base_link.dae
│ ├── pitch_platform.dae
│ ├── realsense.dae
│ ├── rplidar.dae
│ ├── sick_tim571.stl
│ ├── uvtietu.jpg
│ ├── wheel.dae
│ ├── wheel.jpg
│ ├── xtion_pro_camera.dae
│ ├── xtion_pro_camera.jpg
│ └── yaw_platform.dae
├── package.xml
├── param
│ ├── mux.yaml #订阅话题以及发布话题的相关参数设置
│ └── xbot-u_control.yaml #机器人控制参数的设置(PID)
├── README.md
├── scripts
│ └── robot_keyboard_teleop.py
├── simulation_pic.png
├── urdf #构建机器人模型
│ ├── materials.xacro #颜色设置
│ ├── robot.urdf #urdf文件是通过xacro文件转换自动生成的(xacro文件比较精简, urdf文件比较复杂)
│ ├── robot.xacro #机器人整体模型文件(可以选择激光雷达的类型)包含该文件下的所有文 件
│ ├── sick_tim.gv #使用命令生成的<urdf_to_graphiz robot.urdf>
│ ├── sick_tim.pdf #显示整个机器人模型的连接关系
│ ├── sick_tim.urdf.xacro #激光雷达模型(多种激光雷达,包括rplidarA2、sick_tim310、 551、571等)
│ ├── xbot-u.gazebo
│ └── xbot-u.urdf.xacro #机器人模型所需要的各个部分可以通过可以通过rqt_tf_tree查看各个 link和joint之间的连接关系
└── worlds
└── ROS-Academy.world
原文链接:https://blog.csdn.net/qq_36170626/article/details/106542521
 

2.配制自己的world

在robot_sim_demo/launch目录下复制一份robot_spawn.launch,并重命名为my_ground.launch,并修改其内容如下

<launch>

  <arg name="robot" default="xbot-u"/>
  <arg name="debug" default="false"/>
  <arg name="gui" default="true"/>
  <arg name="headless" default="false"/>

  <!-- Start Gazebo with a blank world -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find robot_sim_demo)/worlds/my_ground.world"/>
    <!--arg name="world_name" value="$(find robot_sim_demo)/worlds/sai_di.world"/-->
    <!--arg name="world_name" value="$(find turtlebot_gazebo)/worlds/playground.world"/-->
    <arg name="debug" value="$(arg debug)" />
    <arg name="gui" value="$(arg gui)" />
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="headless" value="$(arg headless)"/>
  </include>

  <!-- Oh, you wanted a robot? -->
  <include file="$(find robot_sim_demo)/launch/include/$(arg robot).launch.xml"/>

  <!--node    name="rviz"    pkg="rviz"    type="rviz"    args="-d $(find robot_sim_demo)/urdf_gazebo.rviz" /-->

</launch>

可以看到,在加载world时,加载的是已经修改好的my_ground.world。

所以,在robot_sim_demo/worlds下,复制一份ROS-Academy.world,并取名为my_ground.world,其具体内容为

<?xml version="1.0" ?>
<sdf version="1.4">
 <world name="default">
    <scene>
      <ambient>0.68 0.68 0.68 1.0</ambient>
      <shadows> false</shadows>
      <sky>
        <sunrise/>
        <clouds>
          <speed>12</speed>
      </clouds>
      </sky>
    </scene>

    <physics type='ode'>
      <max_step_size>0.001</max_step_size>
      <real_time_factor>1</real_time_factor>
      <real_time_update_rate>1000</real_time_update_rate>
      <gravity>0 0 -9.8</gravity>
    </physics>

    <include>
      <uri>model://sun</uri>
    </include>

    <include>
      <uri>model://ISCAS_groundplane</uri>
    </include>

    <include>
      <uri>model://SampleScene</uri>
      <pose>0 0 0 0 0 -1.57</pose>
    </include>

    <!--<include>
      <uri>model://ISCAS_post</uri>
      <name>table1</name>
      <pose>8 3.5 0 0 0 1</pose>
    </include>
    <include>
      <uri>model://ISCAS_post</uri>
      <name>table2</name>
      <pose>6 5 0 0 0 1.57</pose>
    </include>-->

  </world>
</sdf>

可以看到我们用了该项目自带的ISCAS_groundplane作为地面,SampleScene作为模型。完成后,可以运行

roslaunch robot_sim_demo my_ground.launch

查看结果

 如果显示这样,那么就成功了。

3.自定义模型

可以参考链接

自定义仿真模型

三.在此环境下使用gmapping建图

查看slam_sim_demo/README.md文件,发现只需要替换掉仿真场地即可。

执行代码

roslaunch robot_sim_demo robot_spawn.launch
rosrun robot_sim_demo robot_keyboard_teleop.py
roslaunch slam_sim_demo gmapping_demo.launch
roslaunch slam_sim_demo view_slam.launch

 如果最终是这样,说明成功了。

接下来需要控制键盘完成小车移动建图,在建完图后,执行代码

rosrun map_server map_saver -f path

完成地图的保存,保存完会生成2个文件,一个pgm文件和一个yaml文件,即地图图片文件和地图描述文件。

如图中的my_ground.pgm和my_ground.yaml

 四.完成在新建地图下的导航

在navigation_sim_demo/README.md文件,查看发现地图的加载是在amcl_demo.launch里实现的,因此我们复制一份该文件,并重命名为my_ground_amcl.launch,并修改如下

<launch>
  <!-- Map server -->
  <arg name="map_file" default="$(find slam_sim_demo)/maps/my_ground.yaml"/>
  <node name="map_server" pkg="map_server" type="map_server" args="$(arg map_file)" />

  <!-- Localization -->
  <arg name="initial_pose_x" default="5.0"/>
  <arg name="initial_pose_y" default="0.0"/>
  <arg name="initial_pose_a" default="-2.0"/>
  <arg name="custom_amcl_launch_file" default="$(find navigation_sim_demo)/launch/include/robot_amcl.launch.xml"/>

  <include file="$(arg custom_amcl_launch_file)">
    <arg name="initial_pose_x" value="$(arg initial_pose_x)"/>
    <arg name="initial_pose_y" value="$(arg initial_pose_y)"/>
    <arg name="initial_pose_a" value="$(arg initial_pose_a)"/>
  </include>

  <!-- Move base -->
 <include file="$(find navigation_sim_demo)/launch/include/move_base.launch.xml"/>
</launch>

可见,在第三行修改成了刚刚建好的my_ground.yaml地图配置文件。

接着执行代码

roslaunch robot_sim_demo my_ground.launch
roslaunch navigation_sim_demo my_ground_amcl.launch
roslaunch navigation_sim_demo view_navigation.launch

实现在现有地图的导航

 可以看到,小车成功在地图导航。

感兴趣的小伙伴也可以自己搭建仿真环境,实现建图和导航。

也可以把差速轮换成麦克纳姆轮,这也是我之后想做的地方,大家可以多学习交流。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 很抱歉,我是一名AI语言模型,无法进行安装操作。但是,我可以提供一些安装ROS Academy for Beginners的指导: 1. 首先,确保你的计算机已经安装了ROS(Robot Operating System)。 2. 在终端中输入以下命令,下载ROS Academy for Beginners: ``` git clone https://github.com/qboticslabs/ros-academy-for-beginners.git ``` 3. 进入下载的文件夹: ``` cd ros-academy-for-beginners ``` 4. 运行安装脚本: ``` ./install.sh ``` 5. 安装完成后,你可以在终端中输入以下命令,启动ROS Academy for Beginners: ``` roslaunch academy academy.launch ``` 希望这些指导能够帮助你安装ROS Academy for Beginners。如果你遇到了任何问题,可以在ROS社区中寻求帮助。 ### 回答2: 首先,安装ROS的前提是已经安装好了Ubuntu操作系统,推荐使用Ubuntu 18.04。可以从Ubuntu的官网上下载系统镜像并且安装。 其次,在安装ROS之前,需要先添加ROS的软件源,这里以Melodic版本为例。打开终端,输入以下命令,添加ROS的软件源: ``` sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' ``` 由于ROS的安装需要与ubuntu操作系统的软件进行整合,为了确保最佳匹配,需要先运行以下命令进行更新: ``` sudo apt update sudo apt upgrade ``` 然后是ROS的安装,运行以下命令: ``` sudo apt install ros-melodic-desktop-full ``` 该命令会安装ROS桌面完整版,其中包含许多常用的软件包和工具。安装完成后,可以通过以下命令检查ROS的版本: ``` rosversion -d ``` 接下来,还需配置ROS环境变量。在终端中输入: ``` echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` 安装ROS的最后一步是安装ROS初始工作区(catkin工作区)。打开终端,输入以下命令: ``` mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make ``` 这个命令创建一个名为catkin_ws的文件夹,并在其中创建一个src文件夹,用于存放ROS软件包源代码。 最后,我们可以安装ros-academy-for-beginners这个包,这个包可以用于学习ROS的基础知识,包括ROS的概念、练习和示例等等。在终端输入以下命令: ``` cd ~/catkin_ws/src git clone https://github.com/OTL/ros-academy-for-beginners.git cd ~/catkin_ws catkin_make ``` 至此,ros-academy-for-beginners的安装就完成了。如果想要使用该软件包内的示例和练习程序,可以查看ros-academy-for-beginners中的README文件,然后通过以下命令运行: ``` roslaunch ros_academy_publisher publisher.launch ``` ### 回答3: ROS(机器人操作系统)是一种流行的开源软件框架,它可以帮助开发人员为机器人软件构建底层、中间层、以及可视化的应用程序。ROS Academy for Beginners是一个为初学者提供ROS学习和实践的平台,这个平台包含了一系列的教程,如基础知识、机器人操作、感知和导航等。 在安装ROS Academy for Beginners之前,首先需要准备以下工具: 1. 一个ROS Kinetic(或更高版本)的Ubuntu操作系统。 2. 一个支持VirtualBox或VMware的虚拟机管理软件。 3. 一个ROS学习环境的Ubuntu虚拟机镜像文件。 下面是安装ROS Academy for Beginners的步骤: 1. 在VirtualBox(或其他虚拟机软件)中创建一台新的虚拟机。请确保选择Ubuntu x64的版本。 2. 启动Ubuntu虚拟机,并使用管理员权限运行Terminal。 3. 输入以下命令,添加ROS Kinetic的存储库以及密钥: $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' $ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 4. 更新存储库并安装ROS Kinetic Desktop Full: $ sudo apt-get update $ sudo apt-get install ros-kinetic-desktop-full 5. 安装ROS依赖项: $ sudo apt-get install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential 6. 初始化rosdep: $ sudo rosdep init $ rosdep update 7. 设置ROS环境变量: $ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc $ source ~/.bashrc 8. 下载ROS Academy for Beginners虚拟机镜像: $ wget https://s3-us-west-2.amazonaws.com/ros-academy/ROS-Academy-For-Beginners.ova 9. 启动VirtualBox软件,选择“File” -> “Import Appliance”,并选择已下载的ROS Academy for Beginners虚拟机镜像文件。 10. 等待虚拟机导入完成后,启动ROS Academy for Beginners虚拟机,并按照教程开始学习ROS! 希望这些步骤可以帮助您安装ROS Academy for Beginners。如果您在安装过程中遇到任何问题,请参考ROS官方文档或社区论坛,寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值