基于阿克曼(Ackerman)模型的ROS无人车开发设计(4-1)

0.前言

在接下来的章节中,我们将会根据之前部署的阿克曼无人车和室内环境进行建图,我们将从基本的建图算法开始,以实现基本的功能为前期目标在后续的章节中将会部署前沿的一些建图算法,帮助大家能够对比不同建图算法在不同应用环境中的差异。相信学识渊博的大家肯定知道许多建图算法,但为了兼顾刚入坑的新手们,我们在建图之前先学会如何控制小车运动!

1.无人车的运动话题/ackermann_steering_controller/cmd_vel

事实上我们有一部分没有详细讲解,那就是无人车的驱动部分,在该模型中驱动部分来自于steer_control_ros包的修改,因为我们更加专注上层应用的开发,这也是这个主题的宗旨。感兴趣的小伙伴可以自行探索,关于ros_control部分我将在后面单独写一个主题来讲解!在这个模型中的驱动部分向上订阅了/ackermann_steering_controller/cmd_vel话题的数据,按照上一章节的方式通过启动launch文件可以正确加载小车模型和地图:

roslaunch neor_mini display_gazebo_sensors.launch 

接下来,我们通过在终端输入rostopic list查看话题:

rostopic list

在终端可以看到所有的话题:

/ackermann_steering_controller/cmd_vel
/ackermann_steering_controller/odom
/camera1/camera_info
/camera1/image_raw
/camera1/image_raw/compressed
/camera1/image_raw/compressed/parameter_descriptions
/camera1/image_raw/compressed/parameter_updates
/camera1/parameter_descriptions
/camera1/parameter_updates
/clock
/gains/left_rear_joint/parameter_descriptions
/gains/left_rear_joint/parameter_updates
/gains/right_rear_joint/parameter_descriptions
/gains/right_rear_joint/parameter_updates
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/imu
/joint_states
/rosout
/rosout_agg
/scan
/tf
/tf_static

/ackermann_steering_controller/cmd_vel话题中消息类型为 geometry_msgs/Twist,因为我们只需要向这个话题中发送对应的数据就可以控制小车运动了。

2.rqt_robot_steering

当然我们直接可以在终端通过rostopic pub指令进行运动数据的发布,如下面一样:

rostopic pub -r 10 /ackermann_steering_controller/cmd_vel geometry_msgs/Twist \
'{linear: {x: 1.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.5}}'

当然这样不太利于我们实时控制无人车,我们更希望能够通过键盘或者操作界面能够实时控制无人才,对于键盘控制,可以通过 teleop_twist_keyboard包进行控制:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py
cmd_vel:=/ackermann_steering_controller/cmd_vel

因为teleop_twist_keyboard包默认是将消息发送到/cmd_vel话题,所以需要在后面重新指定话题。

Reading from the keyboard  and Publishing to Twist!
---------------------------
Moving around:
   u    i    o
   j    k    l
   m    ,    .

For Holonomic mode (strafing), hold down the shift key:
---------------------------
   U    I    O
   J    K    L
   M    <    >

t : up (+z)
b : down (-z)

anything else : stop

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%

CTRL-C to quit

currently:	speed 0.5	turn 1.0 

在终端出现上面的画面即可以在终端中控制无人车运动,我们将在后面的章节中使用 rqt_robot_steering包进行无人车的控制:

rosrun rqt_robot_steering rqt_robot_steering

运行之后,会出现下面的界面:

通过拉动上面两个轴的滑杆即可以控制无人车前进和转动!当然,在这个章节中涉及的多个包大家可以通过自己的版本号自行安装!最后呈现的效果如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值