赞
踩
- mkdir -p 自定义空间名称/src
-
- cd 自定义空间名称
首先会创建一个工作空间以及一个 src 子目录,然后再进入工作空间调用 catkin_make命令编译,如下图。
catkin_make:ros里面的一个编译命令,编译完会输出日志,如下图。
打开工作空间后出现devel文件和build文件,如下图。
进入工作空间里面的src目录
cd src
创建功能包 roscpp rospy std_msgs:为三个依赖包,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。
catkin_create_pkg 自定义ROS包名 roscpp rospy std_msgs
创建后文件夹会发生变化,如下图。
会出现一些文件夹和一些cmake文件
cd 自定义的包
源文件放在第二个src文件下
创建源文件
源文件包含:ros头文件、main函数、初始化节点、输出日志。
Vim编译器编译helloworld.Cpp文件
- #include "ros/ros.h"
-
-
-
- int main(int argc, char *argv[])
-
- {
-
- //执行 ros 节点初始化
-
- ros::init(argc,argv,"hello");
-
- //创建 ros 节点句柄(非必须)
-
- ros::NodeHandle n;
-
- //控制台输出 hello world
-
- ROS_INFO("hello world!");
-
-
-
- return 0;
-
- }

键入i进入编辑模式,编辑完内容后按ESC在输入“:wq”保存退出。
输入cd ..返回上一级目录编辑CMakeLists.tt
vim CMakeLists.txt
去掉下图剪头指处的注释
上面两句代码改为:
- add_executable(源文件名(可以随便,这里的名字,但要和下面那句代码名字对应一致)
-
- src/步骤3的源文件名.cpp
-
- )
-
- target_link_libraries(步骤3的源文件名
-
- ${catkin_LIBRARIES}
-
- )
示例:
- add_executable(helloworld src/helloworld.cpp)
-
-
-
- target_link_libraries(helloworld
-
- ${catkin_LIBRARIES}
-
- )
输入完成后同样键入“:wq”保存退出。
键入“cd ../../”返回工作空间
键入“catkin_make”编译
如下图显示为编译成功
如果出现错误会有红色错误提示。
执行要先启动ros核心,这里要新建窗口(Ctrl+Shift+E)
指令:
- cd 工作空间
-
- source ./devel/setup.bash 构建环境变量
-
- rosrun 包名 C++节点
其中对于 source ./devel/setup.bash 的解释(使用source构建环境变量)将对应的工作空间的路径加入环境变量ROS_PACKAGE_PATH中。如果新开了一个终端命令行,在使用该工作空间前,必须先将该工作空间的路径加入环境变量ROS_PACKAGE_PATH中这句话的目的就是在开新的terminal的时候,运行这个setup.bash,而这个setup.bash的作用是让一些ROS* 开头的命令可以使用。在工作空间的devel文件夹中存在几个setup.*sh形式的环境变量设置脚本。使用source命令运行这些脚本文件,则工作空间的环境变量设置可以生效(如可以找到该工作空间内的项目)
最后输出
[ INFO] [1680504844.008447821]: hello world!
至此c++的一个程序就成功完成!
- cd ros包 进入功能包
-
- mkdir scripts 创建scripts文件夹
- cd scripts 进入script文件夹
-
- touch helloworld.py 创建helloworld.py文件
用vim进行编辑,添加内容:
- #! /usr/bin/env python
-
- #指定解释器
-
- """
- Python 版 HelloWorld
- """
-
- import rospy
-
- #主入口
-
- if __name__ == "__main__":
-
- rospy.init_node("Hello") #初始化ros节点
-
- rospy.loginfo("Hello World!!!!") #输出日志

以上代码分为:
编写完成后键入“esc”“:wq”保存退出
键入”ll”指令查看执行权限
上图文件没有执行权限
执行“chmod +x 自定义文件名.py”添加执行权限
返回上一级目录编辑CamkeList.txt 文件这里直接用“vim ../CamkeList.txt”
去掉这里的注释并更改(记得保存退出),更改如下图:
同c++版本
- cd 工作空间
-
- source ./devel/setup.bash
rosrun 包名 自定义文件名.py
运行结果
运行过程中出现以下情况:
解决办法:
当在Python 2.X文件中写中文注释或输出中文时候,经常会出现编译错误(在Python 3.X中没有这种错误。):
- File "/home/l/ros/demo01_ws/src/helloworld/scripts/helloworld.py", line 2
-
- SyntaxError: Non-ASCII character '\xe6' in file /home/l/ros/demo01_ws/src/helloworld/scripts/helloworld.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
这是因为Python 2.X的默认编码文件是用ASCII码,如果想要编译通过,则只需要在文件开头加入一行代码将文件存成UTF-8格式即可。
在代码python代码首行加入“# -*- coding:utf-8 -*- ”
# -*- coding:utf-8 -*-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。