文章目录

  • ​​环境准备​​
  • ​​Python创建工作空间、功能包及节点方法​​
  • ​​编译使用​​

环境准备

为了便于日后复现,相关环境已经打包到docker中。

拉取docker镜像

docker pull 1224425503/ros2_foxy_full:latest

新建容器

docker run -dit --rm --privileged=true --network host -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" --volume="/dev:/dev" -v /dev:/dev -v /home/yp/ros2:/ros2 --name ros2_foxy_full 1224425503/ros2_foxy_full:latest  /bin/bash

至此,我们就完成了环境的准备。

Python创建工作空间、功能包及节点方法

节点存在功能包中,功能包存在工作空间中,因此创造节点需创造工作空间与功能包:

工作空间创造(实际为文件夹):

mkdir -p town_ws/src
cd town_ws/src

功能包创建(在路径src下运行):

ros2 pkg create yolo_python --build-type ament_python --dependencies rclpy

village_li :功能包的名字,可以任意名称修改

–build-type : 选择版本创建,共有三个,分别为 ament_python ament_cmake cmake ,默认为ament_cmake

–dependencies :依赖库 ,如rclpy ros2的python客户端接口

ROS2功能包Hello world(python)_python

python节点创建

直接在功能包下给.py文件,如下红框

ROS2功能包Hello world(python)_docker_02

main.py节点代码编译:

import rclpy
from rclpy.node import Node

def main(args=None):
rclpy.init(args=args)
yolo_node = Node("yolo")
yolo_node.get_logger().info("print info")
rclpy.spin(yolo_node)
rclpy.shutdown()

节点完后需要配置,指定找到节点,节点名为:main_node,配置如下:

ROS2功能包Hello world(python)_工作空间_03

编译使用

ROS2功能包Hello world(python)_python_04


说明:工作包源码为src,使用colcon build 命令可生成build install log文件夹

python 代码编译:若src中有py代码,使用colcon build仅将src中.py代码拷贝install中,若修改src中.py代码需使install执行有效,(实时修改)使用:

colcon build --symlink-install

然后执行(告诉系统路径):

source install/setup.bash

运行:

ros2 run yolo_python yolo_node