失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > ROS入门的基本操作

ROS入门的基本操作

时间:2020-03-08 00:51:39

相关推荐

ROS入门的基本操作

ROS入门的基本操作

一、ROS命令行工具的使用二、创建工作空间与功能包创建工作空间的流程创建功能包的流程三、发布者Publisher的编程实现如何实现一个发布者如何配置CMakeLIsts.txt中的编译规则编译并运行发布者(要进入到根目录进行编译)四、订阅者Subscriber的编程实现如何实现一个订阅者四、话题消息的定义和使用如何自定义话题消息五、客户端Client的编程实现六、服务端Server的编程实现七、服务数据的定义与使用八、参数的使用与编程方法九、ROS中的坐标系管理系统十、tf坐标系广播与监听的编程实现十一、launch启动文件的使用方法十二、常用可视化工具的使用

一、ROS命令行工具的使用

常用命令:

rostopic

rosservice

rosnode

rosparam

rosmsg

rossrv

二、创建工作空间与功能包

工作空间是一个存放工程开发相关文件的文件夹

src:代码空间

build:编译空间

devel:开发空间

install:安装空间

创建工作空间的流程

1.创建空间:

$mkdir -p ~/catkin_ws/src

$cd ~/catkin_ws/src

$catkin_init_workspace

2.编译空间

$cd ~/catkin_ws/

$catkion_make

3.设置环境变量

$source devel/setup.bash

4.检查环境变量

$echo $ROS_PACKAGE_PATH

创建功能包的流程

1.创建功能包

$cd ~/catkin_ws/src

$catkin_create_pkg test_pkg std_msgs rospy roscpp

2.编译功能包

$cd ~/catkin_ws

$catkin_make

$source ~/catkin_ws/devel/setup.bash

三、发布者Publisher的编程实现

如何实现一个发布者

1.初始化ROS节点

2.向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型

3.创建消息数据

4.按照一定频率循环发布消息

如何配置CMakeLIsts.txt中的编译规则

1.设置需要编译的代码和生成的可执行文件

2.设置链接库

add_executable(velocity_publisher src/velocity_publisher.cpp)

target_link_libraries(velocity_publisher ${catkin_LIBRARIES})

编译并运行发布者(要进入到根目录进行编译)

$cd ~/catkin_ws

$catkin_make

$source devel/setup.bash

$roscore

$rosrun turtlesim turtlesim_node

$rosrun learning_topic velocity_publisher

四、订阅者Subscriber的编程实现

如何实现一个订阅者

1.初始化ROS节点

2.订阅需要的话题

3.循环等待话题消息,接收到消息后进入回调函数

4.在回调函数中完成消息处理

四、话题消息的定义和使用

如何自定义话题消息

1.定义msg文件;

2.在package.xml中添加功能包依赖

<build_depend>message_generation</build_depend>

<exec_depend>message_runtime</exec_depend>

3.在CMakeLists.txt添加编译选项

find_package(… message_generation)

add_message_files(FILES Person.msg)

generate_messages(DEPENDENCIES std_msgs)

catkin_package(… message_runtime)

4.编译生成语言相关文件

五、客户端Client的编程实现

1.创建功能包

$cd ~/catkin_ws/src

$catkin_create_pkg learning_service roscpp rospy std_msgs geometry_msgs turtlesim

2.创建客户端代码

如何实现一个客户端

(1)初始化ROS节点

(2)创建一个Client实例

(3)发布服务请求数据

(4)等待Server处理之后的应答结果

3.配置客户端代码编译规则

如何配置CMakeList.txt中的编译规则

(1)设置需要编译的代码和生成的可执行文件;

(2)设置链接库

add_executable(turtle_spawn src/turtle_spawn.cpp)

target_link_libraries(turtle_spawn ${catkin_LIBRARIES})

4.编译并运行客户端

$cd ~/catkin_ws

$catkin_make

$source devel/setup.bash

$roscore

$rosrun turtlesim turtlesim_node

$rosrun learning_service turtle_spawn

六、服务端Server的编程实现

1.创建服务器代码

如何实现一个服务器

(1)初始化ROS节点

(2)创建Server实例

(3)循环等待服务请求,进入回调函数

(4)在回调函数中完成服务功能的处理,并反馈应答数据

2.如何配置CMakeLists.txt中的编译规则

(1)设置需要编译的代码和生成的可执行文件

(2)设置链接库

add_executable(turtle_command_server src/turtle_command_server.cpp)

target_link_libraries(turtle_command_server ${catkin_LIBRARIES})

3.编译并运行服务器

$cd ~/catkin_ws

$catkin_make

$source devel/setup.bash

$roscore

$rosrun turtlesim turtlesim_node

$rosrun learning_service turtle_command_server

$rosservice call /turtle_command “{}”

七、服务数据的定义与使用

1.自定义服务数据

如何自定义服务数据

(1)定义srv文件

(2)在package.xml中添加功能包依赖

<build_depend>message_generation</build_depend>

<exec_depend>message_runtime</exec_depend>

(3)在CMakeLists.txt添加编译

find_package(… message_generation)

add_service_files(FILES Person.srv)

generate_messages(DEPENDENCIES std_msgs)

catkin_package(… message_runtime)

(4)编译生成语言相关文件

