《 无人驾驶原理与实践》一2.5基于Husky模拟器的实践

举报
华章计算机 发表于 2019/06/01 22:23:33 2019/06/01
【摘要】 本书摘自《 无人驾驶原理与实践》一书中的第二章,第2.5节,编著是申泽邦 雍宾宾 周庆国 李良 李冠憬

2.5基于Husky模拟器的实践

       Husky是Clearpath公司生产的中型移动轮式室外型无人车(Unmanned Ground Vehicle,UGV)开发平台,它配置了Lidar、GPS、IMU等传感器,全面兼容ROS[5]。实物如图22所示。

image.png

       我们使用Husky模拟器来实践ROS编程。Husky与我们关注的无人车比较相似,是一种基于Gazebo[9]物理仿真环境的工具。Gazebo是ROS中的一款机器人仿真平台软件,基于ODE物理引擎,可以模拟机器人以及环境中的很多物理特性。Husky模拟器的安装请参考http://wikirosorg/husky_gazebo/Tutorials/Simulating%20Husky。

       注意如果ROS Kinetic使用apt安装Husky模拟器存在问题的话,请参考https://answersrosorg/question/256756/howtoinstallhuskysimulatorinkinetic/。

       使用roslaunch启动Husky模拟器,并启动一个空的仿真环境:

       roslaunch husky_gazebo husky_empty_worldlaunch

       roslaunch是ROS中启动多个节点的机制。launch文件是ROS提供的可以同时运行多个节点的文件,以一种特殊的XML格式编写,以launch结尾。

       运行模拟器后使用rqt_graph查看正在运行的节点和话题,如图23所示。

image.png

       我们发现/gazebo节点订阅了一个/cmd_vel话题,使用如下指令查看话题信息:

       rostopic info /husky_velocity_controller/cmd_vel

image.png

       这个话题里的消息为geometry_msgs/Twist,ROS中通常使用geometry_msgs/Twist消息类型来发布运动命令。控制命令会被基本的控制器节点使用。话题/cmd_vel的全名为“command velocity”。控制器节点订阅/cmd_vel话题,并将里面的运动命令(Twist消息)通过PID控制算法转换成电机控制信号。

       rosmsg show geometry_msgs/Twist


image.png

image.png

       其中,linear表示线速度(单位:m/s),angular表示角速度(单位:rad/s)。
       下面我们在指令行中通过向/husky_velocity_controller/cmd_vel发送Twist消息来驱动小车,让它以4 m/s的线速度和05 rad/s的角速度运动:

       rostopic pub -r 10 /husky_velocity_controller/cmd_vel geometry_msgs/Twist '{linear: {x: 4, y: 0, z: 0}, angular: {x: 0, y: 0, z: 05}}'


       我们还可以直接向/cmd_vel主题发消息来控制小车(可以试试rostopic info/cmd_vel查看订阅它的节点):

       rostopic pub -r 10/cmd_vel geometry_msgs/Twist '{linear: {x: 4, y: 0, z: 0}, angular: {x: 0, y: 0, z: 05}}'


       接下来使用手柄控制Husky机器人。我们使用teleop_twist_joy包来实现手柄数据转换为Twist指令,并将Twist发布到/cmd_vel主题,启动teleop_twist_joy下的launch文件:

       roslaunch teleop_twist_joy teleoplaunch

image.png

      NODES表示启动了joy_node和teleop_twist_joy两个节点,它们分别位于joy和teleop_twist_joy两个包中,上面是启动文件的参数信息,着重讨论以下三个参数。

image.png

image.png

       enable_button表示必须按下该按键(8号按键,对应手柄上的back键)才能控制,前面两个分别表示轴的角速度和线速度的按钮(对应手柄上的左摇杆)。
注意:Husky作为一种轮式机器人,能够控制的只有x方向的速度(前向)和z方向的角速度(Yaw,偏航角速度),可通过启动rqt_graph命令来查看当前所有节点及话题的有向图,如图24所示。

image.png


       至此,命令行下的ROS操作指令已描述完,后文将开始ROS编程实践。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。