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

无锡网站开发定制开发有哪些做微场景的没费网站

无锡网站开发定制开发,有哪些做微场景的没费网站,建设部网站公告,网站开发小图标怎么设置前段时间写了文章,通过修改sdf、urdf模型的方法,在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落:在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落:修改sdf、urdf模型_sagima_sdu的博客-CSDN博客 今天讲…

前段时间写了文章,通过修改sdf、urdf模型的方法,在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落:在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落:修改sdf、urdf模型_sagima_sdu的博客-CSDN博客

今天讲一下如何通过键盘来控制其移动:监听键盘输入并根据按键调整模型的位置,然后通过调用set_model_state函数来更新模型在Gazebo中的状态

程序举例:

首先,我们先通过一个程序,实现在指定的空间坐标生成一个指定的模型

(注意,如果要使用的话,需要修改程序中指定的模型名称和模型的路径)

# -*- coding: utf-8 -*-
#!/usr/bin/env python"""
Author:sagima使用Gazebo仿真环境中生成一个名为"aruco_cubo_hover"的模型
python model.py
程序运行在Python2.7环境下。
"""import os
import rospy
from gazebo_msgs.msg import ModelState
from gazebo_msgs.srv import DeleteModel, SpawnModel
from std_msgs.msg import Header
from geometry_msgs.msg import Pose, Point# 初始化ROS节点
rospy.init_node('spawn_aruco_cubo_hover', anonymous=True)# 定义生成模型的函数
def spawn_aruco_cubo_hover():model_name = "aruco_cubo_hover"model_path = "/home/sjh/project/Tiago_ws/src/pal_gazebo_worlds/models/aruco_cube_hover/aruco_cube_hover.sdf"# 在这里修改目标位置initial_pose = Pose(position=Point(x=0.8, y=0, z=1))# 从文件加载模型with open(model_path, "r") as f:model_xml = f.read()# 调用Gazebo的SpawnModel服务spawn_model = rospy.ServiceProxy('/gazebo/spawn_sdf_model', SpawnModel)resp_sdf = spawn_model(model_name, model_xml, "", initial_pose, "world")if resp_sdf.success:rospy.loginfo("模型 '{}' 生成成功。".format(model_name))else:rospy.logerr("模型 '{}' 生成失败。".format(model_name))# 调用生成模型的函数
if __name__ == '__main__':try:spawn_aruco_cubo_hover()except rospy.ROSInterruptException:pass

上面的程序没有问题的话,就可以为其加入通过键盘控制的功能了

# -*- coding: utf-8 -*-
#!/usr/bin/env python"""
Author:sagima使用Gazebo仿真环境中生成一个名为"aruco_cubo_hover"的模型,并通过键盘控制模型运动
python model_with_keyboard_control.py
程序运行在Python2.7环境下。
"""import os
import rospy
from gazebo_msgs.msg import ModelState
from gazebo_msgs.srv import SetModelState, GetModelState
from std_msgs.msg import Header
from geometry_msgs.msg import Pose, Point
import sys
import select
import tty
import termios# 初始化ROS节点
rospy.init_node('spawn_aruco_cubo_hover', anonymous=True)# 保存终端设置
old_settings = termios.tcgetattr(sys.stdin)
tty.setcbreak(sys.stdin.fileno())# 定义运动速度
move_speed = 0.1# 定义生成模型的函数
def spawn_aruco_cubo_hover(initial_pose):model_name = "aruco_cubo_hover"model_path = "/home/sjh/project/Tiago_ws/src/pal_gazebo_worlds/models/aruco_cube_hover/aruco_cube_hover.sdf"# 从文件加载模型with open(model_path, "r") as f:model_xml = f.read()# 调用Gazebo的SpawnModel服务spawn_model = rospy.ServiceProxy('/gazebo/spawn_sdf_model', SpawnModel)resp_sdf = spawn_model(model_name, model_xml, "", initial_pose, "world")if resp_sdf.success:rospy.loginfo("模型 '{}' 生成成功。".format(model_name))else:rospy.logerr("模型 '{}' 生成失败。".format(model_name))# 定义设置模型状态的函数
def set_model_state(model_name, pose):model_state = ModelState()model_state.model_name = model_namemodel_state.pose = poseset_model_state = rospy.ServiceProxy('/gazebo/set_model_state', SetModelState)set_model_state(model_state)# 中文提示
print("按下以下键盘按键来控制模型运动:")
print("W: 向前移动")
print("S: 向后移动")
print("A: 向左移动")
print("D: 向右移动")
print("Q: 上升")
print("E: 下降")
print("Ctrl+C: 退出程序")try:# 定义初始位置initial_pose = Pose(position=Point(x=0.8, y=0, z=1))# 主循环,持续监听键盘输入并控制模型运动while True:if select.select([sys.stdin], [], [], 0)[0] == [sys.stdin]:key = sys.stdin.read(1)if key == 'w':initial_pose.position.x += move_speedelif key == 's':initial_pose.position.x -= move_speedelif key == 'a':initial_pose.position.y += move_speedelif key == 'd':initial_pose.position.y -= move_speedelif key == 'q':initial_pose.position.z += move_speedelif key == 'e':initial_pose.position.z -= move_speedelif key == '\x03':  # Ctrl+Cbreak# 调用设置模型状态的函数set_model_state("aruco_cubo_hover", initial_pose)
except rospy.ROSInterruptException:pass
finally:# 恢复终端设置termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)

注意,如果要使用的话,需要修改程序中指定的模型名称和模型的路径;同时如果需要修改按键,记得在中文提示中一并修改

http://www.yayakq.cn/news/659453/

相关文章:

  • wordpress 网站被挂马室内设计培训网站
  • 网站建设功能报价单电子商务网站设计与网络营销实验
  • 最优惠的网站优化商城网站合作协议
  • 住房和城乡建设部的网站首页扬州注册公司
  • 域名邮箱 400电话seo诊断书
  • 自助建站和速成网站彩库宝典官方app版下载
  • 哈尔滨市城乡和建设局网站兰州市城乡住房建设局网站
  • 外网室内设计网站网页设计标准的尺寸是多少
  • 佛山自己网站建设wordpress 免费cdn
  • 郑州app网站公司wordpress音乐模板下载
  • 做母婴网站设计思路在线文字logo设计
  • 哪个网站内链建设好惠州网站推广
  • 百度网站认证v1服务商官网
  • 网站建设柚子网络科技无锡优化网站
  • 餐厅类网站模板电子商务网站规划 分析 设计
  • 金融培训网站源码网站页面高度
  • 网站经营网络备案信息开通微信公众号要收费吗
  • nas服务器可以做网站吗做58网站怎么赚钱
  • 偃师 做网站自己想做一个网站怎么做
  • 云端互联网站建设广州一起做网站
  • 广州做网站公司排名网站的优化和推广方案怎么写
  • 网站设计流程包括西安到北京西火车时刻表
  • 无锡网站制作哪家实惠深圳市住房和建设局工程交易服务主页
  • 电商网站维护费用百度网站地图
  • 江门网站建设价格免费影视app软件推荐
  • 搭建网站服务广州市软件开发有限公司
  • 如何做交易网站黄岩路桥网站设计
  • 如何做网站步骤wordpress app 读者
  • 佛山网站建设工作带地板翻转的网站怎么做
  • 免费申请域名做网站娄底网站建设报价