问题截图

crazyflie

epuck

原因

环境变量没有正确设置,系统选择默认值。

思考

进行相应配置。

export WEBOTS_HOME=/usr/local/webots
export ROS2_WEBOTS_HOME=/usr/local/webots

AI解决

这个警告表明,Webots 的环境变量 ROS2_WEBOTS_HOME 和 WEBOTS_HOME 没有被正确设置,系统正在回退到默认的安装路径 /usr/local/webots。要解决这个问题,你需要确保 Webots 的环境变量被正确配置。

以下是解决方案:

  1. 确认 Webots 的安装路径
    首先,确认 Webots 的实际安装路径。默认情况下,Webots 通常安装在 /usr/local/webots,但如果你在安装时选择了不同的路径,你需要使用实际的安装路径。

  2. 设置环境变量
    根据你的 shell 类型(如 bash、zsh 等),将以下内容添加到你的 shell 配置文件中(如 ~/.bashrc~/.zshrc 等):

    
      

    bash

    export WEBOTS_HOME=/usr/local/webots
    export ROS2_WEBOTS_HOME=/usr/local/webots

    如果 Webots 安装在其他路径,请将 /usr/local/webots 替换为实际的安装路径。

  3. 使更改生效
    运行以下命令使更改生效:

    
      

    bash

    source ~/.bashrc # 或者 source ~/.zshrc,取决于你使用的 shell
  4. 验证环境变量
    运行以下命令验证环境变量是否设置成功:

    
      

    bash

    echo $WEBOTS_HOME
    echo $ROS2_WEBOTS_HOME

    确保输出的是正确的 Webots 安装路径。

  5. 重新启动 Webots 或终端
    有时候,更改环境变量后需要重新启动 Webots 或终端才能生效。

通过以上步骤,你应该能够解决这个警告问题。如果问题仍然存在,可能需要检查 Webots 是否正确安装,或者是否有其他配置冲突。


测试


摘要:出现Webots环境变量未正确设置的警告,系统默认使用/usr/local/webots路径。解决方法:1)确认Webots实际安装路径;2)在shell配置文件(如.bashrc)中添加export WEBOTS_HOME=/usr/local/webotsexport ROS2_WEBOTS_HOME=/usr/local/webots(替换为实际路径);3)执行source ~/.bashrc使配置生效;4)通过echo $WEBOTS_HOME验证变量;5)必要时重启终端或Webots。若问题持续,需检查安装或配置冲突。


Bash 配置 ROS2 与 Webots 联合仿真详细教程(万字级)

一、环境准备与系统要求

1.1 操作系统要求

  • Ubuntu 22.04 LTS(推荐)或 20.04 LTS
  • 内存 ≥ 8GB(仿真复杂场景需 16GB+)
  • 显卡支持 OpenGL 3.0+(推荐 NVIDIA 显卡)

1.2 软件版本兼容性

软件 版本要求 备注
ROS2 Humble/Iron 与 Webots R2023b+ 兼容
Webots R2023b/R2024a 需与 ROS2 版本匹配
Python 3.10+ ROS2 Humble 默认依赖

1.3 安装前检查


bash

# 检查系统信息
lsb_release -a
uname -m # 需为 x86_64
# 更新软件包列表
sudo apt update && sudo apt upgrade -y
二、ROS2 安装与配置

2.1 添加 ROS2 仓库


bash

# 设置软件源与密钥
sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $VERSION_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

2.2 安装 ROS2 Humble


bash

# 基础版安装(约 800MB)
sudo apt install ros-humble-desktop
# 完整版安装(含仿真工具,约 2.5GB)
sudo apt install ros-humble-desktop-full
# 验证安装
source /opt/ros/humble/setup.bash
ros2 version

2.3 配置 ROS2 环境变量


bash

# 永久生效配置
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
echo "export ROS_DOMAIN_ID=0" >> ~/.bashrc # 多机通信时需修改
echo "export ROS_LOCALHOST_ONLY=0" >> ~/.bashrc # 允许跨主机通信
source ~/.bashrc
# 验证环境变量
printenv | grep -i ROS

关键变量说明

  • ROS_DOMAIN_ID:ROS2 网络通信域标识(0-232),相同 ID 的节点可通信
  • ROS_LOCALHOST_ONLY:设为 1 时仅允许本地通信
三、Webots 安装与配置

3.1 官方仓库安装(推荐)


bash

# 添加 Webots 仓库
sudo sh -c 'echo "deb [arch=amd64] https://www.cyberbotics.com/webots/files/archive/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/webots.list'
wget -qO- https://www.cyberbotics.com/webots/files/archive/ubuntu/cyberbotics.key | sudo apt-key add -
# 安装 Webots
sudo apt update
sudo apt install webots

3.2 手动安装(指定版本)


bash

# 下载指定版本(示例:R2024a)
wget https://github.com/cyberbotics/webots/releases/download/R2024a/webots-R2024a-x86_64.tar.bz2
tar xjf webots-R2024a-x86_64.tar.bz2
sudo mv webots /opt/
# 配置环境变量
echo "export WEBOTS_HOME=/opt/webots" >> ~/.bashrc
echo "export PATH=\$PATH:\$WEBOTS_HOME/bin" >> ~/.bashrc
source ~/.bashrc

