当前位置: 首页 > news >正文

树莓派5-docker里的ros常用命令

树莓派5安装docker和ros

#安装docKer
curl -sSL https://get.docker.com | shsudo usermod -aG docker $USER
#拉取ros镜像
docker pull ros:noetic-ros-base

后面是整理的一些常见的命令,顺序不分先后

1.查看当前容器 ID / 名称(宿主机终端执行)

docker ps  # 找到容器名(如 a607dc4c3aa1)或 NAMES

2.停止容器

docker stop a607dc4c3aa1  # 替换为你的容器 ID/名称

3.首次进入刚装好的 noetic-ros-base docker镜像的时候,需要先执行下面的命令进行设置:

docker run -it --rm \--device=/dev/ttyAMA0:/dev/ttyAMA0 \  # 映射串口(树莓派常用串口)--device=/dev/video0:/dev/video0 \    # 映射摄像头(若连接)--privileged \                        # 特权模式(树莓派访问硬件必需)--network=host \                      # 共享主机网络(ROS 节点通信更方便,树莓派推荐)ros:noetic-ros-base

如果出现类似:

Run 'docker run --help' for more information -bash: --device=/dev/video0:/dev/video0: 没有那个文件或目录 -bash: --privileged: 未找到命令 -bash: --network=host: 未找到命令 -bash: ros:noetic-ros-base: 未找到命令这样的错误:

报错原因是 Shell 命令格式错误—— 树莓派的 Bash 终端不支持行尾反斜杠(\)后面带空格 / 注释,导致命令被拆分成多个无效指令(比如把 --device 当成独立命令执行)

docker run -it --rm \--device=/dev/ttyAMA0:/dev/ttyAMA0 \--device=/dev/video0:/dev/video0 \--privileged \--network=host \ros:noetic-ros-base

4.验证串口映射

ls /dev/ttyAMA0

无任何报错,则表示串口映射成功

5.权限问题

若后续操作串口提示 “Permission denied”,在容器内执行:

chmod 666 /dev/ttyAMA0  # 临时授权(重启容器失效)
# 或永久授权(推荐)
usermod -aG dialout root
newgrp dialout

6.加载ros环境变量,ros:noetic-ros-base 镜像默认未自动加载 ROS 环境,进入容器后需手动 source,否则无法使用 roscore、rosrun 等命令

# 临时加载(当前终端生效)
source /opt/ros/noetic/setup.bash
# 永久加载(后续进入容器自动生效,推荐)
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

7.验证是否成功进入并配置 ROS

新打开一个docker命令行窗口,执行下面的命令:

roscore

看到类似下面截图中的信息,表示启动成功

8.查看当前ros节点状态,再打开一个新的窗口执行下面的命令:

rosnode list  # 列出所有运行的节点(当前应只有 /rosout)
rosnode info /rosout  # 查看 /rosout 节点详情

9.验证环境,运行一个节点示例

新打开一个窗口,执行下面命令,启动一个简单的发布者节点(发布字符串消息)

rosrun rospy_tutorials talker

如果看到类似下面截图中输出的类似,表示启动成功:

接着再开一个命令窗口,执行下面的命令,启动订阅节点,用于接收消息

rosrun rospy_tutorials listener

看到类似下图中的输出类似,则表示启动成功并且接收到了消息:

备注: 如果能看到 talker 发布消息、listener 接收消息,说明 ROS 通信正常。

10.查看话题消息

rostopic list  # 列出所有话题(talker 会发布 /chatter 话题)
rostopic echo /chatter  # 实时打印 /chatter 话题的消息内容
rostopic info /chatter  # 查看话题的消息类型

11.注意事项:

终端隔离:roscore 启动后,当前终端不能关闭(关闭会终止核心服务),所有其他操作需在新的终端中执行(若用 Docker 容器,需重新 docker exec -it 容器ID bash 进入新终端)若其他终端提示 roscore: command not found,需先加载 ROS 环境 

source /opt/ros/noetic/setup.bash

可将该命令添加到 ~/.bashrc 中,避免每次手动加载:

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

如果报类似的错误:root@58d3b6b7a25b:/# rosrun rospy_tutorials talker
[rospack] Error: package 'rospy_tutorials' not found
报错原因是 rospy_tutorials 功能包未安装——ROS Noetic 默认不会预装所有示例包,需要手动安装对应的功能包。

apt-get update && apt-get install -y ros-noetic-rospy-tutorials ros-noetic-roscpp-tutorials

http://www.dtcms.com/a/577607.html

相关文章:

  • 网站地图1 500 怎么做网站推广方案及预算
  • 餐饮网站方案一个完整的网站怎么做
  • 弄一个关于作文的网站怎么做如何建立网站卖东西
  • 在Ubunutu上学习C语言(二):数组和指针
  • 成品网站源码78w78使用方法网站建设服务领域
  • ESP32内存分布全解析
  • Graph-R1:智能图谱检索增强的结构化多轮推理框架
  • java学习--可变参数
  • 相序诊断,快速响应!安科瑞户用光储防逆流无线电能表,破解您的安装难题,安全防逆流。
  • FPGA核心约束类型与语法
  • 给网站做网络安全的报价wordpress直播
  • 零基础从头教学Linux(Day 60)
  • .NET Core WebAPI 中 HTTP 请求方法详解:从新手到精通
  • Socket编程实战:从基础API到多线程服务器
  • Oracle Goldengate 同步过程的同步用户权限设置
  • Rust编程学习 - 如何理解Rust 语言提供了所有权、默认move 语义、借用、生命周期、内部可变性
  • 自学建立网站网络品牌推广费用
  • 卑鄙的网站开发公司网站地图页面模板
  • php网站如何编辑WordPress图片一行多张
  • 学Java第四十一天-------查找算法和排序算法
  • 从0到1学习Qt -- 信号和槽(二)
  • AI、闪购、造车……双十一的第十七年,京东、阿里、美团还有“新活”
  • IDEA不切换当前分支,实现跨分支合并的终极方案
  • 法考资源合集
  • Redis(四)——事务
  • 便宜的vps租用网站有哪些网站使用ftp
  • TestKeyDownBit函数和SetKeyDownBit函数和ClearKeyDownBit函数分析
  • RHCSA---权限管理
  • Flutter for HarmonyOS开发指南(二):混合开发架构与通信机制
  • 分布式分片执行原理解析