0 准备工作
查看系统的版本
sudo lsb_release -a
sudo cat /etc/issue
1 ROS 安装
不同的操作系统对应不同的版本
http://wiki.ros.org/noetic/Installation/Ubuntu
如果缺其他的依赖可以根据自己ros版本安装依赖包
sudo apt install ros-noetic-PACKAGE
2 ROS系统文件
ROS文件系统级指的是在硬盘上ROS源代码的组织形式,其结构大致可以如下图所示:
WorkSpace --- 自定义的工作空间
|--- build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。
|--- devel:开发空间,用于存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等。
|--- src: 源码
|-- package:功能包(ROS基本单元)包含多个节点、库与配置文件,包名所有字母小写,只能由字母、数字与下划线组成
|-- CMakeLists.txt 配置编译规则,比如源文件、依赖项、目标文件
|-- package.xml 包信息,比如:包名、版本、作者、依赖项...(以前版本是 manifest.xml)
|-- scripts 存储python文件
|-- src 存储C++源文件
|-- include 头文件
|-- msg 消息通信格式文件
|-- srv 服务通信格式文件
|-- action 动作格式文件
|-- launch 可一次性运行多个节点
|-- config 配置信息
|-- CMakeLists.txt: 编译的基本配置
3 ROS 创建工作空间
3.1 先创建一个工作空间
mkdir -p demo_ws/src
cd demo_ws/
catkin_make
demo_ws为工作空间
3.2再创建一个功能包
cd src
catkin_create_pkg helloword roscpp rospy std_msgs
3.3 编辑源文件
cd helloword/src
touch helloword_c.cpp
vi helloword_c.cpp
写入代码
简单的例子可以复制c++代码
//1.包含ros的头文件
#include "ros/ros.h"
//2.编写main函数
int main(int argc, char *argv[]){
//3.初始化ros节点
ros::init(argc,argv,"hello_node");
//4.输出日志
ROS_INFO("hello world!");
return 0;
}
3.4 编辑配置文件
打开源文件下的CMakeLists.txt文件修改如下2处
add_executable(helloword_c src/helloword_c.cpp)
target_link_libraries(helloword_c
${catkin_LIBRARIES}
)
3.5 编译并执行
source ./devel/setup.bash
catkin_make
3.6运行
roscore
rosrun helloword helloword_c
直接写入当前用户的环境变量文件中使用更方便,
echo “source ~/工作空间/devel/setup.bash” >> ~/.bashrc
ROS问题汇总
解决方案:
查看
rosclean check
删除
roslclean purge
- [rospack] Error: package ‘helloword’ not found
如果没有增加环境变量,上次的环境变量只对一个终端起作用。使用如下添加环境变量。
source ./devel/setup.bash
使用如下命令查看工作空间的情况。
catkin config --profile default
3. RLException: [*** is neither a launch file in package [] nor is [] a launch file name
The traceback for the exception was written to the log file
这是因为setup.bash文件没有进一步说明包的来源,解决方法是:
source devel/setup.bash
使用如下命令可以修改Extending的环境变量
source /opt/ros/noetic/setup.bash