3.3 验证安装


bash

# 启动 Webots
webots
# 检查版本
webots --version
四、ROS2-Webots 接口安装

4.1 安装接口包


bash

# 方法一:通过 apt 安装(推荐)
sudo apt install ros-humble-webots-ros2
# 方法二:源码编译(需先安装 colcon)
sudo apt install python3-colcon-common-extensions
mkdir -p ~/webots_ws/src
cd ~/webots_ws/src
git clone https://github.com/cyberbotics/webots_ros2.git
cd ..
rosdep install --from-paths src --ignore-src -y
colcon build --symlink-install
# 配置工作空间
echo "source ~/webots_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

4.2 验证接口功能


bash

# 启动 EPuck 机器人仿真
ros2 launch webots_ros2_epuck robot_launch.py
# 检查节点与话题
ros2 node list # 应显示 /webots_ros2_epuck_driver
rostopic list # 应包含 /odom, /cmd_vel 等
五、联合仿真开发流程

5.1 创建自定义机器人模型

  1. 在 Webots 中设计 URDF
    • 使用 Webots 的 Robot 节点创建模型
    • 导出为 URDF 格式(File > Export > URDF)
  2. 转换为 Webots 专用格式
    
      

    bash

    # 使用 webots_ros2 工具转换
    ros2 run webots_ros2 urdf2webots my_robot.urdf my_robot.wbo

5.2 编写 ROS2 控制器


python

#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
from geometry_msgs.msg import Twist
class RobotController(Node):
def __init__(self):
super().__init__('robot_controller')
self.subscription = self.create_subscription(
Twist, '/cmd_vel', self.cmd_vel_callback, 10)
self.get_logger().info('Controller node started')
def cmd_vel_callback(self, msg):
self.get_logger().info(f'Received velocity: {msg.linear.x}')
def main():
rclpy.init()
node = RobotController()
rclpy.spin(node)
rclpy.shutdown()
if __name__ == '__main__':
main()

5.3 创建 Launch 文件


python

from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
Node(
package='my_package',
executable='robot_controller',
name='controller'
),
Node(
package='webots_ros2',
executable='webots_launcher',
arguments=['--mode=realtime', 'my_world.wbt']
)
])
六、高级配置与调试

6.1 多机器人仿真配置


bash

# 为每个机器人设置独立域名
echo "export ROS_DOMAIN_ID=1" >> ~/.bashrc_robot1
echo "export ROS_DOMAIN_ID=2" >> ~/.bashrc_robot2
# 启动不同域的仿真
source ~/.bashrc_robot1
ros2 launch webots_ros2 multi_robot_launch.py

6.2 性能优化

  • 物理引擎参数调整

    
      

    xml

    <!-- 在 Webots 世界文件中修改 -->
    <PhysicsEngine>
    <ODE>
    <ERP>0.2</ERP> <!-- 误差减少参数 -->
    <CFM>1e-5</CFM> <!-- 约束力混合参数 -->
    </ODE>
    </PhysicsEngine>
  • ROS2 参数服务器配置

    
      

    bash

    ros2 param set /webots_ros2_driver physics_step 0.016 # 设置物理步长为 16ms

6.3 常见问题解决

问题现象 解决方案
找不到 Webots 路径 检查 WEBOTS_HOME 环境变量,确保指向正确安装目录
ROS2 节点无法通信 确认 ROS_DOMAIN_ID 一致,检查防火墙设置
仿真卡顿 降低物理引擎步长(如从 0.008s 改为 0.016s),关闭非必要传感器
URDF 导入失败 检查模型坐标系是否正确,确保所有链接有惯性参数
七、完整工作流示例

7.1 项目初始化


bash

mkdir -p ~/ros2_webots_project/src
cd ~/ros2_webots_project/src
git clone https://github.com/your-repo/custom_robot.git
cd ..
rosdep install --from-paths src --ignore-src -y
colcon build --symlink-install

7.2 启动仿真


bash

# 终端 1:启动 Webots
source install/setup.bash
webots my_world.wbt
# 终端 2:启动 ROS2 控制器
source install/setup.bash
ros2 launch custom_robot control_launch.py
# 终端 3:监控数据
ros2 topic echo /odom

7.3 调试技巧

  • 使用 rqt_graph 可视化节点连接
    
      

    bash

    ros2 run rqt_graph rqt_graph
  • 日志分析
    
      

    bash

    ros2 node info /webots_ros2_driver # 查看节点订阅/发布话题
    tail -f ~/.ros/log/latest/log*.txt # 查看实时日志
八、版本升级与维护

8.1 升级 ROS2


bash

sudo apt update
sudo apt upgrade ros-humble-*

8.2 升级 Webots


bash

# 方法一:通过包管理器
sudo apt install --only-upgrade webots
# 方法二:手动升级
sudo systemctl stop webots # 如果设置了服务
wget 新版本下载链接
tar xjf 新版本.tar.bz2
sudo mv 新版本目录 /opt/webots

8.3 备份配置


bash

# 备份环境变量
cat ~/.bashrc | grep -E 'ROS|WEBOTS' > backup_env.sh
# 备份工作空间
cd ~/ros2_webots_project
tar cjf project_backup.tar.bz2 src install log
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