要建立自己的自主机器人,首先,必须要建立自己的机器人模型,URDF(Unified Robot Description Format)模型。
part 3 建立自主机器人URDF模型
机器人URDF模型主要由两个文件组成:.xacro 是主文件,包含URDF项,包括关节,连杆;.gazebo包含gazebo的具体信息以便在gazebo中仿真。
例子请见:How to Build a Differential Drive Simulation
使用方法主要包括以下三个部分:
rviz查看机器人
roslaunch neurobot_description neurobot_rviz.launch
gazebo 仿真
groslaunch neurobot_gazebo neurobot_world.launch
控制机器人运动
rostopic pub /cmd_vel geometry_msgs/Twist "linear:
x: 0.1
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0"
如何一步步设计自己的工程请见以下部分的详细说明:
1. 创建工程
catkin_create_pkg neurobot_description
2. 差分驱动模型
neurobot_description/urdf/
├── macros.xacro 帮助简化的宏
├── materials.xacro 材料说明
├── neurobot.gazebo gazebo具体信息
└── neurobot.xacro URDF 主文件
在neurobot.xacro中添加chassis, wheels,
添加chassis
0 0 0.1 0 0 0
/>
0
0
1.0
1.0
0
0
1.0
1.0
添加差分驱动轮子
添加hinges链接wheels和chassis
要实现自主导航还需要添加camera和laser,有了激光器和摄像头我们才能让机器人去感知外部世界。
添加camera
添加laser
3. 添加模型插件
只有添加了模型插件,我们才能编写代码控制机器人的运动,采用信息。插件是模型和代码的桥梁。
在neurobot.gazebo中添加gazebo具体描述信息和插件。
差分驱动
camera
Gazebo/Green
30.0
1.3962634
800
800
R8G8B8
0.02
300
true
0.0
neurobot/camera1
image_raw
camera_info
camera
0.07
0.0
0.0
0.0
0.0
0.0
laser
laser的几何信息采用mesh文件hokuyo.dae放在meshes文件夹中,
0 0 0 0 0 0
false
40
720
1
-1.570796
1.570796
0.10
30.0
0.01
gaussian
0.0
0.01
/neurobot/laser/scan
hokuyo
gazebo仿真材料信息
Gazebo/Orange
Gazebo/Blue
Gazebo/Blue
4.机器人控制
终于到了我们可以控制自己建立的机器人了。
在rviz中查看自己的机器人
roslaunch neurobot_description neurobot_rviz.launch
neurobot_rviz.launch 文件如下
在gazebo中加载机器人并控制机器人运动
依然采用在turtlebot中使用的world场景,加载机器人。
roslaunch neurobot_gazebo neurobot_world.launch
通过如下命令
rostopic list
我们可以找到非常重要的四个topic
/cmd_vel 速度控制命令
/neurobot/camera1/image_raw 图像信息
/neurobot/laser/scan 激光数据
/odom 里程计
使用如下命令便可以控制机器人运动了,fancy。
rostopic pub /cmd_vel geometry_msgs/Twist "linear:
x: 0.1
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0"
也可以使用我们之前turtlebot中使用的keyboard_teleop.launch 和keyop.launch, 将topic主题映射到/cmd_vel。
References: