栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

写一个ROS HelloWord程序,有注释说明

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

写一个ROS HelloWord程序,有注释说明

一、创建一个工作空间 1、创建目录和子目录
 #创建工作空间rosdemo的同时创建子目录src用于存放功能包
 rostest@ubuntu:~$ mkdir -p rosdemo/src
2、切换到子目录下
 rostest@ubuntu:~$ cd rosdemo/src
3、初始化 CMakeLists
 rostest@ubuntu:~/ros_demo/src$ catkin_init_workspace

 初始化之后工作空间子目录src下自动创建了一个CMakeLists.txt文件

 4、编译工作空间
 #返回工作空间主目录
 rostest@ubuntu:~/ros_demo/src$ cd ../
 #编译工作空间
 rostest@ubuntu:~/ros_demo$ catkin_make

编译之后主目录下自动生成了build、devel目录及其子文件,其中在devel目录中已经产生了几个setup.*sh形式的环境变量设置脚本。

rostest@ubuntu:~/ros_demo$ ls
build  devel  src
 5、把工作空间在bash中注册使其环境变量生效并查看是否注册成功
#注册bash
rostest@ubuntu:~/ros_demo$ source devel/setup.bash 
#验证是否注册成功
rostest@ubuntu:~/ros_demo$ echo $ROS_PACKAGE_PATH
#打印出了当前工作空间的路径,则说明环境变量注册成功
/home/rostest/ros_demo/src:/opt/ros/melodic/share
 二、创建ROS功能包 1、进入工作区主目录的src子目录下并创建功能包hellowrod_pak 
#进入工作区主目录的src子目录下
rostest@ubuntu:~/ros_demo$ cd src/
#创建功能包
rostest@ubuntu:~/ros_demo/src$ catkin_create_pkg hellowrod_pak roscpp rospy std_msgs
三、编写cpp文件
#进入功能包存放源代码的src目录
rostest@ubuntu:~/ros_demo/src$ cd hellowrod_pak/src
#创建cpp文件
rostest@ubuntu:~/ros_demo/src/hellowrod_pak/src$ touch helloword.cpp
#编写代码
rostest@ubuntu:~/ros_demo/src/hellowrod_pak/src$ vim helloword.cpp 
#include 
 int main(int argc, char **argv)
{
        ros::init(argc,argv,"hello");//初始化ROS节点
        ros::NodeHandle n;//创建节点句柄
        ROS_INFO("Hello ROS!");//打印日志信息
        ros::spinOnce();//用于处理节点订阅话题和所有回调函数
}

ros::init(argc,argv,"hello");用于初始化ROS节点,括号中前两个参数是用来完成命名重映射等功能的,第三个参数是Publisher(发布者)节点的名称,该名称在ROS节点中是独一无二的,不允许同时存在两个相同名称的节点。

ros::NodeHandle n  是用于和ROS系统交互的主要机制,创建此对象会使当前程序成为节点管理器的节点。
ROS_INFO("Hello ROS!") 类似于C/C++中的printf/cout函数,用于打印日志信息

ros::spinOnce() 用于处理节点订阅话题和所有回调函数,当前发布的节点没有订阅任何消息,spinOnce()函数并不是必须的,但是为了保证功能无误,所以建议所有节点都默认加入该函数。
 

四、编译功能包和工作空间 1、编译功能包
#返回到功能包中主目录:ros_demo/src/hellowrod_pak
rostest@ubuntu:~/ros_demo/src/hellowrod_pak/src$ cd ../
#编辑CMakeLists.txt文件
rostest@ubuntu:~/ros_demo/src/hellowrod_pak$ vim CMakeLists.txt 
cmake_minimum_required(VERSION 3.0.2)
project(hellowrod_pak)
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)
catkin_package()
include_directories(include ${catkin_INCLUDE_DIRS})
add_executable(hello src/helloword.cpp)
target_link_libraries(hello ${catkin_LIBRARIES})

#添加依赖的功能包,其中roscpp提供了ROS的C++客户端,rospy提供了Python客户端,std_msgs包含了常见的数据类型
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)

#编译功能包,用于生成文件
catkin_package()

#用于设置头文件的相对路径,该配置项还包含了catkin编译器默认包含的其他头文件路径
include_directories(include ${catkin_INCLUDE_DIRS})

#设置需要编译的代码和生成可执行的文件,第一个参数为可执行文件的名称,第二个参数是编译的cpp文件路径
add_executable(hello src/helloword.cpp)

#用于设置链接库,第一个参数为链接可执行的文件,后面依次列出需要链接的库
target_link_libraries(hello ${catkin_LIBRARIES})

2、编译工作空间
#返回工作空间主目录
rostest@ubuntu:~/ros_demo/src/hellowrod_pak$ cd ../../
#编译工作空间
rostest@ubuntu:~/ros_demo$ catkin_make
五、执行程序 1、设置环境变量

如果环境变量没设置好,发布节点的时候会报错:[rospack] Error: package 'hellowrod_pak' not found,提示说找不到包,所以设置好之后最好要使用$ROS_PACKAGE_PATH验证以下

#注册bash
rostest@ubuntu:~/ros_demo$ source ~/ros_demo/devel/setup.bash 
#验证是否注册成功
rostest@ubuntu:~/ros_demo$ echo $ROS_PACKAGE_PATH
#打印出了当前工作空间的路径,则说明环境变量注册成功
/home/rostest/ros_demo/src:/opt/ros/melodic/share
2、执行程序 
#启动节点管理器(ROS Master)
rostest@ubuntu:~$ roscore

#新打开一个窗口,发布节点,其中hellowrod_pak是功能包的名称 ,hello是节点的名称是在helloword.cpp文件中创建的
rostest@ubuntu:~$ rosrun hellowrod_pak hello 
[ INFO] [1655038902.167104193]: Hello ROS!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968577.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号