ROS中 helloworld 的实现(详细版)

目录

背景介绍:

1. 创建功能包:

2. 修改CMakeLists.txt文件

3.修改package.xml文件

4. 编译工作区

5. 设置环境变量并运行


背景介绍:

Ubuntu 16.04 + ROS kinetic;

已经创建的工作空间catkin_ws;

1. 创建功能包:

ctrl+alt+T新开一个终端,进入src文件夹,创建功能包 agitr:

cd catkin_ws/src
catkin_create_pkg agitr

我们可以看见功能包内包含以下文件:

CMakeLists.txt  package.xml

在该功能包下面创建文件夹src:

cd agitr
mkdir src

在src文件夹中创建hello.cpp文件,并修改文件内容:

touch hello.cpp
sudo gedit hello.cpp

hello.cpp内容为以下:

#include<ros/ros.h>

int main(int argc,char **argv){   

ros::init(argc,argv,"hello_ros");   

ros::NodeHandle nh;   

ROS_INFO_STREAM("hello,ROS!");

}

2. 修改CMakeLists.txt文件

退回到agitr文件夹中,修改CMakeLists.txt文件,

sudo gedit CMakeLists.txt

内容如下:

cmake_minimum_required(VERSION 2.8.3)
project(agitr)
#添加需要的依赖库 roscpp
find_package(catkin REQUIRED COMPONENTS roscpp)
include_directories(
${catkin_INCLUDE_DIRS}
)
#声明想要的可执行文件的文件名,以及所需要的源列表,如果有多个源列表,空格列在此处
add_executable(hello src/hello.cpp)
#告诉Cmake当链接此可执行文件时需要链接哪些库
target_link_libraries(hello ${catkin_LIBRARIES})

3.修改package.xml文件

修改package.xml文件,

sudo gedit package.xml

此处只需在  <buildtool_depend>catkin</buildtool_depend>后面添加两句即可

  <build_depend>roscpp</build_depend>
  <exec_depend>roscpp</exec_depend>

4. 编译工作区

退回到catkin_ws工作区并编译:

cd ~/catkin_ws
catkin_make

5. 设置环境变量并运行

设置环境变量:

source devel/setup.bash

执行hello.cpp, 新建一个终端:

roscore

再建一个终端:

rosrun agitr hello

运行结果如下:

username@xxxxxxxxxxxxxxx:~$ rosrun agitr hello 
[ INFO] [1539062946.987498330]: hello,ROS!

 

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ROS实现一个简单的"Hello World"程序很简单。首先,你需要创建一个ROS工作空间,并在其创建一个新的ROS软件包。然后,在软件包的src文件夹创建一个新的C++源文件,编写一个ROS节点来发布一个简单的字符串消息。 以下是实现的步骤: 1. 创建ROS工作空间(如果你已经有一个工作空间,可以跳过此步骤): ``` $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/ $ catkin_make ``` 2. 创建ROS软件包并进入软件包目录: ``` $ cd ~/catkin_ws/src $ catkin_create_pkg hello_world std_msgs roscpp $ cd hello_world ``` 3. 创建一个名为"hello_world.cpp"的C++源文件: ``` $ touch src/hello_world.cpp $ chmod +x src/hello_world.cpp ``` 4. 使用文本编辑器打开"hello_world.cpp"文件,并编写以下代码: ```cpp #include <ros/ros.h> #include <std_msgs/String.h> int main(int argc, char** argv) { ros::init(argc, argv, "hello_world_node"); ros::NodeHandle nh; ros::Publisher pub = nh.advertise<std_msgs::String>("hello_world_topic", 10); ros::Rate rate(10); while (ros::ok()) { std_msgs::String msg; msg.data = "Hello, world!"; pub.publish(msg); ros::spinOnce(); rate.sleep(); } return 0; } ``` 5. 编译并运行ROS节点: ``` $ cd ~/catkin_ws/ $ catkin_make $ source devel/setup.bash $ rosrun hello_world hello_world_node ``` 现在,ROS节点将会以10Hz的频率发布一个字符串消息到名为"hello_world_topic"的话题。你可以使用ROS工具来查看发布的消息,如下所示: ``` $ rostopic echo hello_world_topic ``` 你将会看到"Hello, world!"的消息不断地在终端打印出来。这就是一个简单的ROS "Hello World"程序的实现
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值