ROS2 foxy 学习1 :认识节点=模块

environment:

Linux pc 5.17.1-051701-generic #202203290924-Ubuntu SMP PREEMPT Tue Mar 29 09:30:23 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Ubuntu20.04

安装:Installing ROS 2 via Debian Packages — ROS 2 Documentation: Foxy documentation

教程:Tutorials — ROS 2 Documentation: Foxy documentation

安装好之后配置Setup:

source /opt/ros/foxy/setup.bash
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc  //避免每次cmd输入上一行命令

DDS:The ROS_DOMAIN_ID — ROS 2 Documentation: Foxy documentation

As explained elsewhere, the default middleware that ROS 2 uses for communication is DDS. In DDS, the primary mechanism for having different logical networks share a physical network is known as the Domain ID. ROS 2 nodes on the same domain can freely discover and send messages to each other, while ROS 2 nodes on different domains cannot. All ROS 2 nodes use domain ID 0 by default. To avoid interference between different groups of computers running ROS 2 on the same network, a different domain ID should be set for each group

同一个物理上面虚拟多个逻辑domain id.

计算分配规则,链接中都有计算。

Introducing turtlesim and rqt

rqt is a GUI tool

小乌龟例程

ros2 run turtlesim turtlesim_node
ros2 node list
ros2 topic list
ros2 service list
ros2 action list

安装rqt:

可以生成spawn 初始化其他自定义的小乌龟。在画布中。

/*************************************************************************************************/

Understanding ROS 2 nodes

节点NODE= 功能模块

通讯方式:2种

  1.  topic 话题,message, 话题下面的聊天内容,订阅话题(subscribe)
  2. service,服务,请求,响应

actions (the ROS graph connections) 键盘请求动作client-->乌龟server执行

In ROS 2, a single executable (C++ program, Python program, etc.) can contain one or more nodes 一个可执行文件,可以包含多个节点(设计上,尽可能单独设计?)

ros2 run <package_name> <executable_name>
例子:
ros2 run turtlesim turtlesim_node

remap, 把自己的乌龟 node maping 到系统默认的乌龟node ,然后用键盘控制的那个节点,来控制自己的。

ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle

是否有办法在键盘节点做mapping?

ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=luke/cmd_vel

重要命令:

ros2 node list

ros2 node info

乌龟:

$ ros2 node info /luke

/my_turtle
  Subscribers:<---
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /turtle1/cmd_vel: geometry_msgs/msg/Twist
  Publishers:--->
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rosout: rcl_interfaces/msg/Log
    /turtle1/color_sensor: turtlesim/msg/Color
    /turtle1/pose: turtlesim/msg/Pose
  Services:
    /clear: std_srvs/srv/Empty
    /kill: turtlesim/srv/Kill
    /reset: std_srvs/srv/Empty
    /spawn: turtlesim/srv/Spawn
    /turtle1/set_pen: turtlesim/srv/SetPen
    /turtle1/teleport_absolute: turtlesim/srv/TeleportAbsolute
    /turtle1/teleport_relative: turtlesim/srv/TeleportRelative

    /my_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters
    /my_turtle/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
    /my_turtle/get_parameters: rcl_interfaces/srv/GetParameters
    /my_turtle/list_parameters: rcl_interfaces/srv/ListParameters
    /my_turtle/set_parameters: rcl_interfaces/srv/SetParameters
    /my_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
  Action Servers:
    /turtle1/rotate_absolute: turtlesim/action/RotateAbsolute

  Action Clients:

键盘:

ros2 node info /teleop_turtle


/teleop_turtle
  Subscribers:<---
    /parameter_events: rcl_interfaces/msg/ParameterEvent
  Publishers:-->
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rosout: rcl_interfaces/msg/Log
    /turtle1/cmd_vel: geometry_msgs/msg/Twist
  Service Servers:
    /teleop_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters
    /teleop_turtle/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
    /teleop_turtle/get_parameters: rcl_interfaces/srv/GetParameters
    /teleop_turtle/list_parameters: rcl_interfaces/srv/ListParameters
    /teleop_turtle/set_parameters: rcl_interfaces/srv/SetParameters
    /teleop_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
  Service Clients:

  Action Servers:

  Action Clients:
    /turtle1/rotate_absolute: turtlesim/action/RotateAbsolute

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值