最新要闻
- 速递!定价全球最低!国产科幻FPS《边境》国区售价68元起
- 天天观热点:孟羽童已不是董明珠秘书引热议 本人回应:很享受格力市场营销工作
- 今日看点:米粉换上Redmi Note 12 Turbo:陪伴他5年的小米6正式退役
- 天天即时看!网友看电影觉得难看成功退一半费用 影城:散场20分钟内可办理
- 电动自行车调速器网上公开售卖!专家:私改限速或引发燃爆事故
- 天天观天下!王者更新:祈愿夺宝重启,520传说天幕返场,5英雄喜提新衣
- 焦点速读:离谱!观致汽车要倒台 车主也被拉下水:被厂商告了
- 全球气象预报大模型风乌发布:有效预报时间首破10天
- 事关“刹车失灵”争议核心数据 本田中国召回超20万辆雅阁
- 长城财报漂亮 是因为新能源汽车卖得不漂亮
- 全球新资讯:仅1999元!铁威马F4-423(4G)四盘位NAS开启预售:双2.5G网口
- 全球速读:大美游轮2022年亏损2511.24万同比亏损增加 游轮运营业务毛利减少
- 澳大利亚一飞机掉入印度洋:全员坠海 未有伤亡
- 世界速递!比亚迪大疆达成合作!全新海狮将用上高级辅助驾驶技术:纯视觉走天下
- 每日消息!希捷推出星球大战版SSD:三款RGB光剑任选
- 资讯推荐:一图看懂!小米/红米多款热门机型官方降价:小米12S/13全系有活动
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
天天快看点丨自动旋转ROS小车(rviz+urdf+xacro)(附加python操作键盘控制小车运动)
自动旋转ROS小车(rviz+urdf+xacro)(附加python操作键盘控制小车运动)
成果图
STEP1 创建工作空间
mkdir -p car_ws/srccd car_wscatkin_make
STEP2 在vscode中准备需要的文件夹
右键src,点击Create Catkin Package
再跳出的输入框中:先输入包名:car再输入依赖工具:urdf xacro在car目录下依次创建 config、launch、meshes、urdf文件夹在 car/urdf 文件夹下再创建 urdf、xacro文件夹结构如下图所示
【资料图】
STEP3 car/urdf/urdf
创建 test.urdf 文件
car/urdf/urdf/test.urdf
STEP4 car/urdf/xacro
创建 car.urdf.xacro
car/urdf/xacro/car.urdf.xacro
STEP5 car/launch
创建 control.launch
car/launch/control.launch
STEP6 car/config
依次创建 control.yaml test.rviz
car/config/control.yaml
controllers: { base_controller: { type: diff_controller, base_frame_id: base_footprint, base_width: 0.2, ticks_meter: 2000, Kp: 12, Kd: 12, Ki: 0, Ko: 50, accel_limit: 1.0 }}
car/config/test.rviz
可以先在 rviz 中运行代码,然后 将模型保存到 car/config 路径下,取名为 test.rviz
Panels: - Class: rviz/Displays Help Height: 78 Name: Displays Property Tree Widget: Expanded: - /Global Options1 - /Status1 - /RobotModel1 - /TF1 - /Odometry1 - /Odometry1/Shape1 Splitter Ratio: 0.5 Tree Height: 670 - Class: rviz/Selection Name: Selection - Class: rviz/Tool Properties Expanded: - /2D Pose Estimate1 - /2D Nav Goal1 - /Publish Point1 Name: Tool Properties Splitter Ratio: 0.5886790156364441 - Class: rviz/Views Expanded: - /Current View1 Name: Views Splitter Ratio: 0.5 - Class: rviz/Time Experimental: false Name: Time SyncMode: 0 SyncSource: ""Preferences: PromptSaveOnExit: trueToolbars: toolButtonStyle: 2Visualization Manager: Class: "" Displays: - Alpha: 0.5 Cell Size: 1 Class: rviz/Grid Color: 160; 160; 164 Enabled: true Line Style: Line Width: 0.029999999329447746 Value: Lines Name: Grid Normal Cell Count: 0 Offset: X: 0 Y: 0 Z: 0 Plane: XY Plane Cell Count: 10 Reference Frame: Value: true - Alpha: 1 Class: rviz/RobotModel Collision Enabled: false Enabled: true Links: All Links Enabled: true Expand Joint Details: false Expand Link Details: false Expand Tree: false Link Tree Style: Links in Alphabetic Order back_wheel: Alpha: 1 Show Axes: false Show Trail: false Value: true base_footprint: Alpha: 1 Show Axes: false Show Trail: false Value: true base_link: Alpha: 1 Show Axes: false Show Trail: false Value: true camera: Alpha: 1 Show Axes: false Show Trail: false Value: true front_wheel: Alpha: 1 Show Axes: false Show Trail: false Value: true laser: Alpha: 1 Show Axes: false Show Trail: false Value: true left_wheel: Alpha: 1 Show Axes: false Show Trail: false Value: true right_wheel: Alpha: 1 Show Axes: false Show Trail: false Value: true support: Alpha: 1 Show Axes: false Show Trail: false Value: true Name: RobotModel Robot Description: robot_description TF Prefix: "" Update Interval: 0 Value: true Visual Enabled: true - Class: rviz/TF Enabled: false Frame Timeout: 15 Frames: All Enabled: true Marker Scale: 1 Name: TF Show Arrows: true Show Axes: true Show Names: true Tree: {} Update Interval: 0 Value: false - Angle Tolerance: 0.10000000149011612 Class: rviz/Odometry Covariance: Orientation: Alpha: 0.5 Color: 255; 255; 127 Color Style: Unique Frame: Local Offset: 1 Scale: 1 Value: true Position: Alpha: 0.30000001192092896 Color: 204; 51; 204 Scale: 1 Value: true Value: true Enabled: true Keep: 10 Name: Odometry Position Tolerance: 0.10000000149011612 Shape: Alpha: 1 Axes Length: 1 Axes Radius: 0.10000000149011612 Color: 255; 25; 0 Head Length: 0.30000001192092896 Head Radius: 0.05000000074505806 Shaft Length: 1 Shaft Radius: 0.009999999776482582 Value: Arrow Topic: /odom Unreliable: false Value: true Enabled: true Global Options: Background Color: 48; 48; 48 Default Light: true Fixed Frame: odom Frame Rate: 30 Name: root Tools: - Class: rviz/Interact Hide Inactive Objects: true - Class: rviz/MoveCamera - Class: rviz/Select - Class: rviz/FocusCamera - Class: rviz/Measure - Class: rviz/SetInitialPose Theta std deviation: 0.2617993950843811 Topic: /initialpose X std deviation: 0.5 Y std deviation: 0.5 - Class: rviz/SetGoal Topic: /move_base_simple/goal - Class: rviz/PublishPoint Single click: true Topic: /clicked_point Value: true Views: Current: Class: rviz/Orbit Distance: 6.243990898132324 Enable Stereo Rendering: Stereo Eye Separation: 0.05999999865889549 Stereo Focal Distance: 1 Swap Stereo Eyes: false Value: false Focal Point: X: -0.6781591773033142 Y: 0.7335925102233887 Z: -0.1656564623117447 Focal Shape Fixed Size: true Focal Shape Size: 0.05000000074505806 Invert Z Axis: false Name: Current View Near Clip Distance: 0.009999999776482582 Pitch: 0.3703985810279846 Target Frame: Value: Orbit (rviz) Yaw: 0.8403980731964111 Saved: ~Window Geometry: Displays: collapsed: false Height: 967 Hide Left Dock: false Hide Right Dock: false QMainWindow State: 000000ff00000000fd00000004000000000000015600000329fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d00000329000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000329fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d00000329000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000062d0000003efc0100000002fb0000000800540069006d006501000000000000062d000002eb00fffffffb0000000800540069006d00650100000000000004500000000000000000000003bc0000032900000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false Time: collapsed: false Tool Properties: collapsed: false Views: collapsed: false Width: 1581 X: 67 Y: 27
STEP7 运行
启动 roscore
建议在vscode外终端启动(也可在vscode中启动)
设置环境变量,启动rviz
在vscode中新建终端注意要进入 car_ws 路径下依次执行以下命令
出现如下画面即代表创建成功第一次创建时可检查一下左栏选项是否一致
第一种启动方式:终端设置线速度、角速度
在vscode外新建终端输入以下指令注意 linear中x、angular中z行的修改修改完成后点击回车即可
出现下图(rviz中的小车开始自动旋转)即代表创建成功
第二种启动方式:
在 car_ws/src 路径下创建一个新的工作空间,取名为 mbot_teleop
在 mbot_teleop 文件夹下依次创建 launch、scripts 文件夹
在launch文件夹下新建 mbot_teleop.launch 文件
car_ws/src/mbot_teleop/launch/mbot_teleop.launch
在scripts文件夹下新建 mbot_teleop.py 文件
car_ws/src/mbot_teleop/scripts/mbot_teleop.py
#!/usr/bin/env python# -*- coding: utf-8 -*-import rospyfrom geometry_msgs.msg import Twistimport sys, select, termios, ttymsg = """Control mbot!---------------------------Moving around: u i o j k l m , .q/z : increase/decrease max speeds by 10%w/x : increase/decrease only linear speed by 10%e/c : increase/decrease only angular speed by 10%space key, k : force stopanything else : stop smoothlyCTRL-C to quit"""moveBindings = { "w":(1,0), "o":(1,-1), "a":(0,1), "d":(0,-1), "u":(1,1), "s":(-1,0), ".":(-1,1), "m":(-1,-1), }speedBindings={ "q":(1.1,1.1), "z":(.9,.9), "w":(1.1,1), "x":(.9,1), "e":(1,1.1), "c":(1,.9), }def getKey(): tty.setraw(sys.stdin.fileno()) rlist, _, _ = select.select([sys.stdin], [], [], 0.1) if rlist: key = sys.stdin.read(1) else: key = "" termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings) return keyspeed = .2turn = 1def vels(speed,turn): return "currently:\tspeed %s\tturn %s " % (speed,turn)if __name__=="__main__": settings = termios.tcgetattr(sys.stdin) rospy.init_node("mbot_teleop") pub = rospy.Publisher("/cmd_vel", Twist, queue_size=5) x = 0 th = 0 status = 0 count = 0 acc = 0.1 target_speed = 0 target_turn = 0 control_speed = 0 control_turn = 0 try: print msg print vels(speed,turn) while(1): key = getKey() # 运动控制方向键(1:正方向,-1负方向) if key in moveBindings.keys(): x = moveBindings[key][0] th = moveBindings[key][1] count = 0 # 速度修改键 elif key in speedBindings.keys(): speed = speed * speedBindings[key][0] # 线速度增加0.1倍 turn = turn * speedBindings[key][1] # 角速度增加0.1倍 count = 0 print vels(speed,turn) if (status == 14): print msg status = (status + 1) % 15 # 停止键 elif key == " " or key == "k" : x = 0 th = 0 control_speed = 0 control_turn = 0 else: count = count + 1 if count > 4: x = 0 th = 0 if (key == "\x03"): break # 目标速度=速度值*方向值 target_speed = speed * x target_turn = turn * th # 速度限位,防止速度增减过快 if target_speed > control_speed: control_speed = min( target_speed, control_speed + 0.02 ) elif target_speed < control_speed: control_speed = max( target_speed, control_speed - 0.02 ) else: control_speed = target_speed if target_turn > control_turn: control_turn = min( target_turn, control_turn + 0.1 ) elif target_turn < control_turn: control_turn = max( target_turn, control_turn - 0.1 ) else: control_turn = target_turn # 创建并发布twist消息 twist = Twist() twist.linear.x = control_speed; twist.linear.y = 0; twist.linear.z = 0 twist.angular.x = 0; twist.angular.y = 0; twist.angular.z = control_turn pub.publish(twist) except: print e finally: twist = Twist() twist.linear.x = 0; twist.linear.y = 0; twist.linear.z = 0 twist.angular.x = 0; twist.angular.y = 0; twist.angular.z = 0 pub.publish(twist) termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
打开新的终端,依次输入以下命令:
cd car_wssource ./devel/setup.bash roslaunch mbot_teleop mbot_teleop.launch
出现下图即证明运行成功
关键词:
-
天天快看点丨自动旋转ROS小车(rviz+urdf+xacro)(附加python操作键盘控制小车运动)
自动旋转ROS小车(rviz+urdf+xacro)(附加python操作键盘控制小车运动)成果图STEP1创建工作空间mkdir-...
来源: -
每日资讯:java -- Math、BigInteger、BigDecimal类和基本类型的包装类、正则表达式
Mathjava lang Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这...
来源: 天天快看点丨自动旋转ROS小车(rviz+urdf+xacro)(附加python操作键盘控制小车运动)
每日资讯:java -- Math、BigInteger、BigDecimal类和基本类型的包装类、正则表达式
【快播报】黑田东彦“卸任”言论释放宽松信号 日债收益率曲线平坦化下移
速递!定价全球最低!国产科幻FPS《边境》国区售价68元起
天天观热点:孟羽童已不是董明珠秘书引热议 本人回应:很享受格力市场营销工作
今日看点:米粉换上Redmi Note 12 Turbo:陪伴他5年的小米6正式退役
天天即时看!网友看电影觉得难看成功退一半费用 影城:散场20分钟内可办理
电动自行车调速器网上公开售卖!专家:私改限速或引发燃爆事故
环球资讯:ps 备忘清单_开发速查表分享
天天观天下!王者更新:祈愿夺宝重启,520传说天幕返场,5英雄喜提新衣
焦点速读:离谱!观致汽车要倒台 车主也被拉下水:被厂商告了
全球气象预报大模型风乌发布:有效预报时间首破10天
事关“刹车失灵”争议核心数据 本田中国召回超20万辆雅阁
长城财报漂亮 是因为新能源汽车卖得不漂亮
全球新资讯:仅1999元!铁威马F4-423(4G)四盘位NAS开启预售:双2.5G网口
全球速读:大美游轮2022年亏损2511.24万同比亏损增加 游轮运营业务毛利减少
Privilege Escalation 权限提升
即时焦点: 如何处理Xcode上传IPA文件后无法在后台架构版本中显示的问题?
当前要闻:易基因:群体分析揭示了DNA甲基化在番茄驯化和代谢多样性中的作用|组学研究
记录-VueJs中如何使用Teleport组件
Springfox与SpringDoc——swagger如何选择(SpringDoc入门)
澳大利亚一飞机掉入印度洋:全员坠海 未有伤亡
世界速递!比亚迪大疆达成合作!全新海狮将用上高级辅助驾驶技术:纯视觉走天下
每日消息!希捷推出星球大战版SSD:三款RGB光剑任选
资讯推荐:一图看懂!小米/红米多款热门机型官方降价:小米12S/13全系有活动
环球新动态:用两年就卡?3分钟学会选电视硬件
当前播报:申城交警多措并举加强高速公路和城市快速路事故预防工作
世界头条:用 Go 剑指 Offer 17. 打印从1到最大的n位数
【天天时快讯】获取Python函数信息的方法
世界信息:GPT对SaaS领域有什么影响?
全球新资讯:什么是 Java 字节码?采用字节码的好处是什么?
【天天聚看点】ubuntu离线安装tcpdump
因债券承销尽调不充分等问题 民生证券被上交所出具书面警示
每日视讯:最新确认:小米13 Ultra用上了USB 3.X接口
《流浪地球2》4月14日网络首播!导演郭帆:修改了一百多个视效镜头
差评高达86%!艺画开天官博恢复《三体》动画相关微博
【世界聚看点】等等党狂喜!比亚迪海豹有优惠了:本月订车至享高3.1万元减免
全球热门:荣耀Magic5 Pro“首碎”!SUV压过屏幕依旧完好
每日热闻!微信界面黑色怎么设置成白色_微信变成黑色怎么调过来
【独家】使用Drone+gitea配置自己的CICD流程
全球热消息:收评:两市震荡走强创指涨0.84% 医药、人工智能概念涨幅居前
最资讯丨马来西亚原装进口:猫山王榴莲雪糕4元/支狂促
索尼痛斥英国CMA:偏袒微软过于荒谬
当前头条:合资A级轿车更难了!2023款比亚迪秦PLUS EV冠军版上市:12.98万起
苹果中国杀疯!iPhone14售价跌破5000元 买它还是华为P60?
环球要闻:网红密子君带货无骨鸡爪!粉丝提醒她有蟑螂 本人道歉
保罗:比赛起起伏伏很奇怪 从未跟KD这种能吸引包夹的球员共事过
焦点热门:全文索引:Apache Lucene(一)
天天热讯:Java 自增自减运算符和移位运算符介绍
世界观速讯丨NTP时间同步服务器(频率同步)包含帧同步、载波同步、位同步
sms-activate短信验证码问题
世界新资讯:153. 寻找旋转排序数组中的最小值
【财经分析】新规创新保险服务模式 完善多层次长期护理保障制度
国风开放世界新作:网易新游《暂时叫它:天字七六》公布
世界今热点:全新MacBook要用OLED屏!如果不烧屏还是挺香的
或8万起售 比亚迪海鸥四颜色曝光:绿、黑、白、粉你选谁
这可能是最好看的RX 7900 XTX:华擎发布太极白色版
科大讯飞刘聪:5月6日将发布“1+N认知智能大模型”
泫雅和张贤胜的组合叫什么?泫雅和张贤胜在一起过吗?
蛇沼鬼城后面一部是什么?蛇沼鬼城录像带里的吴邪是谁?
张一山为什么剃光头?张一山出演的电视剧有哪些?
南派三叔为什么要封笔?南派三叔的全部作品顺序
被嫌弃的松子的一生讲了什么? 松子一生坎坷结局是怎么死的?
【新视野】山西省印发钢铁行业转型升级2023年行动计划
全球播报:[Web Server]Tomcat调优之监控连接池/线程池
焦点快播:(笔记)电源缓启动工作原理
世界速看:详解 Flink Catalog 在 ChunJun 中的实践之路
【环球速看料】Python selenium过图片滑块验证
拼多多百亿补贴“厂家直销”受阻:京东自营再现“排他性”竞争
细思极恐!韩国分析日本农产品超20%检出放射性物质铯
环球热讯:南财基金通·混合型基金收益排行榜(4月6日)
【天天热闻】Java中子类重写父类方法的思想本质!
头条焦点:CRLF和LF区别
焦点日报:买车更方便!新车上牌免查验试点新增21个城市:看看有你家吗
天天资讯:工资6000面试6轮当事人发声:没被录用 可能介意我年龄大
当前观察:出游正值好春光!“五一”旅游需求爆发
为何全球这么多人首选iPhone:苹果保值率第一 安卓机惨
环球资讯:气象台:未来十天冷空气影响频繁 9日起沙尘天气将卷土重来
天天动态:分库分表之ShardingSphere
要闻:新农保和社保可以同时交不_新农保和社保可以同时交
真不是人扮的?黑猩猩吃完饭主动到水池里洗盘子游客看呆
每日速看!离地球最近的黑洞被发现!科学家:还有许多黑洞待发现
焦点日报:比亚迪百万级纯电超跑!仰望U9确定参加上海车展:加速2秒级
中规中矩!杜兰特半场10中4得11分5板2助 共出现3次失误
天天资讯:开源即时通讯IM框架MobileIMSDK的微信小程序端开发快速入门
ONLYOFFICE 安装对接指南
今日快看!极氪员工泄露文件 疑与投诉车主沟通删帖内幕曝光!客服回应
环球关注:3折奔驰GLS很香?博主理性分析29万买北汽BJ90:不如现代帕里斯帝
热文:巨头联手!抖音宣布与腾讯视频合作:可以合法二创了
焦点报道:岚图汽车公开挑战保时捷、奥迪、蔚来和极氪 网友:你“图”什么
每日播报!全国56门店通用:瑞慈全身体检套餐279元大促(800元券)
全球热头条丨瓶装75度的酒精怎么使用?
天天最新:分库分表以后如何对非Sharding键进行查询?
全球最新:Flutter 的优缺点及前景
世界看热讯:人社部要求各地充分挖掘就业渠道 兜牢青年就业底线
焦点消息!搞事情?日本、韩国科学家联手发现未知铀同位素 半衰期超短
世界信息:锐龙7 7800X3D闪电登上热销第一!锐龙9 3D立刻大降价
天天新消息丨比亚迪云辇系统重要信息提前透露:为智能车身控制
iPhone 8以上都能用!中国广电5G宣布:已全面支持iPhone
环球消息!一人之下!特斯拉任命朱晓彤为汽车业务高级副总裁