一、ROS基础
1、工作空间介绍
工作空间存放工程开发相关的文件夹。各文件含义如下:
src: 代码空间,存放功能包源码。
build: 编译空间,存放编译产生的中间文件。
devel: 开发空间,存放编译后的可执行文件,环境变量 配置的脚本等。
install: 安装空间,和devel作用基本一致,一般使用install命令将可执行文件等安装到这个文件夹。
2、创建工作空间过程
(1)catkin_ws为自己命名的工作空间名称;
(2)设置环境变量目的是让系统找到功能包的位置,仅在当前终端有效。
(3)可以把指令放置在终端的配置文件(home目录下),此时在新打开终端配置的环境变量依然有效。具体操作如下:
vi ~/.bashrc //编辑器打开配置文件
source ~/catkin_ws/devel/setup.bash //加在最后一行
:wq //保存退出
source ~/.bash //终端输入,让配置在当前终端生效
3、创建功能包过程
(1)功能包:实现机器人某个功能的单元,可以在里面创建具体的代码。
(2)rospy是使用python实现的库,roscpp是是使用cpp实现的库,std_msgs是标准消息库,创建功能包时一般都会依赖这三个库实现。
4、编写编译源文件和配置文件
(1)在功能包目录下的src文件下创建.cpp源文件,编写程序。示例如下:
touch helloworld.cpp //创建源程序
(2)编写如下
(3)配置CMakeLists.txt文件。在功能包目录下,找到add_executable和target_link_libries将注释去掉,其中${PROJECT_NAME}_node改为hello(任意命名),后面改为src/cpp文件名,保存退出。示例如下:
(4)然后回到工作空间目录下,输入如下命令编译执行:
catkin_make //100%表示没错,有红字检查之前的操作
Ctrl+Alt+T //打开新的终端
roscore //启动ros核心
source ./devel/setup.bash //原终端输入,添加环境变量
rosrun helloworld hello //helloworld为功能包名,hello为配置文件中的命名。
5、ROS工作空间的Overlaying机制
(1)即工作空间的覆盖,可以更好管理系统中许多个工作空间,管理同名功能包。输入以下命令:
env | grep ros //查看和ros相关的环境变量,关注 ROS_PACKAGE_PATH的日志信息。
sudo apt_get install ros-kinetic-roscpp-tutorials //安装ros下的功能包,该功能包是一些ros例程,可以用于实践来领会该管理机制。
(2)如下图:
(3)ros查找功能包的路径是在ROS_PACAKAGE_PATH下依次查找,后创建的功能包路径会放在前面。因此在不同工作空间下有同名功能包时,有需要注意该机制。
古月-机器人操作系统ROS理论学习笔记
其他学习参考资料
ros answer
ros wiki
关注点赞,好运多多~