-
从官方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.bashcd /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.14def 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() # 运行主函数