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

ROS-I学习笔记(2)-Tutorials

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

ROS-I学习笔记(2)-Tutorials

参考链接: Industrial/Tutorials - ROS Wiki

该部分wiki教程主要分两大块,一部分是讲通用部分,另一部分是针对例如ABB、发那科等机械臂进行的针对性应用;

我就先学general的部分了:

基础开发人员教程:

1.前提条件

C++基础:

(1)MIT to C++

Linux基础:

ROS Industrial (Melodic) Training Exercises — Industrial Training documentation

ROS基础:

ROS Industrial (Melodic) Training Exercises — Industrial Training documentation

2.教程内容简单提要:

        1.创建功能包和节点:

        功能包:

        1)cd ~/catkin_ws/src

        2)catkin create pkg myworkcell_core --catkin-deps roscpp 创建功能包并给出依赖

        节点:

        1)创建cpp文件;

        2)#include

        3)添加main函数

        4)初始化节点ros::init(argc, argv, "vision_node");(注意,此时只是声明了一个节点,但不能操作它。)

        5)创建句柄,名字叫nh(随便改),ros::NodeHandle nh;

        6)用句柄可以操作节点做事情;

        7)让节点占用线程,不自动退出,ros::spin();

        8)修改功能包里面的CMakeList,带“+”号的是需要添加的,第一个是表示,添加的文件使用C++语言,第二个是要添加节点,之后为了转化为可执行文件,python就不用(因为python本身就是可执行文件),第三个要加是为了链接库。

project(myworkcell_core)
+ add_compile_options(-std=c++11)

...

###########
## BUILD ##
###########

include_directories(
  ${catkin_INCLUDE_DIRS}
)

+ add_executable(vision_node src/vision_node.cpp)
+ target_link_libraries(vision_node ${catkin_LIBRARIES})

        2.订阅/发布模型(话题与消息)

        1)怎么创建发布者/订阅者:ROS/Tutorials/WritingPublisherSubscriber(c++) - ROS Wiki

        2)创建.msg文件或者.srv文件,

           三种消息类型,Header是一种特殊类型,内包含信息啥的。

  Header header
  string child_frame_id
  geometry_msgs/PoseWithCovariance pose
  geometry_msgs/TwistWithCovariance twist

        srv文件:

int64 A
int64 B  //这里AB是请求
---
int64 Sum  //Sum是回应

        创建一个.Msg文件,里面直接编写:

string first_name
string last_name
uint8 age
uint32 score

        另外需要打开:package.xml文件确保下列两行在里面,目的为了将msg文件转换成C或者Python可识别:

  message_generation
  message_runtime

注意,在构建时,我们需要“message_generation”,而在运行时,我们只需“message_runtime”。

打开CMakeList,改动四个地方:

①确保message_generation依赖被添加:

# Do not just add this to your CMakeLists.txt, modify the existing text to add message_generation before the closing parenthesis
find_package(catkin REQUIRED COMPonENTS
   roscpp
   rospy
   std_msgs
   message_generation
)

②确保运行消息依赖:

catkin_package(
  ...
  CATKIN_DEPENDS message_runtime ...
  ...)

③添加自己编辑的消息变量:

# add_message_files(
#   FILES
#   Message1.msg
#   Message2.msg
# )
找到这一部分代码,把#删除,并换成自己的msg文件名!

④确保generate_messages()函数被调用:

# generate_messages(
#   DEPENDENCIES
#   std_msgs
# )
去掉#号

注:消息类型包含两部分:package/名字,例:beginner_tutorials/Num

 ※srv的创建与msg创建方法类似,修改也是改CMakeList的四个地方,具体方式:ROS/Tutorials/CreatingMsgAndSrv - ROS Wiki

3.应用:创建一个用于接受激光扫描的节点。

问题描述:我们现在有一个基本ROS节点,我们希望在此节点上构建。现在我们想在我们的节点中创建一个订阅者。

目标:

1.消息结构;2.话题名字;3.订阅者服务器(C++)

步骤:

1.创建一个功能包fake_ar_publisher;

2.修改总的CMakeList:

        1) find the fake_ar_publisher package.

## Find catkin macros and libraries
## if COMPonENTS list like find_package(catkin REQUIRED COMPonENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPonENTS 
  roscpp 
  fake_ar_publisher
)

        2)Add The catkin runtime dependency for publisher.

## The catkin_package macro generates cmake config files for your package
## Declare things to be passed to dependent projects
## LIBRARIES: libraries you create in this project that dependent projects also need
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## DEPENDS: system dependencies of this project that dependent projects also need
catkin_package(
 #  INCLUDE_DIRS include
 #  LIBRARIES myworkcell_core
   CATKIN_DEPENDS 
     roscpp 
     fake_ar_publisher
#  DEPENDS system_lib
)

        3)在add_executable 规则下编写或uncomment(取消注释):

add_dependencies(vision_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

2.修改package.xml文件,添加依赖:

fake_ar_publisher

3.catkin_make与source编译.

创建发布者功能包完成,你可以通过rosmsg命令来查看该功能包内编写的message(按自己的需要添加),添加发布者节点教程见上面。

注意用到的一些命令:

rosmsg list //查看所有编译的消息类型
rosmsg package     //查看某个功能包里面的消息

rostopic echo <消息名>    //查看该消息的所有信息   

Ctrl+C 退出

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

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

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