企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 1.5 安装ROS-Academy-for-Beginners教学包 在1.4节我们已经用apt工具安装好了ROS,apt安装的软件包都是二进制形式,可以在系统中直接运行,它们是ROS官方提供给用户的应用程序。然而很多时候我们需要自己做一些定制改写,或者运行第三方开发的软件包,这个时候就需要下载源代码进行编译。 本节我们下载本书配套的ROS-Academy-for-Beginners软件包,给读者演示源码包下载-编译-运行的完整流程。后续章节的主要代码都基于这个软件包,请读者按照流程下载编译。 ## 下载源码包 在Ubuntu系统上,确保git已经安装 ```bash $ sudo apt-get install git ``` 然后在创建一个名为tutorial_ws的工作空间,在它的的src路径下克隆ROS-Academy-for-Beginners软件包 ```bash $ cd $ mkdir -p tutorial_ws/src #创建catkin工作空间 $ cd tutorial_ws/src #进入src路径,克隆教学软件包 $ git clone https://github.com/DroidAITech/ROS-Academy-for-Beginners.git ``` ## 安装依赖 并且安装ROS-Academy-for-Beginners所需要的依赖 ```bash $ cd ~/tutorial_ws $ rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y ``` **注意**:以上命令非常重要,缺少依赖将导致软件包无法正常编译和运行。 在开始编译之前,需要确保Gazebo在7.0版本以上 ```bash $ gazebo -v #确认7.0及以上 ``` 如果你的Gazebo版本低于7.0,则需要进行升级 ```bash $ sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list' $ wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install gazebo7 ``` ## 编译 接着回到catkin_ws下编译 ```bash $ cd ~/tutorial_ws $ catkin_make $ source ~/tutorial_ws/devel/setup.bash #刷新环境 方法一 $ rospack profile #刷新环境 方法二 ``` **注意**:source命令,编译完成后必须刷新一下工作空间的环境,否则可能找不到工作空间。许多时候我们为了打开终端就能够运行工作空间中编译好的ROS程序,我们习惯把`source ~/tutorial_ws/devel/setup.bash`命令追加到`~/.bashrc`文件中(rosacademy_ws替换为你的工作空间名称),这样每次打开终端,系统就会刷新工作空间环境。你可以通过`echo "source ~/tutorial_ws/devel/setup.bash" >> ~/.bashrc`命令来追加。 ## 运行仿真程序 编译完成后就可以运行本教学配套的仿真了,输入 ```bash $ rospack profile $ roslaunch robot_sim_demo robot_spawn.launch ``` 你会看到仿真画面启动,仿真界面中包括了软件博物馆和Xbot机器人模型。 ![](https://img.kancloud.cn/7d/e2/7de2c6d1999cd91faf194940f9b46b1d_1855x1056.png) 再打开一个新的终端,输入以下命令,用键盘控制机器人移动 ```bash $ rosrun robot_sim_demo robot_keyboard_teleop.py ``` 聚焦控制程序窗口,按下i、j、l等按键,这样你就可以通过键盘来控制机器人的移动了。 当你完成了这一步,首先恭喜你,你已经完成了ROS最常见的源码下载-安装依赖-编译-运行的流程,在ROS社区有许许多多这样的软件包,基本都按照这样的流程来运行。相信你一定可以举一反三。 ![](https://img.kancloud.cn/d6/d5/d6d50880018aad5285402b87c18b0dcd_854x511.jpg) 键盘控制仿真机器人移动这个demo展现了ROS分布式消息收发的特性。我们打开的虽然是键盘控制程序,但它可以替换为手柄控制、手机平板控制、甚至是路径规划自动控制。模拟器里的机器人并不关心是谁发给它的消息,它只关心这个消息是什么(速度、角速度等指令)。所以,每一个进程(节点)都各司其职,负责不同的任务,同时定义好消息收发的接口。如果我们现在要做路径规划任务,那么我们只用单独再开发一个节点,同样向底盘发送我们解算出的速度/角速度指令就可以了。 你现在可能对ROS工作方式还一无所知,不过不要紧。后续我们会对ROS涉及的这些概念进行详细介绍,等你看完了这本书,你就能明白整个ROS框架运行的原理,甚至自己能编程实现一些功能模块了。