roscore
是ROS(Robot Operating System)的核心命令,用于启动ROS系统的主节点(Master)、参数服务器(Parameter Server)和日志系统(rosout),它是运行任何ROS节点的前提条件,以下是详细使用指南:
最简写法(默认配置)
roscore
- 作用:启动ROS Master,使用默认端口
11311
,无需额外配置。 - 输出关键信息:
ROS_MASTER_URI=http://<主机名>:11311/
(节点通信的地址)rosout
(日志节点)和/parameter_server
(参数服务器)启动成功。
指定端口号
roscore -p 12345
- 适用场景:当默认端口
11311
被占用时,通过-p
或--port
自定义端口。 - 验证:执行后检查
ROS_MASTER_URI
中的端口是否变为12345
。
指定主机名或IP
roscore -r 192.168.1.100
- 参数说明:
-r
或--host
:强制指定Master的主机名/IP(默认为本机)。
- 典型用途:在多机协同中,确保其他设备能正确访问Master。
常见问题与解决方案
端口冲突错误
ERROR: port 11311 in use
- 解决步骤:
- 查找占用端口的进程:
sudo lsof -i :11311
- 终止该进程(如
kill -9 <PID>
),或换用新端口:roscore -p 11312
- 查找占用端口的进程:
ROS环境未配置
Command 'roscore' not found
- 原因:未正确配置ROS环境变量。
- 修复:
# 根据ROS版本选择(如melodic、noetic) echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc
多机通信配置
若从机无法连接Master:
- 主机端:启动时指定可访问的IP:
roscore -r 192.168.1.100
- 从机端:设置环境变量指向主机:
export ROS_MASTER_URI=http://192.168.1.100:11311 export ROS_IP=<从机本机IP>
高级技巧
后台运行 & 日志输出
roscore > roscore.log 2>&1 &
- 作用:将
roscore
放入后台运行,日志保存到roscore.log
。 - 查看日志:
tail -f roscore.log
结合launch文件使用
在ROS launch文件中自动启动roscore
:
<launch> <!-- 若未运行roscore,则自动启动 --> <node pkg="rosout" type="rosout" name="rosout" respawn="true"/> </launch>
安全注意事项
- 网络隔离:在公网环境使用
roscore
时,通过防火墙限制端口访问(如11311
)。 - 容器化部署:建议在Docker中运行ROS,避免污染主机环境:
docker run -it --net=host osrf/ros:noetic-desktop roscore
- 核心命令:
roscore
(基础) →roscore -p <端口> -r <IP>
(自定义)。 - 关键检查:启动后确认
ROS_MASTER_URI
与预期一致。 - 多机协同:确保所有设备使用相同的
ROS_MASTER_URI
。
引用说明参考ROS官方文档(wiki.ros.org/roscore)及实践调试经验,适用于ROS 1(如Noetic、Melodic等版本),若使用ROS 2,需改用
ros2 run
相关命令。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6812.html