我是ROS的初学者,我正在尝试运行一些listener/talker节点,用python运行一个非常简单的代码,在Docker容器上使用ROS
我遵循中描述的指南: https://hub.docker.com/_/ros
我得到了这个结构:
./
Dockerfile
docker-compose.yml
./teste/
listener.py
我当前的目标是传递listener.py代码并在“listener”节点中运行,作为服务容器运行
我的Dockerfile是:
FROM ros:foxy
# install ros package
RUN apt-get update && apt-get install -y \
ros-${ROS_DISTRO}-demo-nodes-cpp \
ros-${ROS_DISTRO}-demo-nodes-py && \
rm -rf /var/lib/apt/lists/*
# launch ros package
CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener.launch.py"]
我的docker-compose.yml文件是:
version: '3'
services:
talker:
build: ./
command: ros2 run demo_nodes_py talker
listener:
build: ./
environment:
- "PYTHONUNBUFFERED=1"
volumes:
- ./teste:/teste
command: ros2 run demo_nodes_py listener
volumes:
teste:
使用此默认代码,这两个服务运行来自原始ros示例的listener/talker,但我想运行自己的python代码。我该怎么做?如果我打开一个shell并尝试执行它,即使侦听器服务可以访问listener.py代码(通过./teste),ros2 run命令也无法识别
我做错了什么?我应该在ros2上运行python代码之前做些什么吗?有什么想法吗
谢谢
编辑:如果我打开shell终端,则无法识别ros2命令,但通过Dockerfile上的cmd命令,使用talker_listener.launch.py代码,它可以工作
Edit2:我通过“/bin/bash-source/opt/ros/foxy/setup.bash”运行了setup.sh。即使如此,我也不能运行ros2命令。我使用了“python3/teste/listener.py”,但随后出现了错误:
ModuleNotFoundError: No module named 'rospy'
如果我运行默认的命令选项(通过Dockerfile,ros2运行demo_nodes_py listener)并正常工作,这怎么可能呢
目前没有回答
相关问题 更多 >
编程相关推荐