ROS2

培养解决问题的能力
    Coding is really just problem-solving, Don't be a programmer,be a problem-solver.
    写代码并不难,难得是如何解决问题,如何正确的解决问题,如何用简单高效的方案解决正确问题。

    编程其实只是一个工具,一个把任务自动化的工具。学习编程是为了解决现实中的问题的。

    学习新语言也是为了更高效更便捷的解决某个问题, 在问题解决之前,往往需要不断的调查,重写。
    所以编程,是在培养我们自己去发现问题、解决问题的能力.而这个能力也可以运用到生活的方方面面,永远不过时。

colcon build --symlink-install  --packages-select-by-dep  socketcan_bridge
colcon build --symlink-install  --packages-select  socketcan_bridge
  • 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

---

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]