学习topic话题感觉套用CAN总线的知识非常高效,Publisher就是在一条CAN总线写入一个信息,Subscriber就是在CAN总线监听一个信息。发送端(总线写入)可以有多个,接收端(总线监听)也可以有多个。
常用的topic命令:
ros2 topic list
ros2 topic echo <topic_name>: ros2 topic echo /turtle1/cmd_vel
ros2 interface show <msg_type>: ros2 interface show geometry_msgs/msg/Twist
ros2 topic pub <topic_name> <msg_type> ‘<args>’ : ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist “{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}”
ros2 topic hz: ros2 topic hz /turtle1/pose
ros2 topic bw: ros2 topic bw /turtle1/pose
ros2 topic find <topic_type>: ros2 topic find geometry_msgs/msg/Twist
/turtle1/cmd_vel
相对来说概念很容易理解的,几个常见的命令感觉可以用力记一下,不然每次调试想到要用还要查命令查语法。
workspace 的概念不打算记录了,很像C++的namespace,主要用作同名区分。常用的整个ws编译命令如下:
colcon build
Package包是 ROS 2 代码的组织单元。若用于移植或者分享ROS2的代码,那么Package包是最小的单位。ROS 2 使用 ament 作为构建系统,colcon 作为构建工具来创建包。官方支持C++(CMake)和Python来构建包。一个包通常是个文件夹,其结构如下:
workspace_folder/ src/ cpp_package_1/ CMakeLists.txt include/cpp_package_1/ package.xml src/ py_package_1/ package.xml resource/py_package_1 setup.cfg setup.py py_package_1/ ... cpp_package_n/ CMakeLists.txt include/cpp_package_n/ package.xml src/
通过ROS2来生成这些基础格式的命令如下:
cd ~/ros2_ws/src ros2 pkg create --build-type ament_python --license Apache-2.0 <package_name>
通过上述命令就有了基础的框架,在其中填充业务代码即可去编译。下边两个命令是这个ws全部package编译和选择其中一个编译:
colcon build colcon build --packages-select my_package
编译通过后要运行我们的包,需要先将其加载到环境,再执行:
source install/local_setup.bash ros2 run my_package my_node
此时可以回过头看一下文件夹中的内容,有一部分xml是描述本节点的元数据的,填入适当的内容,让其他人更好的理解该节点做的事情。