无人驾驶虚拟仿真(四)--通过ROS系统控制小车行走
简介:实现键盘控制虚拟仿真小车移动,w/s/a/d/空格,对应向前/向后/向左/向右/急停切换功能,q键退出
1、创建key_control节点
进入工作空间源码目录:
$ cd ~/myros/catkin_ws/src/
创建功能包:
$ catkin_create_pkg key_control rospy std_msgs duckietown_msgs
创建源码文件:
$ touch key_control/src/key_control_node.py
修改编译配置文件:
$ gedit key_control/CMakeLists.txt
修改为:
2、编写节点代码
$ gedit key_control/src/key_control_node.py
代码主要功能包括启动仿真环境,监听键盘输入,判断键盘输入发布控制指令话题,
附源码:
#!/usr/bin/env python3
# -*- coding: utf-8 -* import os
import sys
import tty, termios
import roslib
import rospy
from duckietown_msgs.msg import Twist2DStamped, BoolStampedclass KeyControlNode():def __init__(self):rospy.init_node('key_control_node')self.v = 0.0self.omega = 0.0self.estop = Falseself.pub_car_cmd = rospy.Publisher('/duckietown/duckiebot_node/car_cmd', Twist2DStamped, queue_size=10)self.pub_e_stop = rospy.Publisher('/duckietown/duckiebot_node/emergency_stop', BoolStamped, queue_size=10)def keyDetect(self):thread_stop = Falserate = rospy.Rate(10)while not thread_stop: fd = sys.stdin.fileno()old_settings = termios.tcgetattr(fd)try :tty.setraw( fd )ch = sys.stdin.read(1)finally :termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)print(ch)if ch == 'w': self.v = 0.2self.omega = 0.3elif ch == 's': self.v = -0.2self.omega = 0.3elif ch == 'a': self.v = 0.2self.omega = 1elif ch == 'd': self.v = 0.2self.omega = -1elif ch == 'q': self.v = 0.0self.omega = 0.0thread_stop = Trueelse:if self.estop:e_stop_msg = BoolStamped()e_stop_msg.data = Falseself.pub_e_stop.publish(e_stop_msg)self.estop = Falseelse:e_stop_msg = BoolStamped()e_stop_msg.data = Trueself.pub_e_stop.publish(e_stop_msg)self.estop = Truemsg_car_cmd = Twist2DStamped()msg_car_cmd.v = self.vmsg_car_cmd.omega = self.omegaself.pub_car_cmd.publish(msg_car_cmd)rate.sleep()if __name__ == '__main__': keyControlNode = KeyControlNode()keyControlNode.keyDetect()
3、编译
$ cd ~/myros/catkin_ws
$ catkin_make
4、运行
运行需要3个终端,一个运行roscore与duckiebot节点,一个开ros视频流查看软件,一个开key_control节点:
注:每新开一个终端,都要执行环境变量设置命令
$ source ~/myros/catkin_ws/devel/setup.bash
终端1:$ roslaunch duckiebot duckiebot.launch
终端2:$ rqt_image_view
终端3:$ rosrun key_control key_control_node.py
通过键盘上的w/s/a/d键控制小车移动方向,空格键急停切换,q键退出
无人驾驶虚拟仿真(四)--通过ROS系统控制小车行走相关推荐
- 无人驾驶虚拟仿真(二)--ROS系统安装
简介:在ubuntu20.04系统中安装ROS noetic版本 1.安装源 $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubun ...
- 无人驾驶虚拟仿真(一)--环境搭建
简介:安装部署无人驾驶虚拟仿真平台,通过键盘控制仿真小车移动,简单介绍仿真环境切换以及自制方法 基础环境:ubuntu20.04,python3.8.10 1.安装git.pip3 $ sudo ap ...
- 无人驾驶虚拟仿真(十)--车辆姿态控制(PID)
简介:在上一节内容中,我们估算出了车辆姿态,主要是位置偏差d和航向角偏差phi,出现偏差就需要矫正,根据物理常识我们知道不可能马上矫正,需要一个矫正的过程,图像采集处理又有一个时间间隔,在这个时间间隔 ...
- 无人驾驶虚拟仿真(五)--图像处理之色彩平衡
简介:同样的物体在不同的光照环境中会出现色彩偏差,为了减少色彩偏差对系统检测造成的影响,在对图像进行识别前,需要先评估图像明暗度,计算出明暗阈值,通过对图像的色彩平衡处理,可以校正图像色偏,过饱和或饱 ...
- 无人驾驶虚拟仿真(十三)--图像处理之交通标志牌识别1
简介:在实际交通地图环境中,我们预设了交通标志牌,可以通过交通标志牌对小车进行更加细致丰富的控制,标志牌形式如下: 每个交通标志牌都是由功能图片+编码图片结合的方式生成 ...
- 无人驾驶虚拟仿真(十二)--图像处理之红绿灯识别
简介:在交通地图中有红绿灯组件,一般放置在T形或者十字路口处,车辆行驶过程中,需要检测红绿灯信号来控制车辆启停,以符合基本的交通规则.红绿灯识别基本分为图像截取.斑点检测.颜色识别三步来实现. 1.新 ...
- 无人驾驶虚拟仿真(八)--图像处理之车道线识别3
简介:在上一节中,我们完成了单张图片车道线的检测,在最终的结果中,可以比较明确的观察出车辆相对车道线的位置,接下来,我们要把这一功能移植到ROS系统中,将小车抓取到的图像都处理成车道线数据,并发布到下 ...
- Ubuntu18.04配置搭建基于Gazebo的虚拟仿真平台(Px4):无人机(UAV)、无人车等模拟实验平台
这篇我觉得是写得比较详细完整的 摘自:https://dgzc.ganahe.top/ganahe/2021/uavgazebomoni.html Ubuntu18.04配置搭建基于Gazebo的虚拟 ...
- 基于PanoSim5.0虚拟仿真平台的自主代客泊车AVP系统开发教程
一.Panosim5仿真平台简介 PanoSim是由国内一家创业公司联合吉大.北航等高校资源开发的一款智能驾驶汽车仿真软件平台.软件以智能驾驶汽车全栈仿真为开发目标,具有完整的场景模型.传感器模型和车 ...
- ROS2学习笔记(三)-- 采集虚拟仿真环境图像并发布
简介:ROS2功能的学习我们还是在基于OpenAI的gym虚拟仿真环境中来完成,gym虚拟仿真环境安装请参考另一篇教程,这里不再重复说明,接下来我们开始创建一个ROS2的功能节点,并发布虚拟仿真环境小 ...
最新文章
- part.write java_使用javax.servlet.http.Part类上传文件
- 关于MySQL索引知识与小妙招 — 学到了!
- [Android] SQLite数据库之增删改查基础操作
- 如何使用BAdI ORDER_SAVE创建客户自定义的error message
- mysql 远程load data,PyMySQL将(文件)数据加载到远程MySQL实例时发生错误/异常
- LeetCode 478. 在圆内随机生成点(概率)
- 05CRecordset类
- 北风网ajax,[T8:JavaScript中利用Ajax实现客户端与服务器端通信北风网收费视频讲座.ppt...
- 解决python安装包无法正常安装问题
- libVLC库推流,sout参数如何设置
- 仿苹果手机_仿iphone12充电动画下载-仿iphone12充电动画软件下载 v1.1
- c语言srand函数用法,srand
- uniapp微信小程序自定义分享按钮
- 双向可控硅晶片光耦 (TLP160J TLP260J TLP525G) 基本原理及应用实例
- Docker 启动和退出一个容器
- bon app android,Bon App!
- 机器学习中的隐马尔科夫模型(HMM)详解
- 分组器及事前控制相关系统介绍
- 教育部最新发布:180所高校本科新增AI课程,138所高校新增大数据课程
- 【Redis详细安装教程】
热门文章
- 1076: 三位数求解 C语言
- 法律对合伙企业债务承担方式的规定
- [紧急通告]关于蓝色理想经典论坛无法访问的声明
- 三七互娱秋招web前端笔试题编程题(使用原生JS实现一个英雄类Hero, 可以按照以下方式调用正确输出)
- 孤独者的自我救赎[自我的认知]
- opencv23:Histogram直方图反向投影
- MAC电脑突然开不了机的解决方案
- Coverage [minx,miny,maxx,maxy] is [12, 4, 13, 6, 3], index [x,y,z] is [2, 5, 3]错误原因及其解决方式
- 英语学习第5篇_并列句
- Oracle表是Filtered状态,Explain中的filtered列