-
从官方github的所有源码库来看,所有的
source
命令只有两条,执行它以配置环境变量:source /opt/ros/galactic/setup.bash source /home/cyberdog_ws/install/setup.bash
如果运行脚本之后gazebo正常启动及机器狗模型在悬空状态,问题可能是: 运行脚本gazebo启动比较慢,导致控制模块无法通信,可以按照本文档概述下的 “分别运行个程序” 章节依次运行程序。 如果gazebo正常启动及机器狗模型在爬下状态,问题可能是: 没有给发送控制指令,可以按照本文档通信接口下的 “仿真例程” 章节运行键盘控制模块进行测试。
- 仿真软件文档中的命令“ros2 launch cyberdog_gazebo gazebo.launch.py” 是单独运行仿真软件。
- 正常运行中直接使用这个命令即可,无需运行gazebo.launch.py
cd /home/cyberdog_sim source /opt/ros/galactic/setup.bash source ./install/setup.bash cd /home/cyberdog_sim #↑如果不在这个目录下运行会出错 python3 ./src/cyberdog_simulator/cyberdog_gazebo/script/launchsim.py
-
移动robot到指定位置:
# 先soure ROS2的source文件,再使用gz命令设置robot坐标 # 命令设置坐标后会导致robot无法使用鼠标移动位置 gz model -m robot -x 8.6 -y 8.6 -z 1 -R 0 -P 0 -Y -3.14
gz命令移动坐标写成一个python文件便是:
import threading import subprocess import time # 导入时间模块 # 可调节的全局变量 set_robot_pos_model_name = "robot" # 替换为你的机器人模型名称 set_robot_pos_x = 8.6 set_robot_pos_y = 8.6 set_robot_pos_z = 0.56 set_robot_pos_roll = 0 set_robot_pos_pitch = 0 set_robot_pos_yaw = -3.14 def main(): threading.Timer(1, set_robot_position, [set_robot_pos_model_name, set_robot_pos_x, set_robot_pos_y, set_robot_pos_z, set_robot_pos_roll,set_robot_pos_pitch, set_robot_pos_yaw]).start() def set_robot_position(model_name, x, y, z, roll, pitch, yaw): try: # 构建 gz 命令 command = [ 'gz', 'model', '-m', model_name, '-x', str(x), '-y', str(y), '-z', str(z), '-R', str(roll), '-P', str(pitch), '-Y', str(yaw) ] # 执行 gz 命令 subprocess.run(command, check=True) print(f'Successfully set {model_name} position to x={x}, y={y}, z={z}, R={roll}, P={pitch}, Y={yaw}') except subprocess.CalledProcessError as e: print(f'Failed to set position: {e}') except FileNotFoundError: print('The gz command is not found. Make sure Gazebo is installed and gz is in your PATH.') # 主函数 if __name__ == '__main__': main() # 运行主函数