1、启动仿真小乌龟节点:ros2 run turtlesim turtlesim_node
2、查看节点列表:ros2 node list
3、查看节点信息:ros2 node info /turtlesim
4、列出所有功能包下的可执行文件:ros2 pkg executables
5、列出指定功能包下的可执行文件:ros2 pkg executables turtlesim
6、列出所有的功能包:ros2 pkg list
7、列出功能包所在的路径:ros2 pkg prefix turtlesim
8、列出功能包的描述文件:ros2 pkg xml turtlesim
9、节点通信查看命令:
(1)启动listener:ros2 run demo_nodes_py listener
(2)启动talker:ros2 run demo_nodes_py talker
(3)启动rqt(选择node gragh):rqt
10、查询系统中当前活动的所有话题列表:ros2 topic list
增加消息类型:ros2 topic list -t
打印实时话题内容:ros2 topic echo /chatter
查看话题信息:ros2 topic info /chatter
查看消息类型:ros2 interface show std_msgs/msg/String
手动发布命令:ros2 topic pub /chatter std_msgs/msg/String "{data: "学习ros2"}"
11、查询过滤功能包:ros2 pkg list | grep turtle
####命令行控制控制小乌龟
1、启动小乌龟虚拟环境:ros2 run turtlesim turtlesim_node
2、查看当前活动话题和类型:ros2 topic list -t
3、手动发布控制小乌龟的指令:ros2 topic pub -r 10 /turtle1/cmd_vel geometry_msgs/msg/Twist "linear:
x: 1.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0"
执行结果:小乌龟画一个圆
####编写一个话题通信代码:控制小乌龟
1、创建工作空间(文件夹):mkdir -p ctrl_turtle/src
进入功能包的目录:cd ctrl_turtle
用vscode打开当前目录:code ./
在vscode中打开集成终端(file->Open in Integrated Terminal)
创建功能包turtle_movPUB:ros2 pkg create turtle_movPUB --build-type ament_python --dependencies rclpy
进入turtle_movPUB在__init__py目录建一个名为publisher_member_function.py的新文件,写入以下内容:
import rclpy
from rclpy.node import Node
from geomestry_msgs.msg import Twist
class MinimalPublisher(Node):
def __init__(self):
super().__init__('minimal_publisher')
self.publisher_ = self.create_publisher(Twist, '/turtle1/cmd_vel', 10)
timer_period = 0.5 # seconds
self.timer = self.create_timer(timer_period, self.timer_callback)
self.i = 0.0
def timer_callback(self):
msg = Twist()
msg.linear.x=1.0
msg.angular.z=1.0
self.publisher_.publish(msg)
self.get_logger().info('Publishing: "%.2f"' % msg.linear.x)
self.i += 0.0
def main(args=None):
rclpy.init(args=args)
minimal_publisher = MinimalPublisher()
rclpy.spin(minimal_publisher)
# Destroy the node explicitly
# (optional - otherwise it will be done automatically
# when the garbage collector destroys the node object)
minimal_publisher.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
2、添加修改:
entry_points={ 'console_scripts': [ 'mov_node =turtle_movPUB.publisher_member_function:main', ], },
3、编译:colcon build
4、添加:source install/setup.bash
5、运行小乌龟节点:ros2 run turtlesim turtlesim_node
6、运行新编译节点:ros2 run turtle_movPUB mov_node
结果小乌龟画了一个圆圈
参考鱼香ROS、小巨同学等B站视频、ros2官网说明文档