首先感谢古月居、赵虚左老师,感谢autolabor平台带我入门。
链接:
古月居
赵虚左老师:
学习讲义
视频课程
学习前提
基于操作系统Linux,编程语言C++或Python完成
需要安装Linux(Ubuntu)系统,安装ROS(祝顺利【狗头】),安装IDE等工具,具体方式可参考赵虚左老师的视频与讲义内容。
ROS体验流程
ROS中的程序即便使用不同的编程语言,实现流程也大致类似,实现流程大致如下:
1)先创建一个工作空间;
2)再创建一个功能包;
3)编辑源文件;
4)编辑配置文件;
5)编译并执行。
我把流程简单整理如下(供参考):
C++实现
1.创建工作空间与初始化
mkdir -p 【ros_ws_name】/src
//创建工作空间,及工作空间的子目录
cd 【ros_ws_name】
catkin_make
//对工作空间做编译初始化,若工作空间无【src】子目录则无法初始化
//此编译在工作空间产生了build与devel子目录
2.创建ROS包并添加依赖
cd src
catkin_create_pkg 【rospkg_name】 roscpp rospy std_msgs
//在工作空间中创建【自定ROS包名】的功能包,该功能包依赖于 roscpp、rospy 与 std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。
//此命令创建了包名对应的子目录,其中包括【src】子目录及配置文件等
3.编辑源文件步骤
cd /【ros_ws_name】/src/【rospkg_name】/src
//进入自定义功能包之下的【src】子目录中
touch cpp_file_name.cpp (或gedit cpp_file_name.cpp)
//创建并编辑源文件【.cpp文件】
4.编辑C++源文件
#include "ros/ros.h"
//包含ros头文件
int main(int argc, char *argv[])
//编写ros的main函数
{
ros::init(argc, argv, "node_name_demo1");
//初始化ros节点
ROS_INFO("hello world!");
//输出日志
return 0;
}
5.编辑ROS包下的配置文件CamkeList.txt
cd ..
//进入【自定ROS包名】目录
gedit CamkeList.txt
//添加可执行文件
add_executable(【ros_node_name(cpp_file_name)】
src/【cpp_file_name.cpp】
)
//修改目标链接库
target_link_libraries(【ros_node_name(cpp_file_name)】
${catkin_LIBRARIES}
)
6.进入工作空间与编译
cd 【ros_ws_name】
catkin_make
7.执行
roscore
//需要新terminal启动ros核心
cd 【ros_ws_name】
source ./devel/setup.bash
//刷新环境变量
rosrun 【rospkg_name】 【ros_node_name】
//运行
Python实现
1.创建工作空间与初始化
mkdir -p 【ros_ws_name】/src
//创建工作空间,及工作空间的子目录
cd 【ros_ws_name】
catkin_make
//对工作空间做编译初始化,若工作空间无【src】子目录则无法初始化
//此编译在工作空间产生了build与devel子目录
2.创建ROS包并添加依赖
cd src
catkin_create_pkg 【rospkg_name】 roscpp rospy std_msgs
//在工作空间中创建【自定ROS包名】的功能包,该功能包依赖于 roscpp、rospy 与 std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。
//此命令创建了包名对应的子目录,其中包括【src】子目录及配置文件等
3.编辑源文件步骤
cd /【ros_ws_name】/src/【rospkg_name】
//进入自定义功能包之下
mkdir scripts
//创建scripts文件夹
cd scripts
touch python_file_name.py (gedit python_file_name.py)
//创建并编辑源文件【.py文件】
4.编辑Python源文件
#! /usr/bin/env python
# 在非注释的第一行指定Python解释器
import rospy
#导包
if __name__ == “__main__”:
#编写主入口
rospy.init_node(“node_name”)
#初始化ros节点
rospy.loginfo("hello world!")
#输出日志
5.为 python 文件添加可执行权限
chmod +x 【python_file_name.py】
// ll指令可查看权限
6.编辑ROS包下的配置文件CamkeList.txt
该操作在ROS的melodic及之前版本上不需要
cd ..
//进入【自定ROS包名】目录
gedit CamkeList.txt
//指定Python解释器
catkin_install_python(PROGRAMS
scripts/【python_file_name.py】
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
//该操作为Python文件选择恰当的解释器
//该操作在ROS的melodic及之前版本上不需要
7.进入工作空间与编译
cd 【ros_ws_name】
catkin_make
8.执行
roscore
//需要新terminal启动ros核心
cd 【ros_ws_name】
source ./devel/setup.bash
//刷新环境变量
rosrun 【rospkg_name】 【python_file_name.py】
//运行
如有误请指正,感谢!