文章目录
- 环境准备
- 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客户端接口
python节点创建
直接在功能包下给.py文件,如下红框
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,配置如下:
编译使用
说明:工作包源码为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