在Ubuntu上部署ROS以及如何搭建工作空间和功能包的创建与编译

发布于:2022-10-13 ⋅ 阅读:(661) ⋅ 点赞:(0)

在这里插入图片描述

ROS在Ubuntu部署

Ubuntu18.04安装Ros(最新最详细亲测)

ROS目前只能在基于Unix的平台上运行。ROS的软件主要在Ubuntu和Mac OS X 系统上测试,同时ROS社区仍持续支持Fedora,Gentoo,Arch Linux和其它Linux平台。

Ubuntu系统可以通过在终端输入命令的形式实现各种操作:

鼠标右键打开终端 (Ctrl + Alt + T)

Ubuntu下操作指令

熟悉使用Linux下的操作环境,掌握基本的shell命令即可

在这里插入图片描述

什么是工作空间

在这里插入图片描述

工作空间(workspace是一个存放工程开发相关文件的文件夹。

典型的工作空间中一般包括以下四个目录空间:

1)src:代码空间(Source Space),开发过程中最常用的文件夹,用来存储所有ROS功能包的源码文件。
2)build:编译空间(Build Space),用来存储工作空间编译过程中产生的缓存信息和中间文件。
3)devel:开发空间(Development Space),用来放置编译生成的可执行文件。
4)install:安装空间(Install Space),编译成功后,可以使用make install命令将可执行文件安装到该空间中。安装空间并不是必须的。

ROS工作环境创建

1、创建工作空间:首先使用系统命令创建工作空间目录,之后运行ROS的工作空间初始化命令。

mkdir –p ros_wxw/src
cd ros_wxw/src
catkin_init_workspace

在这里插入图片描述

2、编译工作空间:创建完成后,可以在工作空间的根目录下使用ctakin_make命令编译整个工作空间

cd ..
catkin_make 

在这里插入图片描述

3、设置环境变量:编译完成后,在devel文件夹中会产生setup.*sh形式的环境变量设置脚本,使用source命令运行脚本,则工作空间中的环境变量可以生效

source devel/setup.bash

4、检查环境变量:为确保环境变量已经生效,可用命令检查

echo $ROS_PACKAGE_PATH

在这里插入图片描述

ROS功能包创建及编译

ROS功能包是ROS软件中的基本单元,包含ROS节点、库、配置文件等。
功能包创建在工作空间src文件夹下,功能包创建命令:

语法

catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

ROS功能包在一个工作空间下可以存在多个,但是多不能存在同名功能包,在不同工作空间下可以存在同名功能包。

实现

cd ros_wxw/src
catkin_create_pkg  helloworld_pkg  roscpp  rospy  std_msgs

在这里插入图片描述

其中roscpp是ROS的C++实现,rospy是ROS的Python实现,std_msgs是ROS定义的一些标准消息库。编译功能包:

cd ros_wxw
catkin_make
source devel/setup.bash

在这里插入图片描述

此时,helloworld_pkg功能包文件夹如下图所示:

在这里插入图片描述

其中:include文件夹放置功能包中需要用到的头文件;src文件夹放置需要编译的C++代码;package.xml为功能包清单, CMakeLists.txt记录编译器编译功能包的规则;
打开CMakeLists.txt如下图所示:

在这里插入图片描述

文件CMakeLists.txt是用于构建软件包的 CMake 构建系统的输入。CMakeLists.txt文件必须遵循一定的格式,否则功能包将无法构建。

1)所需的 CMake 版本( cmake_minimum_required() )
2)包名( project() )
3)查找构建所需的其他 CMake/Catkin 包( find_package() )
4)启用 Python 模块支持( catkin_python_setup() )
5)消息/服务/操作生成器(add_message_files()、add_service_files()、add_action_files())
6)调用消息/服务/动作生成( generate_messages() )
7)指定包构建信息导出(catkin_package())
8)要构建的可执行文件(add_executable()/target_link_libraries() )
9)要构建的测试(catkin_add_gtest())
10)安装规则( install() )

3)查找构建所需的其他 CMake/Catkin 包( find_package() )
CMake find_package函数指定需要找到哪些其他 CMake 包来构建我们的项目,例如:

语法

find_package(catkin REQUIRED COMPONENTS
	roscpp
	rospy
	std_msgs
)

8)要构建的可执行文件(add_executable()/target_link_libraries() )
要指定必须构建的可执行目标,我们必须使用add_executable() CMake 函数。

语法

add_executable(myProgram   src/file.cpp   src/another_file.cpp)

这将构建一个名为myProgram的目标可执行文件,它由 2 个源文件构建:src/file.cpp、src/another_file.cpp。(可以在这里面加多个源文件)

使用target_link_libraries()函数指定可执行目标链接的库。这通常在add_executable()调用之后完成。

语法

target_link_libraries(<executableTargetName>, <lib1>, <lib2>, ... <libN>)

打开helloword_pkg,将下面的代码加入进去

在这里插入图片描述

实现

add_executable(myprogram src/helloworld.cpp)
target_link_libraries(myprogram
   ${catkin_LIBRARIES}
 )

在这里插入图片描述

hello world程序编写

在功能包的src文件夹下创建helloworld.cpp文件

touch helloworld.cpp

在这里插入图片描述注意路径!!!

#include "ros/ros.h"//包含ROS库

int main(int argc, char *argv[])
{
    //执行 ros 节点初始化
    ros::init(argc,argv,"hello");

    //在终端输出 hello world
    ROS_INFO("hello world!");

    return 0;
}
vi helloworld.cpp

在这里插入图片描述
保存之后回到工作空间目录下启动终端1,编译功能包,配置环境变量:

cd ros_wxw
catkin_make
source devel/setup.bash

在这里插入图片描述
另启动终端2,启动ROS master:

roscore

在这里插入图片描述
然后在终端1运行功能包

语法

rosrun <功能包名>  <节点名>

实现

rosrun  helloworld_pkg  myprogram

在这里插入图片描述

总结

通过上述的环境搭建以及功能包的构建和编译,我们大题可以了解到如何在ros环境下编译和书写代码,通过比较常规的操作,也是一个较为固定的操作完成的这样一个从构建工作环境到功能包的编译。

每文一语

记忆是一种持续的输出

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到