当前位置:   article > 正文

教程 | 阿克曼结构移动机器人的gazebo仿真(六)_ackermann_msgs/ackermanndrivestamped

ackermann_msgs/ackermanndrivestamped

第六章、配置controller并用键盘控制节点让小车动起来


1   前 言

上一节用xacro对urdf文件进行一个优化,并且配置好小车gazebo仿真所需的插件,以及传感器的插件。这一节通过配置controller让小车能够在gazebo仿真环境中真正动起来,并且能够用键盘控制节点来做一个控制。

2 配置racebot_control功能包


在工作空间下新建racebot_control功能包,并在功能包中新建如下文件夹: 

ros_control是ROS为开发者提供的机器人控制中间件,包含一系列控制器接口、传动装置接口、硬件接口、控制器工具箱等。

◆配置yaml文件

在config文件夹中新建racebot_control.yaml文件,代码如下: 

  1. racebot:
  2. #上面的racebot是运行动命名空间 Publish all joint states --公布所有--------------------
  3. joint_state_controller:
  4. type: joint_state_controller/JointStateController
  5. publish_rate: 50
  6. # Velocity Controllers ----速度控制器---------------------
  7. left_rear_wheel_velocity_controller:
  8. type: effort_controllers/JointVelocityController
  9. joint: left_rear_wheel_joint
  10. pid: {p: 1, i: 0.0, d: 0.0, i_clamp: 0.0}
  11. right_rear_wheel_velocity_controller:
  12. type: effort_controllers/JointVelocityController
  13. joint: right_rear_wheel_joint
  14. pid: {p: 1, i: 0.0, d: 0.0, i_clamp: 0.0}
  15. left_front_wheel_velocity_controller:
  16. type: effort_controllers/JointVelocityController
  17. joint: left_front_wheel_joint
  18. pid: {p: 0.5, i: 0.0, d: 0.0, i_clamp: 0.0}
  19. right_front_wheel_velocity_controller:
  20. type: effort_controllers/JointVelocityController
  21. joint: right_front_wheel_joint
  22. pid: {p: 0.5, i: 0.0, d: 0.0, i_clamp: 0.0}
  23. # Position Controllers ---位置控制器-----------------------
  24. left_steering_hinge_position_controller:
  25. joint: left_steering_hinge_joint
  26. type: effort_controllers/JointPositionController
  27. pid: {p: 10.0, i: 0.0, d: 0.5}
  28. right_steering_hinge_position_controller:
  29. joint: right_steering_hinge_joint
  30. type: effort_controllers/JointPositionController
  31. pid: {p: 10.0, i: 0.0, d: 0.5}

在yaml文件中,用到了ros_controllers功能包中的JointVelocityController控制器来控制轮子的转速,用JointPositionController控制器控制摆转件的旋转。之前在URDF中约束了摆转件的旋转角度。控制器发布控制指令,通过上一节配置的Transmission将控制指令转换为执行器的控制信号,实现机器人的运动。注意命名空间可以自行修改但是要与其他相关代码中的命名空间保持一致,否则会让小车无法跑动。

◆配置launch文件

launch文件代码如下: 

  1. <?xml version='1.0'?>
  2. <launch>
  3. <!-- Load joint controller configurations from YAML file to parameter server -->
  4. <rosparam file="$(find racebot_control)/config/racebot_control.yaml" command="load"/>
  5. <!-- load the controllers -->
  6. <node name="controller_manager" pkg="controller_manager" type="spawner" respawn="false"
  7. output="screen" ns="/racebot" args="left_rear_wheel_velocity_controller right_rear_wheel_velocity_controller
  8. left_front_wheel_velocity_controller right_front_wheel_velocity_controller
  9. left_steering_hinge_position_controller right_steering_hinge_position_controller
  10. joint_state_controller"/>
  11. <!--运行joint_state_publisher节点,发布机器人关节状态-->
  12. <!--<node name = "robot_state_publisher" pkg = "robot_state_publisher" type = "state_publisher">-->
  13. <node name= "robot_state_publisher" pkg= "robot_state_publisher" type= "robot_state_publisher">
  14. <remap from="/joint_states" to="/racebot/joint_states"/>
  15. </node>
  16. <!-- servo node -->
  17. <node pkg="racebot_control" type="servo_commands.py" name="ser
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/443937
推荐阅读
相关标签
  

闽ICP备14008679号