2.如何实现一个服务器

(1)初始化ROS节点

(2)创建Server实例

(3)循环等待服务请求,进入回调函数

(4)在回调函数中完成服务功能的处理,并反馈应答数据

3.创建客户端代码

如何实现一个客户端

(1)初始化ROS节点

(2)创建一个Client实例

(3)发布服务请求数据

(4)等待Server处理之后的应答结果

4.如何配置CMakeLists.txt中的编译规则

(1)设置需要编译的代码和生成的可执行文件

(2)设置链接库

(3)添加依赖项

5.编译并运行客户端和服务器

$cd ~/catkin_ws

$catkin_make

$source devel/setup.bash

$roscore

$rosrun learning_service person_server

$rosrun learning_service person_client

八、参数的使用与编程方法

1.创建功能包

$cd ~/catkin_ws/src

$catkin_create_pkg learning_parameter roscpp rospy std_srvs

2.参数命令行使用

rosparam

(1)列出当前多个参数:$rosparam list(2)显示某个参数值:$rosparam get param_key(3)设置某个参数值:$rosparam set param_key param_value(4)保存参数到文件:$rosparam dump file_name(5)从文件读取参数:$rosparam load file_name(6)删除参数:$rosparam delete param_key

3.YAML参数文件

background_b:255

background_g:86

background_r:69

rosdistro: ‘melodic’

roslaunch:

uris:{host_hhj_vpc__43763:’http://hhj-vpc:43763/’}

rosversion: ‘1.14.3’

run_id: 077058de-a38b-11e9-818b-000c29d22e4d

4.如何获取/设置参数

(1)初始化ROS节点

(2)get函数获取参数

(3)set函数设置参数

5.配置代码编译规则

如何配置CMakeList.txt中的编译规则

(1)设置需要编译的代码和生成的可执行文件

(2)设置链接库

add_executable(parameter_config src/parameter_config.cpp)

target_link_libraries(parameter_config ${catkin_LIBRARIES})

九、ROS中的坐标系管理系统

1.机器人的坐标变换

TF功能包

(1)默认记录十秒钟内机器人所有坐标系之间的位置关系

(2)机器人夹取的物体相对于机器人中心坐标系的位置

(3)机器人中心坐标系相对于全局坐标系的位置

TF坐标变换如何实现?

(1)广播TF变换

(2)监听TF变换

十、tf坐标系广播与监听的编程实现

1.创建功能包

$cd ~/catkin_ws/src

$catkin_create_pkg learning_tf roscpp rospy tf turtlesim

2.创建tf广播器代码

如何实现一个tf广播器

(1)定义TF广播器

(2)创建坐标变换值

(3)发布坐标变换

3.创建tf监听器代码

如何实现一个TF监听器

(1)定义TF监听器(TransformListener

(2)查找坐标变换(waitForTransform、lookupTransform)

4.配置tf广播器与监听器代码编译规则

如何配置CMakeList.txt中的编译规则

(1)设置需要编译的代码和生成的可执行文件

(2)设置链接库

5.编译并运行

$cd ~/catkin_ws

$catkin_make

$source devel/setup.bash

$roscore

$rosrun learning_tf turtle_tf_broadcaster __name:=turtle1_tf_broadcaster /turtle1

$rosrun learning_tf turtle_tf_broadcaster __name:=turtle2_tf_broadcaster /turtle2

$rosrun learning_tf turtle_tf_listener

$rosrun turtlesim turtle_teleop_key

十一、launch启动文件的使用方法

1.Launch文件:通过XML文件实现多节点的配置和启动(可自动启动ROS Master)

<launch>launch文件中的根元素采用<launch>标签定义<node>启动节点<node pkg = “package-name” type=”executable-name” name=”node-name” />

(1)pkg:节点所在的功能包名称

(2)type:节点的可执行文件名称

(3)name:节点运行时的名称

(4)output、respawn、required、ns、args

<param>/设置ROS系统运行中的参数,存储在参数服务器中。<rosparam><param name=”output_frame” value=”odom”/>

(1)name:参数名

(2)value:参数值

加载参数文件中的多个参数:

<rosparam file=”params.yaml” command=”load” ns=”params” /><arg>launch文件内部的局部变量,仅限于launch文件使用<arg name=”arg-name” default=”arg-value” />

(1)name:参数名

(2)value:参数值

调用:

<param name=”foo” value=”$(arg-name)” /><node name=”node” pkg=”package” type=”type” args=”$(arg arg-name)” />重映射<remap>重映射ROS计算图资源的命名。<remap from=”/turtlebot/cmd_vel” to=”/cmd_vel” />

(1)from:原命名

(2)to:映射之后的命名

嵌套<include>包含其他lauch文件,类似C语言中的头文件包含。<include file=”$(dirname)/other.launch” />

(1)file:包含的其他launch文件路径

十二、常用可视化工具的使用

1.Qt工具箱

(1)日志输出工具–rqt_console

(2)计算图可视化工具–rqt_graph

(3)数据绘图工具–rqt_plot

(4)图像渲染工具–rqt_image_view

2.Rviz

机器人开发过程中的数据可视化界面

3.Gazebo

三维物理仿真平台

参考资料:

古月-ROS入门21讲

如果觉得《ROS入门的基本操作》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。