【ROS】HelloROS

本文详细介绍了ROS工作空间的创建、环境变量配置、功能包的建立、源代码放置与编译,以及程序执行和roslaunch的使用。通过实例演示了从创建工作空间到运行ROS节点的整个过程,帮助读者掌握ROS开发的基本操作。
摘要由CSDN通过智能技术生成

1、创建工作空间

mkdir -p /目录/catkin_helloSLAM/src  #创建一个工作空间
cd /目录/catkin_helloSLAM/src   #进入该目录
catkin_init_workspace   #会产生一个Cmake.list文件在该目录下

编译空的工作空间

cd ..  #回到与src同级别的路径下
catkin_make

这个时候会多了两个文件夹,一个devel和一个build。并且在devel下有几个setup.*sh,我们可以根据我们的终端类型来进行确定使用那个sh来激活环境变量,如我使用的是bash终端,在src同级别的路径的终端下运行

source devel/setup.bash #激活该工作空间的环境变量
echo $ROS_PACKAGE_PATH #读取环境变量,检查环境变量是否生效。我的为/home/lexiaoxia/Codes/lxxcodes/HelloROS/src:/opt/ros/kinetic/share
打印的路径中已经包含当前工作空间的路径,就说明环境变量设置成功。

也可以在终端的配置文件中加入环境变量的设置:
echo "source /目录/devel/setup.bash">>~/.bashrc
之后就不用每次开一个终端都重新激活啦。

2.创建功能包(package)

cd src #进入src空间
catkin_create_pkg [pkg_name] std_msgs roscpp rospy 
#创建功能包,pkg_name为包名字,后面的为依赖。注意,pkg_name只能包含小写字母。

catkin_create_pkg hello_slam roscpp
功能包名字只能是小写哦

这个命令会创建一个package,并在这个包下面生成了一系列的文件和文件夹:

CMakeLists.txt  include  package.xml  src。其中package.xml是配置文件,生产所需要的依赖

3.放置源代码

我们把源代码放入到src文件中后,对CMakeList.txt和package.xml进行修改。

CMakeList.txt也会自动生成好,需要增加一句可执行文件的生成,和库文件的链接(若需要别的文件,则对应添加别的语句):

#声明想要的可执行文件的文件名,以及所需要的源列表,如果有多个源列表,空格列在此处
add_executable(helloSLAM src/helloSLAM.cpp)

target_link_libraries(helloSLAM ${catkin_LIBRARIES})

也可以不改:更方便,不用改名称直接引用就好。
add_executable(${PROJECT_NAME}_node src/hello_vins_node.cpp)

target_link_libraries(${PROJECT_NAME}_node ${catkin_LIBRARIES})

package.xml基本上不需要改动,会自动生成好。

4.源码的编译

接着就是编译工作区:

cd /catkin_目录  #回到工作区中与src同一层的路径下
catkin_make #进行编译

5.程序的执行

更新环境变量(每个终端):

#环境变量配置,使新建的catkin_ws工作空间可用
source devel/setup.bash

新建一个终端: roscore

再建一个终端: rosrun hello_slam helloSLAM

roscore有遇到一个问题:

roscore cannot run as another roscore/master is already running. 
Please kill other roscore/master processes before relaunching.
The ROS_MASTER_URI is http://H:11311/
The traceback for the exception was written to the log file

解决:ROS官网解决方法:https://answers.ros.org/question/172879/kill-other-roscoremaster-processes-on-bourn-shell/

killall -9 roscore

killall -9 rosmaster

输出结果:

[ INFO] [1625929949.372822946]: hello,ROS!

ctrl+c是杀死roscore(推荐)

ctrl+z可能只是中断运行。

更多介绍:error是由于忘记运行roscore。

运行不同的功能包不同的节点

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21heTA1MjI=,size_16,color_FFFFFF,t_70

6、Roslaunch运行

 home目录下ctrl+h显示隐藏文件,在对应的log文件中找到,显示输出的结果:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21heTA1MjI=,size_16,color_FFFFFF,t_70

roslaunch把结果直接输出在终端:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21heTA1MjI=,size_16,color_FFFFFF,t_70

7、若有多个节点node运行创建launch包

catkin_create_pkg launch建立功能包格式会识别格式
cd src/launch
touch run.launch

launch文件内容:

pkg:功能包的名称,通过catkin_create_pkg建立功能包的名称
name:节点名称,通过ros::init()可以设定
type:可执行文件的名称

通过rqt_graph可以查看节点之间发布的消息。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不做笔记的程序员不是好的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值