首页 > 其他分享 >使用键盘控制gazebo小车模型运动

使用键盘控制gazebo小车模型运动

时间:2023-05-12 19:33:48浏览次数:47  
标签:twist xacro keyboard 小车 urdf 键盘 mycar gazebo

博客地址:https://www.cnblogs.com/zylyehuo/

gazebo小车模型创建详见另一篇博客

博客地址:gazebo小车模型(附带仿真环境) - zylyehuo - 博客园
参考链接

Autolabor-ROS机器人入门课程《ROS理论与实践》

ROS源码安装teleop_twist_keyboard

成果图

step1: 打开vscode进入之前创建的 mycar_ws 工作空间

step2:按如图结构创建文件夹及文件

step3: 代码部分

src/mycar/urdf/gazebo/move.xacro

<robot name="my_car_move" xmlns:xacro="http://wiki.ros.org/xacro">

    <!-- Transmission implementation: used to connect the controller and joints -->
    <xacro:macro name="joint_trans" params="joint_name">
        <!-- Transmission is important to link the joints and the controller -->
        <transmission name="${joint_name}_trans">
            <type>transmission_interface/SimpleTransmission</type>
            <joint name="${joint_name}">
                <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
            </joint>
            <actuator name="${joint_name}_motor">
                <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
                <mechanicalReduction>1</mechanicalReduction>
            </actuator>
        </transmission>
    </xacro:macro>

    <!-- Each drive wheel needs to be equipped with a transmission device -->
    <xacro:joint_trans joint_name="left_wheel2base_link" />
    <xacro:joint_trans joint_name="right_wheel2base_link" />

    <!-- controller -->
    <gazebo>
        <plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so">
            <rosDebugLevel>Debug</rosDebugLevel>
            <publishWheelTF>true</publishWheelTF>
            <robotNamespace>/</robotNamespace>
            <publishTf>1</publishTf>
            <publishWheelJointState>true</publishWheelJointState>
            <alwaysOn>true</alwaysOn>
            <updateRate>100.0</updateRate>
            <legacyMode>true</legacyMode>
            <leftJoint>left_wheel2base_link</leftJoint> <!-- left wheel -->
            <rightJoint>right_wheel2base_link</rightJoint> <!-- right wheel -->
            <wheelSeparation>${base_radius * 2}</wheelSeparation> <!-- Wheel spacing -->
            <wheelDiameter>${wheel_radius * 2}</wheelDiameter> <!-- Wheel diameter -->
            <broadcastTF>1</broadcastTF>
            <wheelTorque>30</wheelTorque>
            <wheelAcceleration>1.8</wheelAcceleration>
            <commandTopic>cmd_vel</commandTopic> <!-- Motion Control Topics -->
            <odometryFrame>odom</odometryFrame> 
            <odometryTopic>odom</odometryTopic> <!-- Odometer topic -->
            <robotBaseFrame>base_footprint</robotBaseFrame> <!-- Root coordinate system -->
        </plugin>
    </gazebo>

</robot>

src/mycar/urdf/xacro/car.urdf.xacro

<robot name="car" xmlns:xacro="http://wiki.ros.org/xacro">

    <xacro:include filename="inertial_matrix.xacro" />
    
    <xacro:include filename="car_base.urdf.xacro" />
    <xacro:include filename="car_camera.urdf.xacro" />
    <xacro:include filename="car_laser.urdf.xacro" />

    <!-- 以下为新添加的部分  -->  
    <!-- move control  -->
     <xacro:include filename="../gazebo/move.xacro" />


</robot>

step4: 运行 gazebo

(1)在终端执行 roscore 指令

roscore

(2)在 vscode 中 编译启动 launch文件

source ./devel/setup.bash

roslaunch mycar environment.launch

(3)gazebo 打开后,再打开一个新终端

rosrun teleop_twist_keyboard teleop_twist_keyboard.py _speed:=0.3 _turn:=0.5

问题汇总

1、[rospack] Error: package 'teleop_twist_keyboard' not found

解决方法

参考地址:ROS源码安装teleop_twist_keyboard

2、运行 gazebo 报错

解决方法

(1)检查 src/mycar/urdf/xacro/car.urdf.xacro 中路径是否正确

