ROS2
培养解决问题的能力
Coding is really just problem-solving, Don't be a programmer,be a problem-solver.
写代码并不难,难得是如何解决问题,如何正确的解决问题,如何用简单高效的方案解决正确问题。
编程其实只是一个工具,一个把任务自动化的工具。学习编程是为了解决现实中的问题的。
学习新语言也是为了更高效更便捷的解决某个问题, 在问题解决之前,往往需要不断的调查,重写。
所以编程,是在培养我们自己去发现问题、解决问题的能力.而这个能力也可以运用到生活的方方面面,永远不过时。
Docker Containers
- L4T
-
docker pull dustynv/ros:humble-desktop-l4t-r36.2.0
- Galactic
-
docker pull osrf/ros:galactic-desktop
- doTransform
Build
colcon build --symlink-install --packages-select-by-dep socketcan_bridge
colcon build --symlink-install --packages-select socketcan_bridge
PCL
pcl_voxel_grid input.pcd output.pcd -leaf 0.5,0.5,0.5
pcl_convert_pcd_ascii_binary <file_in.pcd> <file_out.pcd> 0/1/2 (ascii/binary/binary_compressed) [precision (ASCII)]
pcl_convert_pcd_ascii_binary Town01.pcd Town01_ascii.pcd 1 # binary => ascii
Node
# 检查 turtlesim 是否已经安装
ros2 pkg executables turtlesim
ros2 node list
ros2 topic list
ros2 service list
ros2 action list
ros2 run <package_name> <executable_name>
ros2 node list
ros2 node info <node_name>
# 重映射
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
ros2 lifecycle set <nodename> shutdown # kill node 有待验证
Topic
ros2 topic list
ros2 topic list -t
ros2 topic echo /turtle1/cmd_vel
# 主题信息
# ros2 topic info /turtle1/cmd_vel
# 消息类型
ros2 msg show std_msgs/String # dashing
ros2 interface show std_msgs/String # galactic
# 消息频率
ros2 topic hz /turtle1/pose
# 消息发布
ros2 topic pub --once /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 pub --rate 1 /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}}" # 1 Hz
ros2 topic pub --once /sent_messages can_msgs/msg/Frame \
"{header: { frame_id: 'map'} , id: 15, is_rtr: 0,is_extended: 0, is_error: 0, dlc: 8, data: [1,2,3,4,5,6,7,9]}"
ros2 topic pub --once /sent_messages can_msgs/msg/Frame \
"{header: {stamp: {sec: 0, nanosec: 0}, frame_id: 'map'} , id: 15, is_rtr: 0,is_extended: 0, is_error: 0, dlc: 8, data: [1,2,3,4,5,6,7,9]}"
Services
Parameters
ros2 param list
ros2 param get <node_name> <parameter_name>
ros2 param set <node_name> <parameter_name> <value>
ros2 param dump <node_name>
ros2 param load <node_name> <parameter_file>
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
Actions
Recording adn playing back data
ros2 bag record <topic_name>
ros2 bag record /turtle1/cmd_vel
ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose
ros2 bag info <bag_file_name>
ros2 bag play subset
git clone https://github.com/ros2/examples.git
git clone https://hub.fastgit.org/ros2/examples.git
—
打包
sudo apt install python3-catkin-pkg python3-bloom
sudo apt-get install fakeroot
sudo apt-get install debhelper
# sudo apt-get install lsb-release
bloom-generate rosdebian --os-name ubuntu --os-version $(lsb_release -cs) --ros-distro ${ROS_DISTRO}
#bloom-generate rosdebian --os-name ubuntu --os-version focal --ros-distro galactic
fakeroot debian/rules binary
LGSVL
galactic
apt-get install ros-galactic-lgsvl-msgs
mkdir -p ros2_ws/src
git clone -b galactic-devel https://github.com/lgsvl/ros2-lgsvl-bridge.git ros2_ws/src/ros2-lgsvl-bridge
cd ros2_ws
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
colcon build --cmake-args '-DCMAKE_BUILD_TYPE=Release'
. ~/ros2-lgsvl-bridge/install/setup.bash
lgsvl_bridge [--port 9090] [--log D]
-
- ROS 2概念
- 二、核心堆栈开发人员概念——是一些更为详细的概念文章,适用于计划修改ROS 2核心或为ROS 2核心做出贡献的开发人员,包括以下内容:
- ROS 2教程目录及各教程文章的知乎链接
- 入门教程
- 演示教程
ROS1 和 ROS2之间的桥接通信
使用 ROS1 桥接器的rosbag记录和回放话题数据
使用ROS 2的Turtlebot 2演示
使用ROS 2的TurtleBot 3演示[社区贡献]
MoveIt 2机械臂移动规划演示
- MoveIt2教程
- ROS2中的URDF系列教程
- Gazebo 11新手课程指南——初级教程
- Navigation 2系列教程