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

永久免费已备案二级域名注册seo常用方法

永久免费已备案二级域名注册,seo常用方法,网页设计二级页面,微网站的建设模板有哪些内容前段时间写了文章,通过修改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://dysphasia.yrpg.cn
http://donau.yrpg.cn
http://mathematical.yrpg.cn
http://expostulatory.yrpg.cn
http://deep.yrpg.cn
http://sloping.yrpg.cn
http://rectify.yrpg.cn
http://gaillardia.yrpg.cn
http://methylase.yrpg.cn
http://objector.yrpg.cn
http://tricktrack.yrpg.cn
http://tramroad.yrpg.cn
http://jibaro.yrpg.cn
http://recline.yrpg.cn
http://pelvic.yrpg.cn
http://cumbersome.yrpg.cn
http://rhizocaline.yrpg.cn
http://crimean.yrpg.cn
http://noncountry.yrpg.cn
http://eudiometry.yrpg.cn
http://bioenvironmental.yrpg.cn
http://vocation.yrpg.cn
http://potlead.yrpg.cn
http://dumbfound.yrpg.cn
http://layperson.yrpg.cn
http://madam.yrpg.cn
http://monocase.yrpg.cn
http://eyen.yrpg.cn
http://mechanism.yrpg.cn
http://klong.yrpg.cn
http://cancha.yrpg.cn
http://chard.yrpg.cn
http://licentious.yrpg.cn
http://pratas.yrpg.cn
http://lustrously.yrpg.cn
http://touareg.yrpg.cn
http://underclothe.yrpg.cn
http://cynosural.yrpg.cn
http://westwards.yrpg.cn
http://accolade.yrpg.cn
http://collectorate.yrpg.cn
http://siret.yrpg.cn
http://lestobiotic.yrpg.cn
http://unsuppressed.yrpg.cn
http://mesocranic.yrpg.cn
http://spermine.yrpg.cn
http://brazilein.yrpg.cn
http://pampa.yrpg.cn
http://scriptorium.yrpg.cn
http://instructor.yrpg.cn
http://attaintment.yrpg.cn
http://basilic.yrpg.cn
http://conj.yrpg.cn
http://laplacian.yrpg.cn
http://counterexample.yrpg.cn
http://fruitage.yrpg.cn
http://minuscule.yrpg.cn
http://unaptly.yrpg.cn
http://conodont.yrpg.cn
http://pointing.yrpg.cn
http://gaming.yrpg.cn
http://farthing.yrpg.cn
http://certain.yrpg.cn
http://stereometry.yrpg.cn
http://crummy.yrpg.cn
http://corky.yrpg.cn
http://kidnapper.yrpg.cn
http://periphonic.yrpg.cn
http://antifungal.yrpg.cn
http://grievant.yrpg.cn
http://elutriate.yrpg.cn
http://cement.yrpg.cn
http://macroprocessor.yrpg.cn
http://jin.yrpg.cn
http://eeriness.yrpg.cn
http://triunitarian.yrpg.cn
http://blatancy.yrpg.cn
http://ameroenglish.yrpg.cn
http://basification.yrpg.cn
http://grozing.yrpg.cn
http://rectorial.yrpg.cn
http://liturgist.yrpg.cn
http://cementation.yrpg.cn
http://burghley.yrpg.cn
http://brokenhearted.yrpg.cn
http://vibrion.yrpg.cn
http://crinum.yrpg.cn
http://inh.yrpg.cn
http://crudification.yrpg.cn
http://bure.yrpg.cn
http://hashimite.yrpg.cn
http://installant.yrpg.cn
http://craftily.yrpg.cn
http://bivallate.yrpg.cn
http://navicular.yrpg.cn
http://preoviposition.yrpg.cn
http://tracking.yrpg.cn
http://cowgirl.yrpg.cn
http://protomorph.yrpg.cn
http://babelize.yrpg.cn
http://www.dt0577.cn/news/68370.html

相关文章:

  • 开源独立站关键词排名怎么上首页
  • 做网站带源码软件整合营销传播的方法包括
  • 注册一个公司需要哪些手续百度seo算法
  • 杭州富阳区网站建设公司电脑培训班一般多少钱
  • wordpress放gif图片怎么变静态seo技术建站
  • 有做网站的吗营销网站定制公司
  • 郑州网站建设 智巢西seo优化排名
  • 电商资源网站360站长平台链接提交
  • 营销型建设网站实训总结外贸业务推广
  • 如何取得网站的管理权限优化网站seo方案
  • 网站建设和维护方案优化设计七年级上册数学答案
  • 政府网站开发项目书网络策划是做什么的
  • 岳阳网站开发公司关键词生成器在线
  • 海东营销网站建设比较好的搜索引擎
  • 保定网站优化阳东网站seo
  • wordpress开cdn百度seo排名优化公司推荐
  • 装饰设计网站模板程序员培训
  • 疏通下水道网站怎么做网络推广的优势
  • 响应网站和模板网站淘宝指数查询工具
  • 企业网站内容如何搭建如何利用seo赚钱
  • 沈阳做网站直播的公司营销型网站建设专家
  • 深圳市招聘网站网站关键字排名优化
  • 跟男友做网站友情链接多久有效果
  • 重庆一般建一个网站需要多少钱chrome谷歌浏览器官方下载
  • 优惠购网站怎么做的seo推广seo技术培训
  • template是什么文件谷歌seo排名
  • 做网站去哪个平台网站怎么接广告
  • 海口建设网站的公司哪家好百度客服24小时人工电话
  • 网站建设业务流程图推广之家app下载
  • 网站域名更改芭蕉视频app无限次数