使用版本:Ubuntu 16.04 ROS Kinetic(已安装)
观前提示,本文主要罗列引用文章,顺便充当自己的参考备份
毕竟这些太基础了,教程还是很多很详细的,照着教程步骤来就好了
参考目录
安装小乌龟(即ROS Kinetic)教程,如有需要请参考:(假装这里有个链接)
创建工作空间和功能包
工作空间可以简单理解为工程目录
1.通过mkdir创建一个工作空间文件夹
2.再在工作空间里创建一个src文件夹,用于存放代码文件
3.创建后进入src文件夹,执行工作空间初始化
4.最后返回工作空间文件夹,利用catkin_make指令,执行工程项目编译
————————————
编译成功后会生成build、devel目录
创建工作空间效果:
输入该代码正确返回以下信息即代表工作变量配置正确
echo $ROS_PACKAGE_PATH
/home/用户名/工作空间名/src:/opt/ros/Kinetic(ROS版本)/share
创建功能包
1.在src文件夹,利用catkin_create_pkg指令创建功能包
2.返回工程目录,重新catkin_make编译
3.添加环境变量,使系统找到工作空间
————————————
成功后能看到 绿色加号和processing catkin package:‘新加的功能包名’
创建并编译功能包效果:
添加环境变量:
source devel/setup.bash //添加环境变量
echo $ROS_PACKAGE_PATH //检查环境变量,不允许同名功能包在同一个目录下。
创建消息文件和服务文件
消息文件
1.创建消息目录和消息文件
—— 创建消息目录
在自己创建的功能包下新建msg文件夹
—— 创建消息文件
1.在msg文件下新建msg1.msg(后缀名为msg的文件)
2.在msg1.msg文件中定义消息的字段和类型
————————————
以上2个步骤可直接右键新建,也可使用终端命令执行
命令行新建:
mkdir ~/catkin_ws/src/功能包名/msg
gedit ~/catkin_ws/src/功能包名/msg/msg1.msg
catkin_ws是ROS工作空间的名称,src是存储包源代码的目录,msg是用于存储消息定义文件的目录
定义消息字段和类型:(记得点保存)
2.配置package.xml 与 CMakelists.txt
—— 配置package.xml
告诉ROS该包需要使用消息生成器和消息运行时库
—— 配置CMakelists.txt
告诉ROS在构建过程中使用消息生成器,并将自定义消息类型添加到该包的构建中
————————————
说实话我自己也不懂
在功能包内的package.xml 创建以下语句:
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
在构建的时候需要"message_generation",在运行的时候需要"message_runtime"
这两行的作用是确认msg以及后面的srv文件能转成C++或python源码或其他语言
效果如图:
在功能包内的CMakelists.txt 创建以下语句:(建议ctrl+f搜索)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
add_message_files(
FILES
msg1.msg
)
generate_messages(
DEPENDENCIES
std_msgs
)
catkin_package(
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
)
效果图:
3.验证效果
返回catkin_ws 工作空间重新编译
输入命令检查终端输出内容
依次输入以下命令进行编译
cd ~/catkin_ws
catkin_make
检查终端输出内容
rosmsg show 功能包名/msg1
服务文件
1.创建服务目录和服务文件
—— 创建消息目录
在自己创建的功能包下新建srv文件夹
—— 创建消息文件
1.在srv文件下新建srv1.srv(后缀名为srv的文件)
2.在srv1.srv文件中定义服务的字段和类型
————————————
和msg文件类似
命令行新建:
mkdir ~/catkin_ws/src/功能包名/srv
gedit ~/catkin_ws/src/功能包名/srv/srv1.srv
float32 h
float32 w
---
float32 area
2.配置 CMakelists.txt
add_service_files(
FILES
srv1.srv
)
3.确保已经在新建msg时完成(此处无需操作,按理来说已经做了)
修改package.xml:添加如下代码,注意添加的位置,放在之前。(上一步自定义msg时已完成)
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
修改CMakeLists.txt:
在find_package中添加message_generation(已完成)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
在catkin_package中添加CATKIN_DEPENDS message_runtime(已完成)
catkin_package(
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
)
4.验证效果
返回catkin_ws 工作空间重新编译
输入命令检查终端输出内容
依次输入以下命令进行编译
cd ~/catkin_ws
catkin_make
检查终端输出内容
rossrv show 功能包名/srv1