(2)检查 src/mycar/urdf/gazebo/move.xacro 中 joint_name 等结点名称是否与之前定义的一致

标签:twist,xacro,keyboard,小车,urdf,键盘,mycar,gazebo
From: https://www.cnblogs.com/zylyehuo/p/17396120.html

相关文章

  • uniapp移动端输入监听键盘上正在输入的值
    例如搜狗输入法的英文预测模式下,输入的字符不会马上赋给输入框。 input有个ignoreCompositionEvent属性,是否忽略组件内对文本合成系统事件的处理。为 false 时将触发 compositionstart、compositionend、compositionupdate 事件,且在文本合成期间会触发 input 事件。添加该......
  • 第4章 键盘的检测原理及应用实现
    第4章 键盘的检测原理及应用实现 非编码键盘:独立键盘和行列式键盘。独立键盘检测 常见的按键:弹性小按键,贴片式按键,自锁式按键。单片机检测按键的原理:单片机的I/O即可作输出也可作输入,当检测按键时,用它的输入功能,把按键的一端接地,另一端接IO,开始时,给IO赋高电平,然后不断......
  • 程序员的降龙十八掌,一部电脑、一个键盘,笑傲江湖
    程序员写代码需要精益求精,具备工匠精神(反复思考,打磨)。汲取百家之长,各种精华,融会贯通,才能独创黯然销魂掌。写代码可不是伸手就来的,每个开发人员都有自己的理解。就像武学界的武功一样,讲究招招式式,每门功夫都需要一个名字,想要编写出优质的代码,首先要学会以下十八招式:第一招:养成一......
  • 界面控件DevExtreme使用指南 - 控制折叠操作 & 键盘支持
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能齐全的数据网格、交互式图表小部件、数据编辑器等。请注意:在开始本教程之前,请确保DevExtreme已安装在Angula......
  • 笔记本自带键盘如何关闭
    左下角搜索栏中搜索cmd,以管理员身份运行在弹出的窗口中将下面这段代码输入进去,并回车。scconfigi8042prtstart=disabled重启,笔记本自带键盘关闭如果想恢复,只要外置键盘以同样方法输入下面这个代码,重启即可。scconfigi8042prtstart=auto......
  • 设置键盘只能输入数字( phoneNumTextField.keyboardType = UIKeyboardTypeNumberPad;)
    //手机号码textFieldphoneNumTextField=[[UITextFieldalloc]initWithFrame:CGRectMake(0,0,[[UIScreenmainScreen]bounds].size.width,40)];UIView*phoneImage=[[UIViewalloc]initWithFrame:CGRectMake(0,0,40,40)];phoneImage.backgroundColor=[U......
  • 键盘与鼠标按键的键值对照表
    键盘与鼠标按键的键值对照表该表总结了常见的键盘与鼠标按键对应的按键名称、十进制、十六进制表示形式与按键功能。方便用户进行查询。提供给需要的朋友使用。  常数名称十六进制值十进制值对应按键VK_LBUTTON011鼠标的左键VK_RBUTTON022鼠标的右键......
  • python 实现小车经过多个目标点
    代码   问题一  fromgeometry_msgs.msgimportPoseStamped如果geometry_msgs没下载sudoapt-getinstallros-<your_ros_version>-geometry-msgs 问题二: 没有初始化节点,rospy.init_node(‘name’)来初始化节点 在ROS中,初始化节点是一个必要的步骤,因为R......
  • golang模拟键盘输入字符串
    介绍仅供学习使用哈,不要用来开gua。代码仓库:https://github.com/GuoFlight/gkeybd(本人仓库,欢迎留言)注意事项只支持英文使用前请切换到英文输入法。因为本程序只支持英文(模拟的是按键,而不是传递字符串)。Mac中使用可能会报错需要用vendor,并将vendor/github.com/micmona......
  • CarSim or TruckSim与Simulink联合仿真,使用键盘控制车辆加速,减速,转向,包含前进与后退档
    CarSimorTruckSim与Simulink联合仿真,使用键盘控制车辆加速,减速,转向,包含前进与后退档位切换,支持自定义按键功能,支持拓展提供carsim参数配置文件,导入即可运行提供simulink模型文件提供模型搭建过程详细说明文档ID:45100675708233261......